@aztec/end-to-end 2.0.3 → 2.1.0-rc.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.
Files changed (38) hide show
  1. package/dest/e2e_epochs/epochs_test.d.ts +4 -2
  2. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  3. package/dest/e2e_epochs/epochs_test.js +7 -7
  4. package/dest/e2e_multi_validator/utils.d.ts.map +1 -1
  5. package/dest/e2e_multi_validator/utils.js +3 -9
  6. package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
  7. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
  8. package/dest/e2e_p2p/inactivity_slash_test.js +132 -0
  9. package/dest/e2e_p2p/p2p_network.d.ts +6 -4
  10. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  11. package/dest/e2e_p2p/p2p_network.js +4 -5
  12. package/dest/e2e_p2p/shared.d.ts +2 -1
  13. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  14. package/dest/e2e_p2p/shared.js +8 -12
  15. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  16. package/dest/fixtures/e2e_prover_test.js +2 -1
  17. package/dest/fixtures/setup_p2p_test.d.ts +10 -2
  18. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  19. package/dest/fixtures/setup_p2p_test.js +38 -20
  20. package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
  21. package/dest/fixtures/snapshot_manager.js +16 -13
  22. package/dest/fixtures/utils.d.ts +3 -1
  23. package/dest/fixtures/utils.d.ts.map +1 -1
  24. package/dest/fixtures/utils.js +7 -6
  25. package/dest/fixtures/web3signer.d.ts +5 -0
  26. package/dest/fixtures/web3signer.d.ts.map +1 -0
  27. package/dest/fixtures/web3signer.js +42 -0
  28. package/package.json +37 -37
  29. package/src/e2e_epochs/epochs_test.ts +10 -8
  30. package/src/e2e_multi_validator/utils.ts +3 -9
  31. package/src/e2e_p2p/inactivity_slash_test.ts +174 -0
  32. package/src/e2e_p2p/p2p_network.ts +11 -10
  33. package/src/e2e_p2p/shared.ts +13 -7
  34. package/src/fixtures/e2e_prover_test.ts +1 -0
  35. package/src/fixtures/setup_p2p_test.ts +60 -19
  36. package/src/fixtures/snapshot_manager.ts +19 -11
  37. package/src/fixtures/utils.ts +10 -7
  38. package/src/fixtures/web3signer.ts +46 -0
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot_manager.d.ts","sourceRoot":"","sources":["../../src/fixtures/snapshot_manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshot_manager.d.ts","sourceRoot":"","sources":["../../src/fixtures/snapshot_manager.ts"],"names":[],"mappings":"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"}
@@ -234,17 +234,6 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
234
234
  aztecNodeConfig.dataDirectory = statePath;
235
235
  }
236
236
  aztecNodeConfig.blobSinkUrl = `http://127.0.0.1:${blobSinkPort}`;
237
- // Start anvil. We go via a wrapper script to ensure if the parent dies, anvil dies.
238
- logger.verbose('Starting anvil...');
239
- const res = await startAnvil({
240
- l1BlockTime: opts.ethereumSlotDuration
241
- });
242
- const anvil = res.anvil;
243
- aztecNodeConfig.l1RpcUrls = [
244
- res.rpcUrl
245
- ];
246
- // Deploy our L1 contracts.
247
- logger.verbose('Deploying L1 contracts...');
248
237
  const hdAccount = mnemonicToAccount(MNEMONIC, {
249
238
  addressIndex: 0
250
239
  });
@@ -262,7 +251,19 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
262
251
  `0x${validatorPrivKey.toString('hex')}`
263
252
  ]);
264
253
  aztecNodeConfig.coinbase = opts.coinbase ?? EthAddress.fromString(`${hdAccount.address}`);
254
+ logger.info(`Setting up environment with config`, aztecNodeConfig);
255
+ // Start anvil. We go via a wrapper script to ensure if the parent dies, anvil dies.
256
+ logger.verbose('Starting anvil...');
257
+ const res = await startAnvil({
258
+ l1BlockTime: opts.ethereumSlotDuration
259
+ });
260
+ const anvil = res.anvil;
261
+ aztecNodeConfig.l1RpcUrls = [
262
+ res.rpcUrl
263
+ ];
265
264
  const ethCheatCodes = new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls);
265
+ // Deploy our L1 contracts.
266
+ logger.verbose('Deploying L1 contracts...');
266
267
  if (opts.l1StartTime) {
267
268
  await ethCheatCodes.warp(opts.l1StartTime, {
268
269
  resetBlockInterval: true
@@ -282,7 +283,6 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
282
283
  });
283
284
  aztecNodeConfig.l1Contracts = deployL1ContractsValues.l1ContractAddresses;
284
285
  aztecNodeConfig.rollupVersion = deployL1ContractsValues.rollupVersion;
285
- aztecNodeConfig.l1PublishRetryIntervalMS = 100;
286
286
  const dateProvider = new TestDateProvider();
287
287
  const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider);
288
288
  await watcher.start();
