@aztec/prover-client 0.0.0-test.1 → 0.0.1-commit.017a351

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 (185) hide show
  1. package/dest/config.d.ts +8 -8
  2. package/dest/config.d.ts.map +1 -1
  3. package/dest/config.js +26 -2
  4. package/dest/index.d.ts +1 -1
  5. package/dest/light/index.d.ts +2 -0
  6. package/dest/light/index.d.ts.map +1 -0
  7. package/dest/light/index.js +1 -0
  8. package/dest/light/lightweight_checkpoint_builder.d.ts +52 -0
  9. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
  10. package/dest/light/lightweight_checkpoint_builder.js +231 -0
  11. package/dest/mocks/fixtures.d.ts +8 -8
  12. package/dest/mocks/fixtures.d.ts.map +1 -1
  13. package/dest/mocks/fixtures.js +36 -17
  14. package/dest/mocks/test_context.d.ts +45 -32
  15. package/dest/mocks/test_context.d.ts.map +1 -1
  16. package/dest/mocks/test_context.js +162 -90
  17. package/dest/orchestrator/block-building-helpers.d.ts +36 -29
  18. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  19. package/dest/orchestrator/block-building-helpers.js +170 -189
  20. package/dest/orchestrator/block-proving-state.d.ts +73 -48
  21. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  22. package/dest/orchestrator/block-proving-state.js +289 -177
  23. package/dest/orchestrator/checkpoint-proving-state.d.ts +83 -0
  24. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
  25. package/dest/orchestrator/checkpoint-proving-state.js +252 -0
  26. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts +107 -0
  27. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts.map +1 -0
  28. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.js +151 -0
  29. package/dest/orchestrator/epoch-proving-context.d.ts +51 -0
  30. package/dest/orchestrator/epoch-proving-context.d.ts.map +1 -0
  31. package/dest/orchestrator/epoch-proving-context.js +81 -0
  32. package/dest/orchestrator/epoch-proving-state.d.ts +43 -28
  33. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  34. package/dest/orchestrator/epoch-proving-state.js +179 -73
  35. package/dest/orchestrator/index.d.ts +4 -1
  36. package/dest/orchestrator/index.d.ts.map +1 -1
  37. package/dest/orchestrator/index.js +3 -0
  38. package/dest/orchestrator/orchestrator.d.ts +59 -51
  39. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  40. package/dest/orchestrator/orchestrator.js +808 -385
  41. package/dest/orchestrator/orchestrator_metrics.d.ts +1 -1
  42. package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
  43. package/dest/orchestrator/orchestrator_metrics.js +2 -6
  44. package/dest/orchestrator/proving-scheduler.d.ts +72 -0
  45. package/dest/orchestrator/proving-scheduler.d.ts.map +1 -0
  46. package/dest/orchestrator/proving-scheduler.js +117 -0
  47. package/dest/orchestrator/top-tree-orchestrator.d.ts +83 -0
  48. package/dest/orchestrator/top-tree-orchestrator.d.ts.map +1 -0
  49. package/dest/orchestrator/top-tree-orchestrator.js +182 -0
  50. package/dest/orchestrator/top-tree-proving-scheduler.d.ts +62 -0
  51. package/dest/orchestrator/top-tree-proving-scheduler.d.ts.map +1 -0
  52. package/dest/orchestrator/top-tree-proving-scheduler.js +73 -0
  53. package/dest/orchestrator/top-tree-proving-state.d.ts +61 -0
  54. package/dest/orchestrator/top-tree-proving-state.d.ts.map +1 -0
  55. package/dest/orchestrator/top-tree-proving-state.js +185 -0
  56. package/dest/orchestrator/tx-proving-state.d.ts +15 -12
  57. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  58. package/dest/orchestrator/tx-proving-state.js +27 -44
  59. package/dest/prover-client/factory.d.ts +3 -3
  60. package/dest/prover-client/factory.d.ts.map +1 -1
  61. package/dest/prover-client/index.d.ts +1 -1
  62. package/dest/prover-client/prover-client.d.ts +68 -9
  63. package/dest/prover-client/prover-client.d.ts.map +1 -1
  64. package/dest/prover-client/prover-client.js +68 -14
  65. package/dest/prover-client/server-epoch-prover.d.ts +16 -12
  66. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  67. package/dest/prover-client/server-epoch-prover.js +11 -11
  68. package/dest/proving_broker/broker_prover_facade.d.ts +28 -19
  69. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  70. package/dest/proving_broker/broker_prover_facade.js +74 -61
  71. package/dest/proving_broker/config.d.ts +18 -61
  72. package/dest/proving_broker/config.d.ts.map +1 -1
  73. package/dest/proving_broker/config.js +43 -9
  74. package/dest/proving_broker/factory.d.ts +2 -2
  75. package/dest/proving_broker/factory.d.ts.map +1 -1
  76. package/dest/proving_broker/factory.js +5 -1
  77. package/dest/proving_broker/fixtures.d.ts +3 -2
  78. package/dest/proving_broker/fixtures.d.ts.map +1 -1
  79. package/dest/proving_broker/fixtures.js +3 -2
  80. package/dest/proving_broker/index.d.ts +2 -1
  81. package/dest/proving_broker/index.d.ts.map +1 -1
  82. package/dest/proving_broker/index.js +1 -0
  83. package/dest/proving_broker/proof_store/factory.d.ts +2 -5
  84. package/dest/proving_broker/proof_store/factory.d.ts.map +1 -1
  85. package/dest/proving_broker/proof_store/factory.js +7 -30
  86. package/dest/proving_broker/proof_store/file_store_proof_store.d.ts +18 -0
  87. package/dest/proving_broker/proof_store/file_store_proof_store.d.ts.map +1 -0
  88. package/dest/proving_broker/proof_store/file_store_proof_store.js +60 -0
  89. package/dest/proving_broker/proof_store/index.d.ts +2 -1
  90. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  91. package/dest/proving_broker/proof_store/index.js +1 -0
  92. package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
  93. package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
  94. package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
  95. package/dest/proving_broker/proving_agent.d.ts +8 -12
  96. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  97. package/dest/proving_broker/proving_agent.js +86 -65
  98. package/dest/proving_broker/proving_broker.d.ts +18 -6
  99. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  100. package/dest/proving_broker/proving_broker.js +108 -44
  101. package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
  102. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
  103. package/dest/proving_broker/proving_broker_database/memory.js +1 -1
  104. package/dest/proving_broker/proving_broker_database/persisted.d.ts +5 -3
  105. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  106. package/dest/proving_broker/proving_broker_database/persisted.js +401 -11
  107. package/dest/proving_broker/proving_broker_database.d.ts +3 -2
  108. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
  109. package/dest/proving_broker/proving_broker_instrumentation.d.ts +3 -1
  110. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
  111. package/dest/proving_broker/proving_broker_instrumentation.js +22 -35
  112. package/dest/proving_broker/proving_job_controller.d.ts +11 -10
  113. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  114. package/dest/proving_broker/proving_job_controller.js +92 -62
  115. package/dest/proving_broker/rpc.d.ts +9 -7
  116. package/dest/proving_broker/rpc.d.ts.map +1 -1
  117. package/dest/proving_broker/rpc.js +88 -27
  118. package/dest/test/mock_proof_store.d.ts +9 -0
  119. package/dest/test/mock_proof_store.d.ts.map +1 -0
  120. package/dest/test/mock_proof_store.js +10 -0
  121. package/dest/test/mock_prover.d.ts +23 -17
  122. package/dest/test/mock_prover.d.ts.map +1 -1
  123. package/dest/test/mock_prover.js +38 -20
  124. package/package.json +34 -33
  125. package/src/config.ts +41 -9
  126. package/src/light/index.ts +1 -0
  127. package/src/light/lightweight_checkpoint_builder.ts +320 -0
  128. package/src/mocks/fixtures.ts +46 -40
  129. package/src/mocks/test_context.ts +231 -120
  130. package/src/orchestrator/block-building-helpers.ts +258 -334
  131. package/src/orchestrator/block-proving-state.ts +334 -231
  132. package/src/orchestrator/checkpoint-proving-state.ts +362 -0
  133. package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +271 -0
  134. package/src/orchestrator/epoch-proving-context.ts +101 -0
  135. package/src/orchestrator/epoch-proving-state.ts +239 -111
  136. package/src/orchestrator/index.ts +8 -0
  137. package/src/orchestrator/orchestrator.ts +591 -451
  138. package/src/orchestrator/orchestrator_metrics.ts +2 -6
  139. package/src/orchestrator/proving-scheduler.ts +156 -0
  140. package/src/orchestrator/top-tree-orchestrator.ts +314 -0
  141. package/src/orchestrator/top-tree-proving-scheduler.ts +154 -0
  142. package/src/orchestrator/top-tree-proving-state.ts +220 -0
  143. package/src/orchestrator/tx-proving-state.ts +48 -66
  144. package/src/prover-client/factory.ts +6 -2
  145. package/src/prover-client/prover-client.ts +173 -38
  146. package/src/prover-client/server-epoch-prover.ts +40 -22
  147. package/src/proving_broker/broker_prover_facade.ts +227 -149
  148. package/src/proving_broker/config.ts +49 -8
  149. package/src/proving_broker/factory.ts +2 -1
  150. package/src/proving_broker/fixtures.ts +8 -3
  151. package/src/proving_broker/index.ts +1 -0
  152. package/src/proving_broker/proof_store/factory.ts +10 -32
  153. package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
  154. package/src/proving_broker/proof_store/index.ts +1 -0
  155. package/src/proving_broker/proof_store/inline_proof_store.ts +1 -1
  156. package/src/proving_broker/proving_agent.ts +95 -66
  157. package/src/proving_broker/proving_broker.ts +121 -49
  158. package/src/proving_broker/proving_broker_database/memory.ts +3 -2
  159. package/src/proving_broker/proving_broker_database/persisted.ts +31 -15
  160. package/src/proving_broker/proving_broker_database.ts +2 -1
  161. package/src/proving_broker/proving_broker_instrumentation.ts +23 -35
  162. package/src/proving_broker/proving_job_controller.ts +100 -83
  163. package/src/proving_broker/rpc.ts +46 -25
  164. package/src/test/mock_proof_store.ts +14 -0
  165. package/src/test/mock_prover.ts +156 -64
  166. package/dest/bin/get-proof-inputs.d.ts +0 -2
  167. package/dest/bin/get-proof-inputs.d.ts.map +0 -1
  168. package/dest/bin/get-proof-inputs.js +0 -51
  169. package/dest/block_builder/index.d.ts +0 -6
  170. package/dest/block_builder/index.d.ts.map +0 -1
  171. package/dest/block_builder/index.js +0 -1
  172. package/dest/block_builder/light.d.ts +0 -33
  173. package/dest/block_builder/light.d.ts.map +0 -1
  174. package/dest/block_builder/light.js +0 -82
  175. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -14
  176. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
  177. package/dest/proving_broker/proof_store/gcs_proof_store.js +0 -51
  178. package/dest/proving_broker/proving_agent_instrumentation.d.ts +0 -8
  179. package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +0 -1
  180. package/dest/proving_broker/proving_agent_instrumentation.js +0 -16
  181. package/src/bin/get-proof-inputs.ts +0 -59
  182. package/src/block_builder/index.ts +0 -6
  183. package/src/block_builder/light.ts +0 -101
  184. package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -72
  185. package/src/proving_broker/proving_agent_instrumentation.ts +0 -21
