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

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 (129) 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/server-epoch-prover.d.ts +13 -11
  49. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  50. package/dest/prover-client/server-epoch-prover.js +9 -9
  51. package/dest/proving_broker/broker_prover_facade.d.ts +23 -18
  52. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  53. package/dest/proving_broker/broker_prover_facade.js +42 -33
  54. package/dest/proving_broker/config.d.ts +18 -14
  55. package/dest/proving_broker/config.d.ts.map +1 -1
  56. package/dest/proving_broker/config.js +12 -6
  57. package/dest/proving_broker/factory.d.ts +1 -1
  58. package/dest/proving_broker/factory.js +1 -1
  59. package/dest/proving_broker/fixtures.d.ts +3 -2
  60. package/dest/proving_broker/fixtures.d.ts.map +1 -1
  61. package/dest/proving_broker/fixtures.js +3 -2
  62. package/dest/proving_broker/index.d.ts +1 -1
  63. package/dest/proving_broker/proof_store/factory.d.ts +2 -2
  64. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +1 -1
  65. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
  66. package/dest/proving_broker/proof_store/index.d.ts +2 -1
  67. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  68. package/dest/proving_broker/proof_store/index.js +1 -0
  69. package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
  70. package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
  71. package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
  72. package/dest/proving_broker/proving_agent.d.ts +1 -1
  73. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  74. package/dest/proving_broker/proving_agent.js +383 -8
  75. package/dest/proving_broker/proving_agent_instrumentation.d.ts +1 -1
  76. package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +1 -1
  77. package/dest/proving_broker/proving_broker.d.ts +2 -2
  78. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  79. package/dest/proving_broker/proving_broker.js +418 -29
  80. package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
  81. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
  82. package/dest/proving_broker/proving_broker_database/persisted.d.ts +3 -2
  83. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  84. package/dest/proving_broker/proving_broker_database/persisted.js +8 -7
  85. package/dest/proving_broker/proving_broker_database.d.ts +3 -2
  86. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
  87. package/dest/proving_broker/proving_broker_instrumentation.d.ts +1 -1
  88. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
  89. package/dest/proving_broker/proving_job_controller.d.ts +3 -2
  90. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  91. package/dest/proving_broker/proving_job_controller.js +40 -21
  92. package/dest/proving_broker/rpc.d.ts +4 -4
  93. package/dest/test/mock_proof_store.d.ts +3 -3
  94. package/dest/test/mock_proof_store.d.ts.map +1 -1
  95. package/dest/test/mock_prover.d.ts +23 -19
  96. package/dest/test/mock_prover.d.ts.map +1 -1
  97. package/dest/test/mock_prover.js +36 -21
  98. package/package.json +21 -19
  99. package/src/block-factory/light.ts +40 -17
  100. package/src/config.ts +2 -2
  101. package/src/light/index.ts +1 -0
  102. package/src/light/lightweight_checkpoint_builder.ts +198 -0
  103. package/src/mocks/fixtures.ts +41 -36
  104. package/src/mocks/test_context.ts +196 -114
  105. package/src/orchestrator/block-building-helpers.ts +233 -313
  106. package/src/orchestrator/block-proving-state.ts +315 -247
  107. package/src/orchestrator/checkpoint-proving-state.ts +303 -0
  108. package/src/orchestrator/epoch-proving-state.ts +176 -129
  109. package/src/orchestrator/orchestrator.ts +558 -348
  110. package/src/orchestrator/orchestrator_metrics.ts +1 -20
  111. package/src/orchestrator/tx-proving-state.ts +47 -55
  112. package/src/prover-client/factory.ts +6 -2
  113. package/src/prover-client/prover-client.ts +3 -2
  114. package/src/prover-client/server-epoch-prover.ts +30 -21
  115. package/src/proving_broker/broker_prover_facade.ts +175 -112
  116. package/src/proving_broker/config.ts +14 -7
  117. package/src/proving_broker/factory.ts +1 -1
  118. package/src/proving_broker/fixtures.ts +8 -3
  119. package/src/proving_broker/proof_store/index.ts +1 -0
  120. package/src/proving_broker/proving_broker.ts +41 -19
  121. package/src/proving_broker/proving_broker_database/memory.ts +2 -1
  122. package/src/proving_broker/proving_broker_database/persisted.ts +10 -9
  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/src/bin/get-proof-inputs.ts +0 -59
