@aztec/prover-client 4.0.0-nightly.20250907 → 4.0.0-nightly.20260108

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 (133) hide show
  1. package/dest/block-factory/index.d.ts +1 -1
  2. package/dest/block-factory/light.d.ts +5 -3
  3. package/dest/block-factory/light.d.ts.map +1 -1
  4. package/dest/block-factory/light.js +32 -11
  5. package/dest/config.d.ts +2 -2
  6. package/dest/config.d.ts.map +1 -1
  7. package/dest/config.js +2 -2
  8. package/dest/index.d.ts +1 -1
  9. package/dest/light/index.d.ts +2 -0
  10. package/dest/light/index.d.ts.map +1 -0
  11. package/dest/light/index.js +1 -0
  12. package/dest/light/lightweight_checkpoint_builder.d.ts +36 -0
  13. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
  14. package/dest/light/lightweight_checkpoint_builder.js +147 -0
  15. package/dest/mocks/fixtures.d.ts +5 -5
  16. package/dest/mocks/fixtures.d.ts.map +1 -1
  17. package/dest/mocks/fixtures.js +33 -15
  18. package/dest/mocks/test_context.d.ts +38 -33
  19. package/dest/mocks/test_context.d.ts.map +1 -1
  20. package/dest/mocks/test_context.js +133 -82
  21. package/dest/orchestrator/block-building-helpers.d.ts +35 -35
  22. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  23. package/dest/orchestrator/block-building-helpers.js +151 -187
  24. package/dest/orchestrator/block-proving-state.d.ts +68 -55
  25. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  26. package/dest/orchestrator/block-proving-state.js +273 -185
  27. package/dest/orchestrator/checkpoint-proving-state.d.ts +63 -0
  28. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
  29. package/dest/orchestrator/checkpoint-proving-state.js +210 -0
  30. package/dest/orchestrator/epoch-proving-state.d.ts +38 -31
  31. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  32. package/dest/orchestrator/epoch-proving-state.js +128 -84
  33. package/dest/orchestrator/index.d.ts +1 -1
  34. package/dest/orchestrator/orchestrator.d.ts +35 -34
  35. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  36. package/dest/orchestrator/orchestrator.js +777 -292
  37. package/dest/orchestrator/orchestrator_metrics.d.ts +1 -3
  38. package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
  39. package/dest/orchestrator/orchestrator_metrics.js +0 -9
  40. package/dest/orchestrator/tx-proving-state.d.ts +12 -10
  41. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  42. package/dest/orchestrator/tx-proving-state.js +23 -29
  43. package/dest/prover-client/factory.d.ts +3 -3
  44. package/dest/prover-client/factory.d.ts.map +1 -1
  45. package/dest/prover-client/index.d.ts +1 -1
  46. package/dest/prover-client/prover-client.d.ts +3 -3
  47. package/dest/prover-client/prover-client.d.ts.map +1 -1
  48. package/dest/prover-client/prover-client.js +1 -1
  49. package/dest/prover-client/server-epoch-prover.d.ts +13 -11
  50. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  51. package/dest/prover-client/server-epoch-prover.js +9 -9
  52. package/dest/proving_broker/broker_prover_facade.d.ts +23 -18
  53. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  54. package/dest/proving_broker/broker_prover_facade.js +42 -33
  55. package/dest/proving_broker/config.d.ts +18 -14
  56. package/dest/proving_broker/config.d.ts.map +1 -1
  57. package/dest/proving_broker/config.js +12 -6
  58. package/dest/proving_broker/factory.d.ts +1 -1
  59. package/dest/proving_broker/factory.js +1 -1
  60. package/dest/proving_broker/fixtures.d.ts +3 -2
  61. package/dest/proving_broker/fixtures.d.ts.map +1 -1
  62. package/dest/proving_broker/fixtures.js +3 -2
  63. package/dest/proving_broker/index.d.ts +1 -1
  64. package/dest/proving_broker/proof_store/factory.d.ts +2 -2
  65. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +1 -1
  66. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
  67. package/dest/proving_broker/proof_store/index.d.ts +2 -1
  68. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  69. package/dest/proving_broker/proof_store/index.js +1 -0
  70. package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
  71. package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
  72. package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
  73. package/dest/proving_broker/proving_agent.d.ts +3 -8
  74. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  75. package/dest/proving_broker/proving_agent.js +1 -16
  76. package/dest/proving_broker/proving_broker.d.ts +2 -2
  77. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  78. package/dest/proving_broker/proving_broker.js +35 -29
  79. package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
  80. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
  81. package/dest/proving_broker/proving_broker_database/persisted.d.ts +5 -3
  82. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  83. package/dest/proving_broker/proving_broker_database/persisted.js +397 -8
  84. package/dest/proving_broker/proving_broker_database.d.ts +3 -2
  85. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
  86. package/dest/proving_broker/proving_broker_instrumentation.d.ts +1 -1
  87. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
  88. package/dest/proving_broker/proving_job_controller.d.ts +3 -2
  89. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  90. package/dest/proving_broker/proving_job_controller.js +40 -21
  91. package/dest/proving_broker/rpc.d.ts +4 -4
  92. package/dest/test/mock_proof_store.d.ts +3 -3
  93. package/dest/test/mock_proof_store.d.ts.map +1 -1
  94. package/dest/test/mock_prover.d.ts +23 -19
  95. package/dest/test/mock_prover.d.ts.map +1 -1
  96. package/dest/test/mock_prover.js +36 -21
  97. package/package.json +21 -19
  98. package/src/block-factory/light.ts +40 -17
  99. package/src/config.ts +2 -2
  100. package/src/light/index.ts +1 -0
  101. package/src/light/lightweight_checkpoint_builder.ts +198 -0
  102. package/src/mocks/fixtures.ts +41 -36
  103. package/src/mocks/test_context.ts +196 -114
  104. package/src/orchestrator/block-building-helpers.ts +233 -313
  105. package/src/orchestrator/block-proving-state.ts +315 -247
  106. package/src/orchestrator/checkpoint-proving-state.ts +303 -0
  107. package/src/orchestrator/epoch-proving-state.ts +176 -129
  108. package/src/orchestrator/orchestrator.ts +558 -348
  109. package/src/orchestrator/orchestrator_metrics.ts +1 -20
  110. package/src/orchestrator/tx-proving-state.ts +47 -55
  111. package/src/prover-client/factory.ts +6 -2
  112. package/src/prover-client/prover-client.ts +4 -11
  113. package/src/prover-client/server-epoch-prover.ts +30 -21
  114. package/src/proving_broker/broker_prover_facade.ts +175 -112
  115. package/src/proving_broker/config.ts +14 -7
  116. package/src/proving_broker/factory.ts +1 -1
  117. package/src/proving_broker/fixtures.ts +8 -3
  118. package/src/proving_broker/proof_store/index.ts +1 -0
  119. package/src/proving_broker/proving_agent.ts +1 -17
  120. package/src/proving_broker/proving_broker.ts +42 -27
  121. package/src/proving_broker/proving_broker_database/memory.ts +2 -1
  122. package/src/proving_broker/proving_broker_database/persisted.ts +25 -10
  123. package/src/proving_broker/proving_broker_database.ts +2 -1
  124. package/src/proving_broker/proving_job_controller.ts +42 -22
  125. package/src/test/mock_prover.ts +143 -66
  126. package/dest/bin/get-proof-inputs.d.ts +0 -2
  127. package/dest/bin/get-proof-inputs.d.ts.map +0 -1
  128. package/dest/bin/get-proof-inputs.js +0 -51
  129. package/dest/proving_broker/proving_agent_instrumentation.d.ts +0 -8
  130. package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +0 -1
  131. package/dest/proving_broker/proving_agent_instrumentation.js +0 -16
  132. package/src/bin/get-proof-inputs.ts +0 -59
  133. package/src/proving_broker/proving_agent_instrumentation.ts +0 -21