@@ -1,17 +1,17 @@
1
1
  import type {
2
- AVM_PROOF_LENGTH_IN_FIELDS,
2
+ AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
3
3
  NESTED_RECURSIVE_PROOF_LENGTH,
4
4
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
5
5
  RECURSIVE_PROOF_LENGTH,
6
- TUBE_PROOF_LENGTH,
7
6
  } from '@aztec/constants';
8
- import { sha256 } from '@aztec/foundation/crypto';
9
- import { createLogger } from '@aztec/foundation/log';
7
+ import { asyncPool } from '@aztec/foundation/async-pool';
8
+ import { EpochNumber } from '@aztec/foundation/branded-types';
9
+ import { chunk } from '@aztec/foundation/collection';
10
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
10
11
  import { type PromiseWithResolvers, RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
11
12
  import { truncate } from '@aztec/foundation/string';
12
13
  import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
13
14
  import {
14
- type ProofAndVerificationKey,
15
15
  type ProofUri,
16
16
  type ProvingJobId,
17
17
  type ProvingJobInputsMap,
@@ -22,23 +22,33 @@ import {
22
22
  type ServerCircuitProver,
23
23
  makeProvingJobId,
24
24
  } from '@aztec/stdlib/interfaces/server';
25
- import type { BaseParityInputs, ParityPublicInputs, RootParityInputs } from '@aztec/stdlib/parity';
26
- import { ProvingRequestType } from '@aztec/stdlib/proofs';
25
+ import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
26
+ import { ProvingRequestType, RecursiveProof } from '@aztec/stdlib/proofs';
27
27
  import type {
28
- BaseOrMergeRollupPublicInputs,
29
- BlockMergeRollupInputs,
30
- BlockRootOrBlockMergePublicInputs,
31
- BlockRootRollupInputs,
32
- EmptyBlockRootRollupInputs,
33
- MergeRollupInputs,
34
- PrivateBaseRollupInputs,
35
- PublicBaseRollupInputs,
36
- RootRollupInputs,
28
+ BlockMergeRollupPrivateInputs,
29
+ BlockRollupPublicInputs,
30
+ BlockRootEmptyTxFirstRollupPrivateInputs,
31
+ BlockRootFirstRollupPrivateInputs,
32
+ BlockRootRollupPrivateInputs,
33
+ BlockRootSingleTxFirstRollupPrivateInputs,
34
+ BlockRootSingleTxRollupPrivateInputs,
35
+ CheckpointMergeRollupPrivateInputs,
36
+ CheckpointPaddingRollupPrivateInputs,
37
+ CheckpointRollupPublicInputs,
38
+ CheckpointRootRollupPrivateInputs,
39
+ CheckpointRootSingleBlockRollupPrivateInputs,
40
+ PrivateTxBaseRollupPrivateInputs,
41
+ PublicChonkVerifierPrivateInputs,
42
+ PublicChonkVerifierPublicInputs,
43
+ PublicTxBaseRollupPrivateInputs,
44
+ RootRollupPrivateInputs,
37
45
  RootRollupPublicInputs,
38
- SingleTxBlockRootRollupInputs,
39
- TubeInputs,
46
+ TxMergeRollupPrivateInputs,
47
+ TxRollupPublicInputs,
40
48
  } from '@aztec/stdlib/rollup';
41
49
 
50
+ import { createHash } from 'node:crypto';
51
+
42
52
  import { InlineProofStore, type ProofStore } from './proof_store/index.js';
43
53
 
44
54
  // Perform a snapshot sync every 30 seconds
@@ -61,14 +71,17 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
61
71
  private runningPromise?: RunningPromise;
62
72
  private timeOfLastSnapshotSync = Date.now();
63
73
  private jobsToRetrieve: Set<ProvingJobId> = new Set();
74
+ private log: Logger;
64
75
 
65
76
  constructor(
66
77
  private broker: ProvingJobProducer,
67
78
  private proofStore: ProofStore = new InlineProofStore(),
68
79
  private failedProofStore?: ProofStore,
69
80
  private pollIntervalMs = 1000,
70
- private log = createLogger('prover-client:broker-circuit-prover-facade'),
71
- ) {}
81
+ bindings?: LoggerBindings,
82
+ ) {
83
+ this.log = createLogger('prover-client:broker-circuit-prover-facade', bindings);
84
+ }
72
85
 
73
86
  /**
74
87
  * This is a critical section. This function can not be async since it writes
@@ -93,7 +106,15 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
93
106
 
94
107
  // Create a promise for this job id, regardless of whether it was enqueued at the broker
95
108
  // The running promise will monitor for the job to be completed and resolve it either way
109
+ // We install an error handler to prevent unhandled rejections in the process before the
110
+ // job promise is awaited by the caller (see #13166)
96
111
  const promise = promiseWithResolvers<ProvingJobResultsMap[T]>();
112
+ promise.promise.catch(err =>
113
+ this.log.error(`Job errored with '${err.message ?? err}' id=${id} type=${ProvingRequestType[type]}`, {
114
+ provingJobId: id,
115
+ provingJobType: ProvingRequestType[type],
116
+ }),
117
+ );
97
118
  const abortFn = () => {
98
119
  signal?.removeEventListener('abort', abortFn);
99
120
  void this.broker.cancelProvingJob(id).catch(err => this.log.warn(`Error cancelling job id=${id}`, err));
@@ -114,7 +135,7 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
114
135
  id: ProvingJobId,
115
136
  type: T,
116
137
  inputs: ProvingJobInputsMap[T],
117
- epochNumber = 0,
138
+ epochNumber = EpochNumber.ZERO,
118
139
  signal?: AbortSignal,
119
140
  ): Promise<ProvingJobResultsMap[T]> {
120
141
  const { job: job, isEnqueued } = this.getOrCreateProvingJob(id, type, signal);
@@ -125,27 +146,26 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
125
146
  try {
126
147
  const inputsUri = await this.proofStore.saveProofInput(id, type, inputs);
127
148
  job.inputsUri = inputsUri;
128
- const jobStatus = await this.broker.enqueueProvingJob({
129
- id,
130
- type,
131
- inputsUri,
149
+
150
+ // Send the job to the broker
151
+ const jobStatus = await this.broker.enqueueProvingJob({ id, type, inputsUri, epochNumber });
152
+
153
+ const jobLogText = `id=${id} type=${ProvingRequestType[type]} epochNumber=${epochNumber}`;
154
+ const jobLogData = {
155
+ provingJobId: id,
156
+ provingJobType: ProvingRequestType[type],
132
157
  epochNumber,
133
- });
158
+ inputsUri: truncate(inputsUri),
159
+ status: jobStatus.status,
160
+ numOutstandingJobs: this.jobs.size,
161
+ };
134
162
 
135
163
  // If we are here then the job was successfully accepted by the broker
136
164
  // the returned status is for before any action was performed
137
165
  if (jobStatus.status === 'fulfilled' || jobStatus.status === 'rejected') {
138
166
  // Job was already completed by the broker
139
167
  // No need to notify the broker on aborted job
140
- this.log.verbose(
141
- `Job already completed when sent to broker id=${id} type=${ProvingRequestType[type]} epochNumber=${epochNumber}`,
142
- {
143
- provingJobId: id,
144
- provingJobType: ProvingRequestType[type],
145
- epochNumber,
146
- inputsUri: truncate(inputsUri),
147
- },
148
- );
168
+ this.log.verbose(`Job already completed when sent to broker ${jobLogText}`, jobLogData);
149
169
 
150
170
  // Job was not enqueued. It must be completed already, add to our set of already completed jobs
151
171
  this.jobsToRetrieve.add(id);
@@ -155,27 +175,10 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
155
175
 
156
176
  // Job added for the first time
157
177
  if (jobStatus.status === 'not-found') {
158
- this.log.verbose(
159
- `Job enqueued with broker id=${id} type=${ProvingRequestType[type]} epochNumber=${epochNumber}`,
160
- {
161
- provingJobId: id,
162
- provingJobType: ProvingRequestType[type],
163
- epochNumber,
164
- inputsUri: truncate(inputsUri),
165
- numOutstandingJobs: this.jobs.size,
166
- },
167
- );
178
+ this.log.verbose(`Job enqueued with broker ${jobLogText}`, jobLogData);
168
179
  } else {
169
180
  // Job was previously sent to the broker but is not completed
170
- this.log.verbose(
171
- `Job already in queue or in progress when sent to broker id=${id} type=${ProvingRequestType[type]} epochNumber=${epochNumber}`,
172
- {
173
- provingJobId: id,
174
- provingJobType: ProvingRequestType[type],
175
- epochNumber,
176
- inputsUri: truncate(inputsUri),
177
- },
178
- );
181
+ this.log.verbose(`Job already in queue or in progress when sent to broker ${jobLogText}`, jobLogData);
179
182
  }
180
183
  }
181
184
  } catch (err) {
@@ -225,17 +228,11 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
225
228
  // We collect all returned notifications and return them
226
229
  const allCompleted = new Set<ProvingJobId>();
227
230
  try {
228
- let numRequests = 0;
229
- while (ids.length > 0) {
230
- const slice = ids.splice(0, SNAPSHOT_SYNC_CHECK_MAX_REQUEST_SIZE);
231
- const completed = await this.broker.getCompletedJobs(slice);
231
+ const batches = ids.length > 0 ? chunk(ids, SNAPSHOT_SYNC_CHECK_MAX_REQUEST_SIZE) : [[]];
232
+ await asyncPool(1, batches, async batch => {
233
+ const completed = await this.broker.getCompletedJobs(batch);
232
234
  completed.forEach(id => allCompleted.add(id));
233
- ++numRequests;
234
- }
235
- if (numRequests === 0) {
236
- const final = await this.broker.getCompletedJobs([]);
237
- final.forEach(id => allCompleted.add(id));
238
- }
235
+ });
239
236
  } catch (err) {
240
237
  this.log.error(`Error thrown when requesting completed job notifications from the broker`, err);
241
238
  }
@@ -351,12 +348,8 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
351
348
  .map(id => this.jobs.get(id)!)
352
349
  .filter(x => x !== undefined);
353
350
  const totalJobsToRetrieve = toBeRetrieved.length;
354
- let totalJobsRetrieved = 0;
355
- while (toBeRetrieved.length > 0) {
356
- const slice = toBeRetrieved.splice(0, MAX_CONCURRENT_JOB_SETTLED_REQUESTS);
357
- const results = await Promise.all(slice.map(job => processJob(job!)));
358
- totalJobsRetrieved += results.filter(x => x).length;
359
- }
351
+ const results = await asyncPool(MAX_CONCURRENT_JOB_SETTLED_REQUESTS, toBeRetrieved, job => processJob(job));
352
+ const totalJobsRetrieved = results.filter(x => x).length;
360
353
  if (totalJobsToRetrieve > 0) {
361
354
  this.log.verbose(
362
355
  `Successfully retrieved ${totalJobsRetrieved} of ${totalJobsToRetrieve} jobs that should be ready, total ready jobs is now: ${this.jobsToRetrieve.size}`,
@@ -400,8 +393,8 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
400
393
  getAvmProof(
401
394
  inputs: AvmCircuitInputs,
402
395
  signal?: AbortSignal,
403
- epochNumber?: number,
404
- ): Promise<ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>> {
396
+ epochNumber?: EpochNumber,
397
+ ): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>> {
405
398
  return this.enqueueJob(
406
399
  this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber),
407
400
  ProvingRequestType.PUBLIC_VM,
@@ -412,29 +405,127 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
412
405
  }
413
406
 
414
407
  getBaseParityProof(
415
- inputs: BaseParityInputs,
408
+ inputs: ParityBasePrivateInputs,
416
409
  signal?: AbortSignal,
417
- epochNumber?: number,
410
+ epochNumber?: EpochNumber,
418
411
  ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
419
412
  return this.enqueueJob(
420
- this.generateId(ProvingRequestType.BASE_PARITY, inputs, epochNumber),
421
- ProvingRequestType.BASE_PARITY,
413
+ this.generateId(ProvingRequestType.PARITY_BASE, inputs, epochNumber),
414
+ ProvingRequestType.PARITY_BASE,
422
415
  inputs,
423
416
  epochNumber,
424
417
  signal,
425
418
  );
426
419
  }
427
420
 
428
- getBlockMergeRollupProof(
429
- input: BlockMergeRollupInputs,
421
+ getTxMergeRollupProof(
422
+ input: TxMergeRollupPrivateInputs,
430
423
  signal?: AbortSignal,
431
- epochNumber?: number,
424
+ epochNumber?: EpochNumber,
425
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
426
+ return this.enqueueJob(
427
+ this.generateId(ProvingRequestType.TX_MERGE_ROLLUP, input, epochNumber),
428
+ ProvingRequestType.TX_MERGE_ROLLUP,
429
+ input,
430
+ epochNumber,
431
+ signal,
432
+ );
433
+ }
434
+
435
+ getPublicChonkVerifierProof(
436
+ inputs: PublicChonkVerifierPrivateInputs,
437
+ signal?: AbortSignal,
438
+ epochNumber?: EpochNumber,
432
439
  ): Promise<
433
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
440
+ PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
434
441
  > {
435
442
  return this.enqueueJob(
436
- this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
437
- ProvingRequestType.BLOCK_MERGE_ROLLUP,
443
+ this.generateId(ProvingRequestType.PUBLIC_CHONK_VERIFIER, inputs, epochNumber),
444
+ ProvingRequestType.PUBLIC_CHONK_VERIFIER,
445
+ inputs,
446
+ epochNumber,
447
+ signal,
448
+ );
449
+ }
450
+
451
+ getPrivateTxBaseRollupProof(
452
+ baseRollupInput: PrivateTxBaseRollupPrivateInputs,
453
+ signal?: AbortSignal,
454
+ epochNumber?: EpochNumber,
455
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
456
+ return this.enqueueJob(
457
+ this.generateId(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, baseRollupInput, epochNumber),
458
+ ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
459
+ baseRollupInput,
460
+ epochNumber,
461
+ signal,
462
+ );
463
+ }
464
+
465
+ getPublicTxBaseRollupProof(
466
+ inputs: PublicTxBaseRollupPrivateInputs,
467
+ signal?: AbortSignal,
468
+ epochNumber?: EpochNumber,
469
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
470
+ return this.enqueueJob(
471
+ this.generateId(ProvingRequestType.PUBLIC_TX_BASE_ROLLUP, inputs, epochNumber),
472
+ ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
473
+ inputs,
474
+ epochNumber,
475
+ signal,
476
+ );
477
+ }
478
+
479
+ getRootParityProof(
480
+ inputs: ParityRootPrivateInputs,
481
+ signal?: AbortSignal,
482
+ epochNumber?: EpochNumber,
483
+ ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
484
+ return this.enqueueJob(
485
+ this.generateId(ProvingRequestType.PARITY_ROOT, inputs, epochNumber),
486
+ ProvingRequestType.PARITY_ROOT,
487
+ inputs,
488
+ epochNumber,
489
+ signal,
490
+ );
491
+ }
492
+
493
+ getBlockRootFirstRollupProof(
494
+ input: BlockRootFirstRollupPrivateInputs,
495
+ signal?: AbortSignal,
496
+ epochNumber?: EpochNumber,
497
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
498
+ return this.enqueueJob(
499
+ this.generateId(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, input, epochNumber),
500
+ ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP,
501
+ input,
502
+ epochNumber,
503
+ signal,
504
+ );
505
+ }
506
+
507
+ getBlockRootSingleTxFirstRollupProof(
508
+ input: BlockRootSingleTxFirstRollupPrivateInputs,
509
+ signal?: AbortSignal,
510
+ epochNumber?: EpochNumber,
511
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
512
+ return this.enqueueJob(
513
+ this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, input, epochNumber),
514
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
515
+ input,
516
+ epochNumber,
517
+ signal,
518
+ );
519
+ }
520
+
521
+ getBlockRootEmptyTxFirstRollupProof(
522
+ input: BlockRootEmptyTxFirstRollupPrivateInputs,
523
+ signal?: AbortSignal,
524
+ epochNumber?: EpochNumber,
525
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
526
+ return this.enqueueJob(
527
+ this.generateId(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, input, epochNumber),
528
+ ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
438
529
  input,
439
530
  epochNumber,
440
531
  signal,
@@ -442,12 +533,10 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
442
533
  }
443
534
 
444
535
  getBlockRootRollupProof(
445
- input: BlockRootRollupInputs,
536
+ input: BlockRootRollupPrivateInputs,
446
537
  signal?: AbortSignal,
447
- epochNumber?: number,
448
- ): Promise<
449
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
450
- > {
538
+ epochNumber?: EpochNumber,
539
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
451
540
  return this.enqueueJob(
452
541
  this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
453
542
  ProvingRequestType.BLOCK_ROOT_ROLLUP,
@@ -457,103 +546,102 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
457
546
  );
458
547
  }
459
548
 
460
- getSingleTxBlockRootRollupProof(
461
- input: SingleTxBlockRootRollupInputs,
549
+ getBlockRootSingleTxRollupProof(
550
+ input: BlockRootSingleTxRollupPrivateInputs,
462
551
  signal?: AbortSignal,
463
- epochNumber?: number,
464
- ): Promise<
465
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
466
- > {
552
+ epochNumber?: EpochNumber,
553
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
467
554
  return this.enqueueJob(
468
- this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
469
- ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP,
555
+ this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, input, epochNumber),
556
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
470
557
  input,
471
558
  epochNumber,
472
559
  signal,
473
560
  );
474
561
  }
475
562
 
476
- getEmptyBlockRootRollupProof(
477
- input: EmptyBlockRootRollupInputs,
563
+ getBlockMergeRollupProof(
564
+ input: BlockMergeRollupPrivateInputs,
478
565
  signal?: AbortSignal,
479
- epochNumber?: number,
480
- ): Promise<
481
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
482
- > {
566
+ epochNumber?: EpochNumber,
567
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
483
568
  return this.enqueueJob(
484
- this.generateId(ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input, epochNumber),
485
- ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP,
569
+ this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
570
+ ProvingRequestType.BLOCK_MERGE_ROLLUP,
486
571
  input,
487
572
  epochNumber,
488
573
  signal,
489
574
  );
490
575
  }
491
576
 
492
- getMergeRollupProof(
493
- input: MergeRollupInputs,
577
+ getCheckpointRootRollupProof(
578
+ input: CheckpointRootRollupPrivateInputs,
494
579
  signal?: AbortSignal,
495
- epochNumber?: number,
580
+ epochNumber?: EpochNumber,
496
581
  ): Promise<
497
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
582
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
498
583
  > {
499
584
  return this.enqueueJob(
500
- this.generateId(ProvingRequestType.MERGE_ROLLUP, input, epochNumber),
501
- ProvingRequestType.MERGE_ROLLUP,
585
+ this.generateId(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, input, epochNumber),
586
+ ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
502
587
  input,
503
588
  epochNumber,
504
589
  signal,
505
590
  );
506
591
  }
507
- getPrivateBaseRollupProof(
508
- baseRollupInput: PrivateBaseRollupInputs,
592
+
593
+ getCheckpointRootSingleBlockRollupProof(
594
+ input: CheckpointRootSingleBlockRollupPrivateInputs,
509
595
  signal?: AbortSignal,
510
- epochNumber?: number,
596
+ epochNumber?: EpochNumber,
511
597
  ): Promise<
512
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
598
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
513
599
  > {
514
600
  return this.enqueueJob(
515
- this.generateId(ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput, epochNumber),
516
- ProvingRequestType.PRIVATE_BASE_ROLLUP,
517
- baseRollupInput,
601
+ this.generateId(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, input, epochNumber),
602
+ ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
603
+ input,
518
604
  epochNumber,
519
605
  signal,
520
606
  );
521
607
  }
522
608
 
523
- getPublicBaseRollupProof(
524
- inputs: PublicBaseRollupInputs,
609
+ getCheckpointPaddingRollupProof(
610
+ input: CheckpointPaddingRollupPrivateInputs,
525
611
  signal?: AbortSignal,
526
- epochNumber?: number,
612
+ epochNumber?: EpochNumber,
527
613
  ): Promise<
528
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
614
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
529
615
  > {
530
616
  return this.enqueueJob(
531
- this.generateId(ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs, epochNumber),
532
- ProvingRequestType.PUBLIC_BASE_ROLLUP,
533
- inputs,
617
+ this.generateId(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, input, epochNumber),
618
+ ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
619
+ input,
534
620
  epochNumber,
535
621
  signal,
536
622
  );
537
623
  }
538
624
 
539
- getRootParityProof(
540
- inputs: RootParityInputs,
625
+ getCheckpointMergeRollupProof(
626
+ input: CheckpointMergeRollupPrivateInputs,
541
627
  signal?: AbortSignal,
542
- epochNumber?: number,
543
- ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
628
+ epochNumber?: EpochNumber,
629
+ ): Promise<
630
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
631
+ > {
544
632
  return this.enqueueJob(
545
- this.generateId(ProvingRequestType.ROOT_PARITY, inputs, epochNumber),
546
- ProvingRequestType.ROOT_PARITY,
547
- inputs,
633
+ this.generateId(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, input, epochNumber),
634
+ ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
635
+ input,
548
636
  epochNumber,
549
637
  signal,
550
638
  );
551
639
  }
552
640
 
553
641
  getRootRollupProof(
554
- input: RootRollupInputs,
642
+ input: RootRollupPrivateInputs,
555
643
  signal?: AbortSignal,
556
- epochNumber?: number,
644
+ epochNumber?: EpochNumber,
557
645
  ): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
558
646
  return this.enqueueJob(
559
647
  this.generateId(ProvingRequestType.ROOT_ROLLUP, input, epochNumber),
@@ -564,22 +652,12 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
564
652
  );
565
653
  }
566
654
 
567
- getTubeProof(
568
- tubeInput: TubeInputs,
569
- signal?: AbortSignal,
570
- epochNumber?: number,
571
- ): Promise<ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>> {
572
- return this.enqueueJob(
573
- this.generateId(ProvingRequestType.TUBE_PROOF, tubeInput, epochNumber),
574
- ProvingRequestType.TUBE_PROOF,
575
- tubeInput,
576
- epochNumber,
577
- signal,
578
- );
579
- }
580
-
581
- private generateId(type: ProvingRequestType, inputs: { toBuffer(): Buffer }, epochNumber = 0) {
582
- const inputsHash = sha256(inputs.toBuffer());
583
- return makeProvingJobId(epochNumber, type, inputsHash.toString('hex'));
655
+ private generateId(
656
+ type: ProvingRequestType,
657
+ inputs: { toBuffer(): Buffer },
658
+ epochNumber = EpochNumber.ZERO,
659
+ ): ProvingJobId {
660
+ const inputsHash = createHash('sha256').update(inputs.toBuffer()).digest('hex');
661
+ return makeProvingJobId(epochNumber, type, inputsHash);
584
662
  }
585
663
  }
@@ -1,11 +1,14 @@
1
- import { type L1ReaderConfig, l1ReaderConfigMappings } from '@aztec/ethereum';
1
+ import { type L1ReaderConfig, l1ReaderConfigMappings } from '@aztec/ethereum/l1-reader';
2
2
  import {
3
3
  type ConfigMappingsType,
4
4
  booleanConfigHelper,
5
5
  getDefaultConfig,
6
6
  numberConfigHelper,
7
+ optionalNumberConfigHelper,
7
8
  } from '@aztec/foundation/config';
8
- import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
9
+ import { pickConfigMappings } from '@aztec/foundation/config';
10
+ import { type ChainConfig, chainConfigMappings } from '@aztec/stdlib/config';
11
+ import { type DataStoreConfig, dataConfigMappings } from '@aztec/stdlib/kv-store';
9
12
  import { ProvingRequestType } from '@aztec/stdlib/proofs';
10
13
 
11
14
  import { z } from 'zod';
@@ -20,18 +23,23 @@ export const ProverBrokerConfig = z.object({
20
23
  /** If starting a prover broker locally, the directory to store broker data */
21
24
  dataDirectory: z.string().optional(),
22
25
  /** The size of the data store map */
23
- dataStoreMapSizeKB: z.number().int().nonnegative(),
26
+ dataStoreMapSizeKb: z.number().int().nonnegative(),
27
+ /** The size of the prover broker's database. Will override the dataStoreMapSizeKb if set. */
28
+ proverBrokerStoreMapSizeKb: z.number().int().nonnegative().optional(),
24
29
  /** The prover broker may batch jobs together before writing to the database */
25
30
  proverBrokerBatchSize: z.number().int().nonnegative(),
26
31
  /** How often the job batches get flushed */
27
32
  proverBrokerBatchIntervalMs: z.number().int().nonnegative(),
28
33
  /** The maximum number of epochs to keep results for */
29
34
  proverBrokerMaxEpochsToKeepResultsFor: z.number().int().nonnegative(),
35
+ /** Enable debug replay mode for replaying proving jobs from stored inputs */
36
+ proverBrokerDebugReplayEnabled: z.boolean(),
30
37
  });