@@ -3,10 +3,9 @@ import type {
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 { Fr } from '@aztec/foundation/fields';
7
+ import { EpochNumber } from '@aztec/foundation/branded-types';
8
+ import { sha256 } from '@aztec/foundation/crypto/sha256';
10
9
  import { createLogger } from '@aztec/foundation/log';
11
10
  import { type PromiseWithResolvers, RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
12
11
  import { truncate } from '@aztec/foundation/string';
@@ -23,22 +22,29 @@ import {
23
22
  type ServerCircuitProver,
24
23
  makeProvingJobId,
25
24
  } from '@aztec/stdlib/interfaces/server';
26
- import type { BaseParityInputs, ParityPublicInputs, RootParityInputs } from '@aztec/stdlib/parity';
25
+ import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
27
26
  import { ProvingRequestType } from '@aztec/stdlib/proofs';
28
27
  import type {
29
- BaseOrMergeRollupPublicInputs,
30
- BlockMergeRollupInputs,
31
- BlockRootOrBlockMergePublicInputs,
32
- BlockRootRollupInputs,
33
- EmptyBlockRootRollupInputs,
34
- MergeRollupInputs,
35
- PaddingBlockRootRollupInputs,
36
- PrivateBaseRollupInputs,
37
- PublicBaseRollupInputs,
38
- 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,
39
45
  RootRollupPublicInputs,
40
- SingleTxBlockRootRollupInputs,
41
- TubeInputs,
46
+ TxMergeRollupPrivateInputs,
47
+ TxRollupPublicInputs,
42
48
  } from '@aztec/stdlib/rollup';
43
49
 
44
50
  import { InlineProofStore, type ProofStore } from './proof_store/index.js';
@@ -124,7 +130,7 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
124
130
  id: ProvingJobId,
125
131
  type: T,
126
132
  inputs: ProvingJobInputsMap[T],
127
- epochNumber = 0,
133
+ epochNumber = EpochNumber.ZERO,
128
134
  signal?: AbortSignal,
129
135
  ): Promise<ProvingJobResultsMap[T]> {
130
136
  const { job: job, isEnqueued } = this.getOrCreateProvingJob(id, type, signal);
@@ -391,210 +397,267 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
391
397
 
392
398
  getAvmProof(
393
399
  inputs: AvmCircuitInputs,
394
- skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: remove this argument
395
400
  signal?: AbortSignal,
396
- epochNumber?: number,
401
+ epochNumber?: EpochNumber,
397
402
  ): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>> {
398
- this.log.info(`getAvmProof() called with skipPublicInputsValidation: ${skipPublicInputsValidation}`);
399
-
400
403
  return this.enqueueJob(
401
404
  this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber),
402
405
  ProvingRequestType.PUBLIC_VM,
403
406
  inputs,
404
407
  epochNumber,
405
408
  signal,
406
- ).then(result => {
407
- // TODO(#14234)[Unconditional PIs validation]: Remove ".then()".
408
- // Override the default value of skipPublicInputsValidation potentially set in BBNativeRollupProver.getAvmProof().
409
- result.proof.proof[0] = skipPublicInputsValidation ? new Fr(1) : new Fr(0);
410
- return result;
411
- });
409
+ );
412
410
  }
413
411
 
414
412
  getBaseParityProof(
415
- inputs: BaseParityInputs,
413
+ inputs: ParityBasePrivateInputs,
416
414
  signal?: AbortSignal,
417
- epochNumber?: number,
415
+ epochNumber?: EpochNumber,
418
416
  ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
419
417
  return this.enqueueJob(
420
- this.generateId(ProvingRequestType.BASE_PARITY, inputs, epochNumber),
421
- ProvingRequestType.BASE_PARITY,
418
+ this.generateId(ProvingRequestType.PARITY_BASE, inputs, epochNumber),
419
+ ProvingRequestType.PARITY_BASE,
422
420
  inputs,
423
421
  epochNumber,
424
422
  signal,
425
423
  );
426
424
  }
