@aztec/prover-client 3.0.0-canary.a9708bd → 3.0.0-devnet.20251212

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 (118) 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 +1 -1
  6. package/dest/config.js +1 -1
  7. package/dest/index.d.ts +1 -1
  8. package/dest/light/lightweight_checkpoint_builder.d.ts +29 -0
  9. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
  10. package/dest/light/lightweight_checkpoint_builder.js +108 -0
  11. package/dest/mocks/fixtures.d.ts +5 -5
  12. package/dest/mocks/fixtures.d.ts.map +1 -1
  13. package/dest/mocks/fixtures.js +33 -15
  14. package/dest/mocks/test_context.d.ts +37 -33
  15. package/dest/mocks/test_context.d.ts.map +1 -1
  16. package/dest/mocks/test_context.js +124 -82
  17. package/dest/orchestrator/block-building-helpers.d.ts +35 -35
  18. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  19. package/dest/orchestrator/block-building-helpers.js +151 -187
  20. package/dest/orchestrator/block-proving-state.d.ts +68 -55
  21. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  22. package/dest/orchestrator/block-proving-state.js +273 -185
  23. package/dest/orchestrator/checkpoint-proving-state.d.ts +63 -0
  24. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
  25. package/dest/orchestrator/checkpoint-proving-state.js +210 -0
  26. package/dest/orchestrator/epoch-proving-state.d.ts +38 -31
  27. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  28. package/dest/orchestrator/epoch-proving-state.js +128 -84
  29. package/dest/orchestrator/index.d.ts +1 -1
  30. package/dest/orchestrator/orchestrator.d.ts +33 -32
  31. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  32. package/dest/orchestrator/orchestrator.js +369 -243
  33. package/dest/orchestrator/orchestrator_metrics.d.ts +1 -1
  34. package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
  35. package/dest/orchestrator/tx-proving-state.d.ts +12 -10
  36. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  37. package/dest/orchestrator/tx-proving-state.js +23 -29
  38. package/dest/prover-client/factory.d.ts +1 -1
  39. package/dest/prover-client/index.d.ts +1 -1
  40. package/dest/prover-client/prover-client.d.ts +1 -1
  41. package/dest/prover-client/prover-client.d.ts.map +1 -1
  42. package/dest/prover-client/server-epoch-prover.d.ts +13 -11
  43. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  44. package/dest/prover-client/server-epoch-prover.js +9 -9
  45. package/dest/proving_broker/broker_prover_facade.d.ts +23 -18
  46. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  47. package/dest/proving_broker/broker_prover_facade.js +41 -25
  48. package/dest/proving_broker/config.d.ts +18 -14
  49. package/dest/proving_broker/config.d.ts.map +1 -1
  50. package/dest/proving_broker/config.js +13 -7
  51. package/dest/proving_broker/factory.d.ts +1 -1
  52. package/dest/proving_broker/factory.js +1 -1
  53. package/dest/proving_broker/fixtures.d.ts +3 -2
  54. package/dest/proving_broker/fixtures.d.ts.map +1 -1
  55. package/dest/proving_broker/fixtures.js +3 -2
  56. package/dest/proving_broker/index.d.ts +1 -1
  57. package/dest/proving_broker/proof_store/factory.d.ts +2 -2
  58. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +1 -1
  59. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
  60. package/dest/proving_broker/proof_store/index.d.ts +2 -1
  61. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  62. package/dest/proving_broker/proof_store/index.js +1 -0
  63. package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
  64. package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
  65. package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
  66. package/dest/proving_broker/proving_agent.d.ts +1 -1
  67. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  68. package/dest/proving_broker/proving_agent_instrumentation.d.ts +1 -1
  69. package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +1 -1
  70. package/dest/proving_broker/proving_broker.d.ts +2 -2
  71. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  72. package/dest/proving_broker/proving_broker.js +31 -19
  73. package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
  74. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
  75. package/dest/proving_broker/proving_broker_database/persisted.d.ts +3 -2
  76. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  77. package/dest/proving_broker/proving_broker_database/persisted.js +8 -7
  78. package/dest/proving_broker/proving_broker_database.d.ts +3 -2
  79. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
  80. package/dest/proving_broker/proving_broker_instrumentation.d.ts +1 -1
  81. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
  82. package/dest/proving_broker/proving_job_controller.d.ts +3 -2
  83. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  84. package/dest/proving_broker/proving_job_controller.js +39 -19
  85. package/dest/proving_broker/rpc.d.ts +4 -4
  86. package/dest/test/mock_proof_store.d.ts +3 -3
  87. package/dest/test/mock_proof_store.d.ts.map +1 -1
  88. package/dest/test/mock_prover.d.ts +23 -19
  89. package/dest/test/mock_prover.d.ts.map +1 -1
  90. package/dest/test/mock_prover.js +35 -20
  91. package/package.json +19 -19
  92. package/src/block-factory/light.ts +40 -17
  93. package/src/config.ts +1 -1
  94. package/src/light/lightweight_checkpoint_builder.ts +144 -0
  95. package/src/mocks/fixtures.ts +41 -36
  96. package/src/mocks/test_context.ts +188 -114
  97. package/src/orchestrator/block-building-helpers.ts +233 -313
  98. package/src/orchestrator/block-proving-state.ts +315 -247
  99. package/src/orchestrator/checkpoint-proving-state.ts +303 -0
  100. package/src/orchestrator/epoch-proving-state.ts +176 -129
  101. package/src/orchestrator/orchestrator.ts +554 -319
  102. package/src/orchestrator/tx-proving-state.ts +48 -55
  103. package/src/prover-client/server-epoch-prover.ts +30 -21
  104. package/src/proving_broker/broker_prover_facade.ts +175 -103
  105. package/src/proving_broker/config.ts +15 -8
  106. package/src/proving_broker/factory.ts +1 -1
  107. package/src/proving_broker/fixtures.ts +8 -3
  108. package/src/proving_broker/proof_store/index.ts +1 -0
  109. package/src/proving_broker/proving_broker.ts +38 -19
  110. package/src/proving_broker/proving_broker_database/memory.ts +2 -1
  111. package/src/proving_broker/proving_broker_database/persisted.ts +10 -9
  112. package/src/proving_broker/proving_broker_database.ts +2 -1
  113. package/src/proving_broker/proving_job_controller.ts +41 -20
  114. package/src/test/mock_prover.ts +142 -60
  115. package/dest/bin/get-proof-inputs.d.ts +0 -2
  116. package/dest/bin/get-proof-inputs.d.ts.map +0 -1
  117. package/dest/bin/get-proof-inputs.js +0 -51
  118. package/src/bin/get-proof-inputs.ts +0 -59