@@ -318,6 +318,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
318
318
  if (opts.startProverNode) {
319
319
  logger.verbose('Creating and syncing a simulated prover node with p2p disabled...');
320
320
  proverNode = await createAndSyncProverNode(`0x${proverNodePrivateKey.toString('hex')}`, aztecNodeConfig, {
321
+ ...aztecNodeConfig.proverNodeConfig,
321
322
  dataDirectory: path.join(directoryToCleanup, randomBytes(8).toString('hex')),
322
323
  p2pEnabled: false
323
324
  }, aztecNode, prefilledPublicData);
@@ -416,7 +417,9 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
416
417
  const proverNodePrivateKey = getPrivateKeyFromIndex(2);
417
418
  const proverNodePrivateKeyHex = `0x${proverNodePrivateKey.toString('hex')}`;
418
419
  proverNode = await createAndSyncProverNode(proverNodePrivateKeyHex, aztecNodeConfig, {
419
- dataDirectory: path.join(directoryToCleanup, randomBytes(8).toString('hex'))
420
+ ...aztecNodeConfig.proverNodeConfig,
421
+ dataDirectory: path.join(directoryToCleanup, randomBytes(8).toString('hex')),
422
+ p2pEnabled: false
420
423
  }, aztecNode, prefilledPublicData);
421
424
  }
422
425
  logger.verbose('Creating pxe...');
@@ -192,5 +192,7 @@ export declare function setupSponsoredFPC(pxe: PXE): Promise<ContractInstanceWit
192
192
  */
193
193
  export declare function registerSponsoredFPC(pxe: PXE): Promise<void>;
194
194
  export declare function waitForProvenChain(node: AztecNode, targetBlock?: number, timeoutSec?: number, intervalSec?: number): Promise<void>;