427
425
 
428
- getBlockMergeRollupProof(
429
- input: BlockMergeRollupInputs,
426
+ getTxMergeRollupProof(
427
+ input: TxMergeRollupPrivateInputs,
430
428
  signal?: AbortSignal,
431
- epochNumber?: number,
432
- ): Promise<
433
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
434
- > {
429
+ epochNumber?: EpochNumber,
430
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
435
431
  return this.enqueueJob(
436
- this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
437
- ProvingRequestType.BLOCK_MERGE_ROLLUP,
432
+ this.generateId(ProvingRequestType.TX_MERGE_ROLLUP, input, epochNumber),
433
+ ProvingRequestType.TX_MERGE_ROLLUP,
438
434
  input,
439
435
  epochNumber,
440
436
  signal,
441
437
  );
442
438
  }
443
439
 
444
- getBlockRootRollupProof(
445
- input: BlockRootRollupInputs,
440
+ getPublicChonkVerifierProof(
441
+ inputs: PublicChonkVerifierPrivateInputs,
446
442
  signal?: AbortSignal,
447
- epochNumber?: number,
443
+ epochNumber?: EpochNumber,
448
444
  ): Promise<
449
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
445
+ PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
450
446
  > {
451
447
  return this.enqueueJob(
452
- this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
453
- ProvingRequestType.BLOCK_ROOT_ROLLUP,
448
+ this.generateId(ProvingRequestType.PUBLIC_CHONK_VERIFIER, inputs, epochNumber),
449
+ ProvingRequestType.PUBLIC_CHONK_VERIFIER,
450
+ inputs,
451
+ epochNumber,
452
+ signal,
453
+ );
454
+ }
455
+
456
+ getPrivateTxBaseRollupProof(
457
+ baseRollupInput: PrivateTxBaseRollupPrivateInputs,
458
+ signal?: AbortSignal,
459
+ epochNumber?: EpochNumber,
460
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
461
+ return this.enqueueJob(
462
+ this.generateId(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, baseRollupInput, epochNumber),
463
+ ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
464
+ baseRollupInput,
465
+ epochNumber,
466
+ signal,
467
+ );
468
+ }
469
+
470
+ getPublicTxBaseRollupProof(
471
+ inputs: PublicTxBaseRollupPrivateInputs,
472
+ signal?: AbortSignal,
473
+ epochNumber?: EpochNumber,
474
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
475
+ return this.enqueueJob(
476
+ this.generateId(ProvingRequestType.PUBLIC_TX_BASE_ROLLUP, inputs, epochNumber),
477
+ ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
478
+ inputs,
479
+ epochNumber,
480
+ signal,
481
+ );
482
+ }
483
+
484
+ getRootParityProof(
485
+ inputs: ParityRootPrivateInputs,
486
+ signal?: AbortSignal,
487
+ epochNumber?: EpochNumber,
488
+ ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
489
+ return this.enqueueJob(
490
+ this.generateId(ProvingRequestType.PARITY_ROOT, inputs, epochNumber),
491
+ ProvingRequestType.PARITY_ROOT,
492
+ inputs,
493
+ epochNumber,
494
+ signal,
495
+ );
496
+ }
497
+
498
+ getBlockRootFirstRollupProof(
499
+ input: BlockRootFirstRollupPrivateInputs,
500
+ signal?: AbortSignal,
501
+ epochNumber?: EpochNumber,
502
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
503
+ return this.enqueueJob(
504
+ this.generateId(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, input, epochNumber),
505
+ ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP,
454
506
  input,
455
507
  epochNumber,
456
508
  signal,
457
509
  );
458
510
  }
459
511
 
460
- getSingleTxBlockRootRollupProof(
461
- input: SingleTxBlockRootRollupInputs,
512
+ getBlockRootSingleTxFirstRollupProof(
513
+ input: BlockRootSingleTxFirstRollupPrivateInputs,
462
514
  signal?: AbortSignal,
463
- epochNumber?: number,
464
- ): Promise<
465
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
466
- > {
515
+ epochNumber?: EpochNumber,
516
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
467
517
  return this.enqueueJob(
468
- this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
469
- ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP,
518
+ this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, input, epochNumber),
519
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
470
520
  input,
471
521
  epochNumber,
472
522
  signal,
473
523
  );
474
524
  }
475
525
 
476
- getEmptyBlockRootRollupProof(
477
- input: EmptyBlockRootRollupInputs,
526
+ getBlockRootEmptyTxFirstRollupProof(
527
+ input: BlockRootEmptyTxFirstRollupPrivateInputs,
478
528
  signal?: AbortSignal,
479
- epochNumber?: number,
480
- ): Promise<
481
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
482
- > {
529
+ epochNumber?: EpochNumber,
530
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
483
531
  return this.enqueueJob(
484
- this.generateId(ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input, epochNumber),
485
- ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP,
532
+ this.generateId(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, input, epochNumber),
533
+ ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
486
534
  input,
487
535
  epochNumber,
488
536
  signal,
489
537
  );
490
538
  }
491
539
 
492
- getPaddingBlockRootRollupProof(
493
- input: PaddingBlockRootRollupInputs,
540
+ getBlockRootRollupProof(
541
+ input: BlockRootRollupPrivateInputs,
494
542
  signal?: AbortSignal,
495
- epochNumber?: number,
496
- ): Promise<
497
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
498
- > {
543
+ epochNumber?: EpochNumber,
544
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
499
545
  return this.enqueueJob(
500
- this.generateId(ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP, input, epochNumber),
501
- ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP,
546
+ this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
547
+ ProvingRequestType.BLOCK_ROOT_ROLLUP,
502
548
  input,
503
549
  epochNumber,
504
550
  signal,
505
551
  );
506
552
  }
507
553
 
508
- getMergeRollupProof(
509
- input: MergeRollupInputs,
554
+ getBlockRootSingleTxRollupProof(
555
+ input: BlockRootSingleTxRollupPrivateInputs,
510
556
  signal?: AbortSignal,
511
- epochNumber?: number,
512
- ): Promise<
513
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
514
- > {
557
+ epochNumber?: EpochNumber,
558
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
515
559
  return this.enqueueJob(
516
- this.generateId(ProvingRequestType.MERGE_ROLLUP, input, epochNumber),
517
- ProvingRequestType.MERGE_ROLLUP,
560
+ this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, input, epochNumber),
561
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
562
+ input,
563
+ epochNumber,
564
+ signal,
565
+ );
566
+ }
567
+
568
+ getBlockMergeRollupProof(
569
+ input: BlockMergeRollupPrivateInputs,
570
+ signal?: AbortSignal,
571
+ epochNumber?: EpochNumber,
572
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
573
+ return this.enqueueJob(
574
+ this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
575
+ ProvingRequestType.BLOCK_MERGE_ROLLUP,
518
576
  input,
519
577
  epochNumber,
520
578
  signal,
521
579
  );
522
580
  }
523
- getPrivateBaseRollupProof(
524
- baseRollupInput: PrivateBaseRollupInputs,
581
+
582
+ getCheckpointRootRollupProof(
583
+ input: CheckpointRootRollupPrivateInputs,
525
584
  signal?: AbortSignal,
526
- epochNumber?: number,
585
+ epochNumber?: EpochNumber,
527
586
  ): Promise<
528
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
587
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
529
588
  > {
530
589
  return this.enqueueJob(
531
- this.generateId(ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput, epochNumber),
532
- ProvingRequestType.PRIVATE_BASE_ROLLUP,
533
- baseRollupInput,
590
+ this.generateId(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, input, epochNumber),
591
+ ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
592
+ input,
534
593
  epochNumber,
535
594
  signal,
536
595
  );
537
596
  }
538
597
 
539
- getPublicBaseRollupProof(
540
- inputs: PublicBaseRollupInputs,
598
+ getCheckpointRootSingleBlockRollupProof(
599
+ input: CheckpointRootSingleBlockRollupPrivateInputs,
541
600
  signal?: AbortSignal,
542
- epochNumber?: number,
601
+ epochNumber?: EpochNumber,
543
602
  ): Promise<
544
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
603
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
545
604
  > {
546
605
  return this.enqueueJob(
547
- this.generateId(ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs, epochNumber),
548
- ProvingRequestType.PUBLIC_BASE_ROLLUP,
549
- inputs,
606
+ this.generateId(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, input, epochNumber),
607
+ ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
608
+ input,
550
609
  epochNumber,
551
610
  signal,
552
611
  );
553
612
  }
554
613
 
555
- getRootParityProof(
556
- inputs: RootParityInputs,
614
+ getCheckpointPaddingRollupProof(
615
+ input: CheckpointPaddingRollupPrivateInputs,
557
616
  signal?: AbortSignal,
558
- epochNumber?: number,
559
- ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
617
+ epochNumber?: EpochNumber,
618
+ ): Promise<
619
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
620
+ > {
560
621
  return this.enqueueJob(
561
- this.generateId(ProvingRequestType.ROOT_PARITY, inputs, epochNumber),
562
- ProvingRequestType.ROOT_PARITY,
563
- inputs,
622
+ this.generateId(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, input, epochNumber),
623
+ ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
624
+ input,
564
625
  epochNumber,
565
626
  signal,
566
627
  );
567
628
  }
568
629
 
569
- getRootRollupProof(
570
- input: RootRollupInputs,
630
+ getCheckpointMergeRollupProof(
631
+ input: CheckpointMergeRollupPrivateInputs,
571
632
  signal?: AbortSignal,
572
- epochNumber?: number,
573
- ): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
633
+ epochNumber?: EpochNumber,
634
+ ): Promise<
635
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
636
+ > {
574
637
  return this.enqueueJob(
575
- this.generateId(ProvingRequestType.ROOT_ROLLUP, input, epochNumber),
576
- ProvingRequestType.ROOT_ROLLUP,
638
+ this.generateId(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, input, epochNumber),
639
+ ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
577
640
  input,
578
641
  epochNumber,
579
642
  signal,
580
643
  );
581
644
  }
582
645
 
583
- getTubeProof(
584
- tubeInput: TubeInputs,
646
+ getRootRollupProof(
647
+ input: RootRollupPrivateInputs,
585
648
  signal?: AbortSignal,
586
- epochNumber?: number,
587
- ): Promise<ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>> {
649
+ epochNumber?: EpochNumber,
650
+ ): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
588
651
  return this.enqueueJob(
589
- this.generateId(ProvingRequestType.TUBE_PROOF, tubeInput, epochNumber),
590
- ProvingRequestType.TUBE_PROOF,
591
- tubeInput,
652
+ this.generateId(ProvingRequestType.ROOT_ROLLUP, input, epochNumber),
653
+ ProvingRequestType.ROOT_ROLLUP,
654
+ input,
592
655
  epochNumber,
593
656
  signal,
594
657
  );
595
658
  }
596
659
 
597
- private generateId(type: ProvingRequestType, inputs: { toBuffer(): Buffer }, epochNumber = 0) {
660
+ private generateId(type: ProvingRequestType, inputs: { toBuffer(): Buffer }, epochNumber = EpochNumber.ZERO) {
598
661
  const inputsHash = sha256(inputs.toBuffer());
599
662
  return makeProvingJobId(epochNumber, type, inputsHash.toString('hex'));
600
663
  }
@@ -1,4 +1,4 @@
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,
@@ -22,9 +22,9 @@ export const ProverBrokerConfig = z.object({
22
22
  /** If starting a prover broker locally, the directory to store broker data */
23
23
  dataDirectory: z.string().optional(),
24
24
  /** The size of the data store map */
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(),
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(),
28
28
  /** The prover broker may batch jobs together before writing to the database */
29
29
  proverBrokerBatchSize: z.number().int().nonnegative(),
30
30
  /** How often the job batches get flushed */
@@ -34,7 +34,7 @@ export const ProverBrokerConfig = z.object({
34
34
  });
35
35
 
36
36
  export type ProverBrokerConfig = z.infer<typeof ProverBrokerConfig> &
37
- Pick<DataStoreConfig, 'dataStoreMapSizeKB' | 'dataDirectory'> &
37
+ Pick<DataStoreConfig, 'dataStoreMapSizeKb' | 'dataDirectory'> &
38
38
  L1ReaderConfig &
39
39
  Pick<ChainConfig, 'rollupVersion'>;
40
40
 
@@ -69,10 +69,10 @@ export const proverBrokerConfigMappings: ConfigMappingsType<ProverBrokerConfig>
69
69
  description: 'The maximum number of epochs to keep results for',
70
70
  ...numberConfigHelper(1),
71
71
  },
72
- proverBrokerStoreMapSizeKB: {
72
+ proverBrokerStoreMapSizeKb: {
73
73
  env: 'PROVER_BROKER_STORE_MAP_SIZE_KB',
74
74
  parseEnv: (val: string | undefined) => (val ? +val : undefined),
75
- description: "The size of the prover broker's database. Will override the dataStoreMapSizeKB if set.",
75
+ description: "The size of the prover broker's database. Will override the dataStoreMapSizeKb if set.",
76
76
  },
77
77
  ...dataConfigMappings,
78
78
  ...l1ReaderConfigMappings,
@@ -98,6 +98,8 @@ export const ProverAgentConfig = z.object({
98
98
  proverTestDelayMs: z.number(),
99
99
  /** If using realistic delays, what percentage of realistic times to apply. */
100
100
  proverTestDelayFactor: z.number(),
101
+ /** The delay (ms) to inject during fake proof verification */
102
+ proverTestVerificationDelayMs: z.number().optional(),
101
103
  });
102
104
 
103
105
  export type ProverAgentConfig = z.infer<typeof ProverAgentConfig>;
@@ -146,4 +148,9 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
146
148
  description: 'If using realistic delays, what percentage of realistic times to apply.',
147
149
  ...numberConfigHelper(1),
148
150
  },
151
+ proverTestVerificationDelayMs: {
152
+ env: 'PROVER_TEST_VERIFICATION_DELAY_MS',
153
+ description: 'The delay (ms) to inject during fake proof verification',
154
+ ...numberConfigHelper(10),
155
+ },
149
156
  };
@@ -9,7 +9,7 @@ export async function createAndStartProvingBroker(
9
9
  _config: ProverBrokerConfig,
10
10
  client: TelemetryClient,
11
11
  ): Promise<ProvingBroker> {
12
- const config = { ..._config, dataStoreMapSizeKB: _config.proverBrokerStoreMapSizeKB ?? _config.dataStoreMapSizeKB };
12
+ const config = { ..._config, dataStoreMapSizeKb: _config.proverBrokerStoreMapSizeKb ?? _config.dataStoreMapSizeKb };
13
13
  const database = config.dataDirectory ? await KVBrokerDatabase.new(config, client) : new InMemoryBrokerDatabase();
14
14
 
15
15
  const broker = new ProvingBroker(database, config, client);
@@ -1,9 +1,14 @@
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 { type ProofUri, type ProvingJobId, makeProvingJobId } from '@aztec/stdlib/interfaces/server';
3
4
  import { ProvingRequestType } from '@aztec/stdlib/proofs';
4
5
 
5
- export function makeRandomProvingJobId(epochNumber?: number): ProvingJobId {
6
- return makeProvingJobId(epochNumber ?? 1, ProvingRequestType.BASE_PARITY, randomBytes(8).toString('hex'));
6
+ export function makeRandomProvingJobId(epochNumber?: EpochNumber): ProvingJobId {
7
+ return makeProvingJobId(
8
+ epochNumber ?? EpochNumber(1),
9
+ ProvingRequestType.PARITY_BASE,
10
+ randomBytes(8).toString('hex'),
11
+ );
7
12
  }
8
13
 
9
14
  export function makeInputsUri(): ProofUri {
@@ -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';
@@ -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';
@@ -44,21 +45,33 @@ type EnqueuedProvingJob = Pick<ProvingJob, 'id' | 'epochNumber'>;
44
45
  export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Traceable {
45
46
  private queues: ProvingQueues = {
46
47
  [ProvingRequestType.PUBLIC_VM]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
47
- [ProvingRequestType.TUBE_PROOF]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
48
+ [ProvingRequestType.PUBLIC_CHONK_VERIFIER]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
48
49
 
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),
50
+ [ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
51
+ [ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
52
+ [ProvingRequestType.TX_MERGE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
52
53
  [ProvingRequestType.ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
53
54
 
54
55
  [ProvingRequestType.BLOCK_MERGE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
56
+ [ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
57
+ [ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(
58
+ provingJobComparator,
59
+ ),
60
+ [ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(
61
+ provingJobComparator,
62
+ ),
55
63
  [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),
64
+ [ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
59
65
 
60
- [ProvingRequestType.BASE_PARITY]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
61
- [ProvingRequestType.ROOT_PARITY]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
66
+ [ProvingRequestType.CHECKPOINT_ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
67
+ [ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(
68
+ provingJobComparator,
69
+ ),
70
+ [ProvingRequestType.CHECKPOINT_MERGE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
71
+ [ProvingRequestType.CHECKPOINT_PADDING_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
72
+
73
+ [ProvingRequestType.PARITY_BASE]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
74
+ [ProvingRequestType.PARITY_ROOT]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
62
75
  };
63
76
 
64
77
  // holds a copy of the database in memory in order to quickly fulfill requests
@@ -289,6 +302,7 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Tr
289
302
  this.resultsCache.delete(id);
290
303
  this.inProgress.delete(id);
291
304
  this.retries.delete(id);
305
+ this.enqueuedAt.delete(id);
292
306
  }
293
307
  }
294
308
 
@@ -341,6 +355,8 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Tr
341
355
  const enqueuedAt = this.enqueuedAt.get(job.id);
342
356
  if (enqueuedAt) {
343
357
  this.instrumentation.recordJobWait(job.type, enqueuedAt);
358
+ // we can clear this flag now.
359
+ this.enqueuedAt.delete(job.id);
344
360
  }
345
361
 
346
362
  return { job, time };
@@ -555,7 +571,7 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Tr
555
571
  this.reEnqueueExpiredJobs();
556
572
  const oldestEpochToKeep = this.oldestEpochToKeep();
557
573
  if (oldestEpochToKeep > 0) {
558
- await this.database.deleteAllProvingJobsOlderThanEpoch(oldestEpochToKeep);
574
+ await this.database.deleteAllProvingJobsOlderThanEpoch(EpochNumber(oldestEpochToKeep));
559
575
  this.logger.trace(`Deleted all epochs older than ${oldestEpochToKeep}`);
560
576
  }
561
577
  }
@@ -673,16 +689,22 @@ function proofTypeComparator(a: ProvingRequestType, b: ProvingRequestType): -1 |
673
689
  * is to get picked up by agents
674
690
  */
675
691
  export const PROOF_TYPES_IN_PRIORITY_ORDER: ProvingRequestType[] = [
692
+ ProvingRequestType.ROOT_ROLLUP,
693
+ ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP,
694
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
695
+ ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
676
696
  ProvingRequestType.BLOCK_ROOT_ROLLUP,
677
- ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP,
697
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
678
698
  ProvingRequestType.BLOCK_MERGE_ROLLUP,
679
- ProvingRequestType.ROOT_ROLLUP,
680
- ProvingRequestType.MERGE_ROLLUP,
681
- ProvingRequestType.PUBLIC_BASE_ROLLUP,
682
- ProvingRequestType.PRIVATE_BASE_ROLLUP,
699
+ ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
700
+ ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
701
+ ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
702
+ ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
703
+ ProvingRequestType.TX_MERGE_ROLLUP,
704
+ ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
705
+ ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
683
706
  ProvingRequestType.PUBLIC_VM,
684
- ProvingRequestType.TUBE_PROOF,
685
- ProvingRequestType.ROOT_PARITY,
686
- ProvingRequestType.BASE_PARITY,
687
- ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP,
707
+ ProvingRequestType.PUBLIC_CHONK_VERIFIER,
708
+ ProvingRequestType.PARITY_ROOT,
709
+ ProvingRequestType.PARITY_BASE,
688
710
  ];
@@ -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),