@@ -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>;
@@ -111,7 +113,7 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
111
113
  proverAgentPollIntervalMs: {
112
114
  env: 'PROVER_AGENT_POLL_INTERVAL_MS',
113
115
  description: 'The interval agents poll for jobs at',
114
- ...numberConfigHelper(100),
116
+ ...numberConfigHelper(1000),
115
117
  },
116
118
  proverAgentProofTypes: {
117
119
  env: 'PROVER_AGENT_PROOF_TYPES',
@@ -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
@@ -555,7 +568,7 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Tr
555
568
  this.reEnqueueExpiredJobs();
556
569
  const oldestEpochToKeep = this.oldestEpochToKeep();
557
570
  if (oldestEpochToKeep > 0) {
558
- await this.database.deleteAllProvingJobsOlderThanEpoch(oldestEpochToKeep);
571
+ await this.database.deleteAllProvingJobsOlderThanEpoch(EpochNumber(oldestEpochToKeep));
559
572
  this.logger.trace(`Deleted all epochs older than ${oldestEpochToKeep}`);
560
573
  }
561
574
  }
@@ -673,16 +686,22 @@ function proofTypeComparator(a: ProvingRequestType, b: ProvingRequestType): -1 |
673
686
  * is to get picked up by agents
674
687
  */
