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

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 (121) hide show
  1. package/dest/block-factory/index.d.ts +2 -0
  2. package/dest/block-factory/index.d.ts.map +1 -0
  3. package/dest/block-factory/light.d.ts +38 -0
  4. package/dest/block-factory/light.d.ts.map +1 -0
  5. package/dest/block-factory/light.js +94 -0
  6. package/dest/config.d.ts +6 -6
  7. package/dest/config.d.ts.map +1 -1
  8. package/dest/config.js +11 -1
  9. package/dest/mocks/fixtures.d.ts +7 -4
  10. package/dest/mocks/fixtures.d.ts.map +1 -1
  11. package/dest/mocks/fixtures.js +32 -4
  12. package/dest/mocks/test_context.d.ts +43 -15
  13. package/dest/mocks/test_context.d.ts.map +1 -1
  14. package/dest/mocks/test_context.js +110 -48
  15. package/dest/orchestrator/block-building-helpers.d.ts +37 -28
  16. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  17. package/dest/orchestrator/block-building-helpers.js +156 -150
  18. package/dest/orchestrator/block-proving-state.d.ts +62 -46
  19. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  20. package/dest/orchestrator/block-proving-state.js +223 -179
  21. package/dest/orchestrator/checkpoint-proving-state.d.ts +63 -0
  22. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
  23. package/dest/orchestrator/checkpoint-proving-state.js +211 -0
  24. package/dest/orchestrator/epoch-proving-state.d.ts +37 -24
  25. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  26. package/dest/orchestrator/epoch-proving-state.js +143 -73
  27. package/dest/orchestrator/orchestrator.d.ts +34 -31
  28. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  29. package/dest/orchestrator/orchestrator.js +392 -234
  30. package/dest/orchestrator/orchestrator_metrics.d.ts +2 -0
  31. package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
  32. package/dest/orchestrator/orchestrator_metrics.js +9 -0
  33. package/dest/orchestrator/tx-proving-state.d.ts +12 -10
  34. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  35. package/dest/orchestrator/tx-proving-state.js +30 -38
  36. package/dest/prover-client/prover-client.d.ts +3 -3
  37. package/dest/prover-client/prover-client.d.ts.map +1 -1
  38. package/dest/prover-client/prover-client.js +5 -4
  39. package/dest/prover-client/server-epoch-prover.d.ts +13 -10
  40. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  41. package/dest/prover-client/server-epoch-prover.js +11 -11
  42. package/dest/proving_broker/broker_prover_facade.d.ts +22 -15
  43. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  44. package/dest/proving_broker/broker_prover_facade.js +64 -39
  45. package/dest/proving_broker/config.d.ts +9 -4
  46. package/dest/proving_broker/config.d.ts.map +1 -1
  47. package/dest/proving_broker/config.js +15 -4
  48. package/dest/proving_broker/factory.d.ts +1 -1
  49. package/dest/proving_broker/factory.d.ts.map +1 -1
  50. package/dest/proving_broker/factory.js +5 -1
  51. package/dest/proving_broker/fixtures.js +1 -1
  52. package/dest/proving_broker/proof_store/factory.js +1 -1
  53. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
  54. package/dest/proving_broker/proof_store/gcs_proof_store.js +1 -0
  55. package/dest/proving_broker/proof_store/index.d.ts +1 -0
  56. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  57. package/dest/proving_broker/proof_store/index.js +1 -0
  58. package/dest/proving_broker/proving_agent.d.ts +3 -3
  59. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  60. package/dest/proving_broker/proving_agent.js +83 -47
  61. package/dest/proving_broker/proving_broker.d.ts +11 -2
  62. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  63. package/dest/proving_broker/proving_broker.js +34 -22
  64. package/dest/proving_broker/proving_broker_database/memory.js +1 -1
  65. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  66. package/dest/proving_broker/proving_broker_database/persisted.js +9 -8
  67. package/dest/proving_broker/proving_job_controller.d.ts +7 -8
  68. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  69. package/dest/proving_broker/proving_job_controller.js +89 -61
  70. package/dest/proving_broker/rpc.d.ts +3 -5
  71. package/dest/proving_broker/rpc.d.ts.map +1 -1
  72. package/dest/proving_broker/rpc.js +1 -4
  73. package/dest/test/mock_proof_store.d.ts +9 -0
  74. package/dest/test/mock_proof_store.d.ts.map +1 -0
  75. package/dest/test/mock_proof_store.js +10 -0
  76. package/dest/test/mock_prover.d.ts +23 -16
  77. package/dest/test/mock_prover.d.ts.map +1 -1
  78. package/dest/test/mock_prover.js +38 -20
  79. package/package.json +29 -29
  80. package/src/block-factory/index.ts +1 -0
  81. package/src/block-factory/light.ts +140 -0
  82. package/src/config.ts +24 -8
  83. package/src/mocks/fixtures.ts +43 -15
  84. package/src/mocks/test_context.ts +201 -75
  85. package/src/orchestrator/block-building-helpers.ts +247 -243
  86. package/src/orchestrator/block-proving-state.ts +247 -231
  87. package/src/orchestrator/checkpoint-proving-state.ts +299 -0
  88. package/src/orchestrator/epoch-proving-state.ts +187 -111
  89. package/src/orchestrator/orchestrator.ts +590 -289
  90. package/src/orchestrator/orchestrator_metrics.ts +20 -1
  91. package/src/orchestrator/tx-proving-state.ts +60 -61
  92. package/src/prover-client/prover-client.ts +16 -14
  93. package/src/prover-client/server-epoch-prover.ts +40 -21
  94. package/src/proving_broker/broker_prover_facade.ts +200 -113
  95. package/src/proving_broker/config.ts +17 -6
  96. package/src/proving_broker/factory.ts +2 -1
  97. package/src/proving_broker/fixtures.ts +1 -1
  98. package/src/proving_broker/proof_store/factory.ts +1 -1
  99. package/src/proving_broker/proof_store/gcs_proof_store.ts +5 -1
  100. package/src/proving_broker/proof_store/index.ts +1 -0
  101. package/src/proving_broker/proof_store/inline_proof_store.ts +1 -1
  102. package/src/proving_broker/proving_agent.ts +89 -47
  103. package/src/proving_broker/proving_broker.ts +51 -32
  104. package/src/proving_broker/proving_broker_database/memory.ts +1 -1
  105. package/src/proving_broker/proving_broker_database/persisted.ts +9 -8
  106. package/src/proving_broker/proving_job_controller.ts +92 -81
  107. package/src/proving_broker/rpc.ts +1 -6
  108. package/src/test/mock_proof_store.ts +14 -0
  109. package/src/test/mock_prover.ts +164 -60
  110. package/dest/bin/get-proof-inputs.d.ts +0 -2
  111. package/dest/bin/get-proof-inputs.d.ts.map +0 -1
  112. package/dest/bin/get-proof-inputs.js +0 -51
  113. package/dest/block_builder/index.d.ts +0 -6
  114. package/dest/block_builder/index.d.ts.map +0 -1
  115. package/dest/block_builder/light.d.ts +0 -33
  116. package/dest/block_builder/light.d.ts.map +0 -1
  117. package/dest/block_builder/light.js +0 -82
  118. package/src/bin/get-proof-inputs.ts +0 -59
  119. package/src/block_builder/index.ts +0 -6
  120. package/src/block_builder/light.ts +0 -101
  121. /package/dest/{block_builder → block-factory}/index.js +0 -0
