@aztec/bb-prover 3.0.0-nightly.20250917 → 3.0.0-nightly.20250918

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.
@@ -12,26 +12,36 @@ import {
12
12
  type ServerProtocolArtifact,
13
13
  convertBaseParityInputsToWitnessMap,
14
14
  convertBaseParityOutputsFromWitnessMap,
15
- convertBlockMergeRollupInputsToWitnessMap,
16
15
  convertBlockMergeRollupOutputsFromWitnessMap,
17
- convertEmptyBlockRootRollupInputsToWitnessMap,
18
- convertEmptyBlockRootRollupOutputsFromWitnessMap,
16
+ convertBlockMergeRollupPrivateInputsToWitnessMap,
17
+ convertBlockRootEmptyTxFirstRollupOutputsFromWitnessMap,
18
+ convertBlockRootEmptyTxFirstRollupPrivateInputsToWitnessMap,
19
+ convertBlockRootFirstRollupOutputsFromWitnessMap,
20
+ convertBlockRootFirstRollupPrivateInputsToWitnessMap,
21
+ convertBlockRootRollupOutputsFromWitnessMap,
22
+ convertBlockRootRollupPrivateInputsToWitnessMap,
23
+ convertBlockRootSingleTxFirstRollupOutputsFromWitnessMap,
24
+ convertBlockRootSingleTxFirstRollupPrivateInputsToWitnessMap,
25
+ convertBlockRootSingleTxRollupOutputsFromWitnessMap,
26
+ convertBlockRootSingleTxRollupPrivateInputsToWitnessMap,
27
+ convertCheckpointMergeRollupOutputsFromWitnessMap,
28
+ convertCheckpointMergeRollupPrivateInputsToWitnessMap,
29
+ convertCheckpointPaddingRollupOutputsFromWitnessMap,
30
+ convertCheckpointPaddingRollupPrivateInputsToWitnessMap,
31
+ convertCheckpointRootRollupOutputsFromWitnessMap,
32
+ convertCheckpointRootRollupPrivateInputsToWitnessMap,
33
+ convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap,
34
+ convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap,
19
35
  convertMergeRollupInputsToWitnessMap,
20
36
  convertMergeRollupOutputsFromWitnessMap,
21
- convertPaddingBlockRootRollupInputsToWitnessMap,
22
- convertPaddingBlockRootRollupOutputsFromWitnessMap,
23
37
  convertRootParityInputsToWitnessMap,
24
38
  convertRootParityOutputsFromWitnessMap,
25
- convertRootRollupInputsToWitnessMap,
26
39
  convertRootRollupOutputsFromWitnessMap,
27
- convertSimulatedBlockRootRollupInputsToWitnessMap,
28
- convertSimulatedBlockRootRollupOutputsFromWitnessMap,
40
+ convertRootRollupPrivateInputsToWitnessMap,
29
41
  convertSimulatedPrivateBaseRollupInputsToWitnessMap,
30
42
  convertSimulatedPrivateBaseRollupOutputsFromWitnessMap,
31
43
  convertSimulatedPublicBaseRollupInputsToWitnessMap,
32
44
  convertSimulatedPublicBaseRollupOutputsFromWitnessMap,
33
- convertSimulatedSingleTxBlockRootRollupInputsToWitnessMap,
34
- convertSimulatedSingleTxBlockRootRollupOutputsFromWitnessMap,
35
45
  foreignCallHandler,
36
46
  getSimulatedServerCircuitArtifact,
37
47
  } from '@aztec/noir-protocol-circuits-types/server';
@@ -51,18 +61,24 @@ import type { BaseParityInputs, ParityPublicInputs, RootParityInputs } from '@az
51
61
  import { type Proof, ProvingRequestType, makeEmptyRecursiveProof, makeRecursiveProof } from '@aztec/stdlib/proofs';