675
688
  export const PROOF_TYPES_IN_PRIORITY_ORDER: ProvingRequestType[] = [
689
+ ProvingRequestType.ROOT_ROLLUP,
690
+ ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP,
691
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
692
+ ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
676
693
  ProvingRequestType.BLOCK_ROOT_ROLLUP,
677
- ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP,
694
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
678
695
  ProvingRequestType.BLOCK_MERGE_ROLLUP,
679
- ProvingRequestType.ROOT_ROLLUP,
680
- ProvingRequestType.MERGE_ROLLUP,
681
- ProvingRequestType.PUBLIC_BASE_ROLLUP,
682
- ProvingRequestType.PRIVATE_BASE_ROLLUP,
696
+ ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
697
+ ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
698
+ ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
699
+ ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
700
+ ProvingRequestType.TX_MERGE_ROLLUP,
701
+ ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
702
+ ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
683
703
  ProvingRequestType.PUBLIC_VM,
684
- ProvingRequestType.TUBE_PROOF,
685
- ProvingRequestType.ROOT_PARITY,
686
- ProvingRequestType.BASE_PARITY,
687
- ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP,
704
+ ProvingRequestType.PUBLIC_CHONK_VERIFIER,
705
+ ProvingRequestType.PARITY_ROOT,
706
+ ProvingRequestType.PARITY_BASE,
688
707
  ];