@@ -1,11 +1,11 @@
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
7
  import { sha256 } from '@aztec/foundation/crypto';
8
+ import { Fr } from '@aztec/foundation/fields';
9
9
  import { createLogger } from '@aztec/foundation/log';
10
10
  import { type PromiseWithResolvers, RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
11
11
  import { truncate } from '@aztec/foundation/string';
@@ -22,21 +22,29 @@ 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';
25
+ import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
26
26
  import { ProvingRequestType } 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
 
42
50
  import { InlineProofStore, type ProofStore } from './proof_store/index.js';
@@ -93,7 +101,15 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
93
101
 
94
102
  // Create a promise for this job id, regardless of whether it was enqueued at the broker
95
103
  // The running promise will monitor for the job to be completed and resolve it either way
104
+ // We install an error handler to prevent unhandled rejections in the process before the
105
+ // job promise is awaited by the caller (see #13166)
96
106
  const promise = promiseWithResolvers<ProvingJobResultsMap[T]>();
107
+ promise.promise.catch(err =>
108
+ this.log.error(`Job errored with '${err.message ?? err}' id=${id} type=${ProvingRequestType[type]}`, {
109
+ provingJobId: id,
110
+ provingJobType: ProvingRequestType[type],
111
+ }),
112
+ );
97
113
  const abortFn = () => {
98
114
  signal?.removeEventListener('abort', abortFn);
99
115
  void this.broker.cancelProvingJob(id).catch(err => this.log.warn(`Error cancelling job id=${id}`, err));
@@ -125,27 +141,26 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
125
141
  try {
126
142
  const inputsUri = await this.proofStore.saveProofInput(id, type, inputs);
127
143
  job.inputsUri = inputsUri;
128
- const jobStatus = await this.broker.enqueueProvingJob({
129
- id,
130
- type,
131
- inputsUri,
144
+
145
+ // Send the job to the broker
146
+ const jobStatus = await this.broker.enqueueProvingJob({ id, type, inputsUri, epochNumber });
147
+
148
+ const jobLogText = `id=${id} type=${ProvingRequestType[type]} epochNumber=${epochNumber}`;
149
+ const jobLogData = {
150
+ provingJobId: id,
151
+ provingJobType: ProvingRequestType[type],
132
152
  epochNumber,
133
- });
153
+ inputsUri: truncate(inputsUri),
154
+ status: jobStatus.status,
155
+ numOutstandingJobs: this.jobs.size,
156
+ };
134
157
 
135
158
  // If we are here then the job was successfully accepted by the broker
136
159
  // the returned status is for before any action was performed
137
160
  if (jobStatus.status === 'fulfilled' || jobStatus.status === 'rejected') {
138
161
  // Job was already completed by the broker
139
162
  // 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
- );
163
+ this.log.verbose(`Job already completed when sent to broker ${jobLogText}`, jobLogData);
149
164
 
150
165
  // Job was not enqueued. It must be completed already, add to our set of already completed jobs
151
166
  this.jobsToRetrieve.add(id);
@@ -155,27 +170,10 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
155
170
 
156
171
  // Job added for the first time
157
172
  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
- );
173
+ this.log.verbose(`Job enqueued with broker ${jobLogText}`, jobLogData);
168
174
  } else {
169
175
  // 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
- );
176
+ this.log.verbose(`Job already in queue or in progress when sent to broker ${jobLogText}`, jobLogData);
179
177
  }