@@ -1,3 +1,4 @@
1
+ import { EpochNumber } from '@aztec/foundation/branded-types';
1
2
  import { createLogger } from '@aztec/foundation/log';
2
3
  import { type PromiseWithResolvers, RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
3
4
  import { PriorityMemoryQueue } from '@aztec/foundation/queue';
@@ -15,13 +16,7 @@ import {
15
16
  tryStop,
16
17
  } from '@aztec/stdlib/interfaces/server';
17
18
  import { ProvingRequestType } from '@aztec/stdlib/proofs';
18
- import {
19
- type TelemetryClient,
20
- type Traceable,
21
- type Tracer,
22
- getTelemetryClient,
23
- trackSpan,
24
- } from '@aztec/telemetry-client';
19
+ import { type TelemetryClient, type Traceable, type Tracer, getTelemetryClient } from '@aztec/telemetry-client';
25
20
 
26
21
  import assert from 'assert';
27
22
 
@@ -44,21 +39,33 @@ type EnqueuedProvingJob = Pick<ProvingJob, 'id' | 'epochNumber'>;
44
39
  export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Traceable {
45
40
  private queues: ProvingQueues = {
46
41
  [ProvingRequestType.PUBLIC_VM]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
47
- [ProvingRequestType.TUBE_PROOF]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
42
+ [ProvingRequestType.PUBLIC_CHONK_VERIFIER]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
48
43
 
49
- [ProvingRequestType.PRIVATE_BASE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
50
- [ProvingRequestType.PUBLIC_BASE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
51
- [ProvingRequestType.MERGE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
44
+ [ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
45
+ [ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
46
+ [ProvingRequestType.TX_MERGE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
52
47
  [ProvingRequestType.ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
53
48
 
54
49
  [ProvingRequestType.BLOCK_MERGE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
50
+ [ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
51
+ [ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(
52
+ provingJobComparator,
53
+ ),
54
+ [ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(
55
+ provingJobComparator,
56
+ ),
55
57
  [ProvingRequestType.BLOCK_ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
56
- [ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
57
- [ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
58
- [ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
58
+ [ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
59
+
60
+ [ProvingRequestType.CHECKPOINT_ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
61
+ [ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(
62
+ provingJobComparator,
63
+ ),
64
+ [ProvingRequestType.CHECKPOINT_MERGE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
65
+ [ProvingRequestType.CHECKPOINT_PADDING_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
59
66
 
60
- [ProvingRequestType.BASE_PARITY]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
61
- [ProvingRequestType.ROOT_PARITY]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
67
+ [ProvingRequestType.PARITY_BASE]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
68
+ [ProvingRequestType.PARITY_ROOT]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
62
69
  };
63
70
 
64
71
  // holds a copy of the database in memory in order to quickly fulfill requests
@@ -289,6 +296,7 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Tr
289
296
  this.resultsCache.delete(id);
290
297
  this.inProgress.delete(id);
291
298
  this.retries.delete(id);
299
+ this.enqueuedAt.delete(id);
292
300
  }
293
301
  }
294
302
 
@@ -341,6 +349,8 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Tr
341
349
  const enqueuedAt = this.enqueuedAt.get(job.id);
342
350
  if (enqueuedAt) {
343
351
  this.instrumentation.recordJobWait(job.type, enqueuedAt);
352
+ // we can clear this flag now.
353
+ this.enqueuedAt.delete(job.id);
344
354
  }
345
355
 
346
356
  return { job, time };
@@ -549,13 +559,12 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Tr
549
559
  return this.#getProvingJob(filter);
550
560
  }
551
561
 
552
- @trackSpan('ProvingBroker.cleanupPass')
553
562
  private async cleanupPass() {
554
563
  this.cleanupStaleJobs();
555
564
  this.reEnqueueExpiredJobs();
556
565
  const oldestEpochToKeep = this.oldestEpochToKeep();
557
566
  if (oldestEpochToKeep > 0) {
558
- await this.database.deleteAllProvingJobsOlderThanEpoch(oldestEpochToKeep);
567
+ await this.database.deleteAllProvingJobsOlderThanEpoch(EpochNumber(oldestEpochToKeep));
559
568
  this.logger.trace(`Deleted all epochs older than ${oldestEpochToKeep}`);
560
569
  }
561
570
  }
@@ -673,16 +682,22 @@ function proofTypeComparator(a: ProvingRequestType, b: ProvingRequestType): -1 |
673
682
  * is to get picked up by agents
674
683
  */
675
684
  export const PROOF_TYPES_IN_PRIORITY_ORDER: ProvingRequestType[] = [
685
+ ProvingRequestType.ROOT_ROLLUP,
686
+ ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP,
687
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
688
+ ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
676
689
  ProvingRequestType.BLOCK_ROOT_ROLLUP,
677
- ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP,
690
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
678
691
  ProvingRequestType.BLOCK_MERGE_ROLLUP,
679
- ProvingRequestType.ROOT_ROLLUP,
680
- ProvingRequestType.MERGE_ROLLUP,
681
- ProvingRequestType.PUBLIC_BASE_ROLLUP,
682
- ProvingRequestType.PRIVATE_BASE_ROLLUP,
692
+ ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
693
+ ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
694
+ ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
695
+ ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
696
+ ProvingRequestType.TX_MERGE_ROLLUP,
697
+ ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
698
+ ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
683
699
  ProvingRequestType.PUBLIC_VM,
684
- ProvingRequestType.TUBE_PROOF,
685
- ProvingRequestType.ROOT_PARITY,
686
- ProvingRequestType.BASE_PARITY,
687
- ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP,
700
+ ProvingRequestType.PUBLIC_CHONK_VERIFIER,
701
+ ProvingRequestType.PARITY_ROOT,
702
+ ProvingRequestType.PARITY_BASE,
688
703
  ];
@@ -1,3 +1,4 @@
1
+ import { EpochNumber } from '@aztec/foundation/branded-types';
1
2
  import {
2
3
  type ProofUri,
3
4
  type ProvingJob,
@@ -43,7 +44,7 @@ export class InMemoryBrokerDatabase implements ProvingBrokerDatabase {
43
44
  return Promise.resolve();
44
45
  }
45
46
 
46
- deleteAllProvingJobsOlderThanEpoch(epochNumber: number): Promise<void> {
47
+ deleteAllProvingJobsOlderThanEpoch(epochNumber: EpochNumber): Promise<void> {
47
48
  const toDelete = [
48
49
  ...Array.from(this.jobs.keys()).filter(x => getEpochFromProvingJobId(x) < epochNumber),
49
50
  ...Array.from(this.results.keys()).filter(x => getEpochFromProvingJobId(x) < epochNumber),
@@ -1,3 +1,4 @@
1
+ import { EpochNumber } from '@aztec/foundation/branded-types';
1
2
  import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
2
3
  import { type Logger, createLogger } from '@aztec/foundation/log';
3
4
  import { BatchQueue } from '@aztec/foundation/queue';
@@ -10,7 +11,14 @@ import {
10
11
  ProvingJobSettledResult,
11
12
  getEpochFromProvingJobId,
12
13
  } from '@aztec/stdlib/interfaces/server';
13
- import { Attributes, LmdbMetrics, type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
14
+ import {
15
+ Attributes,
16
+ LmdbMetrics,
17
+ type TelemetryClient,
18
+ type Tracer,
19
+ getTelemetryClient,
20
+ trackSpan,
21
+ } from '@aztec/telemetry-client';
14
22
 
15
23
  import { mkdir, readdir } from 'fs/promises';
16
24
  import { join } from 'path';
@@ -77,6 +85,8 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
77
85
 
78
86
  private batchQueue: BatchQueue<ProvingJob | [ProvingJobId, ProvingJobSettledResult], number>;
79
87
 
88
+ public readonly tracer: Tracer;
89
+
80
90
  private constructor(
81
91
  private epochs: Map<number, SingleEpochDatabase>,
82
92
  private config: ProverBrokerConfig,
@@ -91,6 +101,8 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
91
101
  () => this.estimateSize(),
92
102
  );
93
103
 
104
+ this.tracer = client.getTracer('KVBrokerDatabase');
105
+
94
106
  this.batchQueue = new BatchQueue(
95
107
  (items, key) => this.commitWrites(items, key),
96
108
  config.proverBrokerBatchSize,
@@ -104,14 +116,14 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
104
116
  const jobsToAdd = items.filter((item): item is ProvingJob => 'id' in item);
105
117
  const resultsToAdd = items.filter((item): item is [ProvingJobId, ProvingJobSettledResult] => Array.isArray(item));
106
118
 
107
- const db = await this.getEpochDatabase(epochNumber);
119
+ const db = await this.getEpochDatabase(EpochNumber(epochNumber));
108
120
  await db.batchWrite(jobsToAdd, resultsToAdd);
109
121
  }
110
122
 
111
123
  private async estimateSize() {
112
124
  const sizes = await Promise.all(Array.from(this.epochs.values()).map(x => x.estimateSize()));
113
125
  return {
114
- mappingSize: this.config.dataStoreMapSizeKB,
126
+ mappingSize: this.config.dataStoreMapSizeKb,
115
127
  physicalFileSize: sizes.reduce((prev, curr) => prev + curr.physicalFileSize, 0),
116
128
  numItems: sizes.reduce((prev, curr) => prev + curr.numItems, 0),
117
129
  actualSize: sizes.reduce((prev, curr) => prev + curr.actualSize, 0),
@@ -137,13 +149,13 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
137
149
  continue;
138
150
  }
139
151
  logger.info(
140
- `Loading broker database for epoch ${epochNumber} from ${fullDirectory} with map size ${config.dataStoreMapSizeKB}KB`,
152
+ `Loading broker database for epoch ${epochNumber} from ${fullDirectory} with map size ${config.dataStoreMapSizeKb}KB`,
141
153
  );
142
154
  const db = await openVersionedStoreAt(
143
155
  fullDirectory,
144
156
  SingleEpochDatabase.SCHEMA_VERSION,
145
157
  config.l1Contracts.rollupAddress,
146
- config.dataStoreMapSizeKB,
158
+ config.dataStoreMapSizeKb,
147
159
  );
148
160
  const epochDb = new SingleEpochDatabase(db);
149
161
  epochs.set(epochNumber, epochDb);
@@ -164,8 +176,11 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
164
176
  }
165
177
  }
166
178
 
167
- async deleteAllProvingJobsOlderThanEpoch(epochNumber: number): Promise<void> {
168
- const oldEpochs = Array.from(this.epochs.keys()).filter(e => e < epochNumber);
179
+ @trackSpan('KVBrokerDatabase.deleteAllProvingJobsOlderThanEpoch', epochNumber => ({
180
+ [Attributes.EPOCH_NUMBER]: epochNumber,
181
+ }))
182
+ async deleteAllProvingJobsOlderThanEpoch(epochNumber: EpochNumber): Promise<void> {
183
+ const oldEpochs = Array.from(this.epochs.keys()).filter(e => e < Number(epochNumber));
169
184
  for (const old of oldEpochs) {
170
185
  const db = this.epochs.get(old);
171
186
  if (!db) {
@@ -196,19 +211,19 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
196
211
  return this.batchQueue.put([id, { status: 'fulfilled', value }], getEpochFromProvingJobId(id));
197
212
  }
198
213
 
199
- private async getEpochDatabase(epochNumber: number): Promise<SingleEpochDatabase> {
214
+ private async getEpochDatabase(epochNumber: EpochNumber): Promise<SingleEpochDatabase> {
200
215
  let epochDb = this.epochs.get(epochNumber);
201
216
  if (!epochDb) {
202
217
  const newEpochDirectory = join(this.config.dataDirectory!, epochNumber.toString());
203
218
  await mkdir(newEpochDirectory, { recursive: true });
204
219
  this.logger.info(
205
- `Creating broker database for epoch ${epochNumber} at ${newEpochDirectory} with map size ${this.config.dataStoreMapSizeKB}`,
220
+ `Creating broker database for epoch ${epochNumber} at ${newEpochDirectory} with map size ${this.config.dataStoreMapSizeKb}`,
206
221
  );
207
222
  const db = await openVersionedStoreAt(
208
223
  newEpochDirectory,
209
224
  SingleEpochDatabase.SCHEMA_VERSION,
210
225
  this.config.l1Contracts.rollupAddress,
211
- this.config.dataStoreMapSizeKB,
226
+ this.config.dataStoreMapSizeKb,
212
227
  );
213
228
  epochDb = new SingleEpochDatabase(db);
214
229
  this.epochs.set(epochNumber, epochDb);
@@ -1,3 +1,4 @@
1
+ import { EpochNumber } from '@aztec/foundation/branded-types';
1
2
  import type { ProofUri, ProvingJob, ProvingJobId, ProvingJobSettledResult } from '@aztec/stdlib/interfaces/server';
2
3
 
3
4
  /**
@@ -14,7 +15,7 @@ export interface ProvingBrokerDatabase {
14
15
  * Deletes all proving jobs belonging to epochs older than the given epoch
15
16
  * @param epochNumber - The epoch number beyond which jobs should be deleted
16
17
  */
17
- deleteAllProvingJobsOlderThanEpoch(epochNumber: number): Promise<void>;
18
+ deleteAllProvingJobsOlderThanEpoch(epochNumber: EpochNumber): Promise<void>;
18
19
 
19
20
  /**
20
21
  * Returns an iterator over all saved proving jobs
@@ -1,4 +1,5 @@
1
- import { randomBytes } from '@aztec/foundation/crypto';
1
+ import { EpochNumber } from '@aztec/foundation/branded-types';
2
+ import { randomBytes } from '@aztec/foundation/crypto/random';
2
3
  import { AbortError } from '@aztec/foundation/error';
3
4
  import { createLogger } from '@aztec/foundation/log';
4
5
  import type {
@@ -24,7 +25,7 @@ export class ProvingJobController {
24
25
  constructor(
25
26
  private jobId: ProvingJobId,
26
27
  private inputs: ProvingJobInputs,
27
- private epochNumber: number,
28
+ private epochNumber: EpochNumber,
28
29
  private startedAt: number,
29
30
  private circuitProver: ServerCircuitProver,
30
31
  private onComplete: () => void,
@@ -124,58 +125,77 @@ export class ProvingJobController {
124
125
  const signal = this.abortController.signal;
125
126
  switch (type) {
126
127
  case ProvingRequestType.PUBLIC_VM: {
127
- // TODO(#14234)[Unconditional PIs validation]: Remove argument "undefined".
128
- return await this.circuitProver.getAvmProof(inputs, undefined, signal, this.epochNumber);
128
+ return await this.circuitProver.getAvmProof(inputs, signal, this.epochNumber);
129
129
  }
130
130
 
131
- case ProvingRequestType.PRIVATE_BASE_ROLLUP: {
132
- return await this.circuitProver.getPrivateBaseRollupProof(inputs, signal, this.epochNumber);
131
+ case ProvingRequestType.PUBLIC_CHONK_VERIFIER: {
132
+ return await this.circuitProver.getPublicChonkVerifierProof(inputs, signal, this.epochNumber);
133
133
  }
134
134
 
135
- case ProvingRequestType.PUBLIC_BASE_ROLLUP: {
136
- return await this.circuitProver.getPublicBaseRollupProof(inputs, signal, this.epochNumber);
135
+ case ProvingRequestType.PRIVATE_TX_BASE_ROLLUP: {
136
+ return await this.circuitProver.getPrivateTxBaseRollupProof(inputs, signal, this.epochNumber);
137
137
  }
138
138
 
139
- case ProvingRequestType.MERGE_ROLLUP: {
140
- return await this.circuitProver.getMergeRollupProof(inputs, signal, this.epochNumber);
139
+ case ProvingRequestType.PUBLIC_TX_BASE_ROLLUP: {
140
+ return await this.circuitProver.getPublicTxBaseRollupProof(inputs, signal, this.epochNumber);
141
141
  }
142
142
 
143
- case ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP: {
144
- return await this.circuitProver.getEmptyBlockRootRollupProof(inputs, signal, this.epochNumber);
143
+ case ProvingRequestType.TX_MERGE_ROLLUP: {
144
+ return await this.circuitProver.getTxMergeRollupProof(inputs, signal, this.epochNumber);
145
145
  }
146
146
 
147
- case ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP: {
148
- return await this.circuitProver.getPaddingBlockRootRollupProof(inputs, signal, this.epochNumber);
147
+ case ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP: {
148
+ return await this.circuitProver.getBlockRootFirstRollupProof(inputs, signal, this.epochNumber);
149
+ }
150
+
151
+ case ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP: {
152
+ return await this.circuitProver.getBlockRootSingleTxFirstRollupProof(inputs, signal, this.epochNumber);
153
+ }
154
+
155
+ case ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP: {
156
+ return await this.circuitProver.getBlockRootEmptyTxFirstRollupProof(inputs, signal, this.epochNumber);
149
157
  }
150
158
 
151
159
  case ProvingRequestType.BLOCK_ROOT_ROLLUP: {
152
160
  return await this.circuitProver.getBlockRootRollupProof(inputs, signal, this.epochNumber);
153
161
  }
154
162
 
155
- case ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP: {
156
- return await this.circuitProver.getSingleTxBlockRootRollupProof(inputs, signal, this.epochNumber);
163
+ case ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP: {
164
+ return await this.circuitProver.getBlockRootSingleTxRollupProof(inputs, signal, this.epochNumber);
157
165
  }
158
166
 
159
167
  case ProvingRequestType.BLOCK_MERGE_ROLLUP: {
160
168
  return await this.circuitProver.getBlockMergeRollupProof(inputs, signal, this.epochNumber);
161
169
  }
162
170
 
171
+ case ProvingRequestType.CHECKPOINT_ROOT_ROLLUP: {
172
+ return await this.circuitProver.getCheckpointRootRollupProof(inputs, signal, this.epochNumber);
173
+ }
174
+
175
+ case ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP: {
176
+ return await this.circuitProver.getCheckpointRootSingleBlockRollupProof(inputs, signal, this.epochNumber);
177
+ }
178
+
179
+ case ProvingRequestType.CHECKPOINT_PADDING_ROLLUP: {
180
+ return await this.circuitProver.getCheckpointPaddingRollupProof(inputs, signal, this.epochNumber);
181
+ }
182
+
183
+ case ProvingRequestType.CHECKPOINT_MERGE_ROLLUP: {
184
+ return await this.circuitProver.getCheckpointMergeRollupProof(inputs, signal, this.epochNumber);
185
+ }
186
+
163
187
  case ProvingRequestType.ROOT_ROLLUP: {
164
188
  return await this.circuitProver.getRootRollupProof(inputs, signal, this.epochNumber);
165
189
  }
166
190
 
167
- case ProvingRequestType.BASE_PARITY: {
191
+ case ProvingRequestType.PARITY_BASE: {
168
192
  return await this.circuitProver.getBaseParityProof(inputs, signal, this.epochNumber);
169
193
  }
170
194
 
171
- case ProvingRequestType.ROOT_PARITY: {
195
+ case ProvingRequestType.PARITY_ROOT: {
172
196
  return await this.circuitProver.getRootParityProof(inputs, signal, this.epochNumber);
173
197
  }
174
198
 
175
- case ProvingRequestType.TUBE_PROOF: {
176
- return await this.circuitProver.getTubeProof(inputs, signal, this.epochNumber);
177
- }
178
-
179
199
  default: {
180
200
  const _exhaustive: never = type;
181
201
  return Promise.reject(new Error(`Invalid proof request type: ${type}`));