@aztec/end-to-end 3.0.0-nightly.20251024 → 3.0.0-nightly.20251026

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.
@@ -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"}
@@ -11,8 +11,8 @@ const SLASHING_QUORUM = 3;
11
11
  const EPOCH_DURATION = 2;
12
12
  const SLASHING_ROUND_SIZE_IN_EPOCHS = 2;
13
13
  const BOOT_NODE_UDP_PORT = 4500;
14
- const ETHEREUM_SLOT_DURATION = 4;
15
- const AZTEC_SLOT_DURATION = 8;
14
+ const ETHEREUM_SLOT_DURATION = process.env.CI ? 8 : 4;
15
+ const AZTEC_SLOT_DURATION = ETHEREUM_SLOT_DURATION * 2;
16
16
  const SLASHING_UNIT = BigInt(1e18);
17
17
  const SLASHING_AMOUNT = SLASHING_UNIT * 3n;
18
18
  // How many epochs it may take to set everything up, so we dont slash during this period
@@ -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);
@@ -307,7 +307,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
307
307
  l1Contracts: aztecNodeConfig.l1Contracts,
308
308
  port: blobSinkPort,
309
309
  dataDirectory: aztecNodeConfig.dataDirectory,
310
- dataStoreMapSizeKB: aztecNodeConfig.dataStoreMapSizeKB
310
+ dataStoreMapSizeKb: aztecNodeConfig.dataStoreMapSizeKb
311
311
  }, telemetry);
312
312
  await blobSink.start();
313
313
  logger.info('Creating and synching an aztec node...');
@@ -404,7 +404,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
404
404
  l1Contracts: aztecNodeConfig.l1Contracts,
405
405
  port: blobSinkPort,
406
406
  dataDirectory: statePath,
407
- dataStoreMapSizeKB: aztecNodeConfig.dataStoreMapSizeKB
407
+ dataStoreMapSizeKb: aztecNodeConfig.dataStoreMapSizeKb
408
408
  }, telemetry);
409
409
  await blobSink.start();
410
410
  logger.verbose('Creating aztec node...');
@@ -319,7 +319,7 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
319
319
  l1Contracts: config.l1Contracts,
320
320
  port: blobSinkPort,
321
321
  dataDirectory: config.dataDirectory,
322
- dataStoreMapSizeKB: config.dataStoreMapSizeKB
322
+ dataStoreMapSizeKb: config.dataStoreMapSizeKb
323
323
  }, telemetry);
324
324
  await blobSink.start();
325
325
  config.blobSinkUrl = `http://localhost:${blobSinkPort}`;
@@ -190,7 +190,7 @@ export async function createWalletAndAztecNodeClient(nodeUrl, proverEnabled, log
190
190
  ]);