180
178
  }
181
179
  } catch (err) {
@@ -399,180 +397,269 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
399
397
 
400
398
  getAvmProof(
401
399
  inputs: AvmCircuitInputs,
400
+ skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: remove this argument
402
401
  signal?: AbortSignal,
403
402
  epochNumber?: number,
404
- ): Promise<ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>> {
403
+ ): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>> {
404
+ this.log.info(`getAvmProof() called with skipPublicInputsValidation: ${skipPublicInputsValidation}`);
405
+
405
406
  return this.enqueueJob(
406
407
  this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber),
407
408
  ProvingRequestType.PUBLIC_VM,
408
409
  inputs,
409
410
  epochNumber,
410
411
  signal,
411
- );
412
+ ).then(result => {
413
+ // TODO(#14234)[Unconditional PIs validation]: Remove ".then()".
414
+ // Override the default value of skipPublicInputsValidation potentially set in BBNativeRollupProver.getAvmProof().
415
+ result.proof.proof[0] = skipPublicInputsValidation ? new Fr(1) : new Fr(0);
416
+ return result;
417
+ });
412
418
  }
413
419
 
414
420
  getBaseParityProof(
415
- inputs: BaseParityInputs,
421
+ inputs: ParityBasePrivateInputs,
416
422
  signal?: AbortSignal,
417
423
  epochNumber?: number,
418
424
  ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
419
425
  return this.enqueueJob(
420
- this.generateId(ProvingRequestType.BASE_PARITY, inputs, epochNumber),
421
- ProvingRequestType.BASE_PARITY,
426
+ this.generateId(ProvingRequestType.PARITY_BASE, inputs, epochNumber),
427
+ ProvingRequestType.PARITY_BASE,
422
428
  inputs,
423
429
  epochNumber,
424
430
  signal,
425
431
  );
426
432
  }
427
433
 