195
- export declare function createAndSyncProverNode(proverNodePrivateKey: `0x${string}`, aztecNodeConfig: AztecNodeConfig, proverNodeConfig: Partial<ProverNodeConfig> & Pick<DataStoreConfig, 'dataDirectory'>, aztecNode: AztecNode | undefined, prefilledPublicData?: PublicDataTreeLeaf[], proverNodeDeps?: ProverNodeDeps): Promise<ProverNode>;
195
+ export declare function createAndSyncProverNode(proverNodePrivateKey: `0x${string}`, aztecNodeConfig: AztecNodeConfig, proverNodeConfig: Partial<ProverNodeConfig> & Pick<DataStoreConfig, 'dataDirectory'> & {
196
+ dontStart?: boolean;
197
+ }, aztecNode: AztecNode | undefined, prefilledPublicData?: PublicDataTreeLeaf[], proverNodeDeps?: ProverNodeDeps): Promise<ProverNode>;
196
198
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,eAAe,EAAsC,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EACjB,KAAK,SAAS,EAEd,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,GAAG,EACR,KAAK,MAAM,EAOZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,yBAAyB,CAAC;AAEpF,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAGhC,KAAK,QAAQ,EAOd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,aAAa,EAGb,UAAU,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EAAgB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,oBAAoB,EAAkC,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAoB,MAAM,oBAAoB,CAAC;AACnH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,gBAAgB,EAGtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,EACL,KAAK,2BAA2B,EAGjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAG3B,MAAM,yBAAyB,CAAC;AASjC,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAY,KAAK,iBAAiB,EAAe,MAAM,MAAM,CAAC;AASjG,OAAO,EAAE,0CAA0C,EAAE,MAAM,uCAAuC,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,CAAC;AAmBtB,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,IAI/D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,WAAW,MAAM,EAAE,EACnB,SAAS,SAAS,GAAG,iBAAiB,EACtC,QAAQ,MAAM,EACd,OAAM,OAAO,CAAC,qBAAqB,CAAM,EACzC,QAAO,KAAe,yCAcvB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,EACpC,MAAM,SAAc,EACpB,YAAY,UAAQ,GACnB,OAAO,CAAC;IACT;;OAEG;IACH,GAAG,EAAE,UAAU,CAAC;IAChB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC,CA2BD;AAyED,sCAAsC;AACtC,MAAM,MAAM,YAAY,GAAG;IACzB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,0CAA0C;IAC1C,uBAAuB,CAAC,EAAE,2BAA2B,CAAC;IACtD,4EAA4E;IAC5E,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,6CAA6C;IAC7C,sBAAsB,CAAC,EAAE,EAAE,CAAC;IAC5B,uDAAuD;IACvD,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,0CAA0C;IAC1C,qBAAqB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC7C,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,GAAG;QAAE,UAAU,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,CAAC,EAAE,CAAC;IACjE,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4CAA4C;IAC5C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,6CAA6C;IAC7C,eAAe,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3E,+DAA+D;IAC/D,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACzC,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,gEAAgE;IAChE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gFAAgF;IAChF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,6GAA6G;IAC7G,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,WAAW,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;CAC7C,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAE7B,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG;IAC5B,0DAA0D;IAC1D,SAAS,EAAE,SAAS,CAAC;IACrB,8FAA8F;IAC9F,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oEAAoE;IACpE,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,uFAAuF;IACvF,SAAS,EAAE,eAAe,GAAG,SAAS,CAAC;IACvC,+CAA+C;IAC/C,GAAG,EAAE,GAAG,CAAC;IACT,qDAAqD;IACrD,uBAAuB,EAAE,2BAA2B,CAAC;IACrD,oCAAoC;IACpC,MAAM,EAAE,eAAe,CAAC;IACxB,gDAAgD;IAChD,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;IAE5C,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACtC,mCAAmC;IACnC,MAAM,EAAE,0BAA0B,CAAC;IACnC,+BAA+B;IAC/B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,6BAA6B;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,4EAA4E;IAC5E,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACtC,uHAAuH;IACvH,YAAY,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC3C,mEAAmE;IACnE,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;IACrC,uBAAuB;IACvB,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,kHAAkH;IAClH,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACvD,uDAAuD;IACvD,mBAAmB,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACtD,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,KAAK,CACzB,gBAAgB,SAAI,EACpB,IAAI,GAAE,YAAiB,EACvB,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAM,EACvC,KAAK,GAAE,KAAe,GACrB,OAAO,CAAC,eAAe,CAAC,CA8W1B;AAED;;;;;GAKG;AAGH,wBAAsB,+BAA+B,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBA4B/F;AAGD;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,iBAO5E;AAOD;;;GAGG;AACH,wBAAgB,SAAS,WAOxB;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAC1D,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,GAAG,GACV,CAAC,GAAG,SAAS,EAAE,CAAC,YAAY,GAAG;IAAE,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnF;AAED,wBAAsB,aAAa,CAAC,CAAC,EAAE,CAAC,EACtC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAC/B,MAAM,EAAE,CAAC,EAAE,EACX,eAAe,EAAE,CAAC,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EACnE,aAAa,EAAE,CAAC,EAAE,EAClB,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAC/B,MAAM,EAAE,CAAC,EAAE,EACX,aAAa,EAAE,CAAC,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAAC,2BAA2B,CAAC,CAM9E;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,0BAG3C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,GAAG,wCAQ/C;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,SAAK,EAAE,WAAW,SAAI,iBAS/G;AAED,wBAAgB,uBAAuB,CACrC,oBAAoB,EAAE,KAAK,MAAM,EAAE,EACnC,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,EACpF,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,mBAAmB,GAAE,kBAAkB,EAAO,EAC9C,cAAc,GAAE,cAAmB,uBAoDpC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,eAAe,EAAsC,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EACjB,KAAK,SAAS,EAEd,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,GAAG,EACR,KAAK,MAAM,EAOZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,yBAAyB,CAAC;AAEpF,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAGhC,KAAK,QAAQ,EAOd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,aAAa,EAGb,UAAU,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EAAgB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,oBAAoB,EAAkC,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAoB,MAAM,oBAAoB,CAAC;AACnH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,gBAAgB,EAGtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,EACL,KAAK,2BAA2B,EAGjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAG3B,MAAM,yBAAyB,CAAC;AASjC,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAY,KAAK,iBAAiB,EAAe,MAAM,MAAM,CAAC;AASjG,OAAO,EAAE,0CAA0C,EAAE,MAAM,uCAAuC,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,CAAC;AAmBtB,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,IAI/D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,WAAW,MAAM,EAAE,EACnB,SAAS,SAAS,GAAG,iBAAiB,EACtC,QAAQ,MAAM,EACd,OAAM,OAAO,CAAC,qBAAqB,CAAM,EACzC,QAAO,KAAe,yCAcvB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,EACpC,MAAM,SAAc,EACpB,YAAY,UAAQ,GACnB,OAAO,CAAC;IACT;;OAEG;IACH,GAAG,EAAE,UAAU,CAAC;IAChB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC,CA2BD;AAyED,sCAAsC;AACtC,MAAM,MAAM,YAAY,GAAG;IACzB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,0CAA0C;IAC1C,uBAAuB,CAAC,EAAE,2BAA2B,CAAC;IACtD,4EAA4E;IAC5E,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,6CAA6C;IAC7C,sBAAsB,CAAC,EAAE,EAAE,CAAC;IAC5B,uDAAuD;IACvD,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,0CAA0C;IAC1C,qBAAqB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC7C,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,GAAG;QAAE,UAAU,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,CAAC,EAAE,CAAC;IACjE,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4CAA4C;IAC5C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,6CAA6C;IAC7C,eAAe,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3E,+DAA+D;IAC/D,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACzC,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,gEAAgE;IAChE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gFAAgF;IAChF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,6GAA6G;IAC7G,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,WAAW,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;CAC7C,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAE7B,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG;IAC5B,0DAA0D;IAC1D,SAAS,EAAE,SAAS,CAAC;IACrB,8FAA8F;IAC9F,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oEAAoE;IACpE,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,uFAAuF;IACvF,SAAS,EAAE,eAAe,GAAG,SAAS,CAAC;IACvC,+CAA+C;IAC/C,GAAG,EAAE,GAAG,CAAC;IACT,qDAAqD;IACrD,uBAAuB,EAAE,2BAA2B,CAAC;IACrD,oCAAoC;IACpC,MAAM,EAAE,eAAe,CAAC;IACxB,gDAAgD;IAChD,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;IAE5C,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACtC,mCAAmC;IACnC,MAAM,EAAE,0BAA0B,CAAC;IACnC,+BAA+B;IAC/B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,6BAA6B;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,4EAA4E;IAC5E,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACtC,uHAAuH;IACvH,YAAY,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC3C,mEAAmE;IACnE,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;IACrC,uBAAuB;IACvB,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,kHAAkH;IAClH,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACvD,uDAAuD;IACvD,mBAAmB,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACtD,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,KAAK,CACzB,gBAAgB,SAAI,EACpB,IAAI,GAAE,YAAiB,EACvB,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAM,EACvC,KAAK,GAAE,KAAe,GACrB,OAAO,CAAC,eAAe,CAAC,CA8W1B;AAED;;;;;GAKG;AAGH,wBAAsB,+BAA+B,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBA4B/F;AAGD;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,iBAO5E;AAOD;;;GAGG;AACH,wBAAgB,SAAS,WAOxB;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAC1D,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,GAAG,GACV,CAAC,GAAG,SAAS,EAAE,CAAC,YAAY,GAAG;IAAE,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnF;AAED,wBAAsB,aAAa,CAAC,CAAC,EAAE,CAAC,EACtC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAC/B,MAAM,EAAE,CAAC,EAAE,EACX,eAAe,EAAE,CAAC,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EACnE,aAAa,EAAE,CAAC,EAAE,EAClB,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAC/B,MAAM,EAAE,CAAC,EAAE,EACX,aAAa,EAAE,CAAC,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAAC,2BAA2B,CAAC,CAM9E;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,0BAG3C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,GAAG,wCAQ/C;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,SAAK,EAAE,WAAW,SAAI,iBAS/G;AAED,wBAAgB,uBAAuB,CACrC,oBAAoB,EAAE,KAAK,MAAM,EAAE,EACnC,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,EAC9G,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,mBAAmB,GAAE,kBAAkB,EAAO,EAC9C,cAAc,GAAE,cAAmB,uBAuDpC"}
@@ -328,7 +328,7 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
328
328
  }, telemetry);
