@aztec/end-to-end 0.0.1-commit.0c875d939 → 0.0.1-commit.0ec55a70b
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 +21 -28
- 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_cross_chain_messaging/cross_chain_messaging_test.js +1 -1
- package/dest/e2e_epochs/epochs_test.d.ts +26 -7
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +113 -43
- 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 +17 -10
- 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 +13 -11
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +70 -34
- 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 +49 -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 +69 -49
- 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 +16 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +16 -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 +39 -0
- package/dest/fixtures/setup.d.ts +45 -17
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +89 -100
- 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 +3 -3
- 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 -21
- 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.d.ts +1 -1
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +19 -3
- 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 +124 -83
- 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 +29 -12
- package/src/bench/utils.ts +7 -2
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +21 -20
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +1 -1
- package/src/e2e_epochs/epochs_test.ts +131 -70
- package/src/e2e_fees/fees_test.ts +18 -9
- 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 +88 -44
- package/src/e2e_p2p/reqresp/utils.ts +59 -9
- package/src/e2e_p2p/shared.ts +88 -63
- 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 +32 -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 +126 -133
- 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/guides/up_quick_start.sh +0 -2
- 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 -2
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/submit-transactions.ts +1 -1
- package/src/shared/uniswap_l1_l2.ts +35 -32
- 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 +17 -5
- 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 +152 -101
- 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,17 +237,18 @@ 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
|
|
245
249
|
});
|
|
246
250
|
}
|
|
247
|
-
const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(config.l1RpcUrls, dateProvider), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider);
|
|
251
|
+
const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(config.l1RpcUrls, dateProvider), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider, opts.anvilTestWatcherOpts);
|
|
248
252
|
if (!opts.disableAnvilTestWatcher) {
|
|
249
253
|
await watcher.start();
|
|
250
254
|
}
|
|
@@ -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
|
};
|
|
@@ -292,37 +296,53 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
292
296
|
]);
|
|
293
297
|
}
|
|
294
298
|
}
|
|
299
|
+
// When skipInitialSequencer is set, the initial node is a lightweight RPC-only node.
|
|
300
|
+
// We apply these overrides to a copy so they don't leak into the returned config.
|
|
301
|
+
// Keep P2P enabled if mockGossipSubNetwork is used (needed for tx propagation to validators).
|
|
302
|
+
const initialNodeConfig = opts.skipInitialSequencer ? {
|
|
303
|
+
...config,
|
|
304
|
+
disableValidator: true,
|
|
305
|
+
...opts.mockGossipSubNetwork ? {} : {
|
|
306
|
+
p2pEnabled: false,
|
|
307
|
+
bootstrapNodes: []
|
|
308
|
+
}
|
|
309
|
+
} : config;
|
|
295
310
|
const aztecNodeService = await withLoggerBindings({
|
|
296
311
|
actor: 'node-0'
|
|
297
|
-
}, ()=>AztecNodeService.createAndSync(
|
|
312
|
+
}, ()=>AztecNodeService.createAndSync(initialNodeConfig, {
|
|
298
313
|
dateProvider,
|
|
299
314
|
telemetry: telemetryClient,
|
|
300
315
|
p2pClientDeps
|
|
301
316
|
}, {
|
|
302
|
-
|
|
317
|
+
genesis,
|
|
318
|
+
dontStartSequencer: opts.skipInitialSequencer
|
|
303
319
|
}));
|
|
304
320
|
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
321
|
let proverNode = undefined;
|
|
310
322
|
if (opts.startProverNode) {
|
|
311
323
|
logger.verbose('Creating and syncing a simulated prover node...');
|
|
312
324
|
const proverNodePrivateKey = getPrivateKeyFromIndex(2);
|
|
313
325
|
const proverNodePrivateKeyHex = `0x${proverNodePrivateKey.toString('hex')}`;
|
|
314
326
|
const proverNodeDataDirectory = path.join(directoryToCleanup, randomBytes(8).toString('hex'));
|
|
315
|
-
const
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
327
|
+
const p2pClientDeps = {
|
|
328
|
+
p2pServiceFactory: mockGossipSubNetwork && getMockPubSubP2PServiceFactory(mockGossipSubNetwork),
|
|
329
|
+
rpcTxProviders: [
|
|
330
|
+
aztecNodeService
|
|
331
|
+
]
|
|
319
332
|
};
|
|
320
|
-
proverNode = await createAndSyncProverNode(proverNodePrivateKeyHex, config,
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
333
|
+
({ proverNode } = await createAndSyncProverNode(proverNodePrivateKeyHex, config, {
|
|
334
|
+
...config.proverNodeConfig,
|
|
335
|
+
dataDirectory: proverNodeDataDirectory
|
|
336
|
+
}, {
|
|
337
|
+
dateProvider,
|
|
338
|
+
p2pClientDeps,
|
|
339
|
+
telemetry: telemetryClient
|
|
340
|
+
}, {
|
|
341
|
+
genesis
|
|
342
|
+
}));
|
|
325
343
|
}
|
|
344
|
+
const sequencerDelayer = sequencerClient?.getDelayer();
|
|
345
|
+
const proverDelayer = proverNode?.getProverNode()?.getDelayer();
|
|
326
346
|
logger.verbose('Creating a pxe...');
|
|
327
347
|
const pxeConfig = {
|
|
328
348
|
...getPXEConfig(),
|
|
@@ -345,7 +365,9 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
345
365
|
await cheatCodes.rollup.debugRollup();
|
|
346
366
|
}
|
|
347
367
|
let accounts = [];
|
|
348
|
-
if (
|
|
368
|
+
if (opts.skipInitialSequencer) {
|
|
369
|
+
logger.info('Sequencer not started on initial node, skipping block progression');
|
|
370
|
+
} else if (shouldDeployAccounts) {
|
|
349
371
|
logger.info(`${numberOfAccounts} accounts are being deployed. Reliably progressing past genesis by setting minTxsPerBlock to 1 and waiting for the accounts to be deployed`);
|
|
350
372
|
const accountsData = initialFundedAccounts.slice(0, numberOfAccounts);
|
|
351
373
|
const accountManagers = await deployFundedSchnorrAccounts(wallet, accountsData);
|
|
@@ -404,8 +426,10 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
404
426
|
initialFundedAccounts,
|
|
405
427
|
logger,
|
|
406
428
|
mockGossipSubNetwork,
|
|
407
|
-
|
|
429
|
+
genesis,
|
|
408
430
|
proverNode,
|
|
431
|
+
sequencerDelayer,
|
|
432
|
+
proverDelayer,
|
|
409
433
|
sequencer: sequencerClient,
|
|
410
434
|
teardown,
|
|
411
435
|
telemetryClient,
|
|
@@ -464,79 +488,43 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
464
488
|
}
|
|
465
489
|
export async function waitForProvenChain(node, targetBlock, timeoutSec = 60, intervalSec = 1) {
|
|
466
490
|
targetBlock ??= await node.getBlockNumber();
|
|
467
|
-
await retryUntil(async ()=>await node.
|
|
491
|
+
await retryUntil(async ()=>await node.getBlockNumber('proven') >= targetBlock, 'proven chain status', timeoutSec, intervalSec);
|
|
468
492
|
}
|
|
469
|
-
|
|
493
|
+
/**
|
|
494
|
+
* Creates an AztecNodeService with the prover node enabled as a subsystem.
|
|
495
|
+
* Returns both the aztec node service (for lifecycle management) and the prover node (for test internals access).
|
|
496
|
+
*/ export function createAndSyncProverNode(proverNodePrivateKey, baseConfig, configOverrides, deps, options) {
|
|
470
497
|
return withLoggerBindings({
|
|
471
498
|
actor: 'prover-0'
|
|
472
499
|
}, 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: [
|
|
500
|
+
const proverNode = await AztecNodeService.createAndSync({
|
|
501
|
+
...baseConfig,
|
|
502
|
+
...configOverrides,
|
|
503
|
+
p2pPort: 0,
|
|
504
|
+
enableProverNode: true,
|
|
505
|
+
disableValidator: true,
|
|
506
|
+
proverPublisherPrivateKeys: [
|
|
495
507
|
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
|
|
508
|
+
]
|
|
509
|
+
}, deps, {
|
|
510
|
+
genesis: options.genesis,
|
|
511
|
+
dontStartProverNode: options.dontStart
|
|
520
512
|
});
|
|
521
|
-
if (!
|
|
522
|
-
|
|
513
|
+
if (!proverNode.getProverNode()) {
|
|
514
|
+
throw new Error('Prover node subsystem was not created despite enableProverNode being set');
|
|
523
515
|
}
|
|
524
|
-
|
|
516
|
+
getLogger().info(`Created and synced prover node`);
|
|
517
|
+
return {
|
|
518
|
+
proverNode
|
|
519
|
+
};
|
|
525
520
|
});
|
|
526
521
|
}
|
|
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
522
|
export function getBalancesFn(symbol, method, logger) {
|
|
535
523
|
const balances = async (...addressLikes)=>{
|
|
536
524
|
const addresses = addressLikes.map((addressLike)=>'address' in addressLike ? addressLike.address : addressLike);
|
|
537
|
-
const b = await Promise.all(addresses.map((address)=>method(address).simulate({
|
|
525
|
+
const b = await Promise.all(addresses.map(async (address)=>(await method(address).simulate({
|
|
538
526
|
from: address
|
|
539
|
-
})));
|
|
527
|
+
})).result));
|
|
540
528
|
const debugString = `${symbol} balances: ${addresses.map((address, i)=>`${address}: ${b[i]}`).join(', ')}`;
|
|
541
529
|
logger.verbose(debugString);
|
|
542
530
|
return b;
|
|
@@ -580,7 +568,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
580
568
|
/**
|
|
581
569
|
* Helper function to deploy accounts.
|
|
582
570
|
* Returns deployed account data that can be used by tests.
|
|
583
|
-
*/ export const deployAccounts = (numberOfAccounts, logger)=>async ({ wallet, initialFundedAccounts })=>{
|
|
571
|
+
*/ export const deployAccounts = (numberOfAccounts, logger, deployOptions)=>async ({ wallet, initialFundedAccounts })=>{
|
|
584
572
|
if (initialFundedAccounts.length < numberOfAccounts) {
|
|
585
573
|
throw new Error(`Cannot deploy more than ${initialFundedAccounts.length} initial accounts.`);
|
|
586
574
|
}
|
|
@@ -591,8 +579,9 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
591
579
|
const accountManager = await wallet.createSchnorrAccount(deployedAccounts[i].secret, deployedAccounts[i].salt, deployedAccounts[i].signingKey);
|
|
592
580
|
const deployMethod = await accountManager.getDeployMethod();
|
|
593
581
|
await deployMethod.send({
|
|
594
|
-
from:
|
|
595
|
-
skipClassPublication: i !== 0
|
|
582
|
+
from: NO_FROM,
|
|
583
|
+
skipClassPublication: i !== 0,
|
|
584
|
+
...deployOptions
|
|
596
585
|
});
|
|
597
586
|
}
|
|
598
587
|
return {
|
|
@@ -613,7 +602,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
613
602
|
...instances.map((instance)=>publishInstance(wallet, instance))
|
|
614
603
|
]);
|
|
615
604
|
const batch = new BatchCall(wallet, calls);
|
|
616
|
-
const txReceipt = await batch.send({
|
|
605
|
+
const { receipt: txReceipt } = await batch.send({
|
|
617
606
|
from: accountsToDeploy[0]
|
|
618
607
|
});
|
|
619
608
|
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":""}
|