31
38
 
32
39
  export type ProverBrokerConfig = z.infer<typeof ProverBrokerConfig> &
33
- Pick<DataStoreConfig, 'dataStoreMapSizeKB' | 'dataDirectory'> &
34
- L1ReaderConfig;
40
+ Pick<DataStoreConfig, 'dataStoreMapSizeKb' | 'dataDirectory'> &
41
+ L1ReaderConfig &
42
+ Pick<ChainConfig, 'rollupVersion'>;
35
43
 
36
44
  export const proverBrokerConfigMappings: ConfigMappingsType<ProverBrokerConfig> = {
37
45
  proverBrokerJobTimeoutMs: {
@@ -64,8 +72,19 @@ export const proverBrokerConfigMappings: ConfigMappingsType<ProverBrokerConfig>
64
72
  description: 'The maximum number of epochs to keep results for',
65
73
  ...numberConfigHelper(1),
66
74
  },
67
- ...l1ReaderConfigMappings,
75
+ proverBrokerStoreMapSizeKb: {
76
+ env: 'PROVER_BROKER_STORE_MAP_SIZE_KB',
77
+ ...optionalNumberConfigHelper(),
78
+ description: "The size of the prover broker's database. Will override the dataStoreMapSizeKb if set.",
79
+ },
80
+ proverBrokerDebugReplayEnabled: {
81
+ env: 'PROVER_BROKER_DEBUG_REPLAY_ENABLED',
82
+ description: 'Enable debug replay mode for replaying proving jobs from stored inputs',
83
+ ...booleanConfigHelper(false),
84
+ },
68
85
  ...dataConfigMappings,
86
+ ...l1ReaderConfigMappings,
87
+ ...pickConfigMappings(chainConfigMappings, ['rollupVersion']),
69
88
  };
