@aztec/end-to-end 3.0.0-nightly.20251025 → 3.0.0-nightly.20251030-2

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.
@@ -234,13 +234,13 @@ export async function captureProfile(label, interaction, opts, expectedSteps) {
234
234
  const benchmark = generateBenchmark(label, logs, result.stats, result.executionSteps, 'wasm', undefined);
235
235
  const ivcFolder = process.env.CAPTURE_IVC_FOLDER;
236
236
  if (ivcFolder) {
237
- logger.info(`Capturing client ivc execution profile for ${label}`);
237
+ logger.info(`Capturing chonk execution profile for ${label}`);
238
238
  const resultsDirectory = join(ivcFolder, label);
239
239
  logger.info(`Writing private execution steps to ${resultsDirectory}`);
240
240
  await mkdir(resultsDirectory, {
241
241
  recursive: true
242
242
  });
243
- // Write the client IVC files read by the prover.
243
+ // Write the chonk files read by the prover.
244
244
  const ivcInputsPath = join(resultsDirectory, 'ivc-inputs.msgpack');
245
245
  await writeFile(ivcInputsPath, serializePrivateExecutionSteps(result.executionSteps));
246
246
  await writeFile(join(resultsDirectory, 'logs.json'), JSON.stringify(logs, null, 2));
@@ -40,7 +40,7 @@ async function main() {
40
40
  bbBinaryPath: process.env.BB_BINARY_PATH,
41
41
  bbWorkingDirectory: process.env.BB_WORKING_DIRECTORY
42
42
  }, proxyLogger.createLogger('bb:prover'));
43
- const userLog = createLogger('client_ivc_flows:data_processor');
43
+ const userLog = createLogger('chonk_flows:data_processor');
44
44
  for (const flow of flows){
45
45
  userLog.info(`Processing flow ${flow}`);
46
46
  const ivcInputs = await readFile(join(ivcFolder, flow, 'ivc-inputs.msgpack'));
@@ -73,10 +73,10 @@ async function main() {
73
73
  let provingTime;
74
74
  try {
75
75
  const provingTimer = new Timer();
76
- await prover.createClientIvcProof(privateExecutionSteps);
76
+ await prover.createChonkProof(privateExecutionSteps);
77
77
  provingTime = provingTimer.ms();
78
78
  } catch (e) {
79
- userLog.error(`Failed to generate client ivc proof for ${flow}`, e);
79
+ userLog.error(`Failed to generate chonk proof for ${flow}`, e);
80
80
  error = e.message;
81
81
  }
82
82
  // Extract logs from this run from the proxy and write them to disk unconditionally
@@ -1 +1 @@
1
- {"version":3,"file":"write_json.d.ts","sourceRoot":"","sources":["../../src/e2e_l1_publisher/write_json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAOpD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,EAAE,EAAE,EACnB,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,YAAY,EAC9B,eAAe,EAAE,KAAK,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAqDf"}
1
+ {"version":3,"file":"write_json.d.ts","sourceRoot":"","sources":["../../src/e2e_l1_publisher/write_json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAiC,MAAM,iBAAiB,CAAC;AAOnF;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,EAAE,EAAE,EACnB,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,YAAY,EAC9B,eAAe,EAAE,KAAK,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAqDf"}
@@ -1,4 +1,4 @@
1
- import { Blob } from '@aztec/blob-lib';
1
+ import { getPrefixedEthBlobCommitments } from '@aztec/blob-lib';
2
2
  import { writeFile } from 'fs/promises';
3
3
  const AZTEC_GENERATE_TEST_DATA = !!process.env.AZTEC_GENERATE_TEST_DATA;
4
4
  /**
@@ -27,7 +27,7 @@ const AZTEC_GENERATE_TEST_DATA = !!process.env.AZTEC_GENERATE_TEST_DATA;
27
27
  // The json formatting in forge is a bit brittle, so we convert Fr to a number in the few values below.
28
28
  // This should not be a problem for testing as long as the values are not larger than u32.
29
29
  archive: asHex(block.archive.root),
30
- blobCommitments: Blob.getPrefixedEthBlobCommitments(blobs),
30
+ blobCommitments: getPrefixedEthBlobCommitments(blobs),
31
31
  batchedBlobInputs: batchedBlob.getEthBlobEvaluationInputs(),
32
32
  blockNumber: block.number,
33
33
  body: `0x${block.body.toBuffer().toString('hex')}`,
@@ -1 +1 @@
1
- {"version":3,"file":"inactivity_slash_test.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/inactivity_slash_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,eAAe,CAAC;AAKvB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAiBlD,qBAAa,iBAAiB;aAaV,IAAI,EAAE,cAAc;IAZ/B,KAAK,EAAG,gBAAgB,EAAE,CAAC;IAC3B,WAAW,EAAG,gBAAgB,EAAE,CAAC;IACjC,aAAa,EAAG,gBAAgB,EAAE,CAAC;IAEnC,MAAM,EAAG,cAAc,CAAC;IACxB,iBAAiB,EAAG,UAAU,EAAE,CAAC;IAExC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAU;gBAGf,IAAI,EAAE,cAAc,EACpC,IAAI,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE;WAOnD,MAAM,CACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QAAE,wCAAwC,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE;IAgCrG,KAAK;IAwEL,QAAQ;IAQrB,IAAW,GAAG,gEAEb;IAED,IAAW,MAAM,2CAEhB;IAED,IAAW,cAAc,WAExB;CACF"}
1
+ {"version":3,"file":"inactivity_slash_test.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/inactivity_slash_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,eAAe,CAAC;AAKvB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAiBlD,qBAAa,iBAAiB;aAaV,IAAI,EAAE,cAAc;IAZ/B,KAAK,EAAG,gBAAgB,EAAE,CAAC;IAC3B,WAAW,EAAG,gBAAgB,EAAE,CAAC;IACjC,aAAa,EAAG,gBAAgB,EAAE,CAAC;IAEnC,MAAM,EAAG,cAAc,CAAC;IACxB,iBAAiB,EAAG,UAAU,EAAE,CAAC;IAExC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAU;gBAGf,IAAI,EAAE,cAAc,EACpC,IAAI,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE;WAOnD,MAAM,CACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QAAE,wCAAwC,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE;IAgCrG,KAAK;IA4EL,QAAQ;IAQrB,IAAW,GAAG,gEAEb;IAED,IAAW,MAAM,2CAEhB;IAED,IAAW,cAAc,WAExB;CACF"}
@@ -105,6 +105,9 @@ export class P2PInactivityTest {
105
105
  validators: this.test.validators,
106
106
  offlineValidators: this.offlineValidators
107
107
  });
108
+ // Wait for P2P mesh to be fully formed before starting slashing period
109
+ // This prevents race conditions where validators propose blocks before the network is ready
110
+ await this.test.waitForP2PMeshConnectivity(this.nodes, NUM_NODES);
108
111
  this.test.logger.warn(`Advancing to epoch ${SETUP_EPOCH_DURATION + 1} to start slashing`);
109
112
  await this.test.ctx.cheatCodes.rollup.advanceToEpoch(SETUP_EPOCH_DURATION + 1);
110
113
  return this;
@@ -86,6 +86,17 @@ export declare class P2PNetworkTest {
86
86
  private _sendDummyTx;
87
87
  setup(): Promise<void>;
88
88
  stopNodes(nodes: AztecNodeService[]): Promise<void>;
89
+ /**
90
+ * Wait for P2P mesh to be fully formed across all nodes.
91
+ * This ensures that all nodes are connected to each other before proceeding,
92
+ * preventing race conditions where validators propose blocks before the network is ready.
93
+ *
94
+ * @param nodes - Array of nodes to check for P2P connectivity
95
+ * @param expectedNodeCount - Expected number of nodes in the network (defaults to nodes.length)
96
+ * @param timeoutSeconds - Maximum time to wait for connections (default: 30 seconds)
97
+ * @param checkIntervalSeconds - How often to check connectivity (default: 0.1 seconds)
98
+ */
99
+ waitForP2PMeshConnectivity(nodes: AztecNodeService[], expectedNodeCount?: number, timeoutSeconds?: number, checkIntervalSeconds?: number): Promise<void>;
89
100
  teardown(): Promise<void>;
90
101
  getContracts(): Promise<{
91
102
  rollup: RollupContract;
@@ -1 +1 @@
1
- {"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { GSEContract, MultiAdderArtifact, RollupContract, createL1TxUtilsFromVie
4
4
  import { ChainMonitor } from '@aztec/ethereum/test';
5
5
  import { SecretValue } from '@aztec/foundation/config';
6
6
  import { createLogger } from '@aztec/foundation/log';
7
+ import { retryUntil } from '@aztec/foundation/retry';
7
8
  import { RollupAbi, SlasherAbi, TestERC20Abi } from '@aztec/l1-artifacts';
8
9
  import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
9
10
  import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
@@ -266,6 +267,29 @@ export class P2PNetworkTest {
266
267
  await Promise.all(nodes.map((node)=>node.stop()));
267
268
  this.logger.info('Nodes stopped');
268
269
  }
270
+ /**
271
+ * Wait for P2P mesh to be fully formed across all nodes.
272
+ * This ensures that all nodes are connected to each other before proceeding,
273
+ * preventing race conditions where validators propose blocks before the network is ready.
274
+ *
275
+ * @param nodes - Array of nodes to check for P2P connectivity
276
+ * @param expectedNodeCount - Expected number of nodes in the network (defaults to nodes.length)
277
+ * @param timeoutSeconds - Maximum time to wait for connections (default: 30 seconds)
278
+ * @param checkIntervalSeconds - How often to check connectivity (default: 0.1 seconds)
279
+ */ async waitForP2PMeshConnectivity(nodes, expectedNodeCount, timeoutSeconds = 30, checkIntervalSeconds = 0.1) {
280
+ const nodeCount = expectedNodeCount ?? nodes.length;
281
+ const minPeerCount = nodeCount - 1;
282
+ this.logger.warn(`Waiting for all ${nodeCount} nodes to connect to P2P mesh (at least ${minPeerCount} peers each)...`);
283
+ await Promise.all(nodes.map(async (node, index)=>{
284
+ const p2p = node.getP2P();
285
+ await retryUntil(async ()=>{
286
+ const peers = await p2p.getPeers();
287
+ // Each node should be connected to at least N-1 other nodes
288
+ return peers.length >= minPeerCount ? true : undefined;
289
+ }, `Node ${index} to connect to at least ${minPeerCount} peers`, timeoutSeconds, checkIntervalSeconds);
290
+ }));
291
+ this.logger.warn('All nodes connected to P2P mesh');
292
+ }
269
293
  async teardown() {
270
294
  await this.monitor.stop();
271
295
  await tryStop(this.bootstrapNode, this.logger);
@@ -6,7 +6,7 @@ import { fileURLToPath } from 'url';
6
6
  const { BB_RELEASE_DIR = 'barretenberg/cpp/build/bin', BB_BINARY_PATH, BB_SKIP_CLEANUP = '', TEMP_DIR = tmpdir(), BB_WORKING_DIRECTORY = '', BB_NUM_IVC_VERIFIERS = '1', BB_IVC_CONCURRENCY = '1' } = process.env;
7
7
  export const getBBConfig = async (logger)=>{
8
8
  try {
9
- const bbBinaryPath = BB_BINARY_PATH ?? path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../', BB_RELEASE_DIR, 'bb');
9
+ const bbBinaryPath = BB_BINARY_PATH ?? path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../', BB_RELEASE_DIR, 'bb-avm');
10
10
  await fs.access(bbBinaryPath, fs.constants.R_OK);
11
11
  let bbWorkingDirectory;
12
12
  let directoryToCleanup;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/end-to-end",
3
- "version": "3.0.0-nightly.20251025",
3
+ "version": "3.0.0-nightly.20251030-2",
4
4
  "type": "module",
5
5
  "exports": "./dest/index.js",
6
6
  "inherits": [
@@ -25,42 +25,42 @@
25
25
  "formatting": "run -T prettier --check ./src && run -T eslint ./src"
26
26
  },
27
27
  "dependencies": {
28
- "@aztec/accounts": "3.0.0-nightly.20251025",
29
- "@aztec/archiver": "3.0.0-nightly.20251025",
30
- "@aztec/aztec": "3.0.0-nightly.20251025",
31
- "@aztec/aztec-node": "3.0.0-nightly.20251025",
32
- "@aztec/aztec.js": "3.0.0-nightly.20251025",
33
- "@aztec/bb-prover": "3.0.0-nightly.20251025",
34
- "@aztec/blob-lib": "3.0.0-nightly.20251025",
35
- "@aztec/blob-sink": "3.0.0-nightly.20251025",
36
- "@aztec/bot": "3.0.0-nightly.20251025",
37
- "@aztec/cli": "3.0.0-nightly.20251025",
38
- "@aztec/constants": "3.0.0-nightly.20251025",
39
- "@aztec/entrypoints": "3.0.0-nightly.20251025",
40
- "@aztec/epoch-cache": "3.0.0-nightly.20251025",
41
- "@aztec/ethereum": "3.0.0-nightly.20251025",
42
- "@aztec/foundation": "3.0.0-nightly.20251025",
43
- "@aztec/kv-store": "3.0.0-nightly.20251025",
44
- "@aztec/l1-artifacts": "3.0.0-nightly.20251025",
45
- "@aztec/merkle-tree": "3.0.0-nightly.20251025",
46
- "@aztec/node-keystore": "3.0.0-nightly.20251025",
47
- "@aztec/noir-contracts.js": "3.0.0-nightly.20251025",
48
- "@aztec/noir-noirc_abi": "3.0.0-nightly.20251025",
49
- "@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251025",
50
- "@aztec/noir-test-contracts.js": "3.0.0-nightly.20251025",
51
- "@aztec/p2p": "3.0.0-nightly.20251025",
52
- "@aztec/protocol-contracts": "3.0.0-nightly.20251025",
53
- "@aztec/prover-client": "3.0.0-nightly.20251025",
54
- "@aztec/prover-node": "3.0.0-nightly.20251025",
55
- "@aztec/pxe": "3.0.0-nightly.20251025",
56
- "@aztec/sequencer-client": "3.0.0-nightly.20251025",
57
- "@aztec/simulator": "3.0.0-nightly.20251025",
58
- "@aztec/slasher": "3.0.0-nightly.20251025",
59
- "@aztec/stdlib": "3.0.0-nightly.20251025",
60
- "@aztec/telemetry-client": "3.0.0-nightly.20251025",
61
- "@aztec/test-wallet": "3.0.0-nightly.20251025",
62
- "@aztec/validator-client": "3.0.0-nightly.20251025",
63
- "@aztec/world-state": "3.0.0-nightly.20251025",
28
+ "@aztec/accounts": "3.0.0-nightly.20251030-2",
29
+ "@aztec/archiver": "3.0.0-nightly.20251030-2",
30
+ "@aztec/aztec": "3.0.0-nightly.20251030-2",
31
+ "@aztec/aztec-node": "3.0.0-nightly.20251030-2",
32
+ "@aztec/aztec.js": "3.0.0-nightly.20251030-2",
33
+ "@aztec/bb-prover": "3.0.0-nightly.20251030-2",
34
+ "@aztec/blob-lib": "3.0.0-nightly.20251030-2",
35
+ "@aztec/blob-sink": "3.0.0-nightly.20251030-2",
36
+ "@aztec/bot": "3.0.0-nightly.20251030-2",
37
+ "@aztec/cli": "3.0.0-nightly.20251030-2",
38
+ "@aztec/constants": "3.0.0-nightly.20251030-2",
39
+ "@aztec/entrypoints": "3.0.0-nightly.20251030-2",
40
+ "@aztec/epoch-cache": "3.0.0-nightly.20251030-2",
41
+ "@aztec/ethereum": "3.0.0-nightly.20251030-2",
42
+ "@aztec/foundation": "3.0.0-nightly.20251030-2",
43
+ "@aztec/kv-store": "3.0.0-nightly.20251030-2",
44
+ "@aztec/l1-artifacts": "3.0.0-nightly.20251030-2",
45
+ "@aztec/merkle-tree": "3.0.0-nightly.20251030-2",
46
+ "@aztec/node-keystore": "3.0.0-nightly.20251030-2",
47
+ "@aztec/noir-contracts.js": "3.0.0-nightly.20251030-2",
48
+ "@aztec/noir-noirc_abi": "3.0.0-nightly.20251030-2",
49
+ "@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251030-2",
50
+ "@aztec/noir-test-contracts.js": "3.0.0-nightly.20251030-2",
51
+ "@aztec/p2p": "3.0.0-nightly.20251030-2",
52
+ "@aztec/protocol-contracts": "3.0.0-nightly.20251030-2",
53
+ "@aztec/prover-client": "3.0.0-nightly.20251030-2",
54
+ "@aztec/prover-node": "3.0.0-nightly.20251030-2",
55
+ "@aztec/pxe": "3.0.0-nightly.20251030-2",
56
+ "@aztec/sequencer-client": "3.0.0-nightly.20251030-2",
57
+ "@aztec/simulator": "3.0.0-nightly.20251030-2",
58
+ "@aztec/slasher": "3.0.0-nightly.20251030-2",
59
+ "@aztec/stdlib": "3.0.0-nightly.20251030-2",
60
+ "@aztec/telemetry-client": "3.0.0-nightly.20251030-2",
61
+ "@aztec/test-wallet": "3.0.0-nightly.20251030-2",
62
+ "@aztec/validator-client": "3.0.0-nightly.20251030-2",
63
+ "@aztec/world-state": "3.0.0-nightly.20251030-2",
64
64
  "@iarna/toml": "^2.2.5",
65
65
  "@jest/globals": "^30.0.0",
66
66
  "@noble/curves": "=1.0.0",
@@ -315,12 +315,12 @@ export async function captureProfile(
315
315
 
316
316
  const ivcFolder = process.env.CAPTURE_IVC_FOLDER;
317
317
  if (ivcFolder) {
318
- logger.info(`Capturing client ivc execution profile for ${label}`);
318
+ logger.info(`Capturing chonk execution profile for ${label}`);
319
319
 
320
320
  const resultsDirectory = join(ivcFolder, label);
321
321
  logger.info(`Writing private execution steps to ${resultsDirectory}`);
322
322
  await mkdir(resultsDirectory, { recursive: true });
323
- // Write the client IVC files read by the prover.
323
+ // Write the chonk files read by the prover.
324
324
  const ivcInputsPath = join(resultsDirectory, 'ivc-inputs.msgpack');
325
325
  await writeFile(ivcInputsPath, serializePrivateExecutionSteps(result.executionSteps));
326
326
  await writeFile(join(resultsDirectory, 'logs.json'), JSON.stringify(logs, null, 2));
@@ -46,7 +46,7 @@ async function main() {
46
46
  proxyLogger.createLogger('bb:prover'),
47
47
  );
48
48
 
49
- const userLog = createLogger('client_ivc_flows:data_processor');
49
+ const userLog = createLogger('chonk_flows:data_processor');
50
50
 
51
51
  for (const flow of flows) {
52
52
  userLog.info(`Processing flow ${flow}`);
@@ -84,10 +84,10 @@ async function main() {
84
84
  let provingTime;
85
85
  try {
86
86
  const provingTimer = new Timer();
87
- await prover.createClientIvcProof(privateExecutionSteps);
87
+ await prover.createChonkProof(privateExecutionSteps);
88
88
  provingTime = provingTimer.ms();
89
89
  } catch (e) {
90
- userLog.error(`Failed to generate client ivc proof for ${flow}`, e);
90
+ userLog.error(`Failed to generate chonk proof for ${flow}`, e);
91
91
  error = (e as Error).message;
92
92
  }
93
93
  // Extract logs from this run from the proxy and write them to disk unconditionally
@@ -1,7 +1,7 @@
1
1
  import { AztecAddress } from '@aztec/aztec.js/addresses';
2
2
  import type { L2Block } from '@aztec/aztec.js/block';
3
3
  import { Fr } from '@aztec/aztec.js/fields';
4
- import { BatchedBlob, Blob } from '@aztec/blob-lib';
4
+ import { BatchedBlob, Blob, getPrefixedEthBlobCommitments } from '@aztec/blob-lib';
5
5
  import { EthAddress } from '@aztec/foundation/eth-address';
6
6
 
7
7
  import { writeFile } from 'fs/promises';
@@ -45,7 +45,7 @@ export async function writeJson(
45
45
  // The json formatting in forge is a bit brittle, so we convert Fr to a number in the few values below.
46
46
  // This should not be a problem for testing as long as the values are not larger than u32.
47
47
  archive: asHex(block.archive.root),
48
- blobCommitments: Blob.getPrefixedEthBlobCommitments(blobs),
48
+ blobCommitments: getPrefixedEthBlobCommitments(blobs),
49
49
  batchedBlobInputs: batchedBlob.getEthBlobEvaluationInputs(),
50
50
  blockNumber: block.number,
51
51
  body: `0x${block.body.toBuffer().toString('hex')}`,
@@ -146,6 +146,10 @@ export class P2PInactivityTest {
146
146
  offlineValidators: this.offlineValidators,
147
147
  });
148
148
 
149
+ // Wait for P2P mesh to be fully formed before starting slashing period
150
+ // This prevents race conditions where validators propose blocks before the network is ready
151
+ await this.test.waitForP2PMeshConnectivity(this.nodes, NUM_NODES);
152
+
149
153
  this.test.logger.warn(`Advancing to epoch ${SETUP_EPOCH_DURATION + 1} to start slashing`);
150
154
  await this.test.ctx.cheatCodes.rollup.advanceToEpoch(SETUP_EPOCH_DURATION + 1);
151
155
 
@@ -18,6 +18,7 @@ import {
18
18
  import { ChainMonitor } from '@aztec/ethereum/test';
19
19
  import { SecretValue } from '@aztec/foundation/config';
20
20
  import { type Logger, createLogger } from '@aztec/foundation/log';
21
+ import { retryUntil } from '@aztec/foundation/retry';
21
22
  import { RollupAbi, SlasherAbi, TestERC20Abi } from '@aztec/l1-artifacts';
22
23
  import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
23
24
  import type { BootstrapNode } from '@aztec/p2p/bootstrap';
@@ -389,6 +390,48 @@ export class P2PNetworkTest {
389
390
  this.logger.info('Nodes stopped');
390
391
  }
391
392
 
393
+ /**
394
+ * Wait for P2P mesh to be fully formed across all nodes.
395
+ * This ensures that all nodes are connected to each other before proceeding,
396
+ * preventing race conditions where validators propose blocks before the network is ready.
397
+ *
398
+ * @param nodes - Array of nodes to check for P2P connectivity
399
+ * @param expectedNodeCount - Expected number of nodes in the network (defaults to nodes.length)
400
+ * @param timeoutSeconds - Maximum time to wait for connections (default: 30 seconds)
401
+ * @param checkIntervalSeconds - How often to check connectivity (default: 0.1 seconds)
402
+ */
403
+ async waitForP2PMeshConnectivity(
404
+ nodes: AztecNodeService[],
405
+ expectedNodeCount?: number,
406
+ timeoutSeconds = 30,
407
+ checkIntervalSeconds = 0.1,
408
+ ) {
409
+ const nodeCount = expectedNodeCount ?? nodes.length;
410
+ const minPeerCount = nodeCount - 1;
411
+
412
+ this.logger.warn(
413
+ `Waiting for all ${nodeCount} nodes to connect to P2P mesh (at least ${minPeerCount} peers each)...`,
414
+ );
415
+
416
+ await Promise.all(
417
+ nodes.map(async (node, index) => {
418
+ const p2p = node.getP2P();
419
+ await retryUntil(
420
+ async () => {
421
+ const peers = await p2p.getPeers();
422
+ // Each node should be connected to at least N-1 other nodes
423
+ return peers.length >= minPeerCount ? true : undefined;
424
+ },
425
+ `Node ${index} to connect to at least ${minPeerCount} peers`,
426
+ timeoutSeconds,
427
+ checkIntervalSeconds,
428
+ );
429
+ }),
430
+ );
431
+
432
+ this.logger.warn('All nodes connected to P2P mesh');
433
+ }
434
+
392
435
  async teardown() {
393
436
  await this.monitor.stop();
394
437
  await tryStop(this.bootstrapNode, this.logger);
@@ -23,7 +23,7 @@ export const getBBConfig = async (
23
23
  try {
24
24
  const bbBinaryPath =
25
25
  BB_BINARY_PATH ??
26
- path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../', BB_RELEASE_DIR, 'bb');
26
+ path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../', BB_RELEASE_DIR, 'bb-avm');
27
27
  await fs.access(bbBinaryPath, fs.constants.R_OK);
28
28
 
29
29
  let bbWorkingDirectory: string;