428
- getBlockMergeRollupProof(
429
- input: BlockMergeRollupInputs,
434
+ getTxMergeRollupProof(
435
+ input: TxMergeRollupPrivateInputs,
430
436
  signal?: AbortSignal,
431
437
  epochNumber?: number,
432
- ): Promise<
433
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
434
- > {
438
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
435
439
  return this.enqueueJob(
436
- this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
437
- ProvingRequestType.BLOCK_MERGE_ROLLUP,
440
+ this.generateId(ProvingRequestType.TX_MERGE_ROLLUP, input, epochNumber),
441
+ ProvingRequestType.TX_MERGE_ROLLUP,
438
442
  input,
439
443
  epochNumber,
440
444
  signal,
441
445
  );
442
446
  }
443
447
 
444
- getBlockRootRollupProof(
445
- input: BlockRootRollupInputs,
448
+ getPublicChonkVerifierProof(
449
+ inputs: PublicChonkVerifierPrivateInputs,
446
450
  signal?: AbortSignal,
447
451
  epochNumber?: number,
448
452
  ): Promise<
449
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
453
+ PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
450
454
  > {
451
455
  return this.enqueueJob(
452
- this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
453
- ProvingRequestType.BLOCK_ROOT_ROLLUP,
456
+ this.generateId(ProvingRequestType.PUBLIC_CHONK_VERIFIER, inputs, epochNumber),
457
+ ProvingRequestType.PUBLIC_CHONK_VERIFIER,
458
+ inputs,
459
+ epochNumber,
460
+ signal,
461
+ );
462
+ }
463
+
464
+ getPrivateTxBaseRollupProof(
465
+ baseRollupInput: PrivateTxBaseRollupPrivateInputs,
466
+ signal?: AbortSignal,
467
+ epochNumber?: number,
468
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
469
+ return this.enqueueJob(
470
+ this.generateId(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, baseRollupInput, epochNumber),
471
+ ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
472
+ baseRollupInput,
473
+ epochNumber,
474
+ signal,
475
+ );
476
+ }
477
+
478
+ getPublicTxBaseRollupProof(
479
+ inputs: PublicTxBaseRollupPrivateInputs,
480
+ signal?: AbortSignal,
481
+ epochNumber?: number,
482
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
483
+ return this.enqueueJob(
484
+ this.generateId(ProvingRequestType.PUBLIC_TX_BASE_ROLLUP, inputs, epochNumber),
485
+ ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
486
+ inputs,
487
+ epochNumber,
488
+ signal,
489
+ );
490
+ }
491
+
492
+ getRootParityProof(
493
+ inputs: ParityRootPrivateInputs,
494
+ signal?: AbortSignal,
495
+ epochNumber?: number,
496
+ ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
497
+ return this.enqueueJob(
498
+ this.generateId(ProvingRequestType.PARITY_ROOT, inputs, epochNumber),
499
+ ProvingRequestType.PARITY_ROOT,
500
+ inputs,
501
+ epochNumber,
502
+ signal,
503
+ );
504
+ }
505
+
506
+ getBlockRootFirstRollupProof(
507
+ input: BlockRootFirstRollupPrivateInputs,
508
+ signal?: AbortSignal,
509
+ epochNumber?: number,
510
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
511
+ return this.enqueueJob(
512
+ this.generateId(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, input, epochNumber),
513
+ ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP,
454
514
  input,
455
515
  epochNumber,
456
516
  signal,
457
517
  );
458
518
  }
459
519
 
460
- getSingleTxBlockRootRollupProof(
461
- input: SingleTxBlockRootRollupInputs,
520
+ getBlockRootSingleTxFirstRollupProof(
521
+ input: BlockRootSingleTxFirstRollupPrivateInputs,
462
522
  signal?: AbortSignal,
463
523
  epochNumber?: number,
464
- ): Promise<
465
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
466
- > {
524
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
525
+ return this.enqueueJob(
526
+ this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, input, epochNumber),
527
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
528
+ input,
529
+ epochNumber,
530
+ signal,
531
+ );
532
+ }
533
+
534
+ getBlockRootEmptyTxFirstRollupProof(
535
+ input: BlockRootEmptyTxFirstRollupPrivateInputs,
536
+ signal?: AbortSignal,
537
+ epochNumber?: number,
538
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
539
+ return this.enqueueJob(
540
+ this.generateId(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, input, epochNumber),
541
+ ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
542
+ input,
543
+ epochNumber,
544
+ signal,
545
+ );
546
+ }
547
+
548
+ getBlockRootRollupProof(
549
+ input: BlockRootRollupPrivateInputs,
550
+ signal?: AbortSignal,
551
+ epochNumber?: number,
552
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
467
553
  return this.enqueueJob(
468
554
  this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
469
- ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP,
555
+ ProvingRequestType.BLOCK_ROOT_ROLLUP,
470
556
  input,
471
557
  epochNumber,
472
558
  signal,
473
559
  );
474
560
  }
475
561
 
476
- getEmptyBlockRootRollupProof(
477
- input: EmptyBlockRootRollupInputs,
562
+ getBlockRootSingleTxRollupProof(
563
+ input: BlockRootSingleTxRollupPrivateInputs,
478
564
  signal?: AbortSignal,
479
565
  epochNumber?: number,
480
- ): Promise<
481
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
482
- > {
566
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
483
567
  return this.enqueueJob(
484
- this.generateId(ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input, epochNumber),
485
- ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP,
568
+ this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, input, epochNumber),
569
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
486
570
  input,
487
571
  epochNumber,
488
572
  signal,
489
573
  );
490
574
  }
491
575
 
492
- getMergeRollupProof(
493
- input: MergeRollupInputs,
576
+ getBlockMergeRollupProof(
577
+ input: BlockMergeRollupPrivateInputs,
494
578
  signal?: AbortSignal,
495
579
  epochNumber?: number,
496
- ): Promise<
497
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
498
- > {
580
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
499
581
  return this.enqueueJob(
500
- this.generateId(ProvingRequestType.MERGE_ROLLUP, input, epochNumber),
501
- ProvingRequestType.MERGE_ROLLUP,
582
+ this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
583
+ ProvingRequestType.BLOCK_MERGE_ROLLUP,
502
584
  input,
503
585
  epochNumber,
504
586
  signal,
505
587
  );
506
588
  }
507
- getPrivateBaseRollupProof(
508
- baseRollupInput: PrivateBaseRollupInputs,
589
+
590
+ getCheckpointRootRollupProof(
591
+ input: CheckpointRootRollupPrivateInputs,
509
592
  signal?: AbortSignal,
510
593
  epochNumber?: number,
511
594
  ): Promise<
512
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
595
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
513
596
  > {
514
597
  return this.enqueueJob(
515
- this.generateId(ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput, epochNumber),
516
- ProvingRequestType.PRIVATE_BASE_ROLLUP,
517
- baseRollupInput,
598
+ this.generateId(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, input, epochNumber),
599
+ ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
600
+ input,
518
601
  epochNumber,
519
602
  signal,
520
603
  );
521
604
  }
522
605
 
523
- getPublicBaseRollupProof(
524
- inputs: PublicBaseRollupInputs,
606
+ getCheckpointRootSingleBlockRollupProof(
607
+ input: CheckpointRootSingleBlockRollupPrivateInputs,
525
608
  signal?: AbortSignal,
526
609
  epochNumber?: number,
527
610
  ): Promise<
528
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
611
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
529
612
  > {
530
613
  return this.enqueueJob(
531
- this.generateId(ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs, epochNumber),
532
- ProvingRequestType.PUBLIC_BASE_ROLLUP,
533
- inputs,
614
+ this.generateId(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, input, epochNumber),
615
+ ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
616
+ input,
534
617
  epochNumber,
535
618
  signal,
536
619
  );
537
620
  }
538
621
 
539
- getRootParityProof(
540
- inputs: RootParityInputs,
622
+ getCheckpointPaddingRollupProof(
623
+ input: CheckpointPaddingRollupPrivateInputs,
541
624
  signal?: AbortSignal,
542
625
  epochNumber?: number,
543
- ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
626
+ ): Promise<
627
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
628
+ > {
544
629
  return this.enqueueJob(
545
- this.generateId(ProvingRequestType.ROOT_PARITY, inputs, epochNumber),
546
- ProvingRequestType.ROOT_PARITY,
547
- inputs,
630
+ this.generateId(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, input, epochNumber),
631
+ ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
632
+ input,
548
633
  epochNumber,
549
634
  signal,
550
635
  );
551
636
  }
552
637
 
553
- getRootRollupProof(
554
- input: RootRollupInputs,
638
+ getCheckpointMergeRollupProof(
639
+ input: CheckpointMergeRollupPrivateInputs,
555
640
  signal?: AbortSignal,
556
641
  epochNumber?: number,
557
- ): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
642
+ ): Promise<
643
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
644
+ > {
558
645
  return this.enqueueJob(
559
- this.generateId(ProvingRequestType.ROOT_ROLLUP, input, epochNumber),
560
- ProvingRequestType.ROOT_ROLLUP,
646
+ this.generateId(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, input, epochNumber),
647
+ ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
561
648
  input,
562
649
  epochNumber,
563
650
  signal,
564
651
  );
565
652
  }
566
653
 
567
- getTubeProof(
568
- tubeInput: TubeInputs,
654
+ getRootRollupProof(
655
+ input: RootRollupPrivateInputs,
569
656
  signal?: AbortSignal,
570
657
  epochNumber?: number,
571
- ): Promise<ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>> {
658
+ ): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
572
659
  return this.enqueueJob(
573
- this.generateId(ProvingRequestType.TUBE_PROOF, tubeInput, epochNumber),
574
- ProvingRequestType.TUBE_PROOF,
575
- tubeInput,
660
+ this.generateId(ProvingRequestType.ROOT_ROLLUP, input, epochNumber),
661
+ ProvingRequestType.ROOT_ROLLUP,
662
+ input,
576
663
  epochNumber,
577
664
  signal,
578
665
  );
@@ -5,7 +5,9 @@ import {
5
5
  getDefaultConfig,
6
6
  numberConfigHelper,
7
7
  } from '@aztec/foundation/config';
8
+ import { pickConfigMappings } from '@aztec/foundation/config';
8
9
  import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
10
+ import { type ChainConfig, chainConfigMappings } from '@aztec/stdlib/config';
9
11
  import { ProvingRequestType } from '@aztec/stdlib/proofs';
10
12
 
11
13
  import { z } from 'zod';
@@ -20,7 +22,9 @@ export const ProverBrokerConfig = z.object({
20
22
  /** If starting a prover broker locally, the directory to store broker data */
21
23
  dataDirectory: z.string().optional(),
22
24
  /** The size of the data store map */
23
- dataStoreMapSizeKB: z.number().int().nonnegative(),
25
+ dataStoreMapSizeKb: z.number().int().nonnegative(),
26
+ /** The size of the prover broker's database. Will override the dataStoreMapSizeKb if set. */
27
+ proverBrokerStoreMapSizeKb: z.number().int().nonnegative().optional(),
24
28
  /** The prover broker may batch jobs together before writing to the database */
25
29
  proverBrokerBatchSize: z.number().int().nonnegative(),
26
30
  /** How often the job batches get flushed */
@@ -30,8 +34,9 @@ export const ProverBrokerConfig = z.object({
30
34
  });
31
35
 
32
36
  export type ProverBrokerConfig = z.infer<typeof ProverBrokerConfig> &
33
- Pick<DataStoreConfig, 'dataStoreMapSizeKB' | 'dataDirectory'> &
34
- L1ReaderConfig;
37
+ Pick<DataStoreConfig, 'dataStoreMapSizeKb' | 'dataDirectory'> &
38
+ L1ReaderConfig &
39
+ Pick<ChainConfig, 'rollupVersion'>;
35
40
 
36
41
  export const proverBrokerConfigMappings: ConfigMappingsType<ProverBrokerConfig> = {
37
42
  proverBrokerJobTimeoutMs: {
@@ -64,8 +69,14 @@ export const proverBrokerConfigMappings: ConfigMappingsType<ProverBrokerConfig>
64
69
  description: 'The maximum number of epochs to keep results for',
65
70
  ...numberConfigHelper(1),
66
71
  },
67
- ...l1ReaderConfigMappings,
72
+ proverBrokerStoreMapSizeKb: {
73
+ env: 'PROVER_BROKER_STORE_MAP_SIZE_KB',
74
+ parseEnv: (val: string | undefined) => (val ? +val : undefined),
75
+ description: "The size of the prover broker's database. Will override the dataStoreMapSizeKb if set.",
76
+ },
68
77
  ...dataConfigMappings,
78
+ ...l1ReaderConfigMappings,
79
+ ...pickConfigMappings(chainConfigMappings, ['rollupVersion']),
69
80
  };
70
81
 
71
82
  export const defaultProverBrokerConfig: ProverBrokerConfig = getDefaultConfig(proverBrokerConfigMappings);
@@ -100,7 +111,7 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
100
111
  proverAgentPollIntervalMs: {
101
112
  env: 'PROVER_AGENT_POLL_INTERVAL_MS',
102
113
  description: 'The interval agents poll for jobs at',
103
- ...numberConfigHelper(100),
114
+ ...numberConfigHelper(1000),
104
115
  },
105
116
  proverAgentProofTypes: {
106
117
  env: 'PROVER_AGENT_PROOF_TYPES',
@@ -118,7 +129,7 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
118
129
  realProofs: {
119
130
  env: 'PROVER_REAL_PROOFS',
120
131
  description: 'Whether to construct real proofs',
121
- ...booleanConfigHelper(false),
132
+ ...booleanConfigHelper(true),
122
133
  },
123
134
  proverTestDelayType: {
124
135
  env: 'PROVER_TEST_DELAY_TYPE',
@@ -6,9 +6,10 @@ import { InMemoryBrokerDatabase } from './proving_broker_database/memory.js';
6
6
  import { KVBrokerDatabase } from './proving_broker_database/persisted.js';
7
7
 
8
8
  export async function createAndStartProvingBroker(
9
- config: ProverBrokerConfig,
9
+ _config: ProverBrokerConfig,
10
10
  client: TelemetryClient,
11
11
  ): Promise<ProvingBroker> {
12
+ const config = { ..._config, dataStoreMapSizeKb: _config.proverBrokerStoreMapSizeKb ?? _config.dataStoreMapSizeKb };
12
13
  const database = config.dataDirectory ? await KVBrokerDatabase.new(config, client) : new InMemoryBrokerDatabase();
13
14
 
14
15
  const broker = new ProvingBroker(database, config, client);
@@ -3,7 +3,7 @@ import { type ProofUri, type ProvingJobId, makeProvingJobId } from '@aztec/stdli
3
3
  import { ProvingRequestType } from '@aztec/stdlib/proofs';
4
4
 
5
5
  export function makeRandomProvingJobId(epochNumber?: number): ProvingJobId {
6
- return makeProvingJobId(epochNumber ?? 1, ProvingRequestType.BASE_PARITY, randomBytes(8).toString('hex'));
6
+ return makeProvingJobId(epochNumber ?? 1, ProvingRequestType.PARITY_BASE, randomBytes(8).toString('hex'));
7
7
  }
8
8
 
9
9
  export function makeInputsUri(): ProofUri {
@@ -15,7 +15,7 @@ export function createProofStore(config: string | undefined, logger = createLogg
15
15
  const path = url.pathname.replace(/^\/+/, '');
16
16
  logger.info(`Creating google cloud proof store at ${bucket}`, { bucket, path });
17
17
  return new GoogleCloudStorageProofStore(bucket, path);
18
- } catch (err) {
18
+ } catch {
19
19
  throw new Error(
20
20
  `Invalid google cloud proof store definition: '${config}'. Supported values are 'gs://bucket-name/path/to/store'.`,
21
21
  );
@@ -16,10 +16,14 @@ import type { ProofStore } from './proof_store.js';
16
16
 
17
17
  const INPUTS_PATH = 'inputs';
18
18
 
19
+ // REFACTOR(#13067): Use the stdlib/file-store instead of referencing google-cloud-storage directly.
19
20
  export class GoogleCloudStorageProofStore implements ProofStore {
20
21
  private readonly storage: Storage;
21
22
 
22
- constructor(private readonly bucketName: string, private readonly path: string) {
23
+ constructor(
24
+ private readonly bucketName: string,
25
+ private readonly path: string,
26
+ ) {
23
27
  this.storage = new Storage();
24
28
  }
25
29
 
@@ -1,3 +1,4 @@
1
1
  export * from './proof_store.js';
2
2
  export * from './inline_proof_store.js';
3
3
  export * from './factory.js';
4
+ export * from './gcs_proof_store.js';
@@ -52,7 +52,7 @@ export class InlineProofStore implements ProofStore {
52
52
  return (PREFIX + SEPARATOR + encoded) as ProofUri;
53
53
  }
54
54
 
55
- private decode<T>(uri: ProofUri, schema: ZodFor<T>): Promise<T> {
55
+ private decode<T>(uri: ProofUri, schema: ZodFor<T>): T {
56
56
  const [prefix, data] = uri.split(SEPARATOR);
57
57
  if (prefix !== PREFIX) {
58
58
  throw new Error('Invalid proof input URI: ' + prefix);