70
89
 
71
90
  export const defaultProverBrokerConfig: ProverBrokerConfig = getDefaultConfig(proverBrokerConfigMappings);
@@ -87,6 +106,12 @@ export const ProverAgentConfig = z.object({
87
106
  proverTestDelayMs: z.number(),
88
107
  /** If using realistic delays, what percentage of realistic times to apply. */
89
108
  proverTestDelayFactor: z.number(),
109
+ /** The delay (ms) to inject during fake proof verification */
110
+ proverTestVerificationDelayMs: z.number().optional(),
111
+ /** Whether to abort pending proving jobs when the orchestrator is cancelled */
112
+ cancelJobsOnStop: z.boolean(),
113
+ /** Where to store proving results. Must be accessible to both prover node and agents. If not set will inline-encode the parameters */
114
+ proofStore: z.string().optional(),
90
115
  });
91
116
 
92
117
  export type ProverAgentConfig = z.infer<typeof ProverAgentConfig>;
@@ -100,7 +125,7 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
100
125
  proverAgentPollIntervalMs: {
101
126
  env: 'PROVER_AGENT_POLL_INTERVAL_MS',
102
127
  description: 'The interval agents poll for jobs at',
103
- ...numberConfigHelper(100),
128
+ ...numberConfigHelper(1000),
104
129
  },
