@aztec/end-to-end 0.0.1-commit.e2b2873ed → 0.0.1-commit.e304674f1
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 +2 -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 +16 -16
- 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 +32 -19
- 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 +2 -2
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +13 -13
- package/dest/fixtures/authwit_proxy.d.ts +15 -0
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
- package/dest/fixtures/authwit_proxy.js +34 -0
- package/dest/fixtures/e2e_prover_test.d.ts +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/ha_setup.d.ts +1 -1
- package/dest/fixtures/ha_setup.d.ts.map +1 -1
- package/dest/fixtures/ha_setup.js +3 -1
- package/dest/fixtures/setup.d.ts +33 -11
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +68 -89
- package/dest/fixtures/setup_p2p_test.d.ts +10 -7
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +18 -15
- package/dest/fixtures/token_utils.d.ts +2 -2
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +5 -7
- package/dest/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- package/dest/shared/cross_chain_test_harness.d.ts +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +13 -13
- package/dest/shared/gas_portal_test_harness.js +2 -2
- package/dest/shared/index.d.ts +2 -1
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- package/dest/shared/jest_setup.js +41 -1
- package/dest/shared/mock_state_view.d.ts +86 -0
- package/dest/shared/mock_state_view.d.ts.map +1 -0
- package/dest/shared/mock_state_view.js +186 -0
- package/dest/shared/submit-transactions.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 +16 -23
- package/dest/test-wallet/test_wallet.d.ts.map +1 -1
- package/dest/test-wallet/test_wallet.js +73 -65
- 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 +274 -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 +20 -16
- 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 +47 -28
- 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 +18 -10
- package/src/fixtures/authwit_proxy.ts +54 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +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/ha_setup.ts +3 -1
- package/src/fixtures/setup.ts +97 -124
- package/src/fixtures/setup_p2p_test.ts +17 -25
- package/src/fixtures/token_utils.ts +3 -3
- package/src/legacy-jest-resolver.cjs +135 -0
- package/src/shared/cross_chain_test_harness.ts +13 -9
- package/src/shared/gas_portal_test_harness.ts +1 -1
- package/src/shared/index.ts +1 -0
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +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 +4 -1
- package/src/spartan/utils/config.ts +2 -0
- package/src/spartan/utils/index.ts +7 -0
- package/src/spartan/utils/k8s.ts +8 -0
- package/src/spartan/utils/nodes.ts +15 -10
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/test-wallet/test_wallet.ts +101 -80
- package/src/test-wallet/wallet_worker_script.ts +60 -0
- package/src/test-wallet/worker_wallet.ts +213 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
|
@@ -7,8 +7,9 @@ import { EpochCache } from '@aztec/epoch-cache';
|
|
|
7
7
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
8
8
|
import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
|
|
9
9
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import { createDelayer, waitUntilL1Timestamp, wrapClientWithDelayer } from '@aztec/ethereum/l1-tx-utils';
|
|
11
|
+
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
12
|
+
import { CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
12
13
|
import { SecretValue } from '@aztec/foundation/config';
|
|
13
14
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
14
15
|
import { withLoggerBindings } from '@aztec/foundation/log/server';
|
|
@@ -24,7 +25,7 @@ import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
|
24
25
|
import { join } from 'path';
|
|
25
26
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
26
27
|
import { createAndSyncProverNode, getPrivateKeyFromIndex, setup } from '../fixtures/utils.js';
|
|
27
|
-
export const
|
|
28
|
+
export const WORLD_STATE_CHECKPOINT_HISTORY = 2;
|
|
28
29
|
export const WORLD_STATE_BLOCK_CHECK_INTERVAL = 50;
|
|
29
30
|
export const ARCHIVER_POLL_INTERVAL = 50;
|
|
30
31
|
export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
@@ -91,9 +92,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
91
92
|
// using the prover's eth address if the proverId is used for something in the rollup contract
|
|
92
93
|
// Use numeric EthAddress for deterministic prover id
|
|
93
94
|
proverId: EthAddress.fromNumber(1),
|
|
94
|
-
|
|
95
|
+
worldStateCheckpointHistory: WORLD_STATE_CHECKPOINT_HISTORY,
|
|
95
96
|
exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
|
|
96
|
-
|
|
97
|
+
slasherEnabled: false,
|
|
97
98
|
l1PublishingTime,
|
|
98
99
|
...opts
|
|
99
100
|
}, // Use checkpointed chain tip for PXE by default to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
@@ -117,10 +118,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
117
118
|
});
|
|
118
119
|
// Loop that tracks L1 and L2 block numbers and logs whenever there's a new one.
|
|
119
120
|
this.monitor = new ChainMonitor(this.rollup, context.dateProvider, this.logger).start();
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
this.proverDelayer = context.proverNode ? context.proverNode.publisher.l1TxUtils.delayer : undefined;
|
|
123
|
-
this.sequencerDelayer = context.sequencer ? context.sequencer.sequencer.publisher.l1TxUtils.delayer : undefined;
|
|
121
|
+
this.proverDelayer = context.proverDelayer;
|
|
122
|
+
this.sequencerDelayer = context.sequencerDelayer;
|
|
124
123
|
if (context.proverNode && !this.proverDelayer || context.sequencer && !this.sequencerDelayer) {
|
|
125
124
|
throw new Error(`Could not find prover or sequencer delayer`);
|
|
126
125
|
}
|
|
@@ -133,7 +132,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
133
132
|
l1GenesisTime: await this.rollup.getL1GenesisTime(),
|
|
134
133
|
ethereumSlotDuration,
|
|
135
134
|
proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs()),
|
|
136
|
-
targetCommitteeSize: await this.rollup.getTargetCommitteeSize()
|
|
135
|
+
targetCommitteeSize: await this.rollup.getTargetCommitteeSize(),
|
|
136
|
+
rollupManaLimit: Number(await this.rollup.getManaLimit())
|
|
137
137
|
};
|
|
138
138
|
this.logger.info(`L2 genesis at L1 block ${this.constants.l1StartBlock} (timestamp ${this.constants.l1GenesisTime})`);
|
|
139
139
|
}
|
|
@@ -148,21 +148,27 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
148
148
|
const proverNodePrivateKey = this.getNextPrivateKey();
|
|
149
149
|
const proverIndex = this.proverNodes.length + 1;
|
|
150
150
|
const { mockGossipSubNetwork } = this.context;
|
|
151
|
-
const proverNode = await withLoggerBindings({
|
|
151
|
+
const { proverNode } = await withLoggerBindings({
|
|
152
152
|
actor: `prover-${proverIndex}`
|
|
153
153
|
}, ()=>createAndSyncProverNode(proverNodePrivateKey, {
|
|
154
154
|
...this.context.config,
|
|
155
|
-
p2pEnabled: this.context.config.p2pEnabled || mockGossipSubNetwork !== undefined
|
|
156
|
-
}, {
|
|
157
|
-
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
|
|
155
|
+
p2pEnabled: this.context.config.p2pEnabled || mockGossipSubNetwork !== undefined,
|
|
158
156
|
proverId: EthAddress.fromNumber(proverIndex),
|
|
159
157
|
dontStart: opts.dontStart,
|
|
160
158
|
...opts
|
|
161
|
-
},
|
|
159
|
+
}, {
|
|
160
|
+
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex'))
|
|
161
|
+
}, {
|
|
162
162
|
dateProvider: this.context.dateProvider,
|
|
163
|
-
p2pClientDeps:
|
|
164
|
-
p2pServiceFactory: getMockPubSubP2PServiceFactory(mockGossipSubNetwork)
|
|
165
|
-
|
|
163
|
+
p2pClientDeps: {
|
|
164
|
+
p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined,
|
|
165
|
+
rpcTxProviders: [
|
|
166
|
+
this.context.aztecNode
|
|
167
|
+
]
|
|
168
|
+
}
|
|
169
|
+
}, {
|
|
170
|
+
genesis: this.context.genesis,
|
|
171
|
+
dontStart: opts.dontStart
|
|
166
172
|
}));
|
|
167
173
|
this.proverNodes.push(proverNode);
|
|
168
174
|
return proverNode;
|
|
@@ -198,31 +204,19 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
198
204
|
...resolvedConfig,
|
|
199
205
|
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
|
|
200
206
|
validatorPrivateKeys: opts.validatorPrivateKeys ?? new SecretValue([]),
|
|
207
|
+
nodeId: resolvedConfig.nodeId || `${actorPrefix}-${nodeIndex}`,
|
|
201
208
|
p2pEnabled,
|
|
202
209
|
p2pIp
|
|
203
210
|
}, {
|
|
204
211
|
dateProvider: this.context.dateProvider,
|
|
205
212
|
p2pClientDeps: {
|
|
206
213
|
p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined
|
|
207
|
-
}
|
|
214
|
+
},
|
|
215
|
+
slashingProtectionDb: opts.slashingProtectionDb
|
|
208
216
|
}, {
|
|
209
|
-
|
|
217
|
+
genesis: this.context.genesis,
|
|
210
218
|
...opts
|
|
211
219
|
}));
|
|
212
|
-
// REFACTOR: We're getting too much into the internals of the sequencer here.
|
|
213
|
-
// We should have a single method for constructing an aztec node that returns a TestAztecNodeService
|
|
214
|
-
// which directly exposes the delayer and sets any test config.
|
|
215
|
-
if (opts.txDelayerMaxInclusionTimeIntoSlot !== undefined) {
|
|
216
|
-
this.logger.info(`Setting tx delayer max inclusion time into slot to ${opts.txDelayerMaxInclusionTimeIntoSlot} seconds`);
|
|
217
|
-
// Here we reach into the sequencer and hook in a tx delayer. The problem is that the sequencer's l1 utils only uses a public client, not a wallet.
|
|
218
|
-
// The delayer needs a wallet (a client that can sign), so we have to create one here.
|
|
219
|
-
const l1Client = createExtendedL1Client(resolvedConfig.l1RpcUrls, resolvedConfig.publisherPrivateKeys[0].getValue());
|
|
220
|
-
const sequencer = node.getSequencer();
|
|
221
|
-
const publisher = sequencer.sequencer.publisher;
|
|
222
|
-
const delayed = DelayedTxUtils.fromL1TxUtils(publisher.l1TxUtils, this.L1_BLOCK_TIME_IN_S, l1Client);
|
|
223
|
-
delayed.delayer.setMaxInclusionTimeIntoSlot(opts.txDelayerMaxInclusionTimeIntoSlot);
|
|
224
|
-
publisher.l1TxUtils = delayed;
|
|
225
|
-
}
|
|
226
220
|
this.nodes.push(node);
|
|
227
221
|
return node;
|
|
228
222
|
}
|
|
@@ -250,7 +244,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
250
244
|
this.logger.info(`Waiting until last slot of submission window for epoch ${epochNumber} at ${date}`, {
|
|
251
245
|
oneSlotBefore
|
|
252
246
|
});
|
|
253
|
-
|
|
247
|
+
// Use a timeout that accounts for the full proof submission window
|
|
248
|
+
const proofSubmissionWindowDuration = this.constants.proofSubmissionEpochs * this.epochDuration * this.L2_SLOT_DURATION_IN_S;
|
|
249
|
+
await waitUntilL1Timestamp(this.l1Client, oneSlotBefore, undefined, proofSubmissionWindowDuration * 2);
|
|
254
250
|
}
|
|
255
251
|
/** Waits for the aztec node to sync to the target block number. */ async waitForNodeToSync(blockNumber, type) {
|
|
256
252
|
const waitTime = ARCHIVER_POLL_INTERVAL + WORLD_STATE_BLOCK_CHECK_INTERVAL;
|
|
@@ -299,11 +295,13 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
299
295
|
return TestContract.at(instance.address, wallet);
|
|
300
296
|
}
|
|
301
297
|
/** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */ async createL1Client() {
|
|
302
|
-
const
|
|
298
|
+
const rawClient = createExtendedL1Client([
|
|
303
299
|
...this.l1Client.chain.rpcUrls.default.http
|
|
304
|
-
], privateKeyToAccount(this.getNextPrivateKey()), this.l1Client.chain)
|
|
300
|
+
], privateKeyToAccount(this.getNextPrivateKey()), this.l1Client.chain);
|
|
301
|
+
const delayer = createDelayer(this.context.dateProvider, {
|
|
305
302
|
ethereumSlotDuration: this.L1_BLOCK_TIME_IN_S
|
|
306
|
-
});
|
|
303
|
+
}, {});
|
|
304
|
+
const client = wrapClientWithDelayer(rawClient, delayer);
|
|
307
305
|
expect(await client.getBalance({
|
|
308
306
|
address: client.account.address
|
|
309
307
|
})).toBeGreaterThan(0n);
|
|
@@ -321,6 +319,30 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
321
319
|
]).then((_)=>true).catch((_)=>false);
|
|
322
320
|
expect(result).toBe(expectedSuccess);
|
|
323
321
|
}
|
|
322
|
+
/** Verifies at least one checkpoint has the target number of blocks (for MBPS validation). */ async assertMultipleBlocksPerSlot(targetBlockCount) {
|
|
323
|
+
const archiver = this.context.aztecNode.getBlockSource();
|
|
324
|
+
const checkpoints = await archiver.getCheckpoints(CheckpointNumber(1), 50);
|
|
325
|
+
this.logger.warn(`Retrieved ${checkpoints.length} checkpoints from archiver`, {
|
|
326
|
+
checkpoints: checkpoints.map((pc)=>pc.checkpoint.getStats())
|
|
327
|
+
});
|
|
328
|
+
let expectedBlockNumber = checkpoints[0].checkpoint.blocks[0].number;
|
|
329
|
+
let targetFound = false;
|
|
330
|
+
for (const checkpoint of checkpoints){
|
|
331
|
+
const blockCount = checkpoint.checkpoint.blocks.length;
|
|
332
|
+
targetFound = targetFound || blockCount >= targetBlockCount;
|
|
333
|
+
this.logger.verbose(`Checkpoint ${checkpoint.checkpoint.number} has ${blockCount} blocks`, {
|
|
334
|
+
checkpoint: checkpoint.checkpoint.getStats()
|
|
335
|
+
});
|
|
336
|
+
for(let i = 0; i < blockCount; i++){
|
|
337
|
+
const block = checkpoint.checkpoint.blocks[i];
|
|
338
|
+
expect(block.indexWithinCheckpoint).toBe(i);
|
|
339
|
+
expect(block.checkpointNumber).toBe(checkpoint.checkpoint.number);
|
|
340
|
+
expect(block.number).toBe(expectedBlockNumber);
|
|
341
|
+
expectedBlockNumber++;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
expect(targetFound).toBe(true);
|
|
345
|
+
}
|
|
324
346
|
watchSequencerEvents(sequencers, getMetadata = ()=>({})) {
|
|
325
347
|
const stateChanges = [];
|
|
326
348
|
const failEvents = [];
|
|
@@ -85,4 +85,4 @@ export declare class FeesTest {
|
|
|
85
85
|
applyFundAliceWithBananas(): Promise<void>;
|
|
86
86
|
applyFundAliceWithPrivateBananas(): Promise<void>;
|
|
87
87
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHNCQUFzQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxJQUFJLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFL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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
2
|
+
import { getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
|
|
2
3
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
3
4
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
4
5
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
@@ -77,6 +78,8 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
77
78
|
}
|
|
78
79
|
async setup() {
|
|
79
80
|
this.logger.verbose('Setting up fresh context...');
|
|
81
|
+
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
82
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
80
83
|
this.context = await setup(0, {
|
|
81
84
|
startProverNode: true,
|
|
82
85
|
...this.setupOptions,
|
|
@@ -84,7 +87,11 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
84
87
|
skipAccountDeployment: true,
|
|
85
88
|
l1ContractsArgs: {
|
|
86
89
|
...this.setupOptions
|
|
87
|
-
}
|
|
90
|
+
},
|
|
91
|
+
txPublicSetupAllowListExtend: [
|
|
92
|
+
...this.setupOptions.txPublicSetupAllowListExtend ?? [],
|
|
93
|
+
...tokenAllowList
|
|
94
|
+
]
|
|
88
95
|
});
|
|
89
96
|
this.rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
90
97
|
this.chainMonitor = new ChainMonitor(this.rollupContract, this.context.dateProvider, this.logger, 200).start();
|
|
@@ -124,11 +131,11 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
124
131
|
});
|
|
125
132
|
}
|
|
126
133
|
/** Alice mints bananaCoin tokens privately to the target address and redeems them. */ async mintPrivateBananas(amount, address) {
|
|
127
|
-
const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
134
|
+
const { result: balanceBefore } = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
128
135
|
from: address
|
|
129
136
|
});
|
|
130
137
|
await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
|
|
131
|
-
const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
138
|
+
const { result: balanceAfter } = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
132
139
|
from: address
|
|
133
140
|
});
|
|
134
141
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
@@ -148,7 +155,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
148
155
|
this.wallet = this.context.wallet;
|
|
149
156
|
this.aztecNode = this.context.aztecNodeService;
|
|
150
157
|
this.aztecNodeAdmin = this.context.aztecNodeService;
|
|
151
|
-
this.gasSettings = GasSettings.
|
|
158
|
+
this.gasSettings = GasSettings.fallback({
|
|
152
159
|
maxFeesPerGas: (await this.aztecNode.getCurrentMinFees()).mul(2)
|
|
153
160
|
});
|
|
154
161
|
this.cheatCodes = this.context.cheatCodes;
|
|
@@ -178,7 +185,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
178
185
|
}
|
|
179
186
|
async applyDeployBananaToken() {
|
|
180
187
|
this.logger.info('Applying deploy banana token setup');
|
|
181
|
-
const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
188
|
+
const { contract: bananaCoin } = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
182
189
|
from: this.aliceAddress
|
|
183
190
|
});
|
|
184
191
|
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
@@ -191,7 +198,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
191
198
|
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
192
199
|
expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
193
200
|
const bananaCoin = this.bananaCoin;
|
|
194
|
-
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
201
|
+
const { contract: bananaFPC } = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
195
202
|
from: this.aliceAddress
|
|
196
203
|
});
|
|
197
204
|
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
@@ -216,7 +223,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
216
223
|
const block = await this.aztecNode.getBlock(blockNumber);
|
|
217
224
|
// @todo @lherskind As we deal with #13601
|
|
218
225
|
// Right now the value is from `FeeLib.sol`
|
|
219
|
-
const L1_GAS_PER_EPOCH_VERIFIED =
|
|
226
|
+
const L1_GAS_PER_EPOCH_VERIFIED = 3600000n;
|
|
220
227
|
// We round up
|
|
221
228
|
const mulDiv = (a, b, c)=>a * b / c + (a * b % c > 0n ? 1n : 0n);
|
|
222
229
|
const { baseFee } = await this.rollupContract.getL1FeesAt(block.header.globalVariables.timestamp);
|
|
@@ -23,4 +23,4 @@ export declare class NestedContractTest {
|
|
|
23
23
|
teardown(): Promise<void>;
|
|
24
24
|
applyManual(): Promise<void>;
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkX2NvbnRyYWN0X3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfbmVzdGVkX2NvbnRyYWN0L25lc3RlZF9jb250cmFjdF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBS3JCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIscUJBQWEsa0JBQWtCO0lBWTNCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFYMUIsT0FBTyxFQUFHLGVBQWUsQ0FBQztJQUMxQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsTUFBTSxFQUFHLE1BQU0sQ0FBQztJQUNoQixxQkFBcUIsRUFBRyxZQUFZLENBQUM7SUFDckMsU0FBUyxFQUFHLFNBQVMsQ0FBQztJQUV0QixjQUFjLEVBQUcsY0FBYyxDQUFDO0lBQ2hDLGFBQWEsRUFBRyxhQUFhLENBQUM7SUFFOUIsWUFDRSxRQUFRLEVBQUUsTUFBTSxFQUNSLGdCQUFnQixTQUFJLEVBRzdCO0lBRUQ7O09BRUc7SUFDRyxjQUFjLGtCQWVuQjtJQUVLLEtBQUssa0JBT1Y7SUFFSyxRQUFRLGtCQUViO0lBRUssV0FBVyxrQkFRaEI7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nested_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_nested_contract/nested_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EACL,KAAK,eAAe,EAKrB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,kBAAkB;IAY3B,OAAO,CAAC,gBAAgB;IAX1B,OAAO,EAAG,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,MAAM,CAAC;IAChB,qBAAqB,EAAG,YAAY,CAAC;IACrC,SAAS,EAAG,SAAS,CAAC;IAEtB,cAAc,EAAG,cAAc,CAAC;IAChC,aAAa,EAAG,aAAa,CAAC;IAE9B,YACE,QAAQ,EAAE,MAAM,EACR,gBAAgB,SAAI,EAG7B;IAED;;OAEG;IACG,cAAc,kBAenB;IAEK,KAAK,kBAOV;IAEK,QAAQ,kBAEb;IAEK,WAAW,
|
|
1
|
+
{"version":3,"file":"nested_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_nested_contract/nested_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EACL,KAAK,eAAe,EAKrB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,kBAAkB;IAY3B,OAAO,CAAC,gBAAgB;IAX1B,OAAO,EAAG,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,MAAM,CAAC;IAChB,qBAAqB,EAAG,YAAY,CAAC;IACrC,SAAS,EAAG,SAAS,CAAC;IAEtB,cAAc,EAAG,cAAc,CAAC;IAChC,aAAa,EAAG,aAAa,CAAC;IAE9B,YACE,QAAQ,EAAE,MAAM,EACR,gBAAgB,SAAI,EAG7B;IAED;;OAEG;IACG,cAAc,kBAenB;IAEK,KAAK,kBAOV;IAEK,QAAQ,kBAEb;IAEK,WAAW,kBAQhB;CACF"}
|
|
@@ -44,13 +44,11 @@ export class NestedContractTest {
|
|
|
44
44
|
}
|
|
45
45
|
async applyManual() {
|
|
46
46
|
this.logger.info('Deploying parent and child contracts');
|
|
47
|
-
|
|
47
|
+
({ contract: this.parentContract } = await ParentContract.deploy(this.wallet).send({
|
|
48
48
|
from: this.defaultAccountAddress
|
|
49
|
-
});
|
|
50
|
-
|
|
49
|
+
}));
|
|
50
|
+
({ contract: this.childContract } = await ChildContract.deploy(this.wallet).send({
|
|
51
51
|
from: this.defaultAccountAddress
|
|
52
|
-
});
|
|
53
|
-
this.parentContract = parentContract;
|
|
54
|
-
this.childContract = childContract;
|
|
52
|
+
}));
|
|
55
53
|
}
|
|
56
54
|
}
|
|
@@ -42,6 +42,7 @@ export class P2PInactivityTest {
|
|
|
42
42
|
basePort: BOOT_NODE_UDP_PORT,
|
|
43
43
|
startProverNode: true,
|
|
44
44
|
initialConfig: {
|
|
45
|
+
anvilSlotsInAnEpoch: 4,
|
|
45
46
|
proverNodeConfig: {
|
|
46
47
|
proverNodeEpochProvingDelayMs: AZTEC_SLOT_DURATION * 1000
|
|
47
48
|
},
|
|
@@ -52,7 +53,6 @@ export class P2PInactivityTest {
|
|
|
52
53
|
listenAddress: '127.0.0.1',
|
|
53
54
|
minTxsPerBlock: 0,
|
|
54
55
|
aztecEpochDuration: EPOCH_DURATION,
|
|
55
|
-
validatorReexecute: false,
|
|
56
56
|
sentinelEnabled: true,
|
|
57
57
|
slashingQuorum: SLASHING_QUORUM,
|
|
58
58
|
slashingRoundSizeInEpochs: SLASHING_ROUND_SIZE_IN_EPOCHS,
|
|
@@ -84,13 +84,13 @@ export class P2PInactivityTest {
|
|
|
84
84
|
await this.test.ctx.aztecNodeService.stop();
|
|
85
85
|
}
|
|
86
86
|
// Create all active nodes
|
|
87
|
-
this.activeNodes = await createNodes(this.test.ctx.aztecNodeConfig, this.test.ctx.dateProvider, this.test.bootstrapNodeEnr, NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode), BOOT_NODE_UDP_PORT, this.test.
|
|
87
|
+
this.activeNodes = await createNodes(this.test.ctx.aztecNodeConfig, this.test.ctx.dateProvider, this.test.bootstrapNodeEnr, NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode), BOOT_NODE_UDP_PORT, this.test.genesis, this.dataDir, undefined, Number(this.keepInitialNode));
|
|
88
88
|
// And the ones with an initially disabled sequencer
|
|
89
89
|
const inactiveConfig = {
|
|
90
90
|
...this.test.ctx.aztecNodeConfig,
|
|
91
91
|
dontStartSequencer: true
|
|
92
92
|
};
|
|
93
|
-
this.inactiveNodes = await createNodes(inactiveConfig, this.test.ctx.dateProvider, this.test.bootstrapNodeEnr, this.inactiveNodeCount, BOOT_NODE_UDP_PORT, this.test.
|
|
93
|
+
this.inactiveNodes = await createNodes(inactiveConfig, this.test.ctx.dateProvider, this.test.bootstrapNodeEnr, this.inactiveNodeCount, BOOT_NODE_UDP_PORT, this.test.genesis, this.dataDir, undefined, NUM_NODES - this.inactiveNodeCount);
|
|
94
94
|
this.nodes = [
|
|
95
95
|
...this.keepInitialNode ? [
|
|
96
96
|
this.test.ctx.aztecNodeService
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { InitialAccountData } from '@aztec/accounts/testing';
|
|
2
2
|
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
3
3
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
4
|
-
import {
|
|
4
|
+
import { RollupContract, type SlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
5
5
|
import type { Operator } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
6
6
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
7
7
|
import type { ViemClient } from '@aztec/ethereum/types';
|
|
@@ -9,8 +9,8 @@ import { type Logger } from '@aztec/foundation/log';
|
|
|
9
9
|
import { SlasherAbi } from '@aztec/l1-artifacts';
|
|
10
10
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
11
11
|
import type { BootstrapNode } from '@aztec/p2p/bootstrap';
|
|
12
|
-
import {
|
|
13
|
-
import type {
|
|
12
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
13
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
14
14
|
import { type GetContractReturnType } from 'viem';
|
|
15
15
|
import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
|
|
16
16
|
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
@@ -18,7 +18,7 @@ export declare const WAIT_FOR_TX_TIMEOUT: number;
|
|
|
18
18
|
export declare const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES: {
|
|
19
19
|
aztecSlotDuration: number;
|
|
20
20
|
ethereumSlotDuration: number;
|
|
21
|
-
|
|
21
|
+
aztecProofSubmissionEpochs: number;
|
|
22
22
|
};
|
|
23
23
|
export declare class P2PNetworkTest {
|
|
24
24
|
readonly testName: string;
|
|
@@ -260,7 +260,7 @@ export declare class P2PNetworkTest {
|
|
|
260
260
|
peerIdPrivateKeys: string[];
|
|
261
261
|
validators: Operator[];
|
|
262
262
|
deployedAccounts: InitialAccountData[];
|
|
263
|
-
|
|
263
|
+
genesis: GenesisData | undefined;
|
|
264
264
|
wallet?: TestWallet;
|
|
265
265
|
defaultAccountAddress?: AztecAddress;
|
|
266
266
|
spamContract?: SpamContract;
|
|
@@ -303,13 +303,12 @@ export declare class P2PNetworkTest {
|
|
|
303
303
|
* @param timeoutSeconds - Maximum time to wait for connections (default: 30 seconds)
|
|
304
304
|
* @param checkIntervalSeconds - How often to check connectivity (default: 0.1 seconds)
|
|
305
305
|
*/
|
|
306
|
-
waitForP2PMeshConnectivity(nodes: AztecNodeService[], expectedNodeCount?: number, timeoutSeconds?: number, checkIntervalSeconds?: number): Promise<void>;
|
|
306
|
+
waitForP2PMeshConnectivity(nodes: AztecNodeService[], expectedNodeCount?: number, timeoutSeconds?: number, checkIntervalSeconds?: number, topics?: TopicType[]): Promise<void>;
|
|
307
307
|
teardown(): Promise<void>;
|
|
308
308
|
getContracts(): Promise<{
|
|
309
309
|
rollup: RollupContract;
|
|
310
310
|
slasherContract: GetContractReturnType<typeof SlasherAbi, ViemClient>;
|
|
311
|
-
slashingProposer:
|
|
312
|
-
slashFactory: SlashFactoryContract;
|
|
311
|
+
slashingProposer: SlashingProposerContract | undefined;
|
|
313
312
|
}>;
|
|
314
313
|
}
|
|
315
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX25ldHdvcmsuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfcDJwL3AycF9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLDJCQUEyQixDQUFDO0FBR3JFLE9BQU8sRUFBZSxjQUFjLEVBQUUsS0FBSyx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZHLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBSTFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBNEIsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHbEYsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBYSxVQUFVLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUs3RCxPQUFPLEVBQUUsS0FBSyxxQkFBcUIsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFHM0UsT0FBTyxFQUNMLEtBQUssZUFBZSxFQUNwQixLQUFLLFlBQVksRUFNbEIsTUFBTSxzQkFBc0IsQ0FBQztBQU85QixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0Is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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAc,MAAM,2BAA2B,CAAC;AAGrE,OAAO,
|
|
1
|
+
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
|
4
4
|
import { GSEContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
5
5
|
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
6
6
|
import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
|
|
7
|
-
import {
|
|
7
|
+
import { createL1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
8
8
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
9
9
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
10
10
|
import { SecretValue } from '@aztec/foundation/config';
|
|
@@ -14,7 +14,7 @@ import { RollupAbi, SlasherAbi, TestERC20Abi } from '@aztec/l1-artifacts';
|
|
|
14
14
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
15
15
|
import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
|
|
16
16
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
17
|
-
import {
|
|
17
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
18
18
|
import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
|
|
19
19
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
20
20
|
import getPort from 'get-port';
|
|
@@ -30,7 +30,7 @@ export const WAIT_FOR_TX_TIMEOUT = l1ContractsConfig.aztecSlotDuration * 3;
|
|
|
30
30
|
export const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES = {
|
|
31
31
|
aztecSlotDuration: 12,
|
|
32
32
|
ethereumSlotDuration: 4,
|
|
33
|
-
|
|
33
|
+
aztecProofSubmissionEpochs: 640
|
|
34
34
|
};
|
|
35
35
|
export class P2PNetworkTest {
|
|
36
36
|
testName;
|
|
@@ -50,7 +50,7 @@ export class P2PNetworkTest {
|
|
|
50
50
|
peerIdPrivateKeys;
|
|
51
51
|
validators;
|
|
52
52
|
deployedAccounts;
|
|
53
|
-
|
|
53
|
+
genesis;
|
|
54
54
|
// The re-execution test needs a wallet and a spam contract
|
|
55
55
|
wallet;
|
|
56
56
|
defaultAccountAddress;
|
|
@@ -72,7 +72,6 @@ export class P2PNetworkTest {
|
|
|
72
72
|
this.peerIdPrivateKeys = [];
|
|
73
73
|
this.validators = [];
|
|
74
74
|
this.deployedAccounts = [];
|
|
75
|
-
this.prefilledPublicData = [];
|
|
76
75
|
this.logger = createLogger(`e2e:e2e_p2p:${testName}`);
|
|
77
76
|
// Set up the base account and node private keys for the initial network deployment
|
|
78
77
|
this.baseAccountPrivateKey = `0x${getPrivateKeyFromIndex(1).toString('hex')}`;
|
|
@@ -88,7 +87,7 @@ export class P2PNetworkTest {
|
|
|
88
87
|
aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
|
|
89
88
|
aztecProofSubmissionEpochs: initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
|
|
90
89
|
slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
91
|
-
|
|
90
|
+
slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
|
|
92
91
|
aztecTargetCommitteeSize: numberOfValidators,
|
|
93
92
|
metricsPort: metricsPort,
|
|
94
93
|
numberOfInitialFundedAccounts: 2,
|
|
@@ -99,7 +98,7 @@ export class P2PNetworkTest {
|
|
|
99
98
|
...initialValidatorConfig,
|
|
100
99
|
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
101
100
|
slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
102
|
-
|
|
101
|
+
slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
|
|
103
102
|
ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
|
|
104
103
|
aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
|
|
105
104
|
aztecProofSubmissionEpochs: initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
|
|
@@ -219,10 +218,9 @@ export class P2PNetworkTest {
|
|
|
219
218
|
if (!this.wallet) {
|
|
220
219
|
throw new Error('Call setupAccount before deploying spam contract');
|
|
221
220
|
}
|
|
222
|
-
|
|
221
|
+
({ contract: this.spamContract } = await SpamContract.deploy(this.wallet).send({
|
|
223
222
|
from: this.defaultAccountAddress
|
|
224
|
-
});
|
|
225
|
-
this.spamContract = spamContract;
|
|
223
|
+
}));
|
|
226
224
|
}
|
|
227
225
|
async removeInitialNode() {
|
|
228
226
|
this.logger.info('Removing initial node');
|
|
@@ -238,7 +236,7 @@ export class P2PNetworkTest {
|
|
|
238
236
|
return await this._sendDummyTx(this.ctx.deployL1ContractsValues.l1Client);
|
|
239
237
|
}
|
|
240
238
|
async _sendDummyTx(l1Client) {
|
|
241
|
-
const l1TxUtils =
|
|
239
|
+
const l1TxUtils = createL1TxUtils(l1Client);
|
|
242
240
|
return await l1TxUtils.sendAndMonitorTransaction({
|
|
243
241
|
to: l1Client.account.address,
|
|
244
242
|
value: 1n
|
|
@@ -250,7 +248,7 @@ export class P2PNetworkTest {
|
|
|
250
248
|
...this.setupOptions,
|
|
251
249
|
fundSponsoredFPC: true,
|
|
252
250
|
skipAccountDeployment: true,
|
|
253
|
-
|
|
251
|
+
slasherEnabled: this.setupOptions.slasherEnabled ?? this.deployL1ContractsArgs.slasherEnabled ?? false,
|
|
254
252
|
aztecTargetCommitteeSize: 0,
|
|
255
253
|
l1ContractsArgs: this.deployL1ContractsArgs
|
|
256
254
|
}, // Use checkpointed chain tip for PXE to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
@@ -263,8 +261,8 @@ export class P2PNetworkTest {
|
|
|
263
261
|
...this.context.initialFundedAccounts.map((a)=>a.address),
|
|
264
262
|
sponsoredFPCAddress
|
|
265
263
|
];
|
|
266
|
-
const {
|
|
267
|
-
this.
|
|
264
|
+
const { genesis } = await getGenesisValues(initialFundedAccounts, undefined, undefined, this.context.genesis.genesisTimestamp);
|
|
265
|
+
this.genesis = genesis;
|
|
268
266
|
const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
|
|
269
267
|
this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
|
|
270
268
|
this.monitor.on('l1-block', ({ timestamp })=>this.context.dateProvider.setTime(Number(timestamp) * 1000));
|
|
@@ -287,7 +285,9 @@ export class P2PNetworkTest {
|
|
|
287
285
|
* @param expectedNodeCount - Expected number of nodes in the network (defaults to nodes.length)
|
|
288
286
|
* @param timeoutSeconds - Maximum time to wait for connections (default: 30 seconds)
|
|
289
287
|
* @param checkIntervalSeconds - How often to check connectivity (default: 0.1 seconds)
|
|
290
|
-
*/ async waitForP2PMeshConnectivity(nodes, expectedNodeCount, timeoutSeconds = 30, checkIntervalSeconds = 0.1
|
|
288
|
+
*/ async waitForP2PMeshConnectivity(nodes, expectedNodeCount, timeoutSeconds = 30, checkIntervalSeconds = 0.1, topics = [
|
|
289
|
+
TopicType.tx
|
|
290
|
+
]) {
|
|
291
291
|
const nodeCount = expectedNodeCount ?? nodes.length;
|
|
292
292
|
const minPeerCount = nodeCount - 1;
|
|
293
293
|
this.logger.warn(`Waiting for all ${nodeCount} nodes to connect to P2P mesh (at least ${minPeerCount} peers each)...`);
|
|
@@ -300,6 +300,21 @@ export class P2PNetworkTest {
|
|
|
300
300
|
}, `Node ${index} to connect to at least ${minPeerCount} peers`, timeoutSeconds, checkIntervalSeconds);
|
|
301
301
|
}));
|
|
302
302
|
this.logger.warn('All nodes connected to P2P mesh');
|
|
303
|
+
// Wait for GossipSub mesh to form for all specified topics.
|
|
304
|
+
// We only require at least 1 mesh peer per node because GossipSub
|
|
305
|
+
// stops grafting once it reaches Dlo peers and won't fill the mesh to all available peers.
|
|
306
|
+
for (const topic of topics){
|
|
307
|
+
this.logger.warn(`Waiting for GossipSub mesh to form for ${topic} topic...`);
|
|
308
|
+
await Promise.all(nodes.map(async (node, index)=>{
|
|
309
|
+
const p2p = node.getP2P();
|
|
310
|
+
await retryUntil(async ()=>{
|
|
311
|
+
const meshPeers = await p2p.getGossipMeshPeerCount(topic);
|
|
312
|
+
this.logger.debug(`Node ${index} has ${meshPeers} gossip mesh peers for ${topic} topic`);
|
|
313
|
+
return meshPeers >= 1 ? true : undefined;
|
|
314
|
+
}, `Node ${index} to have gossip mesh peers for ${topic} topic`, timeoutSeconds, checkIntervalSeconds);
|
|
315
|
+
}));
|
|
316
|
+
this.logger.warn(`All nodes have gossip mesh peers for ${topic} topic`);
|
|
317
|
+
}
|
|
303
318
|
}
|
|
304
319
|
async teardown() {
|
|
305
320
|
await this.monitor.stop();
|
|
@@ -316,14 +331,12 @@ export class P2PNetworkTest {
|
|
|
316
331
|
abi: SlasherAbi,
|
|
317
332
|
client: this.ctx.deployL1ContractsValues.l1Client
|
|
318
333
|
});
|
|
319
|
-
// Get the actual slashing proposer from rollup
|
|
334
|
+
// Get the actual slashing proposer from rollup
|
|
320
335
|
const slashingProposer = await rollup.getSlashingProposer();
|
|
321
|
-
const slashFactory = new SlashFactoryContract(this.ctx.deployL1ContractsValues.l1Client, getAddress(this.ctx.deployL1ContractsValues.l1ContractAddresses.slashFactoryAddress.toString()));
|
|
322
336
|
return {
|
|
323
337
|
rollup,
|
|
324
338
|
slasherContract,
|
|
325
|
-
slashingProposer
|
|
326
|
-
slashFactory
|
|
339
|
+
slashingProposer
|
|
327
340
|
};
|
|
328
341
|
}
|
|
329
342
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
2
2
|
import { P2PNetworkTest } from '../p2p_network.js';
|
|
3
3
|
export declare const NUM_VALIDATORS = 6;
|
|
4
|
-
export declare const NUM_TXS_PER_NODE =
|
|
5
|
-
export declare const BOOT_NODE_UDP_PORT
|
|
4
|
+
export declare const NUM_TXS_PER_NODE = 4;
|
|
5
|
+
export declare const BOOT_NODE_UDP_PORT: number;
|
|
6
6
|
export declare const createReqrespDataDir: () => string;
|
|
7
7
|
type ReqrespOptions = {
|
|
8
8
|
disableStatusHandshake?: boolean;
|
|
@@ -19,4 +19,4 @@ export declare function runReqrespTxTest(params: {
|
|
|
19
19
|
disableStatusHandshake?: boolean;
|
|
20
20
|
}): Promise<AztecNodeService[]>;
|
|
21
21
|
export {};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lMmVfcDJwL3JlcXJlc3AvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWdCMUQsT0FBTyxFQUFFLGNBQWMsRUFBdUIsTUFBTSxtQkFBbUIsQ0FBQztBQUl4RSxlQUFPLE1BQU0sY0FBYyxJQUFJLENBQUM7QUFDaEMsZUFBTyxNQUFNLGdCQUFnQixJQUFJLENBQUM7QUFDbEMsZUFBTyxNQUFNLGtCQUFrQixRQUF1QixDQUFDO0FBRXZELGVBQU8sTUFBTSxvQkFBb0IsY0FBMkQsQ0FBQztBQUU3RixLQUFLLGNBQWMsR0FBRztJQUNwQixzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUNsQyxDQUFDO0FBRUYsd0JBQXNCLGlCQUFpQixDQUFDLE9BQU8sR0FBRSxjQUFtQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0EwQjdGO0FBRUQsd0JBQXNCLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtJQUFFLENBQUMsRUFBRSxjQUFjLENBQUM7SUFBQyxLQUFLLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0lBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQTtDQUFFLGlCQVNsSDtBQUlELHdCQUFzQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7SUFDN0MsQ0FBQyxFQUFFLGNBQWMsQ0FBQztJQUNsQixPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUFDO0NBQ2xDLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FtSjlCIn0=
|