@aztec/prover-client 4.0.0-nightly.20260121 → 4.0.0-nightly.20260122

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.
@@ -26,12 +26,13 @@ export declare class ProvingOrchestrator implements EpochProver {
26
26
  private dbProvider;
27
27
  private prover;
28
28
  private readonly proverId;
29
+ private readonly cancelJobsOnStop;
29
30
  private provingState;
30
31
  private pendingProvingJobs;
31
32
  private provingPromise;
32
33
  private metrics;
33
34
  private dbs;
34
- constructor(dbProvider: ReadonlyWorldStateAccess & ForkMerkleTreeOperations, prover: ServerCircuitProver, proverId: EthAddress, telemetryClient?: TelemetryClient);
35
+ constructor(dbProvider: ReadonlyWorldStateAccess & ForkMerkleTreeOperations, prover: ServerCircuitProver, proverId: EthAddress, cancelJobsOnStop?: boolean, telemetryClient?: TelemetryClient);
35
36
  get tracer(): Tracer;
36
37
  getProverId(): EthAddress;
37
38
  getNumActiveForks(): number;
@@ -71,7 +72,9 @@ export declare class ProvingOrchestrator implements EpochProver {
71
72
  setBlockCompleted(blockNumber: BlockNumber, expectedHeader?: BlockHeader): Promise<BlockHeader>;
72
73
  protected verifyBuiltBlockAgainstSyncedState(provingState: BlockProvingState): Promise<void>;
73
74
  /**
74
- * Cancel any further proving
75
+ * Cancel any further proving.
76
+ * If cancelJobsOnStop is true, aborts all pending jobs with the broker (which marks them as 'Aborted').
77
+ * If cancelJobsOnStop is false (default), jobs remain in the broker queue and can be reused on restart/reorg.
75
78
  */
76
79
  cancel(): void;
77
80
  /**
@@ -120,4 +123,4 @@ export declare class ProvingOrchestrator implements EpochProver {
120
123
  private enqueueVM;
121
124
  private checkAndEnqueueBaseRollup;
122
125
  }
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JjaGVzdHJhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL29yY2hlc3RyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFjLE1BQU0sdUJBQXVCLENBQUM7QUFRN0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFRcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUNWLFdBQVcsRUFDWCx3QkFBd0IsRUFHeEIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNwQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFNTCxzQkFBc0IsRUFLdEIsc0JBQXNCLEVBQ3ZCLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBRUwsS0FBSyxlQUFlLEVBQ3BCLEtBQUssTUFBTSxFQUlaLE1BQU0seUJBQXlCLENBQUM7QUFlakMsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVFsRTs7Ozs7Ozs7O0dBU0c7QUFFSDs7R0FFRztBQUNILHFCQUFhLG1CQUFvQixZQUFXLFdBQVc7SUFVbkQsT0FBTyxDQUFDLFVBQVU7SUFDbEIsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFYM0IsT0FBTyxDQUFDLFlBQVks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
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JjaGVzdHJhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL29yY2hlc3RyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFjLE1BQU0sdUJBQXVCLENBQUM7QUFRN0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFRcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUNWLFdBQVcsRUFDWCx3QkFBd0IsRUFHeEIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNwQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFNTCxzQkFBc0IsRUFLdEIsc0JBQXNCLEVBQ3ZCLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBRUwsS0FBSyxlQUFlLEVBQ3BCLEtBQUssTUFBTSxFQUlaLE1BQU0seUJBQXlCLENBQUM7QUFlakMsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQWFsRTs7Ozs7Ozs7O0dBU0c7QUFFSDs7R0FFRztBQUNILHFCQUFhLG1CQUFvQixZQUFXLFdBQVc7SUFVbkQsT0FBTyxDQUFDLFVBQVU7SUFDbEIsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekIsT0FBTyxDQUFDLFFBQVEs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
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -414,6 +414,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
414
414
  dbProvider;
415
415
  prover;
416
416
  proverId;
417
+ cancelJobsOnStop;
417
418
  static{
418
419
  ({ e: [_initProto] } = _apply_decs_2203_r(this, [
419
420
  [
@@ -449,10 +450,11 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
449
450
  metrics;
450
451
  // eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
451
452
  dbs;
452
- constructor(dbProvider, prover, proverId, telemetryClient = getTelemetryClient()){
453
+ constructor(dbProvider, prover, proverId, cancelJobsOnStop = false, telemetryClient = getTelemetryClient()){
453
454
  this.dbProvider = dbProvider;
454
455
  this.prover = prover;
455
456
  this.proverId = proverId;
457
+ this.cancelJobsOnStop = cancelJobsOnStop;
456
458
  this.provingState = (_initProto(this), undefined);
457
459
  this.pendingProvingJobs = [];
458
460
  this.provingPromise = undefined;
@@ -503,7 +505,10 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
503
505
  const lastBlockNumber = headerOfLastBlockInPreviousCheckpoint.globalVariables.blockNumber;
504
506
  const db = await this.dbProvider.fork(lastBlockNumber);
505
507
  const firstBlockNumber = BlockNumber(lastBlockNumber + 1);
506
- this.dbs.set(firstBlockNumber, db);
508
+ this.dbs.set(firstBlockNumber, {
509
+ fork: db,
510
+ cleanupPromise: undefined
511
+ });
507
512
  // Get archive sibling path before any block in this checkpoint lands.
508
513
  const lastArchiveSiblingPath = await getLastSiblingPath(MerkleTreeId.ARCHIVE, db);
509
514
  // Insert all the l1 to l2 messages into the db. And get the states before and after the insertion.
@@ -533,9 +538,12 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
533
538
  if (!this.dbs.has(blockNumber)) {
534
539
  // Fork world state at the end of the immediately previous block
535
540
  const db = await this.dbProvider.fork(BlockNumber(blockNumber - 1));
536
- this.dbs.set(blockNumber, db);
541
+ this.dbs.set(blockNumber, {
542
+ fork: db,
543
+ cleanupPromise: undefined
544
+ });
537
545
  }
538
- const db = this.dbs.get(blockNumber);
546
+ const db = this.dbs.get(blockNumber).fork;
539
547
  // Get archive snapshot and sibling path before any txs in this block lands.
540
548
  const lastArchiveTreeSnapshot = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
541
549
  const lastArchiveSiblingPath = await getRootTreeSiblingPath(MerkleTreeId.ARCHIVE, db);
@@ -585,7 +593,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
585
593
  throw new Error(`Block ${blockNumber} has been initialized with transactions.`);
586
594
  }
587
595
  logger.info(`Adding ${txs.length} transactions to block ${blockNumber}`);
588
- const db = this.dbs.get(blockNumber);
596
+ const db = this.dbs.get(blockNumber).fork;
589
597
  const lastArchive = provingState.lastArchiveTreeSnapshot;
590
598
  const newL1ToL2MessageTreeSnapshot = provingState.newL1ToL2MessageTreeSnapshot;
591
599
  const spongeBlobState = provingState.getStartSpongeBlob().clone();
@@ -675,7 +683,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
675
683
  throw new Error('Block header mismatch');
676
684
  }
677
685
  // Get db for this block
678
- const db = this.dbs.get(provingState.blockNumber);
686
+ const db = this.dbs.get(provingState.blockNumber).fork;
679
687
  // Update the archive tree, so we're ready to start processing the next block:
680
688
  logger.verbose(`Updating archive tree with block ${provingState.blockNumber} header ${(await header.hash()).toString()}`);
681
689
  await db.updateArchive(header);
@@ -702,7 +710,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
702
710
  }
703
711
  // Get db for this block
704
712
  const blockNumber = provingState.blockNumber;
705
- const db = this.dbs.get(blockNumber);
713
+ const db = this.dbs.get(blockNumber).fork;
706
714
  const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
707
715
  const syncedArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.dbProvider.getSnapshot(blockNumber));
708
716
  if (!syncedArchive.equals(newArchive)) {
@@ -723,10 +731,14 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
723
731
  void this.cleanupDBFork(blockNumber);
724
732
  }
725
733
  /**
726
- * Cancel any further proving
734
+ * Cancel any further proving.
735
+ * If cancelJobsOnStop is true, aborts all pending jobs with the broker (which marks them as 'Aborted').
736
+ * If cancelJobsOnStop is false (default), jobs remain in the broker queue and can be reused on restart/reorg.
727
737
  */ cancel() {
728
- for (const controller of this.pendingProvingJobs){
729
- controller.abort();
738
+ if (this.cancelJobsOnStop) {
739
+ for (const controller of this.pendingProvingJobs){
740
+ controller.abort();
741
+ }
730
742
  }
731
743
  this.provingState?.cancel();
732
744
  }
@@ -755,7 +767,10 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
755
767
  return;
756
768
  }
757
769
  try {
758
- await fork.close();
770
+ if (!fork.cleanupPromise) {
771
+ fork.cleanupPromise = fork.fork.close();
772
+ }
773
+ await fork.cleanupPromise;
759
774
  this.dbs.delete(blockNumber);
760
775
  } catch (err) {
761
776
  logger.error(`Error closing db for block ${blockNumber}`, err);
@@ -39,4 +39,4 @@ export declare class ProverClient implements EpochProverManager {
39
39
  private stopAgents;
40
40
  }
41
41
  export declare function buildServerCircuitProver(config: ActualProverConfig & ACVMConfig & BBConfig, telemetry: TelemetryClient): Promise<ServerCircuitProver>;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLWNsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1jbGllbnQvcHJvdmVyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUUsS0FBSyxRQUFRLEVBQTJDLE1BQU0sa0JBQWtCLENBQUM7QUFFM0csT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHaEUsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNoQixLQUFLLGtCQUFrQixFQUN2QixLQUFLLHdCQUF3QixFQUM3QixLQUFLLGdCQUFnQixFQUNyQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLHdCQUF3QixFQUM3QixLQUFLLG1CQUFtQixFQUV6QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU92RCxzSEFBc0g7QUFDdEgscUJBQWEsWUFBYSxZQUFXLGtCQUFrQjtJQVFuRCxPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxrQkFBa0I7SUFDMUIsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsR0FBRztJQVpiLE9BQU8sQ0FBQyxPQUFPLENBQVM7SUFDeEIsT0FBTyxDQUFDLE1BQU0sQ0FBc0I7SUFFcEMsT0FBTyxDQUFDLFVBQVUsQ0FBYTtJQUMvQixPQUFPLENBQUMsZ0JBQWdCLENBQXlCO0lBRWpELE9BQU8sZUFVTjtJQUVNLGlCQUFpQixJQUFJLFdBQVcsQ0FJdEM7SUFFTSxXQUFXLElBQUksVUFBVSxDQUUvQjtJQUVLLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBWTNFO0lBRUQ7O09BRUc7SUFDVSxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU9sQztJQUVEOztPQUVHO0lBQ1UsSUFBSSxrQkFPaEI7SUFFRDs7Ozs7T0FLRztJQUNILE9BQW9CLEdBQUcsQ0FDckIsTUFBTSxFQUFFLGtCQUFrQixFQUMxQixVQUFVLEVBQUUsd0JBQXdCLEdBQUcsd0JBQXdCLEVBQy9ELE1BQU0sRUFBRSxnQkFBZ0IsRUFDeEIsU0FBUyxHQUFFLGVBQXNDLHlCQUtsRDtJQUVNLG1CQUFtQixJQUFJLGtCQUFrQixDQU0vQztZQUVhLG9CQUFvQjtZQW1CcEIsVUFBVTtDQUd6QjtBQUVELHdCQUFnQix3QkFBd0IsQ0FDdEMsTUFBTSxFQUFFLGtCQUFrQixHQUFHLFVBQVUsR0FBRyxRQUFRLEVBQ2xELFNBQVMsRUFBRSxlQUFlLEdBQ3pCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQVU5QiJ9
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLWNsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1jbGllbnQvcHJvdmVyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUUsS0FBSyxRQUFRLEVBQTJDLE1BQU0sa0JBQWtCLENBQUM7QUFFM0csT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHaEUsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNoQixLQUFLLGtCQUFrQixFQUN2QixLQUFLLHdCQUF3QixFQUM3QixLQUFLLGdCQUFnQixFQUNyQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLHdCQUF3QixFQUM3QixLQUFLLG1CQUFtQixFQUV6QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU92RCxzSEFBc0g7QUFDdEgscUJBQWEsWUFBYSxZQUFXLGtCQUFrQjtJQVFuRCxPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxrQkFBa0I7SUFDMUIsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsR0FBRztJQVpiLE9BQU8sQ0FBQyxPQUFPLENBQVM7SUFDeEIsT0FBTyxDQUFDLE1BQU0sQ0FBc0I7SUFFcEMsT0FBTyxDQUFDLFVBQVUsQ0FBYTtJQUMvQixPQUFPLENBQUMsZ0JBQWdCLENBQXlCO0lBRWpELE9BQU8sZUFVTjtJQUVNLGlCQUFpQixJQUFJLFdBQVcsQ0FVdEM7SUFFTSxXQUFXLElBQUksVUFBVSxDQUUvQjtJQUVLLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBWTNFO0lBRUQ7O09BRUc7SUFDVSxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU9sQztJQUVEOztPQUVHO0lBQ1UsSUFBSSxrQkFPaEI7SUFFRDs7Ozs7T0FLRztJQUNILE9BQW9CLEdBQUcsQ0FDckIsTUFBTSxFQUFFLGtCQUFrQixFQUMxQixVQUFVLEVBQUUsd0JBQXdCLEdBQUcsd0JBQXdCLEVBQy9ELE1BQU0sRUFBRSxnQkFBZ0IsRUFDeEIsU0FBUyxHQUFFLGVBQXNDLHlCQUtsRDtJQUVNLG1CQUFtQixJQUFJLGtCQUFrQixDQU0vQztZQUVhLG9CQUFvQjtZQW1CcEIsVUFBVTtDQUd6QjtBQUVELHdCQUFnQix3QkFBd0IsQ0FDdEMsTUFBTSxFQUFFLGtCQUFrQixHQUFHLFVBQVUsR0FBRyxRQUFRLEVBQ2xELFNBQVMsRUFBRSxlQUFlLEdBQ3pCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQVU5QiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"prover-client.d.ts","sourceRoot":"","sources":["../../src/prover-client/prover-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAA2C,MAAM,kBAAkB,CAAC;AAE3G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAEvB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EAEzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOvD,sHAAsH;AACtH,qBAAa,YAAa,YAAW,kBAAkB;IAQnD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IAZb,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,eAUN;IAEM,iBAAiB,IAAI,WAAW,CAItC;IAEM,WAAW,IAAI,UAAU,CAE/B;IAEK,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3E;IAED;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAOlC;IAED;;OAEG;IACU,IAAI,kBAOhB;IAED;;;;;OAKG;IACH,OAAoB,GAAG,CACrB,MAAM,EAAE,kBAAkB,EAC1B,UAAU,EAAE,wBAAwB,GAAG,wBAAwB,EAC/D,MAAM,EAAE,gBAAgB,EACxB,SAAS,GAAE,eAAsC,yBAKlD;IAEM,mBAAmB,IAAI,kBAAkB,CAM/C;YAEa,oBAAoB;YAmBpB,UAAU;CAGzB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,kBAAkB,GAAG,UAAU,GAAG,QAAQ,EAClD,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAU9B"}
1
+ {"version":3,"file":"prover-client.d.ts","sourceRoot":"","sources":["../../src/prover-client/prover-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAA2C,MAAM,kBAAkB,CAAC;AAE3G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAEvB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EAEzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOvD,sHAAsH;AACtH,qBAAa,YAAa,YAAW,kBAAkB;IAQnD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IAZb,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,eAUN;IAEM,iBAAiB,IAAI,WAAW,CAUtC;IAEM,WAAW,IAAI,UAAU,CAE/B;IAEK,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3E;IAED;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAOlC;IAED;;OAEG;IACU,IAAI,kBAOhB;IAED;;;;;OAKG;IACH,OAAoB,GAAG,CACrB,MAAM,EAAE,kBAAkB,EAC1B,UAAU,EAAE,wBAAwB,GAAG,wBAAwB,EAC/D,MAAM,EAAE,gBAAgB,EACxB,SAAS,GAAE,eAAsC,yBAKlD;IAEM,mBAAmB,IAAI,kBAAkB,CAM/C;YAEa,oBAAoB;YAmBpB,UAAU;CAGzB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,kBAAkB,GAAG,UAAU,GAAG,QAAQ,EAClD,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAU9B"}
@@ -34,7 +34,7 @@ import { ServerEpochProver } from './server-epoch-prover.js';
34
34
  }
35
35
  createEpochProver() {
36
36
  const facade = new BrokerCircuitProverFacade(this.orchestratorClient, this.proofStore, this.failedProofStore);
37
- const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.config.proverId, this.telemetry);
37
+ const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.config.proverId, this.config.cancelJobsOnStop, this.telemetry);
38
38
  return new ServerEpochProver(facade, orchestrator);
39
39
  }
40
40
  getProverId() {
@@ -66,6 +66,8 @@ export declare const ProverAgentConfig: z.ZodObject<{
66
66
  proverTestDelayFactor: z.ZodNumber;
67
67
  /** The delay (ms) to inject during fake proof verification */
68
68
  proverTestVerificationDelayMs: z.ZodOptional<z.ZodNumber>;
69
+ /** Whether to abort pending proving jobs when the orchestrator is cancelled */
70
+ cancelJobsOnStop: z.ZodBoolean;
69
71
  }, "strip", z.ZodTypeAny, {
70
72
  proverAgentCount: number;
71
73
  proverAgentProofTypes: ProvingRequestType[];
@@ -76,6 +78,7 @@ export declare const ProverAgentConfig: z.ZodObject<{
76
78
  proverTestDelayMs: number;
77
79
  proverTestDelayFactor: number;
78
80
  proverTestVerificationDelayMs?: number | undefined;
81
+ cancelJobsOnStop: boolean;
79
82
  }, {
80
83
  proverAgentCount: number;
81
84
  proverAgentProofTypes: ProvingRequestType[];
@@ -86,7 +89,8 @@ export declare const ProverAgentConfig: z.ZodObject<{
86
89
  proverTestDelayMs: number;
87
90
  proverTestDelayFactor: number;
88
91
  proverTestVerificationDelayMs?: number | undefined;
92
+ cancelJobsOnStop: boolean;
89
93
  }>;
90
94
  export type ProverAgentConfig = z.infer<typeof ProverAgentConfig>;
91
95
  export declare const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig>;
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBMEIsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RixPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTFELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsZUFBTyxNQUFNLGtCQUFrQjtJQUM3QixxRkFBcUY7O0lBRXJGLHVIQUF1SDs7SUFFdkgsNkZBQTZGOztJQUU3Riw4RUFBOEU7O0lBRTlFLHFDQUFxQzs7SUFFckMsNkZBQTZGOztJQUU3RiwrRUFBK0U7O0lBRS9FLDRDQUE0Qzs7SUFFNUMsdURBQXVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBRXZELENBQUM7QUFFSCxNQUFNLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLGtCQUFrQixDQUFDLEdBQ2pFLElBQUksQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLEdBQUcsZUFBZSxDQUFDLEdBQzdELGNBQWMsR0FDZCxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRXJDLGVBQU8sTUFBTSwwQkFBMEIsRUFBRSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0F1QzdFLENBQUM7QUFFRixlQUFPLE1BQU0seUJBQXlCLEVBQUUsa0JBQWlFLENBQUM7QUFFMUcsZUFBTyxNQUFNLGlCQUFpQjtJQUM1QiwyQ0FBMkM7O0lBRTNDLHdEQUF3RDs7SUFFeEQsZ0RBQWdEOztJQUVoRCwrQ0FBK0M7O0lBRS9DLHVDQUF1Qzs7SUFFdkMsZ0RBQWdEOztJQUVoRCwyREFBMkQ7O0lBRTNELDhFQUE4RTs7SUFFOUUsOERBQThEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBRTlELENBQUM7QUFFSCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLGlCQUFpQixDQUFDLENBQUM7QUFFbEUsZUFBTyxNQUFNLHlCQUF5QixFQUFFLGtCQUFrQixDQUFDLGlCQUFpQixDQWlEM0UsQ0FBQyJ9
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBMEIsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RixPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTFELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsZUFBTyxNQUFNLGtCQUFrQjtJQUM3QixxRkFBcUY7O0lBRXJGLHVIQUF1SDs7SUFFdkgsNkZBQTZGOztJQUU3Riw4RUFBOEU7O0lBRTlFLHFDQUFxQzs7SUFFckMsNkZBQTZGOztJQUU3RiwrRUFBK0U7O0lBRS9FLDRDQUE0Qzs7SUFFNUMsdURBQXVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBRXZELENBQUM7QUFFSCxNQUFNLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLGtCQUFrQixDQUFDLEdBQ2pFLElBQUksQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLEdBQUcsZUFBZSxDQUFDLEdBQzdELGNBQWMsR0FDZCxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRXJDLGVBQU8sTUFBTSwwQkFBMEIsRUFBRSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0F1QzdFLENBQUM7QUFFRixlQUFPLE1BQU0seUJBQXlCLEVBQUUsa0JBQWlFLENBQUM7QUFFMUcsZUFBTyxNQUFNLGlCQUFpQjtJQUM1QiwyQ0FBMkM7O0lBRTNDLHdEQUF3RDs7SUFFeEQsZ0RBQWdEOztJQUVoRCwrQ0FBK0M7O0lBRS9DLHVDQUF1Qzs7SUFFdkMsZ0RBQWdEOztJQUVoRCwyREFBMkQ7O0lBRTNELDhFQUE4RTs7SUFFOUUsOERBQThEOztJQUU5RCwrRUFBK0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUUvRSxDQUFDO0FBRUgsTUFBTSxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDO0FBRWxFLGVBQU8sTUFBTSx5QkFBeUIsRUFBRSxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0F3RDNFLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/proving_broker/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;IAC7B,qFAAqF;;IAErF,uHAAuH;;IAEvH,6FAA6F;;IAE7F,8EAA8E;;IAE9E,qCAAqC;;IAErC,6FAA6F;;IAE7F,+EAA+E;;IAE/E,4CAA4C;;IAE5C,uDAAuD;;;;;;;;;;;;;;;;;;;;;;EAEvD,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACjE,IAAI,CAAC,eAAe,EAAE,oBAAoB,GAAG,eAAe,CAAC,GAC7D,cAAc,GACd,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAErC,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CAuC7E,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAiE,CAAC;AAE1G,eAAO,MAAM,iBAAiB;IAC5B,2CAA2C;;IAE3C,wDAAwD;;IAExD,gDAAgD;;IAEhD,+CAA+C;;IAE/C,uCAAuC;;IAEvC,gDAAgD;;IAEhD,2DAA2D;;IAE3D,8EAA8E;;IAE9E,8DAA8D;;;;;;;;;;;;;;;;;;;;;;EAE9D,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CAiD3E,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/proving_broker/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;IAC7B,qFAAqF;;IAErF,uHAAuH;;IAEvH,6FAA6F;;IAE7F,8EAA8E;;IAE9E,qCAAqC;;IAErC,6FAA6F;;IAE7F,+EAA+E;;IAE/E,4CAA4C;;IAE5C,uDAAuD;;;;;;;;;;;;;;;;;;;;;;EAEvD,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACjE,IAAI,CAAC,eAAe,EAAE,oBAAoB,GAAG,eAAe,CAAC,GAC7D,cAAc,GACd,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAErC,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CAuC7E,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAiE,CAAC;AAE1G,eAAO,MAAM,iBAAiB;IAC5B,2CAA2C;;IAE3C,wDAAwD;;IAExD,gDAAgD;;IAEhD,+CAA+C;;IAE/C,uCAAuC;;IAEvC,gDAAgD;;IAEhD,2DAA2D;;IAE3D,8EAA8E;;IAE9E,8DAA8D;;IAE9D,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;EAE/E,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CAwD3E,CAAC"}
@@ -71,7 +71,8 @@ export const ProverAgentConfig = z.object({
71
71
  ]),
72
72
  /** If using fixed delay, the time each operation takes. */ proverTestDelayMs: z.number(),
73
73
  /** If using realistic delays, what percentage of realistic times to apply. */ proverTestDelayFactor: z.number(),
74
- /** The delay (ms) to inject during fake proof verification */ proverTestVerificationDelayMs: z.number().optional()
74
+ /** The delay (ms) to inject during fake proof verification */ proverTestVerificationDelayMs: z.number().optional(),
75
+ /** Whether to abort pending proving jobs when the orchestrator is cancelled */ cancelJobsOnStop: z.boolean()
75
76
  });
76
77
  export const proverAgentConfigMappings = {
77
78
  proverAgentCount: {
@@ -117,5 +118,10 @@ export const proverAgentConfigMappings = {
117
118
  env: 'PROVER_TEST_VERIFICATION_DELAY_MS',
118
119
  description: 'The delay (ms) to inject during fake proof verification',
119
120
  ...numberConfigHelper(10)
121
+ },
122
+ cancelJobsOnStop: {
123
+ env: 'PROVER_CANCEL_JOBS_ON_STOP',
124
+ description: 'Whether to abort pending proving jobs when the orchestrator is cancelled. ' + 'When false (default), jobs remain in the broker queue and can be reused on restart/reorg.',
125
+ ...booleanConfigHelper(false)
120
126
  }
121
127
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/prover-client",
3
- "version": "4.0.0-nightly.20260121",
3
+ "version": "4.0.0-nightly.20260122",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -68,19 +68,19 @@
68
68
  ]
69
69
  },
70
70
  "dependencies": {
71
- "@aztec/bb-prover": "4.0.0-nightly.20260121",
72
- "@aztec/blob-lib": "4.0.0-nightly.20260121",
73
- "@aztec/constants": "4.0.0-nightly.20260121",
74
- "@aztec/ethereum": "4.0.0-nightly.20260121",
75
- "@aztec/foundation": "4.0.0-nightly.20260121",
76
- "@aztec/kv-store": "4.0.0-nightly.20260121",
77
- "@aztec/noir-protocol-circuits-types": "4.0.0-nightly.20260121",
78
- "@aztec/noir-types": "4.0.0-nightly.20260121",
79
- "@aztec/protocol-contracts": "4.0.0-nightly.20260121",
80
- "@aztec/simulator": "4.0.0-nightly.20260121",
81
- "@aztec/stdlib": "4.0.0-nightly.20260121",
82
- "@aztec/telemetry-client": "4.0.0-nightly.20260121",
83
- "@aztec/world-state": "4.0.0-nightly.20260121",
71
+ "@aztec/bb-prover": "4.0.0-nightly.20260122",
72
+ "@aztec/blob-lib": "4.0.0-nightly.20260122",
73
+ "@aztec/constants": "4.0.0-nightly.20260122",
74
+ "@aztec/ethereum": "4.0.0-nightly.20260122",
75
+ "@aztec/foundation": "4.0.0-nightly.20260122",
76
+ "@aztec/kv-store": "4.0.0-nightly.20260122",
77
+ "@aztec/noir-protocol-circuits-types": "4.0.0-nightly.20260122",
78
+ "@aztec/noir-types": "4.0.0-nightly.20260122",
79
+ "@aztec/protocol-contracts": "4.0.0-nightly.20260122",
80
+ "@aztec/simulator": "4.0.0-nightly.20260122",
81
+ "@aztec/stdlib": "4.0.0-nightly.20260122",
82
+ "@aztec/telemetry-client": "4.0.0-nightly.20260122",
83
+ "@aztec/world-state": "4.0.0-nightly.20260122",
84
84
  "@google-cloud/storage": "^7.15.0",
85
85
  "@iarna/toml": "^2.2.5",
86
86
  "commander": "^12.1.0",
@@ -90,7 +90,7 @@
90
90
  "zod": "^3.23.8"
91
91
  },
92
92
  "devDependencies": {
93
- "@aztec/noir-contracts.js": "4.0.0-nightly.20260121",
93
+ "@aztec/noir-contracts.js": "4.0.0-nightly.20260122",
94
94
  "@jest/globals": "^30.0.0",
95
95
  "@types/jest": "^30.0.0",
96
96
  "@types/node": "^22.15.17",
@@ -73,6 +73,11 @@ import { TxProvingState } from './tx-proving-state.js';
73
73
 
74
74
  const logger = createLogger('prover-client:orchestrator');
75
75
 
76
+ type WorldStateFork = {
77
+ fork: MerkleTreeWriteOperations;
78
+ cleanupPromise: Promise<void> | undefined;
79
+ };
80
+
76
81
  /**
77
82
  * Implements an event driven proving scheduler to build the recursive proof tree. The idea being:
78
83
  * 1. Transactions are provided to the scheduler post simulation.
@@ -94,12 +99,13 @@ export class ProvingOrchestrator implements EpochProver {
94
99
  private provingPromise: Promise<ProvingResult> | undefined = undefined;
95
100
  private metrics: ProvingOrchestratorMetrics;
96
101
  // eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
97
- private dbs: Map<BlockNumber, MerkleTreeWriteOperations> = new Map();
102
+ private dbs: Map<BlockNumber, WorldStateFork> = new Map();
98
103
 
99
104
  constructor(
100
105
  private dbProvider: ReadonlyWorldStateAccess & ForkMerkleTreeOperations,
101
106
  private prover: ServerCircuitProver,
102
107
  private readonly proverId: EthAddress,
108
+ private readonly cancelJobsOnStop: boolean = false,
103
109
  telemetryClient: TelemetryClient = getTelemetryClient(),
104
110
  ) {
105
111
  this.metrics = new ProvingOrchestratorMetrics(telemetryClient, 'ProvingOrchestrator');
@@ -175,7 +181,7 @@ export class ProvingOrchestrator implements EpochProver {
175
181
  const db = await this.dbProvider.fork(lastBlockNumber);
176
182
 
177
183
  const firstBlockNumber = BlockNumber(lastBlockNumber + 1);
178
- this.dbs.set(firstBlockNumber, db);
184
+ this.dbs.set(firstBlockNumber, { fork: db, cleanupPromise: undefined });
179
185
 
180
186
  // Get archive sibling path before any block in this checkpoint lands.
181
187
  const lastArchiveSiblingPath = await getLastSiblingPath(MerkleTreeId.ARCHIVE, db);
@@ -233,9 +239,9 @@ export class ProvingOrchestrator implements EpochProver {
233
239
  if (!this.dbs.has(blockNumber)) {
234
240
  // Fork world state at the end of the immediately previous block
235
241
  const db = await this.dbProvider.fork(BlockNumber(blockNumber - 1));
236
- this.dbs.set(blockNumber, db);
242
+ this.dbs.set(blockNumber, { fork: db, cleanupPromise: undefined });
237
243
  }
238
- const db = this.dbs.get(blockNumber)!;
244
+ const db = this.dbs.get(blockNumber)!.fork;
239
245
 
240
246
  // Get archive snapshot and sibling path before any txs in this block lands.
241
247
  const lastArchiveTreeSnapshot = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
@@ -310,7 +316,7 @@ export class ProvingOrchestrator implements EpochProver {
310
316
 
311
317
  logger.info(`Adding ${txs.length} transactions to block ${blockNumber}`);
312
318
 
313
- const db = this.dbs.get(blockNumber)!;
319
+ const db = this.dbs.get(blockNumber)!.fork;
314
320
  const lastArchive = provingState.lastArchiveTreeSnapshot;
315
321
  const newL1ToL2MessageTreeSnapshot = provingState.newL1ToL2MessageTreeSnapshot;
316
322
  const spongeBlobState = provingState.getStartSpongeBlob().clone();
@@ -439,7 +445,7 @@ export class ProvingOrchestrator implements EpochProver {
439
445
  }
440
446
 
441
447
  // Get db for this block
442
- const db = this.dbs.get(provingState.blockNumber)!;
448
+ const db = this.dbs.get(provingState.blockNumber)!.fork;
443
449
 
444
450
  // Update the archive tree, so we're ready to start processing the next block:
445
451
  logger.verbose(
@@ -475,7 +481,7 @@ export class ProvingOrchestrator implements EpochProver {
475
481
 
476
482
  // Get db for this block
477
483
  const blockNumber = provingState.blockNumber;
478
- const db = this.dbs.get(blockNumber)!;
484
+ const db = this.dbs.get(blockNumber)!.fork;
479
485
 
480
486
  const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
481
487
  const syncedArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.dbProvider.getSnapshot(blockNumber));
@@ -504,11 +510,15 @@ export class ProvingOrchestrator implements EpochProver {
504
510
  }
505
511
 
506
512
  /**
507
- * Cancel any further proving
513
+ * Cancel any further proving.
514
+ * If cancelJobsOnStop is true, aborts all pending jobs with the broker (which marks them as 'Aborted').
515
+ * If cancelJobsOnStop is false (default), jobs remain in the broker queue and can be reused on restart/reorg.
508
516
  */
509
517
  public cancel() {
510
- for (const controller of this.pendingProvingJobs) {
511
- controller.abort();
518
+ if (this.cancelJobsOnStop) {
519
+ for (const controller of this.pendingProvingJobs) {
520
+ controller.abort();
521
+ }
512
522
  }
513
523
 
514
524
  this.provingState?.cancel();
@@ -551,7 +561,10 @@ export class ProvingOrchestrator implements EpochProver {
551
561
  }
552
562
 
553
563
  try {
554
- await fork.close();
564
+ if (!fork.cleanupPromise) {
565
+ fork.cleanupPromise = fork.fork.close();
566
+ }
567
+ await fork.cleanupPromise;
555
568
  this.dbs.delete(blockNumber);
556
569
  } catch (err) {
557
570
  logger.error(`Error closing db for block ${blockNumber}`, err);
@@ -46,7 +46,13 @@ export class ProverClient implements EpochProverManager {
46
46
 
47
47
  public createEpochProver(): EpochProver {
48
48
  const facade = new BrokerCircuitProverFacade(this.orchestratorClient, this.proofStore, this.failedProofStore);
49
- const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.config.proverId, this.telemetry);
49
+ const orchestrator = new ProvingOrchestrator(
50
+ this.worldState,
51
+ facade,
52
+ this.config.proverId,
53
+ this.config.cancelJobsOnStop,
54
+ this.telemetry,
55
+ );
50
56
  return new ServerEpochProver(facade, orchestrator);
51
57
  }
52
58
 
@@ -100,6 +100,8 @@ export const ProverAgentConfig = z.object({
100
100
  proverTestDelayFactor: z.number(),
101
101
  /** The delay (ms) to inject during fake proof verification */
102
102
  proverTestVerificationDelayMs: z.number().optional(),
103
+ /** Whether to abort pending proving jobs when the orchestrator is cancelled */
104
+ cancelJobsOnStop: z.boolean(),
103
105
  });
104
106
 
105
107
  export type ProverAgentConfig = z.infer<typeof ProverAgentConfig>;
@@ -153,4 +155,11 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
153
155
  description: 'The delay (ms) to inject during fake proof verification',
154
156
  ...numberConfigHelper(10),
155
157
  },
158
+ cancelJobsOnStop: {
159
+ env: 'PROVER_CANCEL_JOBS_ON_STOP',
160
+ description:
161
+ 'Whether to abort pending proving jobs when the orchestrator is cancelled. ' +
162
+ 'When false (default), jobs remain in the broker queue and can be reused on restart/reorg.',
163
+ ...booleanConfigHelper(false),
164
+ },
156
165
  };