105
130
  proverAgentProofTypes: {
106
131
  env: 'PROVER_AGENT_PROOF_TYPES',
@@ -118,7 +143,7 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
118
143
  realProofs: {
119
144
  env: 'PROVER_REAL_PROOFS',
120
145
  description: 'Whether to construct real proofs',
121
- ...booleanConfigHelper(false),
146
+ ...booleanConfigHelper(true),
122
147
  },
123
148
  proverTestDelayType: {
124
149
  env: 'PROVER_TEST_DELAY_TYPE',
@@ -135,4 +160,20 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
135
160
  description: 'If using realistic delays, what percentage of realistic times to apply.',
136
161
  ...numberConfigHelper(1),
137
162
  },
163
+ proverTestVerificationDelayMs: {
164
+ env: 'PROVER_TEST_VERIFICATION_DELAY_MS',
165
+ description: 'The delay (ms) to inject during fake proof verification',
166
+ ...numberConfigHelper(10),
167
+ },
168
+ cancelJobsOnStop: {
169
+ env: 'PROVER_CANCEL_JOBS_ON_STOP',
170
+ description:
171
+ 'Whether to abort pending proving jobs when the orchestrator is cancelled. ' +
172
+ 'When false (default), jobs remain in the broker queue and can be reused on restart/reorg.',
173
+ ...booleanConfigHelper(false),
174
+ },
175
+ proofStore: {
176
+ env: 'PROVER_PROOF_STORE',
177
+ description: 'Optional proof input store for the prover',
178
+ },
138
179
  };