52
62
  import type {
53
63
  BaseOrMergeRollupPublicInputs,
54
- BlockMergeRollupInputs,
55
- BlockRootOrBlockMergePublicInputs,
56
- BlockRootRollupInputs,
57
- EmptyBlockRootRollupInputs,
64
+ BlockMergeRollupPrivateInputs,
65
+ BlockRollupPublicInputs,
66
+ BlockRootEmptyTxFirstRollupPrivateInputs,
67
+ BlockRootFirstRollupPrivateInputs,
68
+ BlockRootRollupPrivateInputs,
69
+ BlockRootSingleTxFirstRollupPrivateInputs,
70
+ BlockRootSingleTxRollupPrivateInputs,
71
+ CheckpointMergeRollupPrivateInputs,
72
+ CheckpointPaddingRollupPrivateInputs,
73
+ CheckpointRollupPublicInputs,
74
+ CheckpointRootRollupPrivateInputs,
75
+ CheckpointRootSingleBlockRollupPrivateInputs,
58
76
  MergeRollupInputs,
59
- PaddingBlockRootRollupInputs,
60
77
  PrivateBaseRollupInputs,
61
78
  PublicBaseRollupInputs,
62
79
  PublicTubePrivateInputs,
63
- RootRollupInputs,
80
+ RootRollupPrivateInputs,
64
81
  RootRollupPublicInputs,
65
- SingleTxBlockRootRollupInputs,
66
82
  } from '@aztec/stdlib/rollup';
67
83
  import { VerificationKeyData } from '@aztec/stdlib/vks';
68
84
  import { type TelemetryClient, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
@@ -215,102 +231,160 @@ export class TestCircuitProver implements ServerCircuitProver {
215
231
  );
216
232
  }
217
233
 
218
- /**
219
- * Simulates the block root rollup circuit from its inputs.
220
- * @param input - Inputs to the circuit.
221
- * @returns The public inputs as outputs of the simulation.
222
- */
234
+ @trackSpan('TestCircuitProver.getBlockRootFirstRollupProof')
235
+ public getBlockRootFirstRollupProof(
236
+ input: BlockRootFirstRollupPrivateInputs,
237
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
238
+ return this.applyDelay(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, () =>
239
+ this.simulate(
240
+ input,
241
+ 'BlockRootFirstRollupArtifact',
242
+ NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
243
+ convertBlockRootFirstRollupPrivateInputsToWitnessMap,
244
+ convertBlockRootFirstRollupOutputsFromWitnessMap,
245
+ ),
246
+ );
247
+ }
248
+
249
+ @trackSpan('TestCircuitProver.getBlockRootSingleTxFirstRollupProof')
250
+ public async getBlockRootSingleTxFirstRollupProof(
251
+ input: BlockRootSingleTxFirstRollupPrivateInputs,
252
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
253
+ return await this.applyDelay(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, () =>
254
+ this.simulate(
255
+ input,
256
+ 'BlockRootSingleTxFirstRollupArtifact',
257
+ NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
258
+ convertBlockRootSingleTxFirstRollupPrivateInputsToWitnessMap,
259
+ convertBlockRootSingleTxFirstRollupOutputsFromWitnessMap,
260
+ ),
261
+ );
262
+ }
263
+
264
+ @trackSpan('TestCircuitProver.getBlockRootEmptyTxFirstRollupProof')
265
+ public getBlockRootEmptyTxFirstRollupProof(
266
+ input: BlockRootEmptyTxFirstRollupPrivateInputs,
267
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
268
+ return this.applyDelay(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, () =>
269
+ this.simulate(
270
+ input,
271
+ 'BlockRootEmptyTxFirstRollupArtifact',
272
+ NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
273
+ convertBlockRootEmptyTxFirstRollupPrivateInputsToWitnessMap,
274
+ convertBlockRootEmptyTxFirstRollupOutputsFromWitnessMap,
275
+ ),
276
+ );
277
+ }
278
+
223
279
  @trackSpan('TestCircuitProver.getBlockRootRollupProof')
224
280
  public getBlockRootRollupProof(
225
- input: BlockRootRollupInputs,
226
- ): Promise<
227
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
228
- > {
281
+ input: BlockRootRollupPrivateInputs,
282
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
229
283
  return this.applyDelay(ProvingRequestType.BLOCK_ROOT_ROLLUP, () =>
230
284
  this.simulate(
231
285
  input,
232
286
  'BlockRootRollupArtifact',
233
287
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
234
- convertSimulatedBlockRootRollupInputsToWitnessMap,
235
- convertSimulatedBlockRootRollupOutputsFromWitnessMap,
288
+ convertBlockRootRollupPrivateInputsToWitnessMap,
289
+ convertBlockRootRollupOutputsFromWitnessMap,
236
290
  ),
237
291
  );
238
292
  }
239
293
 