@@ -1,3 +1,4 @@
1
+ import { EpochNumber } from '@aztec/foundation/branded-types';
1
2
  import {
2
3
  type ProofUri,
3
4
  type ProvingJob,
@@ -43,7 +44,7 @@ export class InMemoryBrokerDatabase implements ProvingBrokerDatabase {
43
44
  return Promise.resolve();
44
45
  }
45
46
 
46
- deleteAllProvingJobsOlderThanEpoch(epochNumber: number): Promise<void> {
47
+ deleteAllProvingJobsOlderThanEpoch(epochNumber: EpochNumber): Promise<void> {
47
48
  const toDelete = [
48
49
  ...Array.from(this.jobs.keys()).filter(x => getEpochFromProvingJobId(x) < epochNumber),
49
50
  ...Array.from(this.results.keys()).filter(x => getEpochFromProvingJobId(x) < epochNumber),
@@ -1,3 +1,4 @@
1
+ import { EpochNumber } from '@aztec/foundation/branded-types';
1
2
  import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
2
3
  import { type Logger, createLogger } from '@aztec/foundation/log';
3
4
  import { BatchQueue } from '@aztec/foundation/queue';
@@ -104,14 +105,14 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
104
105
  const jobsToAdd = items.filter((item): item is ProvingJob => 'id' in item);
105
106
  const resultsToAdd = items.filter((item): item is [ProvingJobId, ProvingJobSettledResult] => Array.isArray(item));
106
107
 
107
- const db = await this.getEpochDatabase(epochNumber);
108
+ const db = await this.getEpochDatabase(EpochNumber(epochNumber));
108
109
  await db.batchWrite(jobsToAdd, resultsToAdd);
109
110
  }
110
111
 
111
112
  private async estimateSize() {
112
113
  const sizes = await Promise.all(Array.from(this.epochs.values()).map(x => x.estimateSize()));
113
114
  return {
114
- mappingSize: this.config.dataStoreMapSizeKB,
115
+ mappingSize: this.config.dataStoreMapSizeKb,
115
116
  physicalFileSize: sizes.reduce((prev, curr) => prev + curr.physicalFileSize, 0),
116
117
  numItems: sizes.reduce((prev, curr) => prev + curr.numItems, 0),
117
118
  actualSize: sizes.reduce((prev, curr) => prev + curr.actualSize, 0),
@@ -137,13 +138,13 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
137
138
  continue;
138
139
  }
139
140
  logger.info(
140
- `Loading broker database for epoch ${epochNumber} from ${fullDirectory} with map size ${config.dataStoreMapSizeKB}KB`,
141
+ `Loading broker database for epoch ${epochNumber} from ${fullDirectory} with map size ${config.dataStoreMapSizeKb}KB`,
141
142
  );
142
143
  const db = await openVersionedStoreAt(
143
144
  fullDirectory,
144
145
  SingleEpochDatabase.SCHEMA_VERSION,
145
146
  config.l1Contracts.rollupAddress,
146
- config.dataStoreMapSizeKB,
147
+ config.dataStoreMapSizeKb,
147
148
  );
148
149
  const epochDb = new SingleEpochDatabase(db);
149
150
  epochs.set(epochNumber, epochDb);
@@ -164,8 +165,8 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
164
165
  }
165
166
  }
166
167
 
167
- async deleteAllProvingJobsOlderThanEpoch(epochNumber: number): Promise<void> {
168
- const oldEpochs = Array.from(this.epochs.keys()).filter(e => e < epochNumber);
168
+ async deleteAllProvingJobsOlderThanEpoch(epochNumber: EpochNumber): Promise<void> {
169
+ const oldEpochs = Array.from(this.epochs.keys()).filter(e => e < Number(epochNumber));
169
170
  for (const old of oldEpochs) {
170
171
  const db = this.epochs.get(old);
171
172
  if (!db) {
@@ -196,19 +197,19 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
196
197
  return this.batchQueue.put([id, { status: 'fulfilled', value }], getEpochFromProvingJobId(id));
197
198
  }
198
199
 
199
- private async getEpochDatabase(epochNumber: number): Promise<SingleEpochDatabase> {
200
+ private async getEpochDatabase(epochNumber: EpochNumber): Promise<SingleEpochDatabase> {
200
201
  let epochDb = this.epochs.get(epochNumber);
201
202
  if (!epochDb) {
202
203
  const newEpochDirectory = join(this.config.dataDirectory!, epochNumber.toString());
203
204
  await mkdir(newEpochDirectory, { recursive: true });
204
205
  this.logger.info(
205
- `Creating broker database for epoch ${epochNumber} at ${newEpochDirectory} with map size ${this.config.dataStoreMapSizeKB}`,
206
+ `Creating broker database for epoch ${epochNumber} at ${newEpochDirectory} with map size ${this.config.dataStoreMapSizeKb}`,
206
207
  );
207
208
  const db = await openVersionedStoreAt(
208
209
  newEpochDirectory,
209
210
  SingleEpochDatabase.SCHEMA_VERSION,
210
211
  this.config.l1Contracts.rollupAddress,
211
- this.config.dataStoreMapSizeKB,
212
+ this.config.dataStoreMapSizeKb,
212
213
  );
213
214
  epochDb = new SingleEpochDatabase(db);
214
215
  this.epochs.set(epochNumber, epochDb);
@@ -1,3 +1,4 @@
1
+ import { EpochNumber } from '@aztec/foundation/branded-types';
1
2
  import type { ProofUri, ProvingJob, ProvingJobId, ProvingJobSettledResult } from '@aztec/stdlib/interfaces/server';
2
3
 
3
4
  /**
@@ -14,7 +15,7 @@ export interface ProvingBrokerDatabase {
14
15
  * Deletes all proving jobs belonging to epochs older than the given epoch
15
16
  * @param epochNumber - The epoch number beyond which jobs should be deleted
16
17
  */
17
- deleteAllProvingJobsOlderThanEpoch(epochNumber: number): Promise<void>;
18
+ deleteAllProvingJobsOlderThanEpoch(epochNumber: EpochNumber): Promise<void>;
18
19
 
19
20
  /**
20
21
  * Returns an iterator over all saved proving jobs
@@ -1,4 +1,5 @@
1
- import { randomBytes } from '@aztec/foundation/crypto';
1
+ import { EpochNumber } from '@aztec/foundation/branded-types';
2
+ import { randomBytes } from '@aztec/foundation/crypto/random';
2
3
  import { AbortError } from '@aztec/foundation/error';
3
4
  import { createLogger } from '@aztec/foundation/log';
4
5
  import type {
@@ -24,7 +25,7 @@ export class ProvingJobController {
24
25
  constructor(
25
26
  private jobId: ProvingJobId,
26
27
  private inputs: ProvingJobInputs,
27
- private epochNumber: number,
28
+ private epochNumber: EpochNumber,
28
29
  private startedAt: number,
29
30
  private circuitProver: ServerCircuitProver,
30
31
  private onComplete: () => void,
@@ -128,54 +129,74 @@ export class ProvingJobController {
128
129
  return await this.circuitProver.getAvmProof(inputs, undefined, signal, this.epochNumber);
129
130
  }
130
131
 
131
- case ProvingRequestType.PRIVATE_BASE_ROLLUP: {
132
- return await this.circuitProver.getPrivateBaseRollupProof(inputs, signal, this.epochNumber);
132
+ case ProvingRequestType.PUBLIC_CHONK_VERIFIER: {
133
+ return await this.circuitProver.getPublicChonkVerifierProof(inputs, signal, this.epochNumber);
133
134
  }
134
135
 
135
- case ProvingRequestType.PUBLIC_BASE_ROLLUP: {
136
- return await this.circuitProver.getPublicBaseRollupProof(inputs, signal, this.epochNumber);
136
+ case ProvingRequestType.PRIVATE_TX_BASE_ROLLUP: {
137
+ return await this.circuitProver.getPrivateTxBaseRollupProof(inputs, signal, this.epochNumber);
137
138
  }
138
139
 
139
- case ProvingRequestType.MERGE_ROLLUP: {
140
- return await this.circuitProver.getMergeRollupProof(inputs, signal, this.epochNumber);
140
+ case ProvingRequestType.PUBLIC_TX_BASE_ROLLUP: {
141
+ return await this.circuitProver.getPublicTxBaseRollupProof(inputs, signal, this.epochNumber);
141
142
  }
142
143
 
143
- case ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP: {
144
- return await this.circuitProver.getEmptyBlockRootRollupProof(inputs, signal, this.epochNumber);
144
+ case ProvingRequestType.TX_MERGE_ROLLUP: {
145
+ return await this.circuitProver.getTxMergeRollupProof(inputs, signal, this.epochNumber);
145
146
  }
146
147
 
147
- case ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP: {
148
- return await this.circuitProver.getPaddingBlockRootRollupProof(inputs, signal, this.epochNumber);
148
+ case ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP: {
149
+ return await this.circuitProver.getBlockRootFirstRollupProof(inputs, signal, this.epochNumber);
150
+ }
151
+
152
+ case ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP: {
153
+ return await this.circuitProver.getBlockRootSingleTxFirstRollupProof(inputs, signal, this.epochNumber);
154
+ }
155
+
156
+ case ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP: {
157
+ return await this.circuitProver.getBlockRootEmptyTxFirstRollupProof(inputs, signal, this.epochNumber);
149
158
  }
150
159
 
151
160
  case ProvingRequestType.BLOCK_ROOT_ROLLUP: {
152
161
  return await this.circuitProver.getBlockRootRollupProof(inputs, signal, this.epochNumber);
153
162
  }
154
163
 
155
- case ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP: {
156
- return await this.circuitProver.getSingleTxBlockRootRollupProof(inputs, signal, this.epochNumber);
164
+ case ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP: {
165
+ return await this.circuitProver.getBlockRootSingleTxRollupProof(inputs, signal, this.epochNumber);
157
166
  }
158
167
 
159
168
  case ProvingRequestType.BLOCK_MERGE_ROLLUP: {
160
169
  return await this.circuitProver.getBlockMergeRollupProof(inputs, signal, this.epochNumber);
161
170
  }
162
171
 
172
+ case ProvingRequestType.CHECKPOINT_ROOT_ROLLUP: {
173
+ return await this.circuitProver.getCheckpointRootRollupProof(inputs, signal, this.epochNumber);
174
+ }
175
+
176
+ case ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP: {
177
+ return await this.circuitProver.getCheckpointRootSingleBlockRollupProof(inputs, signal, this.epochNumber);
178
+ }
179
+
180
+ case ProvingRequestType.CHECKPOINT_PADDING_ROLLUP: {
181
+ return await this.circuitProver.getCheckpointPaddingRollupProof(inputs, signal, this.epochNumber);
182
+ }
183
+
184
+ case ProvingRequestType.CHECKPOINT_MERGE_ROLLUP: {
185
+ return await this.circuitProver.getCheckpointMergeRollupProof(inputs, signal, this.epochNumber);
186
+ }
187
+
163
188
  case ProvingRequestType.ROOT_ROLLUP: {
164
189
  return await this.circuitProver.getRootRollupProof(inputs, signal, this.epochNumber);
165
190
  }
166
191
 
167
- case ProvingRequestType.BASE_PARITY: {
192
+ case ProvingRequestType.PARITY_BASE: {
168
193
  return await this.circuitProver.getBaseParityProof(inputs, signal, this.epochNumber);
169
194
  }
170
195
 
171
- case ProvingRequestType.ROOT_PARITY: {
196
+ case ProvingRequestType.PARITY_ROOT: {
172
197
  return await this.circuitProver.getRootParityProof(inputs, signal, this.epochNumber);
173
198
  }
174
199
 
175
- case ProvingRequestType.TUBE_PROOF: {
176
- return await this.circuitProver.getTubeProof(inputs, signal, this.epochNumber);
177
- }
178
-
179
200
  default: {
180
201
  const _exhaustive: never = type;
181
202
  return Promise.reject(new Error(`Invalid proof request type: ${type}`));