191
191
  const pxeConfig = {
192
192
  dataDirectory: undefined,
193
- dataStoreMapSizeKB: 1024 * 1024,
193
+ dataStoreMapSizeKb: 1024 * 1024,
194
194
  ...bbConfig,
195
195
  ...acvmConfig,
196
196
  proverEnabled
@@ -167,6 +167,17 @@ export declare function installTransferBot({ namespace, spartanDir, logger, repl
167
167
  * Intended for test teardown to clean up bot resources.
168
168
  */
169
169
  export declare function uninstallTransferBot(namespace: string, logger: Logger): Promise<void>;
170
+ /**
171
+ * Enables or disables probabilistic transaction dropping on validators and waits for rollout.
172
+ * Wired to env vars P2P_DROP_TX and P2P_DROP_TX_CHANCE via Helm values.
173
+ */
174
+ export declare function setValidatorTxDrop({ namespace, enabled, probability, logger, }: {
175
+ namespace: string;
176
+ enabled: boolean;
177
+ probability: number;
178
+ logger: Logger;
179
+ }): Promise<void>;
180
+ export declare function restartValidators(namespace: string, logger: Logger): Promise<void>;
170
181
  export declare function enableValidatorDynamicBootNode(instanceName: string, namespace: string, spartanDir: string, logger: Logger): Promise<void>;
171
182
  export declare function getSequencers(namespace: string): Promise<string[]>;
172
183
  export declare function updateSequencersConfig(env: TestConfig, config: Partial<AztecNodeAdminConfig>): Promise<AztecNodeAdminConfig[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/spartan/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/spartan/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAG1B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAyB,MAAM,eAAe,CAAC;AAIpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;EAQpB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAIzD;AAyBD,wBAAgB,WAAW,WAE1B;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,mBAEvF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,mBAG5G;AAED,wBAAsB,gBAAgB,CAAC,EACrC,QAAQ,EACR,SAAS,EACT,aAAa,EACb,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CA6DD;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM;aAjE7C,YAAY;UACf,MAAM;GAsEb;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM;aAzElD,YAAY;UACf,MAAM;GA8Eb;AAED,wBAAsB,oBAAoB,CAAC,EACzC,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,KAAa,GACd,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,mBAOA;AAED,wBAAsB,qBAAqB,CAAC,EAC1C,QAAQ,EACR,SAAS,EACT,KAAK,EACL,OAAc,EACd,KAAa,GACd,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,mBAiBA;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,QAAQ,EACR,KAAK,EACL,SAAS,EACT,SAAmB,EACnB,OAAe,GAChB,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,mBAKA;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAEhE;AAgDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,YAAY,EACZ,eAAe,EACf,UAAU,EACV,YAAY,EACZ,kBAAiC,EACjC,OAAe,EACf,KAAY,EACZ,MAAW,EACX,MAAM,GACP,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;CAChB,mBAgCA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,UAAU,EACV,eAAe,EACf,MAAM,GACP,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB,mBAWA;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,UAAU,EACV,MAAM,GACP,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,mBASA;AAED,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,UAAU,EACV,MAAM,GACP,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,mBASA;AAED,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,UAAU,EACV,eAAe,EACf,MAAM,GACP,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB,mBAWA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,UAAU,EACV,MAAM,EACN,MAAM,GACP,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C,mBASA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,SAAS,EACT,UAAU,EACV,MAAM,GACP,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,mBAQA;AAED,wBAAsB,kBAAkB,CACtC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,iBAef;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAajE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,SAAS,EACT,UAAU,EACV,MAAM,EACN,QAAY,EACZ,iBAAsB,EACtB,WAAuB,EACvB,QAA2G,EAC3G,kBAAkB,EAClB,aAAsE,EACtE,OAAO,EACP,OAAe,EACf,WAAkB,EAClB,iBAAiE,GAClE,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,iBAsFA;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAQ3E;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,SAAS,EACT,OAAO,EACP,WAAW,EACX,MAAM,GACP,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,iBAgCA;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBA+BxE;AAED,wBAAsB,8BAA8B,CAClD,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,iBAgBf;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,qBAMpD;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,mCAK5F;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,mCAElD;AAED,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CA2BpH;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,UAAU;AACf,gDAAgD;AAChD,SAAS,CAAC,EAAE,YAAY,EAAE,GACzB,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC,CAuB5E;AAED,4DAA4D;AAC5D,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAsB5F;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,iBAcpD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAW1C"}
@@ -442,6 +442,80 @@ export async function restartBot(namespace, logger) {
442
442
  label: 'app.kubernetes.io/name=bot'
443
443
  }).catch(()=>undefined);
444
444
  }
445
+ /**
446
+ * Enables or disables probabilistic transaction dropping on validators and waits for rollout.
447
+ * Wired to env vars P2P_DROP_TX and P2P_DROP_TX_CHANCE via Helm values.
448
+ */ export async function setValidatorTxDrop({ namespace, enabled, probability, logger }) {
449
+ const drop = enabled ? 'true' : 'false';
450
+ const prob = String(probability);
451
+ const selectors = [
452
+ 'app=validator',
453
+ 'app.kubernetes.io/component=validator'
454
+ ];
455
+ let updated = false;
456
+ for (const selector of selectors){
457
+ try {
458
+ const list = await execAsync(`kubectl get statefulset -l ${selector} -n ${namespace} --no-headers -o name | cat`);
459
+ const names = list.stdout.split('\n').map((s)=>s.trim()).filter(Boolean);
460
+ if (names.length === 0) {
461
+ continue;
462
+ }
463
+ const cmd = `kubectl set env statefulset -l ${selector} -n ${namespace} P2P_DROP_TX=${drop} P2P_DROP_TX_CHANCE=${prob}`;
464
+ logger.info(`command: ${cmd}`);
465
+ await execAsync(cmd);
466
+ updated = true;
467
+ } catch (e) {
468
+ logger.warn(`Failed to update validators with selector ${selector}: ${String(e)}`);
469
+ }
470
+ }
471
+ if (!updated) {
472
+ logger.warn(`No validator StatefulSets found in ${namespace}. Skipping tx drop toggle.`);
473
+ return;
474
+ }
475
+ // Restart validator pods to ensure env vars take effect and wait for readiness
476
+ await restartValidators(namespace, logger);
477
+ }
478
+ export async function restartValidators(namespace, logger) {
479
+ const selectors = [
480
+ 'app=validator',
481
+ 'app.kubernetes.io/component=validator'
482
+ ];
483
+ let any = false;
484
+ for (const selector of selectors){
485
+ try {
486
+ const { stdout } = await execAsync(`kubectl get pods -l ${selector} -n ${namespace} --no-headers -o name | cat`);
487
+ if (!stdout || stdout.trim().length === 0) {
488
+ continue;
489
+ }
490
+ any = true;
491
+ await deleteResourceByLabel({
492
+ resource: 'pods',
493
+ namespace,
494
+ label: selector
495
+ });
496
+ } catch (e) {
497
+ logger.warn(`Error restarting validator pods with selector ${selector}: ${String(e)}`);
498
+ }
499
+ }
500
+ if (!any) {
501
+ logger.warn(`No validator pods found to restart in ${namespace}.`);
502
+ return;
503
+ }
504
+ // Wait for either label to be Ready
505
+ for (const selector of selectors){
506
+ try {
507
+ await waitForResourceByLabel({
508
+ resource: 'pods',
509
+ namespace,
510
+ label: selector
511
+ });
512
+ return;
513
+ } catch {
514
+ // try next
515
+ }
516
+ }
517
+ logger.warn(`Validator pods did not report Ready; continuing.`);
518
+ }
445
519
  export async function enableValidatorDynamicBootNode(instanceName, namespace, spartanDir, logger) {
446
520
  logger.info(`Enabling validator dynamic boot node`);
447
521
  await execHelmCommand({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/end-to-end",
3
- "version": "3.0.0-nightly.20251024",
3
+ "version": "3.0.0-nightly.20251026",
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.20251024",
29
- "@aztec/archiver": "3.0.0-nightly.20251024",
30
- "@aztec/aztec": "3.0.0-nightly.20251024",
31
- "@aztec/aztec-node": "3.0.0-nightly.20251024",
32
- "@aztec/aztec.js": "3.0.0-nightly.20251024",
33
- "@aztec/bb-prover": "3.0.0-nightly.20251024",
34
- "@aztec/blob-lib": "3.0.0-nightly.20251024",
35
- "@aztec/blob-sink": "3.0.0-nightly.20251024",
36
- "@aztec/bot": "3.0.0-nightly.20251024",
37
- "@aztec/cli": "3.0.0-nightly.20251024",
38
- "@aztec/constants": "3.0.0-nightly.20251024",
39
- "@aztec/entrypoints": "3.0.0-nightly.20251024",
40
- "@aztec/epoch-cache": "3.0.0-nightly.20251024",
41
- "@aztec/ethereum": "3.0.0-nightly.20251024",
42
- "@aztec/foundation": "3.0.0-nightly.20251024",
43
- "@aztec/kv-store": "3.0.0-nightly.20251024",
44
- "@aztec/l1-artifacts": "3.0.0-nightly.20251024",
45
- "@aztec/merkle-tree": "3.0.0-nightly.20251024",
46
- "@aztec/node-keystore": "3.0.0-nightly.20251024",
47
- "@aztec/noir-contracts.js": "3.0.0-nightly.20251024",
48
- "@aztec/noir-noirc_abi": "3.0.0-nightly.20251024",
49
- "@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251024",
50
- "@aztec/noir-test-contracts.js": "3.0.0-nightly.20251024",
51
- "@aztec/p2p": "3.0.0-nightly.20251024",
52
- "@aztec/protocol-contracts": "3.0.0-nightly.20251024",
53
- "@aztec/prover-client": "3.0.0-nightly.20251024",
54
- "@aztec/prover-node": "3.0.0-nightly.20251024",
55
- "@aztec/pxe": "3.0.0-nightly.20251024",
56
- "@aztec/sequencer-client": "3.0.0-nightly.20251024",
57
- "@aztec/simulator": "3.0.0-nightly.20251024",
58
- "@aztec/slasher": "3.0.0-nightly.20251024",
59
- "@aztec/stdlib": "3.0.0-nightly.20251024",
60
- "@aztec/telemetry-client": "3.0.0-nightly.20251024",
61
- "@aztec/test-wallet": "3.0.0-nightly.20251024",
62
- "@aztec/validator-client": "3.0.0-nightly.20251024",
63
- "@aztec/world-state": "3.0.0-nightly.20251024",
28
+ "@aztec/accounts": "3.0.0-nightly.20251026",
29
+ "@aztec/archiver": "3.0.0-nightly.20251026",
30
+ "@aztec/aztec": "3.0.0-nightly.20251026",
31
+ "@aztec/aztec-node": "3.0.0-nightly.20251026",
32
+ "@aztec/aztec.js": "3.0.0-nightly.20251026",
33
+ "@aztec/bb-prover": "3.0.0-nightly.20251026",
34
+ "@aztec/blob-lib": "3.0.0-nightly.20251026",
35
+ "@aztec/blob-sink": "3.0.0-nightly.20251026",
36
+ "@aztec/bot": "3.0.0-nightly.20251026",
37
+ "@aztec/cli": "3.0.0-nightly.20251026",
38
+ "@aztec/constants": "3.0.0-nightly.20251026",
39
+ "@aztec/entrypoints": "3.0.0-nightly.20251026",
40
+ "@aztec/epoch-cache": "3.0.0-nightly.20251026",
41
+ "@aztec/ethereum": "3.0.0-nightly.20251026",
42
+ "@aztec/foundation": "3.0.0-nightly.20251026",
43
+ "@aztec/kv-store": "3.0.0-nightly.20251026",
44
+ "@aztec/l1-artifacts": "3.0.0-nightly.20251026",
45
+ "@aztec/merkle-tree": "3.0.0-nightly.20251026",
46
+ "@aztec/node-keystore": "3.0.0-nightly.20251026",
47
+ "@aztec/noir-contracts.js": "3.0.0-nightly.20251026",
48
+ "@aztec/noir-noirc_abi": "3.0.0-nightly.20251026",
49
+ "@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251026",
50
+ "@aztec/noir-test-contracts.js": "3.0.0-nightly.20251026",
51
+ "@aztec/p2p": "3.0.0-nightly.20251026",
52
+ "@aztec/protocol-contracts": "3.0.0-nightly.20251026",
53
+ "@aztec/prover-client": "3.0.0-nightly.20251026",
54
+ "@aztec/prover-node": "3.0.0-nightly.20251026",
55
+ "@aztec/pxe": "3.0.0-nightly.20251026",
56
+ "@aztec/sequencer-client": "3.0.0-nightly.20251026",
57
+ "@aztec/simulator": "3.0.0-nightly.20251026",
58
+ "@aztec/slasher": "3.0.0-nightly.20251026",
59
+ "@aztec/stdlib": "3.0.0-nightly.20251026",
60
+ "@aztec/telemetry-client": "3.0.0-nightly.20251026",
61
+ "@aztec/test-wallet": "3.0.0-nightly.20251026",
62
+ "@aztec/validator-client": "3.0.0-nightly.20251026",
63
+ "@aztec/world-state": "3.0.0-nightly.20251026",
64
64
  "@iarna/toml": "^2.2.5",
65
65
  "@jest/globals": "^30.0.0",
66
66
  "@noble/curves": "=1.0.0",
@@ -17,8 +17,8 @@ const SLASHING_QUORUM = 3;
17
17
  const EPOCH_DURATION = 2;
18
18
  const SLASHING_ROUND_SIZE_IN_EPOCHS = 2;
19
19
  const BOOT_NODE_UDP_PORT = 4500;
20
- const ETHEREUM_SLOT_DURATION = 4;
21
- const AZTEC_SLOT_DURATION = 8;
20
+ const ETHEREUM_SLOT_DURATION = process.env.CI ? 8 : 4;
21
+ const AZTEC_SLOT_DURATION = ETHEREUM_SLOT_DURATION * 2;
22
22
  const SLASHING_UNIT = BigInt(1e18);
23
23
  const SLASHING_AMOUNT = SLASHING_UNIT * 3n;
24
24
 
@@ -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);
@@ -406,7 +406,7 @@ async function setupFromFresh(
406
406
  l1Contracts: aztecNodeConfig.l1Contracts,
407
407
  port: blobSinkPort,
408
408
  dataDirectory: aztecNodeConfig.dataDirectory,
409
- dataStoreMapSizeKB: aztecNodeConfig.dataStoreMapSizeKB,
409
+ dataStoreMapSizeKb: aztecNodeConfig.dataStoreMapSizeKb,
410
410
  },
411
411
  telemetry,
412
412
  );
@@ -534,7 +534,7 @@ async function setupFromState(statePath: string, logger: Logger): Promise<Subsys
534
534
  l1Contracts: aztecNodeConfig.l1Contracts,
535
535
  port: blobSinkPort,
536
536
  dataDirectory: statePath,
537
- dataStoreMapSizeKB: aztecNodeConfig.dataStoreMapSizeKB,
537
+ dataStoreMapSizeKb: aztecNodeConfig.dataStoreMapSizeKb,
538
538
  },
539
539
  telemetry,
540
540
  );
@@ -539,7 +539,7 @@ export async function setup(
539
539
  l1Contracts: config.l1Contracts,
540
540
  port: blobSinkPort,
541
541
  dataDirectory: config.dataDirectory,
542
- dataStoreMapSizeKB: config.dataStoreMapSizeKB,
542
+ dataStoreMapSizeKb: config.dataStoreMapSizeKb,
543
543
  },
544
544
  telemetry,
545
545
  );