240
- @trackSpan('TestCircuitProver.getSingleTxBlockRootRollupProof')
241
- public async getSingleTxBlockRootRollupProof(
242
- input: SingleTxBlockRootRollupInputs,
294
+ @trackSpan('TestCircuitProver.getBlockRootSingleTxRollupProof')
295
+ public async getBlockRootSingleTxRollupProof(
296
+ input: BlockRootSingleTxRollupPrivateInputs,
297
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
298
+ return await this.applyDelay(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, () =>
299
+ this.simulate(
300
+ input,
301
+ 'BlockRootSingleTxRollupArtifact',
302
+ NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
303
+ convertBlockRootSingleTxRollupPrivateInputsToWitnessMap,
304
+ convertBlockRootSingleTxRollupOutputsFromWitnessMap,
305
+ ),
306
+ );
307
+ }
308
+
309
+ @trackSpan('TestCircuitProver.getBlockMergeRollupProof')
310
+ public getBlockMergeRollupProof(
311
+ input: BlockMergeRollupPrivateInputs,
312
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
313
+ return this.applyDelay(ProvingRequestType.BLOCK_MERGE_ROLLUP, () =>
314
+ this.simulate(
315
+ input,
316
+ 'BlockMergeRollupArtifact',
317
+ NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
318
+ convertBlockMergeRollupPrivateInputsToWitnessMap,
319
+ convertBlockMergeRollupOutputsFromWitnessMap,
320
+ ),
321
+ );
322
+ }
323
+
324
+ @trackSpan('TestCircuitProver.getCheckpointRootRollupProof')
325
+ public getCheckpointRootRollupProof(
326
+ input: CheckpointRootRollupPrivateInputs,
243
327
  ): Promise<
244
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
328
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
245
329
  > {
246
- return await this.applyDelay(ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP, () =>
330
+ return this.applyDelay(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, () =>
247
331
  this.simulate(
248
332
  input,
249
- 'SingleTxBlockRootRollupArtifact',
333
+ 'CheckpointRootRollupArtifact',
250
334
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
251
- convertSimulatedSingleTxBlockRootRollupInputsToWitnessMap,
252
- convertSimulatedSingleTxBlockRootRollupOutputsFromWitnessMap,
335
+ convertCheckpointRootRollupPrivateInputsToWitnessMap,
336
+ convertCheckpointRootRollupOutputsFromWitnessMap,
253
337
  ),
254
338
  );
255
339
  }
256
340
 
257
- /**
258
- * Simulates the empty block root rollup circuit from its inputs.
259
- * @param input - Inputs to the circuit.
260
- * @returns The public inputs as outputs of the simulation.
261
- */
262
- @trackSpan('TestCircuitProver.getEmptyBlockRootRollupProof')
263
- public getEmptyBlockRootRollupProof(
264
- input: EmptyBlockRootRollupInputs,
341
+ @trackSpan('TestCircuitProver.getCheckpointRootSingleBlockRollupProof')
342
+ public getCheckpointRootSingleBlockRollupProof(
343
+ input: CheckpointRootSingleBlockRollupPrivateInputs,
265
344
  ): Promise<
266
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
345
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
267
346
  > {
268
- return this.applyDelay(ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, () =>
347
+ return this.applyDelay(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, () =>
269
348
  this.simulate(
270
349
  input,
271
- 'EmptyBlockRootRollupArtifact',
350
+ 'CheckpointRootSingleBlockRollupArtifact',
272
351
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
273
- convertEmptyBlockRootRollupInputsToWitnessMap,
274
- convertEmptyBlockRootRollupOutputsFromWitnessMap,
352
+ convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap,
353
+ convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap,
275
354
  ),
276
355
  );
277
356
  }
278
357
 
279
- @trackSpan('TestCircuitProver.getPaddingBlockRootRollupProof')
280
- public getPaddingBlockRootRollupProof(
281
- input: PaddingBlockRootRollupInputs,
358
+ @trackSpan('TestCircuitProver.getCheckpointPaddingRollupProof')
359
+ public getCheckpointPaddingRollupProof(
360
+ input: CheckpointPaddingRollupPrivateInputs,
282
361
  ): Promise<
283
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
362
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
284
363
  > {
285
- return this.applyDelay(ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP, () =>
364
+ return this.applyDelay(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, () =>
286
365
  this.simulate(
287
366
  input,
288
- 'PaddingBlockRootRollupArtifact',
367
+ 'CheckpointPaddingRollupArtifact',
289
368
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
290
- convertPaddingBlockRootRollupInputsToWitnessMap,
291
- convertPaddingBlockRootRollupOutputsFromWitnessMap,
369
+ convertCheckpointPaddingRollupPrivateInputsToWitnessMap,
370
+ convertCheckpointPaddingRollupOutputsFromWitnessMap,
292
371
  ),
293
372
  );
294
373
  }
295
374
 
296
- /**
297
- * Simulates the block merge rollup circuit from its inputs.
298
- * @param input - Inputs to the circuit.
299
- * @returns The public inputs as outputs of the simulation.
300
- */
301
- @trackSpan('TestCircuitProver.getBlockMergeRollupProof')
302
- public getBlockMergeRollupProof(
303
- input: BlockMergeRollupInputs,
375
+ @trackSpan('TestCircuitProver.getCheckpointMergeRollupProof')
376
+ public getCheckpointMergeRollupProof(
377
+ input: CheckpointMergeRollupPrivateInputs,
304
378
  ): Promise<
305
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
379
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
306
380
  > {
307
- return this.applyDelay(ProvingRequestType.BLOCK_MERGE_ROLLUP, () =>
381
+ return this.applyDelay(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, () =>
308
382
  this.simulate(
309
383
  input,
310
- 'BlockMergeRollupArtifact',
384
+ 'CheckpointMergeRollupArtifact',
311
385
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
312
- convertBlockMergeRollupInputsToWitnessMap,
313
- convertBlockMergeRollupOutputsFromWitnessMap,
386
+ convertCheckpointMergeRollupPrivateInputsToWitnessMap,
387
+ convertCheckpointMergeRollupOutputsFromWitnessMap,
314
388
  ),
315
389
  );
316
390
  }
@@ -321,13 +395,15 @@ export class TestCircuitProver implements ServerCircuitProver {
321
395
  * @returns The public inputs as outputs of the simulation.
322
396
  */
323
397
  @trackSpan('TestCircuitProver.getRootRollupProof')
324
- public getRootRollupProof(input: RootRollupInputs): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs>> {
398
+ public getRootRollupProof(
399
+ input: RootRollupPrivateInputs,
400
+ ): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs>> {
325
401
  return this.applyDelay(ProvingRequestType.ROOT_ROLLUP, () =>
326
402
  this.simulate(
327
403
  input,
328
404
  'RootRollupArtifact',
329
405
  NESTED_RECURSIVE_PROOF_LENGTH,
330
- convertRootRollupInputsToWitnessMap,
406
+ convertRootRollupPrivateInputsToWitnessMap,
331
407
  convertRootRollupOutputsFromWitnessMap,
332
408
  ),
333
409
  );
@@ -374,21 +450,20 @@ export class TestCircuitProver implements ServerCircuitProver {
374
450
  input: CircuitInputType,
375
451
  artifactName: ServerProtocolArtifact,
376
452
  proofLength: PROOF_LENGTH,
377
- convertInput: (input: CircuitInputType) => WitnessMap,
378
- convertOutput: (outputWitness: WitnessMap) => CircuitOutputType,
453
+ convertInput: (input: CircuitInputType, simulated?: boolean) => WitnessMap,
454
+ convertOutput: (outputWitness: WitnessMap, simulated?: boolean) => CircuitOutputType,
379
455
  ) {
380
456
  const timer = new Timer();
381
- const witnessMap = convertInput(input);
457
+ const witnessMap = convertInput(input, true /* simulated */);
382
458
  const circuitName = mapProtocolArtifactNameToCircuitName(artifactName);
383
459
 
384
460
  let witness: WitnessMap;
385
461
  if (
386
- ['BlockRootRollupArtifact', 'SingleTxBlockRootRollupArtifact'].includes(artifactName) ||
462
+ ['CheckpointRootRollupArtifact', 'CheckpointRootSingleBlockRollupArtifact'].includes(artifactName) ||
387
463
  this.simulator == undefined
388
464
  ) {
389
465
  // TODO(#10323): Native ACVM simulator does not support foreign call handler so we use the wasm simulator
390
- // when simulating block root rollup and single tx block root rollup circuits or when the native ACVM simulator
391
- // is not provided.
466
+ // when simulating checkpoint root rollup circuits or when the native ACVM simulator is not provided.
392
467
  witness = (
393
468
  await this.wasmSimulator.executeProtocolCircuit(
394
469
  witnessMap,
@@ -406,7 +481,7 @@ export class TestCircuitProver implements ServerCircuitProver {
406
481
  ).witness;
407
482
  }
408
483
 
409
- const result = convertOutput(witness);
484
+ const result = convertOutput(witness, true /* simulated */);
410
485
 
411
486
  this.instrumentation.recordDuration('simulationDuration', circuitName, timer);
412
487
  emitCircuitSimulationStats(circuitName, timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);