329
329
  await blobSink.start();
330
330
  config.blobSinkUrl = `http://localhost:${blobSinkPort}`;
331
- logger.verbose('Creating and synching an aztec node...');
331
+ logger.verbose('Creating and synching an aztec node', config);
332
332
  const acvmConfig = await getACVMConfig(logger);
333
333
  if (acvmConfig) {
334
334
  config.acvmWorkingDirectory = acvmConfig.acvmWorkingDirectory;
@@ -339,7 +339,6 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
339
339
  config.bbBinaryPath = bbConfig.bbBinaryPath;
340
340
  config.bbWorkingDirectory = bbConfig.bbWorkingDirectory;
341
341
  }
342
- config.l1PublishRetryIntervalMS = 100;
343
342
  const blobSinkClient = createBlobSinkClient(config, {
344
343
  logger: createLogger('node:blob-sink:client')
345
344
  });
@@ -408,9 +407,8 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
408
407
  const { pxe, teardown: pxeTeardown } = await setupPXEService(aztecNode, pxeOpts, logger);
409
408
  const cheatCodes = await CheatCodes.create(config.l1RpcUrls, pxe);
410
409
  if (opts.aztecTargetCommitteeSize && opts.aztecTargetCommitteeSize > 0 || opts.initialValidators && opts.initialValidators.length > 0) {
411
- // We need to advance to epoch 2 such that the committee is set up.
412
- logger.info(`Advancing to epoch 2`);
413
- await cheatCodes.rollup.advanceToEpoch(2n, {
410
+ // We need to advance such that the committee is set up.
411
+ await cheatCodes.rollup.advanceToEpoch(await cheatCodes.rollup.getEpoch() + BigInt(config.lagInEpochs + 1), {
414
412
  updateDateProvider: dateProvider
415
413
  });
416
414
  await cheatCodes.rollup.setupEpoch();
@@ -646,6 +644,7 @@ export function createAndSyncProverNode(proverNodePrivateKey, aztecNodeConfig, p
646
644
  txGatheringTimeoutMs: 24_000,
647
645
  proverNodeFailedEpochStore: undefined,
648
646
  proverId: EthAddress.fromNumber(1),
647
+ proverNodeEpochProvingDelayMs: undefined,
649
648
  ...proverNodeConfig
650
649
  };
651
650
  const l1TxUtils = createDelayedL1TxUtils(aztecNodeConfig, proverNodePrivateKey, 'prover-node', proverNodeDeps.dateProvider);
@@ -660,7 +659,9 @@ export function createAndSyncProverNode(proverNodePrivateKey, aztecNodeConfig, p
660
659
  getLogger().info(`Created and synced prover node`, {
661
660
  publisherAddress: l1TxUtils.client.account.address
662
661
  });
663
- await proverNode.start();
662
+ if (!proverNodeConfig.dontStart) {
663
+ await proverNode.start();
664
+ }
664
665
  return proverNode;
665
666
  });
666
667
  }
@@ -0,0 +1,5 @@
1
+ export declare function createWeb3SignerKeystore(dir: string, ...privateKeys: string[]): Promise<void>;
2
+ export declare function refreshWeb3Signer(url: string): Promise<void>;
3
+ export declare function getWeb3SignerTestKeystoreDir(): string;
4
+ export declare function getWeb3SignerUrl(): string;
5
+ //# sourceMappingURL=web3signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web3signer.d.ts","sourceRoot":"","sources":["../../src/fixtures/web3signer.ts"],"names":[],"mappings":"AAOA,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,iBAcnF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,iBAKlD;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAOrD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC"}
@@ -0,0 +1,42 @@
1
+ import { sleep } from '@aztec/aztec.js';
2
+ import { randomBytes } from '@aztec/foundation/crypto';
3
+ import { mkdirSync } from 'node:fs';
4
+ import { writeFile } from 'node:fs/promises';
5
+ import { join } from 'node:path';
6
+ export async function createWeb3SignerKeystore(dir, ...privateKeys) {
7
+ const yaml = privateKeys.map((pk)=>`\
8
+ type: file-raw
9
+ keyType: SECP256K1
10
+ privateKey: ${pk}`).join('\n---\n');
11
+ // NOTE: nodejs stdlib can only create temp directories, not temp files!
12
+ // this write uses wx (write-exclusive) so it'll throw if the file already exists
13
+ const path = join(dir, `keystore-${randomBytes(4).toString('hex')}.yaml`);
14
+ await writeFile(path, yaml, {
15
+ flag: 'wx'
16
+ });
17
+ }
18
+ export async function refreshWeb3Signer(url) {
19
+ await fetch(new URL('reload', url), {
20
+ method: 'POST'
21
+ });
22
+ // give the service a chance to load up the new files
23
+ // 1s might not be enough if there are a lot of files to scan
24
+ await sleep(1000);
25
+ }
26
+ export function getWeb3SignerTestKeystoreDir() {
27
+ if (process.env.WEB3_SIGNER_TEST_KEYSTORE_DIR) {
28
+ mkdirSync(process.env.WEB3_SIGNER_TEST_KEYSTORE_DIR, {
29
+ recursive: true
30
+ });
31
+ return process.env.WEB3_SIGNER_TEST_KEYSTORE_DIR;
32
+ } else {
33
+ throw new Error('Web3signer not running');
34
+ }
35
+ }
36
+ export function getWeb3SignerUrl() {
37
+ if (process.env.WEB3_SIGNER_URL) {
38
+ return process.env.WEB3_SIGNER_URL;
39
+ } else {
40
+ throw new Error('Web3signer not running');
41
+ }
42
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/end-to-end",
3
- "version": "2.0.3",
3
+ "version": "2.1.0-rc.2",
4
4
  "type": "module",
5
5
  "exports": "./dest/index.js",
6
6
  "inherits": [
@@ -25,41 +25,41 @@
25
25
  "formatting": "run -T prettier --check ./src && run -T eslint ./src"
26
26
  },
27
27
  "dependencies": {
28
- "@aztec/accounts": "2.0.3",
29
- "@aztec/archiver": "2.0.3",
30
- "@aztec/aztec": "2.0.3",
31
- "@aztec/aztec-node": "2.0.3",
32
- "@aztec/aztec.js": "2.0.3",
33
- "@aztec/bb-prover": "2.0.3",
34
- "@aztec/blob-lib": "2.0.3",
35
- "@aztec/blob-sink": "2.0.3",
36
- "@aztec/bot": "2.0.3",
37
- "@aztec/cli": "2.0.3",
38
- "@aztec/constants": "2.0.3",
39
- "@aztec/entrypoints": "2.0.3",
40
- "@aztec/epoch-cache": "2.0.3",
41
- "@aztec/ethereum": "2.0.3",
42
- "@aztec/foundation": "2.0.3",
43
- "@aztec/kv-store": "2.0.3",
44
- "@aztec/l1-artifacts": "2.0.3",
45
- "@aztec/merkle-tree": "2.0.3",
46
- "@aztec/node-keystore": "2.0.3",
47
- "@aztec/noir-contracts.js": "2.0.3",
48
- "@aztec/noir-noirc_abi": "2.0.3",
49
- "@aztec/noir-protocol-circuits-types": "2.0.3",
50
- "@aztec/noir-test-contracts.js": "2.0.3",
51
- "@aztec/p2p": "2.0.3",
52
- "@aztec/protocol-contracts": "2.0.3",
53
- "@aztec/prover-client": "2.0.3",
54
- "@aztec/prover-node": "2.0.3",
55
- "@aztec/pxe": "2.0.3",
56
- "@aztec/sequencer-client": "2.0.3",
57
- "@aztec/simulator": "2.0.3",
58
- "@aztec/slasher": "2.0.3",
59
- "@aztec/stdlib": "2.0.3",
60
- "@aztec/telemetry-client": "2.0.3",
61
- "@aztec/validator-client": "2.0.3",
62
- "@aztec/world-state": "2.0.3",
28
+ "@aztec/accounts": "2.1.0-rc.2",
29
+ "@aztec/archiver": "2.1.0-rc.2",
30
+ "@aztec/aztec": "2.1.0-rc.2",
31
+ "@aztec/aztec-node": "2.1.0-rc.2",
32
+ "@aztec/aztec.js": "2.1.0-rc.2",
33
+ "@aztec/bb-prover": "2.1.0-rc.2",
34
+ "@aztec/blob-lib": "2.1.0-rc.2",
35
+ "@aztec/blob-sink": "2.1.0-rc.2",
36
+ "@aztec/bot": "2.1.0-rc.2",
37
+ "@aztec/cli": "2.1.0-rc.2",
38
+ "@aztec/constants": "2.1.0-rc.2",
39
+ "@aztec/entrypoints": "2.1.0-rc.2",
40
+ "@aztec/epoch-cache": "2.1.0-rc.2",
41
+ "@aztec/ethereum": "2.1.0-rc.2",
42
+ "@aztec/foundation": "2.1.0-rc.2",
43
+ "@aztec/kv-store": "2.1.0-rc.2",
44
+ "@aztec/l1-artifacts": "2.1.0-rc.2",
45
+ "@aztec/merkle-tree": "2.1.0-rc.2",
46
+ "@aztec/node-keystore": "2.1.0-rc.2",
47
+ "@aztec/noir-contracts.js": "2.1.0-rc.2",
48
+ "@aztec/noir-noirc_abi": "2.1.0-rc.2",
49
+ "@aztec/noir-protocol-circuits-types": "2.1.0-rc.2",
50
+ "@aztec/noir-test-contracts.js": "2.1.0-rc.2",
51
+ "@aztec/p2p": "2.1.0-rc.2",
52
+ "@aztec/protocol-contracts": "2.1.0-rc.2",
53
+ "@aztec/prover-client": "2.1.0-rc.2",
54
+ "@aztec/prover-node": "2.1.0-rc.2",
55
+ "@aztec/pxe": "2.1.0-rc.2",
56
+ "@aztec/sequencer-client": "2.1.0-rc.2",
57
+ "@aztec/simulator": "2.1.0-rc.2",
58
+ "@aztec/slasher": "2.1.0-rc.2",
59
+ "@aztec/stdlib": "2.1.0-rc.2",
60
+ "@aztec/telemetry-client": "2.1.0-rc.2",
61
+ "@aztec/validator-client": "2.1.0-rc.2",
62
+ "@aztec/world-state": "2.1.0-rc.2",
63
63
  "@iarna/toml": "^2.2.5",
64
64
  "@jest/globals": "^30.0.0",
65
65
  "@noble/curves": "=1.0.0",
@@ -91,7 +91,7 @@
91
91
  "snappy": "^7.2.2",
92
92
  "stream-browserify": "^3.0.0",
93
93
  "string-argv": "^0.3.2",
94
- "ts-loader": "^9.4.4",
94
+ "ts-loader": "^9.5.4",
95
95
  "ts-node": "^10.9.1",
96
96
  "tslib": "^2.4.0",
97
97
  "typescript": "^5.3.3",
@@ -18,7 +18,7 @@ import { randomBytes } from '@aztec/foundation/crypto';
18
18
  import { withLogNameSuffix } from '@aztec/foundation/log';
19
19
  import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
20
20
  import { getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
21
- import { ProverNode, ProverNodePublisher } from '@aztec/prover-node';
21
+ import { ProverNode, type ProverNodeConfig, ProverNodePublisher } from '@aztec/prover-node';
22
22
  import type { TestProverNode } from '@aztec/prover-node/test';
23
23
  import {
24
24
  type SequencerClient,
@@ -128,9 +128,6 @@ export class EpochsTestContext {
128
128
  // using the prover's eth address if the proverId is used for something in the rollup contract
129
129
  // Use numeric EthAddress for deterministic prover id
130
130
  proverId: EthAddress.fromNumber(1),
131
- // This must be enough so that the tx from the prover is delayed properly,
132
- // but not so much to hang the sequencer and timeout the teardown
133
- txPropagationMaxQueryAttempts: opts.txPropagationMaxQueryAttempts ?? 12,
134
131
  worldStateBlockHistory: WORLD_STATE_BLOCK_HISTORY,
135
132
  exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
136
133
  slasherFlavor: 'none',
@@ -187,15 +184,20 @@ export class EpochsTestContext {
187
184
  await this.context.teardown();
188
185
  }
189
186
 
190
- public async createProverNode() {
187
+ public async createProverNode(opts: { dontStart?: boolean } & Partial<ProverNodeConfig> = {}) {
191
188
  this.logger.warn('Creating and syncing a simulated prover node...');
192
189
  const proverNodePrivateKey = this.getNextPrivateKey();
193
190
  const suffix = (this.proverNodes.length + 1).toString();
191
+ const proverId = EthAddress.fromNumber(parseInt(suffix, 10));
194
192
  const proverNode = await withLogNameSuffix(suffix, () =>
195
193
  createAndSyncProverNode(
196
194
  proverNodePrivateKey,
197
- { ...this.context.config, proverId: EthAddress.fromNumber(parseInt(suffix, 10)) },
198
- { dataDirectory: join(this.context.config.dataDirectory!, randomBytes(8).toString('hex')) },
195
+ { ...this.context.config, proverId },
196
+ {
197
+ dataDirectory: join(this.context.config.dataDirectory!, randomBytes(8).toString('hex')),
198
+ proverId,
199
+ ...opts,
200
+ },
199
201
  this.context.aztecNode,
200
202
  undefined,
201
203
  { dateProvider: this.context.dateProvider },
@@ -427,7 +429,7 @@ export class EpochsTestContext {
427
429
  sequencer.getSequencer().on(eventName, (args: Parameters<SequencerEvents[typeof eventName]>[0]) => {
428
430
  const evt = makeEvent(i, eventName, args);
429
431
  failEvents.push(evt);
430
- this.logger.error(`Failed event ${eventName} from sequencer ${sequencerIndex}`, evt);
432
+ this.logger.error(`Failed event ${eventName} from sequencer ${sequencerIndex}`, undefined, evt);
431
433
  });
432
434
  });
433
435
  });
@@ -157,9 +157,7 @@ export async function createKeyFile3(
157
157
  schemaVersion: 1,
158
158
  validators: [
159
159
  {
160
- attester: {
161
- address: validatorAddress.toChecksumString(),
162
- },
160
+ attester: validatorAddress.toChecksumString(),
163
161
  coinbase: coinbase.toChecksumString(),
164
162
  publisher: [publisher1Key, publisher2Key],
165
163
  feeRecipient: feeRecipient.toString(),
@@ -193,9 +191,7 @@ export async function createKeyFile4(
193
191
  },
194
192
  validators: [
195
193
  {
196
- attester: {
197
- address: validator1Address.toChecksumString(),
198
- },
194
+ attester: validator1Address.toChecksumString(),
199
195
  coinbase: coinbase1.toChecksumString(),
200
196
  publisher: {
201
197
  mnemonic: mnemonic,
@@ -206,9 +202,7 @@ export async function createKeyFile4(
206
202
  feeRecipient: feeRecipient1.toString(),
207
203
  },
208
204
  {
209
- attester: {
210
- address: validator2Address.toChecksumString(),
211
- },
205
+ attester: validator2Address.toChecksumString(),
212
206
  coinbase: coinbase2.toChecksumString(),
213
207
  publisher: [publisher2Key, publisher3Key],
214
208
  feeRecipient: feeRecipient2.toString(),
@@ -0,0 +1,174 @@
1
+ import type { AztecNodeService } from '@aztec/aztec-node';
2
+ import { EthAddress } from '@aztec/aztec.js';
3
+ import { RollupContract } from '@aztec/ethereum';
4
+
5
+ import fs from 'fs';
6
+ import 'jest-extended';
7
+ import os from 'os';
8
+ import path from 'path';
9
+
10
+ import { createNodes } from '../fixtures/setup_p2p_test.js';
11
+ import { P2PNetworkTest } from './p2p_network.js';
12
+
13
+ const NUM_NODES = 6;
14
+ const NUM_VALIDATORS = NUM_NODES;
15
+ const COMMITTEE_SIZE = NUM_VALIDATORS;
16
+ const SLASHING_QUORUM = 3;
17
+ const EPOCH_DURATION = 2;
18
+ const SLASHING_ROUND_SIZE_IN_EPOCHS = 2;
19
+ const BOOT_NODE_UDP_PORT = 4500;
20
+ const ETHEREUM_SLOT_DURATION = 4;
21
+ const AZTEC_SLOT_DURATION = 8;
22
+ const SLASHING_UNIT = BigInt(1e18);
23
+ const SLASHING_AMOUNT = SLASHING_UNIT * 3n;
24
+
25
+ // How many epochs it may take to set everything up, so we dont slash during this period
26
+ const SETUP_EPOCH_DURATION = 5;
27
+
28
+ export class P2PInactivityTest {
29
+ public nodes!: AztecNodeService[];
30
+ public activeNodes!: AztecNodeService[];
31
+ public inactiveNodes!: AztecNodeService[];
32
+
33
+ public rollup!: RollupContract;
34
+ public offlineValidators!: EthAddress[];
35
+
36
+ private dataDir: string;
37
+ private inactiveNodeCount: number;
38
+ private keepInitialNode: boolean;
39
+
40
+ constructor(
41
+ public readonly test: P2PNetworkTest,
42
+ opts: { inactiveNodeCount: number; keepInitialNode?: boolean },
43
+ ) {
44
+ this.dataDir = fs.mkdtempSync(path.join(os.tmpdir(), test.testName));
45
+ this.inactiveNodeCount = opts.inactiveNodeCount;
46
+ this.keepInitialNode = opts.keepInitialNode ?? false;
47
+ }
48
+
49
+ static async create(
50
+ testName: string,
51
+ opts: { slashInactivityConsecutiveEpochThreshold: number; inactiveNodeCount: number; keepInitialNode?: boolean },
52
+ ) {
53
+ const test = await P2PNetworkTest.create({
54
+ testName,
55
+ numberOfNodes: 0,
56
+ numberOfValidators: NUM_VALIDATORS,
57
+ basePort: BOOT_NODE_UDP_PORT,
58
+ startProverNode: true,
59
+ initialConfig: {
60
+ proverNodeConfig: { proverNodeEpochProvingDelayMs: AZTEC_SLOT_DURATION * 1000 },
61
+ aztecTargetCommitteeSize: COMMITTEE_SIZE,
62
+ aztecSlotDuration: AZTEC_SLOT_DURATION,
63
+ ethereumSlotDuration: ETHEREUM_SLOT_DURATION,
64
+ aztecProofSubmissionEpochs: 1024, // effectively do not reorg
65
+ listenAddress: '127.0.0.1',
66
+ minTxsPerBlock: 0,
67
+ aztecEpochDuration: EPOCH_DURATION,
68
+ validatorReexecute: false,
69
+ sentinelEnabled: true,
70
+ slashingQuorum: SLASHING_QUORUM,
71
+ slashingRoundSizeInEpochs: SLASHING_ROUND_SIZE_IN_EPOCHS,
72
+ slashInactivityTargetPercentage: 0.8,
73
+ slashGracePeriodL2Slots: SETUP_EPOCH_DURATION * EPOCH_DURATION, // do not slash during setup
74
+ slashAmountSmall: SLASHING_UNIT,
75
+ slashAmountMedium: SLASHING_UNIT * 2n,
76
+ slashAmountLarge: SLASHING_UNIT * 3n,
77
+ ...opts,
78
+ },
79
+ });
80
+ return new P2PInactivityTest(test, opts);
81
+ }
82
+
83
+ public async setup() {
84
+ await this.test.applyBaseSnapshots();
85
+ await this.test.setup();
86
+
87
+ // Set slashing penalties for inactivity
88
+ const { rollup } = await this.test.getContracts();
89
+ const [activationThreshold, ejectionThreshold, localEjectionThreshold] = await Promise.all([
90
+ rollup.getActivationThreshold(),
91
+ rollup.getEjectionThreshold(),
92
+ rollup.getLocalEjectionThreshold(),
93
+ ]);
94
+ const biggestEjection = ejectionThreshold > localEjectionThreshold ? ejectionThreshold : localEjectionThreshold;
95
+ expect(activationThreshold - SLASHING_AMOUNT).toBeLessThan(biggestEjection);
96
+ this.test.ctx.aztecNodeConfig.slashInactivityPenalty = SLASHING_AMOUNT;
97
+ this.rollup = rollup;
98
+
99
+ if (!this.keepInitialNode) {
100
+ await this.test.ctx.aztecNode.stop();
101
+ }
102
+
103
+ // Create all active nodes
104
+ this.activeNodes = await createNodes(
105
+ this.test.ctx.aztecNodeConfig,
106
+ this.test.ctx.dateProvider,
107
+ this.test.bootstrapNodeEnr,
108
+ NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode),
109
+ BOOT_NODE_UDP_PORT,
110
+ this.test.prefilledPublicData,
111
+ this.dataDir,
112
+ undefined,
113
+ Number(this.keepInitialNode),
114
+ );
115
+
116
+ // And the ones with an initially disabled sequencer
117
+ const inactiveConfig = { ...this.test.ctx.aztecNodeConfig, dontStartSequencer: true };
118
+ this.inactiveNodes = await createNodes(
119
+ inactiveConfig,
120
+ this.test.ctx.dateProvider,
121
+ this.test.bootstrapNodeEnr,
122
+ this.inactiveNodeCount,
123
+ BOOT_NODE_UDP_PORT,
124
+ this.test.prefilledPublicData,
125
+ this.dataDir,
126
+ undefined,
127
+ NUM_NODES - this.inactiveNodeCount,
128
+ );
129
+
130
+ this.nodes = [
131
+ ...(this.keepInitialNode ? [this.test.ctx.aztecNode] : []),
132
+ ...this.activeNodes,
133
+ ...this.inactiveNodes,
134
+ ];
135
+
136
+ if (this.nodes.length !== NUM_NODES) {
137
+ throw new Error(`Expected ${NUM_NODES} nodes but got ${this.nodes.length}`);
138
+ }
139
+
140
+ this.offlineValidators = this.test.validators
141
+ .slice(this.test.validators.length - this.inactiveNodeCount)
142
+ .map(a => a.attester);
143
+
144
+ this.test.logger.warn(`Setup complete. Offline validators are ${this.offlineValidators.join(', ')}.`, {
145
+ validators: this.test.validators,
146
+ offlineValidators: this.offlineValidators,
147
+ });
148
+
149
+ this.test.logger.warn(`Advancing to epoch ${SETUP_EPOCH_DURATION + 1} to start slashing`);
150
+ await this.test.ctx.cheatCodes.rollup.advanceToEpoch(SETUP_EPOCH_DURATION + 1);
151
+
152
+ return this;
153
+ }
154
+
155
+ public async teardown() {
156
+ await this.test.stopNodes(this.nodes);
157
+ await this.test.teardown();
158
+ for (let i = 0; i < NUM_NODES; i++) {
159
+ fs.rmSync(`${this.dataDir}-${i}`, { recursive: true, force: true, maxRetries: 3 });
160
+ }
161
+ }
162
+
163
+ public get ctx() {
164
+ return this.test.ctx;
165
+ }
166
+
167
+ public get logger() {
168
+ return this.test.logger;
169
+ }
170
+
171
+ public get slashingAmount() {
172
+ return SLASHING_AMOUNT;
173
+ }
174
+ }
@@ -43,7 +43,7 @@ import {
43
43
  createSnapshotManager,
44
44
  deployAccounts,
45
45
  } from '../fixtures/snapshot_manager.js';
46
- import { getPrivateKeyFromIndex, getSponsoredFPCAddress } from '../fixtures/utils.js';
46
+ import { type SetupOptions, getPrivateKeyFromIndex, getSponsoredFPCAddress } from '../fixtures/utils.js';
47
47
  import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
48
48
 
49
49
  // Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
@@ -82,11 +82,11 @@ export class P2PNetworkTest {
82
82
  public bootstrapNode?: BootstrapNode;
83
83
 
84
84
  constructor(
85
- testName: string,
85
+ public readonly testName: string,
86
86
  public bootstrapNodeEnr: string,
87
87
  public bootNodePort: number,
88
88
  public numberOfValidators: number,
89
- initialValidatorConfig: AztecNodeConfig,
89
+ initialValidatorConfig: SetupOptions,
90
90
  public numberOfNodes = 0,
91
91
  // If set enable metrics collection
92
92
  private metricsPort?: number,
@@ -162,7 +162,7 @@ export class P2PNetworkTest {
162
162
  numberOfValidators: number;
163
163
  basePort?: number;
164
164
  metricsPort?: number;
165
- initialConfig?: Partial<AztecNodeConfig>;
165
+ initialConfig?: SetupOptions;
166
166
  startProverNode?: boolean;
167
167
  mockZkPassportVerifier?: boolean;
168
168
  }) {
@@ -260,7 +260,7 @@ export class P2PNetworkTest {
260
260
  client: deployL1ContractsValues.l1Client,
261
261
  });
262
262
 
263
- const stakeNeeded = l1ContractsConfig.activationThreshold * BigInt(this.numberOfValidators);
263
+ const stakeNeeded = (await rollup.read.getActivationThreshold()) * BigInt(this.numberOfValidators);
264
264
  await Promise.all(
265
265
  [await stakingAsset.write.mint([multiAdder.address, stakeNeeded], {} as any)].map(txHash =>
266
266
  deployL1ContractsValues.l1Client.waitForTransactionReceipt({ hash: txHash }),
@@ -291,14 +291,15 @@ export class P2PNetworkTest {
291
291
  hash: await multiAdder.write.addValidators([validatorTuples]),
292
292
  });
293
293
 
294
- const timestamp = await cheatCodes.rollup.advanceToEpoch(2n, { updateDateProvider: dateProvider });
294
+ await cheatCodes.rollup.advanceToEpoch(
295
+ (await cheatCodes.rollup.getEpoch()) + (await rollup.read.getLagInEpochs()) + 1n,
296
+ {
297
+ updateDateProvider: dateProvider,
298
+ },
299
+ );
295
300
 
296
301
  // Send and await a tx to make sure we mine a block for the warp to correctly progress.
297
302
  await this._sendDummyTx(deployL1ContractsValues.l1Client);
298
-
299
- // Set the system time in the node, only after we have warped the time and waited for a block
300
- // Time is only set in the NEXT block
301
- dateProvider.setTime(Number(timestamp) * 1000);
302
303
  },
303
304
  );
304
305
  }