@@ -287,7 +287,7 @@ export async function createWalletAndAztecNodeClient(
287
287
  const [bbConfig, acvmConfig] = await Promise.all([getBBConfig(logger), getACVMConfig(logger)]);
288
288
  const pxeConfig = {
289
289
  dataDirectory: undefined,
290
- dataStoreMapSizeKB: 1024 * 1024,
290
+ dataStoreMapSizeKb: 1024 * 1024,
291
291
  ...bbConfig,
292
292
  ...acvmConfig,
293
293
  proverEnabled,
@@ -278,7 +278,7 @@ function createHelmCommand({
278
278
  namespace: string;
279
279
  valuesFile: string | undefined;
280
280
  timeout: string;
281
- values: Record<string, string | number>;
281
+ values: Record<string, string | number | boolean>;
282
282
  reuseValues?: boolean;
283
283
  }) {
284
284
  const valuesFileArgs = valuesFile ? `--values ${helmChartDir}/values/${valuesFile}` : '';
@@ -633,7 +633,7 @@ export async function installTransferBot({
633
633
  namespace,
634
634
  valuesFile: undefined,
635
635
  timeout,
636
- values: values as unknown as Record<string, string | number>,
636
+ values: values as unknown as Record<string, string | number | boolean>,
637
637
  reuseValues,
638
638
  });
639
639
 
@@ -661,6 +661,87 @@ export async function uninstallTransferBot(namespace: string, logger: Logger) {
661
661
  );
662
662
  }
663
663
 
664
+ /**
665
+ * Enables or disables probabilistic transaction dropping on validators and waits for rollout.
666
+ * Wired to env vars P2P_DROP_TX and P2P_DROP_TX_CHANCE via Helm values.
667
+ */
668
+ export async function setValidatorTxDrop({
669
+ namespace,
670
+ enabled,
671
+ probability,
672
+ logger,
673
+ }: {
674
+ namespace: string;
675
+ enabled: boolean;
676
+ probability: number;
677
+ logger: Logger;
678
+ }) {
679
+ const drop = enabled ? 'true' : 'false';
680
+ const prob = String(probability);
681
+
682
+ const selectors = ['app=validator', 'app.kubernetes.io/component=validator'];
683
+ let updated = false;
684
+ for (const selector of selectors) {
685
+ try {
686
+ const list = await execAsync(`kubectl get statefulset -l ${selector} -n ${namespace} --no-headers -o name | cat`);
687
+ const names = list.stdout
688
+ .split('\n')
689
+ .map(s => s.trim())
690
+ .filter(Boolean);
691
+ if (names.length === 0) {
692
+ continue;
693
+ }
694
+ const cmd = `kubectl set env statefulset -l ${selector} -n ${namespace} P2P_DROP_TX=${drop} P2P_DROP_TX_CHANCE=${prob}`;
695
+ logger.info(`command: ${cmd}`);
696
+ await execAsync(cmd);
697
+ updated = true;
698
+ } catch (e) {
699
+ logger.warn(`Failed to update validators with selector ${selector}: ${String(e)}`);
700
+ }
701
+ }
702
+
703
+ if (!updated) {
704
+ logger.warn(`No validator StatefulSets found in ${namespace}. Skipping tx drop toggle.`);
705
+ return;
706
+ }
707
+
708
+ // Restart validator pods to ensure env vars take effect and wait for readiness
709
+ await restartValidators(namespace, logger);
710
+ }
711
+
712
+ export async function restartValidators(namespace: string, logger: Logger) {
713
+ const selectors = ['app=validator', 'app.kubernetes.io/component=validator'];
714
+ let any = false;
715
+ for (const selector of selectors) {
716
+ try {
717
+ const { stdout } = await execAsync(`kubectl get pods -l ${selector} -n ${namespace} --no-headers -o name | cat`);
718
+ if (!stdout || stdout.trim().length === 0) {
719
+ continue;
720
+ }
721
+ any = true;
722
+ await deleteResourceByLabel({ resource: 'pods', namespace, label: selector });
723
+ } catch (e) {
724
+ logger.warn(`Error restarting validator pods with selector ${selector}: ${String(e)}`);
725
+ }
726
+ }
727
+
728
+ if (!any) {
729
+ logger.warn(`No validator pods found to restart in ${namespace}.`);
730
+ return;
731
+ }
732
+
733
+ // Wait for either label to be Ready
734
+ for (const selector of selectors) {
735
+ try {
736
+ await waitForResourceByLabel({ resource: 'pods', namespace, label: selector });
737
+ return;
738
+ } catch {
739
+ // try next
740
+ }
741
+ }
742
+ logger.warn(`Validator pods did not report Ready; continuing.`);
743
+ }
744
+
664
745
  export async function enableValidatorDynamicBootNode(
665
746
  instanceName: string,
666
747
  namespace: string,