@aztec/bb-prover 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 (93) hide show
  1. package/dest/avm_proving_tests/avm_proving_tester.d.ts +7 -6
  2. package/dest/avm_proving_tests/avm_proving_tester.d.ts.map +1 -1
  3. package/dest/avm_proving_tests/avm_proving_tester.js +33 -13
  4. package/dest/bb/cli.d.ts +1 -1
  5. package/dest/bb/execute.d.ts +5 -13
  6. package/dest/bb/execute.d.ts.map +1 -1
  7. package/dest/bb/execute.js +30 -92
  8. package/dest/bb/index.d.ts +1 -1
  9. package/dest/config.d.ts +1 -1
  10. package/dest/honk.d.ts +2 -2
  11. package/dest/honk.js +2 -2
  12. package/dest/index.d.ts +1 -1
  13. package/dest/instrumentation.d.ts +3 -3
  14. package/dest/instrumentation.d.ts.map +1 -1
  15. package/dest/prover/client/bb_private_kernel_prover.d.ts +12 -6
  16. package/dest/prover/client/bb_private_kernel_prover.d.ts.map +1 -1
  17. package/dest/prover/client/bb_private_kernel_prover.js +36 -7
  18. package/dest/prover/client/bundle.d.ts +6 -0
  19. package/dest/prover/client/bundle.d.ts.map +1 -0
  20. package/dest/prover/client/bundle.js +7 -0
  21. package/dest/prover/client/lazy.d.ts +6 -0
  22. package/dest/prover/client/lazy.d.ts.map +1 -0
  23. package/dest/prover/client/lazy.js +7 -0
  24. package/dest/prover/index.d.ts +1 -1
  25. package/dest/prover/proof_utils.d.ts +9 -9
  26. package/dest/prover/proof_utils.d.ts.map +1 -1
  27. package/dest/prover/proof_utils.js +42 -25
  28. package/dest/prover/server/bb_prover.d.ts +23 -43
  29. package/dest/prover/server/bb_prover.d.ts.map +1 -1
  30. package/dest/prover/server/bb_prover.js +464 -165
  31. package/dest/test/delay_values.d.ts +1 -1
  32. package/dest/test/delay_values.d.ts.map +1 -1
  33. package/dest/test/delay_values.js +37 -25
  34. package/dest/test/index.d.ts +2 -1
  35. package/dest/test/index.d.ts.map +1 -1
  36. package/dest/test/index.js +1 -0
  37. package/dest/test/test_circuit_prover.d.ts +21 -31
  38. package/dest/test/test_circuit_prover.d.ts.map +1 -1
  39. package/dest/test/test_circuit_prover.js +503 -81
  40. package/dest/test/test_verifier.d.ts +3 -1
  41. package/dest/test/test_verifier.d.ts.map +1 -1
  42. package/dest/test/test_verifier.js +15 -0
  43. package/dest/verification_key/verification_key_data.d.ts +1 -1
  44. package/dest/verification_key/verification_key_data.js +1 -1
  45. package/dest/verifier/bb_verifier.d.ts +3 -5
  46. package/dest/verifier/bb_verifier.d.ts.map +1 -1
  47. package/dest/verifier/bb_verifier.js +24 -26
  48. package/dest/verifier/index.d.ts +2 -2
  49. package/dest/verifier/index.d.ts.map +1 -1
  50. package/dest/verifier/index.js +1 -1
  51. package/dest/verifier/queued_chonk_verifier.d.ts +15 -0
  52. package/dest/verifier/queued_chonk_verifier.d.ts.map +1 -0
  53. package/dest/verifier/{queued_ivc_verifier.js → queued_chonk_verifier.js} +3 -3
  54. package/package.json +23 -23
  55. package/src/avm_proving_tests/avm_proving_tester.ts +43 -19
  56. package/src/bb/execute.ts +20 -90
  57. package/src/honk.ts +1 -1
  58. package/src/instrumentation.ts +2 -2
  59. package/src/prover/client/bb_private_kernel_prover.ts +49 -10
  60. package/src/prover/client/bundle.ts +10 -0
  61. package/src/prover/client/lazy.ts +10 -0
  62. package/src/prover/proof_utils.ts +53 -31
  63. package/src/prover/server/bb_prover.ts +231 -293
  64. package/src/test/delay_values.ts +38 -24
  65. package/src/test/index.ts +1 -0
  66. package/src/test/test_circuit_prover.ts +219 -142
  67. package/src/test/test_verifier.ts +8 -0
  68. package/src/verification_key/verification_key_data.ts +1 -1
  69. package/src/verifier/bb_verifier.ts +34 -33
  70. package/src/verifier/index.ts +1 -1
  71. package/src/verifier/{queued_ivc_verifier.ts → queued_chonk_verifier.ts} +3 -3
  72. package/dest/prover/client/native/bb_native_private_kernel_prover.d.ts +0 -23
  73. package/dest/prover/client/native/bb_native_private_kernel_prover.d.ts.map +0 -1
  74. package/dest/prover/client/native/bb_native_private_kernel_prover.js +0 -66
  75. package/dest/prover/client/wasm/bb_wasm_private_kernel_prover.d.ts +0 -15
  76. package/dest/prover/client/wasm/bb_wasm_private_kernel_prover.d.ts.map +0 -1
  77. package/dest/prover/client/wasm/bb_wasm_private_kernel_prover.js +0 -48
  78. package/dest/prover/client/wasm/bundle.d.ts +0 -6
  79. package/dest/prover/client/wasm/bundle.d.ts.map +0 -1
  80. package/dest/prover/client/wasm/bundle.js +0 -8
  81. package/dest/prover/client/wasm/lazy.d.ts +0 -6
  82. package/dest/prover/client/wasm/lazy.d.ts.map +0 -1
  83. package/dest/prover/client/wasm/lazy.js +0 -8
  84. package/dest/stats.d.ts +0 -4
  85. package/dest/stats.d.ts.map +0 -1
  86. package/dest/stats.js +0 -45
  87. package/dest/verifier/queued_ivc_verifier.d.ts +0 -15
  88. package/dest/verifier/queued_ivc_verifier.d.ts.map +0 -1
  89. package/src/prover/client/native/bb_native_private_kernel_prover.ts +0 -105
  90. package/src/prover/client/wasm/bb_wasm_private_kernel_prover.ts +0 -60
  91. package/src/prover/client/wasm/bundle.ts +0 -11
  92. package/src/prover/client/wasm/lazy.ts +0 -11
  93. package/src/stats.ts +0 -47
@@ -1,33 +1,47 @@
1
1
  import { ProvingRequestType } from '@aztec/stdlib/proofs';
2
2
 
3
3
  export const WITGEN_DELAY_MS: Record<ProvingRequestType, number> = {
4
- [ProvingRequestType.BASE_PARITY]: 60,
5
- [ProvingRequestType.BLOCK_MERGE_ROLLUP]: 650,
6
- [ProvingRequestType.BLOCK_ROOT_ROLLUP]: 60_000,
7
- [ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP]: 0,
8
- [ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP]: 0,
9
- [ProvingRequestType.MERGE_ROLLUP]: 0,
10
- [ProvingRequestType.PRIVATE_BASE_ROLLUP]: 400_000,
11
- [ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP]: 0, // TBD
12
- [ProvingRequestType.PUBLIC_BASE_ROLLUP]: 470_000,
13
- [ProvingRequestType.ROOT_PARITY]: 100,
14
- [ProvingRequestType.ROOT_ROLLUP]: 650,
15
- [ProvingRequestType.TUBE_PROOF]: 0,
4
+ [ProvingRequestType.PUBLIC_CHONK_VERIFIER]: 60,
5
+ [ProvingRequestType.PARITY_BASE]: 1_600,
6
+ [ProvingRequestType.PARITY_ROOT]: 40,
7
+ [ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: 45,
8
+ [ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: 18,
9
+ [ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP]: 27,
10
+ [ProvingRequestType.CHECKPOINT_MERGE_ROLLUP]: 30,
11
+ [ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP]: 36_000,
12
+ [ProvingRequestType.ROOT_ROLLUP]: 35,
13
+ [ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: 2_500,
14
+ [ProvingRequestType.TX_MERGE_ROLLUP]: 25,
16
15
  [ProvingRequestType.PUBLIC_VM]: 0,
16
+
17
+ // TBD
18
+ [ProvingRequestType.BLOCK_MERGE_ROLLUP]: 30,
19
+ [ProvingRequestType.BLOCK_ROOT_ROLLUP]: 40_000,
20
+ [ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP]: 20_000,
21
+ [ProvingRequestType.CHECKPOINT_ROOT_ROLLUP]: 40_000,
22
+ [ProvingRequestType.CHECKPOINT_PADDING_ROLLUP]: 0,
23
+ [ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: 2_500, // Guess based on public
17
24
  };
18
25
 
19
26
  export const PROOF_DELAY_MS: Record<ProvingRequestType, number> = {
20
- [ProvingRequestType.BASE_PARITY]: 3_000,
27
+ [ProvingRequestType.PUBLIC_CHONK_VERIFIER]: 16_300,
28
+ [ProvingRequestType.PARITY_BASE]: 15_300,
29
+ [ProvingRequestType.PARITY_ROOT]: 18_600,
30
+ [ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: 17_400,
31
+ [ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: 4_500,
32
+ [ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP]: 9_200,
33
+ [ProvingRequestType.CHECKPOINT_MERGE_ROLLUP]: 10_200,
34
+ [ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP]: 37_100,
35
+ [ProvingRequestType.ROOT_ROLLUP]: 93_000,
36
+ [ProvingRequestType.TX_MERGE_ROLLUP]: 10_000,
37
+ [ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: 44_500,
38
+ [ProvingRequestType.PUBLIC_VM]: 10_000,
39
+
40
+ // TBD
21
41
  [ProvingRequestType.BLOCK_MERGE_ROLLUP]: 15_000,
22
- [ProvingRequestType.BLOCK_ROOT_ROLLUP]: 55_000,
23
- [ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP]: 0,
24
- [ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP]: 0,
25
- [ProvingRequestType.MERGE_ROLLUP]: 0,
26
- [ProvingRequestType.PRIVATE_BASE_ROLLUP]: 145_000,
27
- [ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP]: 0, // TBD
28
- [ProvingRequestType.PUBLIC_BASE_ROLLUP]: 160_000,
29
- [ProvingRequestType.ROOT_PARITY]: 30_000,
30
- [ProvingRequestType.ROOT_ROLLUP]: 15_000,
31
- [ProvingRequestType.TUBE_PROOF]: 30_000,
32
- [ProvingRequestType.PUBLIC_VM]: 0,
42
+ [ProvingRequestType.BLOCK_ROOT_ROLLUP]: 35_000,
43
+ [ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP]: 15_000,
44
+ [ProvingRequestType.CHECKPOINT_ROOT_ROLLUP]: 35_000,
45
+ [ProvingRequestType.CHECKPOINT_PADDING_ROLLUP]: 0,
46
+ [ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: 45_000, // Guess based on public
33
47
  };
package/src/test/index.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './test_circuit_prover.js';
2
2
  export * from './test_verifier.js';
3
+ export * from './delay_values.js';
@@ -4,39 +4,49 @@ import {
4
4
  NESTED_RECURSIVE_PROOF_LENGTH,
5
5
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
6
6
  RECURSIVE_PROOF_LENGTH,
7
- TUBE_PROOF_LENGTH,
8
7
  } from '@aztec/constants';
9
8
  import { createLogger } from '@aztec/foundation/log';
10
9
  import { sleep } from '@aztec/foundation/sleep';
11
10
  import { Timer } from '@aztec/foundation/timer';
12
11
  import {
13
12
  type ServerProtocolArtifact,
14
- convertBaseParityInputsToWitnessMap,
15
- convertBaseParityOutputsFromWitnessMap,
16
- convertBlockMergeRollupInputsToWitnessMap,
17
13
  convertBlockMergeRollupOutputsFromWitnessMap,
18
- convertEmptyBlockRootRollupInputsToWitnessMap,
19
- convertEmptyBlockRootRollupOutputsFromWitnessMap,
20
- convertMergeRollupInputsToWitnessMap,
21
- convertMergeRollupOutputsFromWitnessMap,
22
- convertPaddingBlockRootRollupInputsToWitnessMap,
23
- convertPaddingBlockRootRollupOutputsFromWitnessMap,
24
- convertRootParityInputsToWitnessMap,
25
- convertRootParityOutputsFromWitnessMap,
26
- convertRootRollupInputsToWitnessMap,
14
+ convertBlockMergeRollupPrivateInputsToWitnessMap,
15
+ convertBlockRootEmptyTxFirstRollupOutputsFromWitnessMap,
16
+ convertBlockRootEmptyTxFirstRollupPrivateInputsToWitnessMap,
17
+ convertBlockRootFirstRollupOutputsFromWitnessMap,
18
+ convertBlockRootFirstRollupPrivateInputsToWitnessMap,
19
+ convertBlockRootRollupOutputsFromWitnessMap,
20
+ convertBlockRootRollupPrivateInputsToWitnessMap,
21
+ convertBlockRootSingleTxFirstRollupOutputsFromWitnessMap,
22
+ convertBlockRootSingleTxFirstRollupPrivateInputsToWitnessMap,
23
+ convertBlockRootSingleTxRollupOutputsFromWitnessMap,
24
+ convertBlockRootSingleTxRollupPrivateInputsToWitnessMap,
25
+ convertCheckpointMergeRollupOutputsFromWitnessMap,
26
+ convertCheckpointMergeRollupPrivateInputsToWitnessMap,
27
+ convertCheckpointPaddingRollupOutputsFromWitnessMap,
28
+ convertCheckpointPaddingRollupPrivateInputsToWitnessMap,
29
+ convertCheckpointRootRollupOutputsFromWitnessMap,
30
+ convertCheckpointRootRollupPrivateInputsToWitnessMap,
31
+ convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap,
32
+ convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap,
33
+ convertParityBaseOutputsFromWitnessMap,
34
+ convertParityBasePrivateInputsToWitnessMap,
35
+ convertParityRootOutputsFromWitnessMap,
36
+ convertParityRootPrivateInputsToWitnessMap,
37
+ convertPrivateTxBaseRollupOutputsFromWitnessMap,
38
+ convertPrivateTxBaseRollupPrivateInputsToWitnessMap,
39
+ convertPublicTxBaseRollupOutputsFromWitnessMap,
40
+ convertPublicTxBaseRollupPrivateInputsToWitnessMap,
27
41
  convertRootRollupOutputsFromWitnessMap,
28
- convertSimulatedBlockRootRollupInputsToWitnessMap,
29
- convertSimulatedBlockRootRollupOutputsFromWitnessMap,
30
- convertSimulatedPrivateBaseRollupInputsToWitnessMap,
31
- convertSimulatedPrivateBaseRollupOutputsFromWitnessMap,
32
- convertSimulatedPublicBaseRollupInputsToWitnessMap,
33
- convertSimulatedPublicBaseRollupOutputsFromWitnessMap,
34
- convertSimulatedSingleTxBlockRootRollupInputsToWitnessMap,
35
- convertSimulatedSingleTxBlockRootRollupOutputsFromWitnessMap,
42
+ convertRootRollupPrivateInputsToWitnessMap,
43
+ convertTxMergeRollupOutputsFromWitnessMap,
44
+ convertTxMergeRollupPrivateInputsToWitnessMap,
36
45
  foreignCallHandler,
37
46
  getSimulatedServerCircuitArtifact,
38
47
  } from '@aztec/noir-protocol-circuits-types/server';
39
48
  import { ProtocolCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks';
49
+ import { mapProtocolArtifactNameToCircuitName } from '@aztec/noir-protocol-circuits-types/types';
40
50
  import type { WitnessMap } from '@aztec/noir-types';
41
51
  import { type CircuitSimulator, WASMSimulatorWithBlobs, emitCircuitSimulationStats } from '@aztec/simulator/server';
42
52
  import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
@@ -47,28 +57,34 @@ import {
47
57
  makeProofAndVerificationKey,
48
58
  makePublicInputsAndRecursiveProof,
49
59
  } from '@aztec/stdlib/interfaces/server';
50
- import type { BaseParityInputs, ParityPublicInputs, RootParityInputs } from '@aztec/stdlib/parity';
60
+ import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
51
61
  import { type Proof, ProvingRequestType, makeEmptyRecursiveProof, makeRecursiveProof } from '@aztec/stdlib/proofs';
52
- import type {
53
- BaseOrMergeRollupPublicInputs,
54
- BlockMergeRollupInputs,
55
- BlockRootOrBlockMergePublicInputs,
56
- BlockRootRollupInputs,
57
- EmptyBlockRootRollupInputs,
58
- MergeRollupInputs,
59
- PaddingBlockRootRollupInputs,
60
- PrivateBaseRollupInputs,
61
- PublicBaseRollupInputs,
62
- RootRollupInputs,
63
- RootRollupPublicInputs,
64
- SingleTxBlockRootRollupInputs,
65
- TubeInputs,
62
+ import {
63
+ type BlockMergeRollupPrivateInputs,
64
+ type BlockRollupPublicInputs,
65
+ type BlockRootEmptyTxFirstRollupPrivateInputs,
66
+ type BlockRootFirstRollupPrivateInputs,
67
+ type BlockRootRollupPrivateInputs,
68
+ type BlockRootSingleTxFirstRollupPrivateInputs,
69
+ type BlockRootSingleTxRollupPrivateInputs,
70
+ type CheckpointMergeRollupPrivateInputs,
71
+ type CheckpointPaddingRollupPrivateInputs,
72
+ type CheckpointRollupPublicInputs,
73
+ type CheckpointRootRollupPrivateInputs,
74
+ type CheckpointRootSingleBlockRollupPrivateInputs,
75
+ type PrivateTxBaseRollupPrivateInputs,
76
+ type PublicChonkVerifierPrivateInputs,
77
+ PublicChonkVerifierPublicInputs,
78
+ type PublicTxBaseRollupPrivateInputs,
79
+ type RootRollupPrivateInputs,
80
+ type RootRollupPublicInputs,
81
+ type TxMergeRollupPrivateInputs,
82
+ type TxRollupPublicInputs,
66
83
  } from '@aztec/stdlib/rollup';
67
84
  import { VerificationKeyData } from '@aztec/stdlib/vks';
68
85
  import { type TelemetryClient, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
69
86
 
70
87
  import { ProverInstrumentation } from '../instrumentation.js';
71
- import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
72
88
  import { PROOF_DELAY_MS, WITGEN_DELAY_MS } from './delay_values.js';
73
89
 
74
90
  type TestDelay =
@@ -109,15 +125,15 @@ export class TestCircuitProver implements ServerCircuitProver {
109
125
  */
110
126
  @trackSpan('TestCircuitProver.getBaseParityProof')
111
127
  public getBaseParityProof(
112
- inputs: BaseParityInputs,
128
+ inputs: ParityBasePrivateInputs,
113
129
  ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
114
- return this.applyDelay(ProvingRequestType.BASE_PARITY, () =>
130
+ return this.applyDelay(ProvingRequestType.PARITY_BASE, () =>
115
131
  this.simulate(
116
132
  inputs,
117
- 'BaseParityArtifact',
133
+ 'ParityBaseArtifact',
118
134
  RECURSIVE_PROOF_LENGTH,
119
- convertBaseParityInputsToWitnessMap,
120
- convertBaseParityOutputsFromWitnessMap,
135
+ convertParityBasePrivateInputsToWitnessMap,
136
+ convertParityBaseOutputsFromWitnessMap,
121
137
  ),
122
138
  );
123
139
  }
@@ -129,55 +145,59 @@ export class TestCircuitProver implements ServerCircuitProver {
129
145
  */
130
146
  @trackSpan('TestCircuitProver.getRootParityProof')
131
147
  public getRootParityProof(
132
- inputs: RootParityInputs,
148
+ inputs: ParityRootPrivateInputs,
133
149
  ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
134
- return this.applyDelay(ProvingRequestType.ROOT_PARITY, () =>
150
+ return this.applyDelay(ProvingRequestType.PARITY_ROOT, () =>
135
151
  this.simulate(
136
152
  inputs,
137
- 'RootParityArtifact',
153
+ 'ParityRootArtifact',
138
154
  NESTED_RECURSIVE_PROOF_LENGTH,
139
- convertRootParityInputsToWitnessMap,
140
- convertRootParityOutputsFromWitnessMap,
155
+ convertParityRootPrivateInputsToWitnessMap,
156
+ convertParityRootOutputsFromWitnessMap,
141
157
  ),
142
158
  );
143
159
  }
144
160
 
145
- public getTubeProof(_tubeInput: TubeInputs): Promise<ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>> {
146
- return this.applyDelay(ProvingRequestType.TUBE_PROOF, () =>
147
- makeProofAndVerificationKey(makeEmptyRecursiveProof(TUBE_PROOF_LENGTH), VerificationKeyData.makeFakeRollupHonk()),
161
+ public getPublicChonkVerifierProof(
162
+ inputs: PublicChonkVerifierPrivateInputs,
163
+ ): Promise<
164
+ PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
165
+ > {
166
+ return this.applyDelay(ProvingRequestType.PUBLIC_CHONK_VERIFIER, () =>
167
+ makePublicInputsAndRecursiveProof(
168
+ new PublicChonkVerifierPublicInputs(inputs.hidingKernelProofData.publicInputs, inputs.proverId),
169
+ makeEmptyRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
170
+ ProtocolCircuitVks.PublicChonkVerifier,
171
+ ),
148
172
  );
149
173
  }
150
174
 
151
- @trackSpan('TestCircuitProver.getPrivateBaseRollupProof')
152
- public getPrivateBaseRollupProof(
153
- inputs: PrivateBaseRollupInputs,
154
- ): Promise<
155
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
156
- > {
157
- return this.applyDelay(ProvingRequestType.PRIVATE_BASE_ROLLUP, () =>
175
+ @trackSpan('TestCircuitProver.getPrivateTxBaseRollupProof')
176
+ public getPrivateTxBaseRollupProof(
177
+ inputs: PrivateTxBaseRollupPrivateInputs,
178
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
179
+ return this.applyDelay(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, () =>
158
180
  this.simulate(
159
181
  inputs,
160
- 'PrivateBaseRollupArtifact',
182
+ 'PrivateTxBaseRollupArtifact',
161
183
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
162
- convertSimulatedPrivateBaseRollupInputsToWitnessMap,
163
- convertSimulatedPrivateBaseRollupOutputsFromWitnessMap,
184
+ convertPrivateTxBaseRollupPrivateInputsToWitnessMap,
185
+ convertPrivateTxBaseRollupOutputsFromWitnessMap,
164
186
  ),
165
187
  );
166
188
  }
167
189
 
168
- @trackSpan('TestCircuitProver.getPublicBaseRollupProof')
169
- public getPublicBaseRollupProof(
170
- inputs: PublicBaseRollupInputs,
171
- ): Promise<
172
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
173
- > {
174
- return this.applyDelay(ProvingRequestType.PUBLIC_BASE_ROLLUP, () =>
190
+ @trackSpan('TestCircuitProver.getPublicTxBaseRollupProof')
191
+ public getPublicTxBaseRollupProof(
192
+ inputs: PublicTxBaseRollupPrivateInputs,
193
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
194
+ return this.applyDelay(ProvingRequestType.PUBLIC_TX_BASE_ROLLUP, () =>
175
195
  this.simulate(
176
196
  inputs,
177
- 'PublicBaseRollupArtifact',
197
+ 'PublicTxBaseRollupArtifact',
178
198
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
179
- convertSimulatedPublicBaseRollupInputsToWitnessMap,
180
- convertSimulatedPublicBaseRollupOutputsFromWitnessMap,
199
+ convertPublicTxBaseRollupPrivateInputsToWitnessMap,
200
+ convertPublicTxBaseRollupOutputsFromWitnessMap,
181
201
  ),
182
202
  );
183
203
  }
@@ -187,119 +207,175 @@ export class TestCircuitProver implements ServerCircuitProver {
187
207
  * @param input - Inputs to the circuit.
188
208
  * @returns The public inputs as outputs of the simulation.
189
209
  */
190
- @trackSpan('TestCircuitProver.getMergeRollupProof')
191
- public getMergeRollupProof(
192
- input: MergeRollupInputs,
193
- ): Promise<
194
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
195
- > {
196
- return this.applyDelay(ProvingRequestType.MERGE_ROLLUP, () =>
210
+ @trackSpan('TestCircuitProver.getTxMergeRollupProof')
211
+ public getTxMergeRollupProof(
212
+ input: TxMergeRollupPrivateInputs,
213
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
214
+ return this.applyDelay(ProvingRequestType.TX_MERGE_ROLLUP, () =>
197
215
  this.simulate(
198
216
  input,
199
- 'MergeRollupArtifact',
217
+ 'TxMergeRollupArtifact',
200
218
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
201
- convertMergeRollupInputsToWitnessMap,
202
- convertMergeRollupOutputsFromWitnessMap,
219
+ convertTxMergeRollupPrivateInputsToWitnessMap,
220
+ convertTxMergeRollupOutputsFromWitnessMap,
221
+ ),
222
+ );
223
+ }
224
+
225
+ @trackSpan('TestCircuitProver.getBlockRootFirstRollupProof')
226
+ public getBlockRootFirstRollupProof(
227
+ input: BlockRootFirstRollupPrivateInputs,
228
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
229
+ return this.applyDelay(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, () =>
230
+ this.simulate(
231
+ input,
232
+ 'BlockRootFirstRollupArtifact',
233
+ NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
234
+ convertBlockRootFirstRollupPrivateInputsToWitnessMap,
235
+ convertBlockRootFirstRollupOutputsFromWitnessMap,
236
+ ),
237
+ );
238
+ }
239
+
240
+ @trackSpan('TestCircuitProver.getBlockRootSingleTxFirstRollupProof')
241
+ public async getBlockRootSingleTxFirstRollupProof(
242
+ input: BlockRootSingleTxFirstRollupPrivateInputs,
243
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
244
+ return await this.applyDelay(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, () =>
245
+ this.simulate(
246
+ input,
247
+ 'BlockRootSingleTxFirstRollupArtifact',
248
+ NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
249
+ convertBlockRootSingleTxFirstRollupPrivateInputsToWitnessMap,
250
+ convertBlockRootSingleTxFirstRollupOutputsFromWitnessMap,
251
+ ),
252
+ );
253
+ }
254
+
255
+ @trackSpan('TestCircuitProver.getBlockRootEmptyTxFirstRollupProof')
256
+ public getBlockRootEmptyTxFirstRollupProof(
257
+ input: BlockRootEmptyTxFirstRollupPrivateInputs,
258
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
259
+ return this.applyDelay(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, () =>
260
+ this.simulate(
261
+ input,
262
+ 'BlockRootEmptyTxFirstRollupArtifact',
263
+ NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
264
+ convertBlockRootEmptyTxFirstRollupPrivateInputsToWitnessMap,
265
+ convertBlockRootEmptyTxFirstRollupOutputsFromWitnessMap,
203
266
  ),
204
267
  );
205
268
  }
206
269
 
207
- /**
208
- * Simulates the block root rollup circuit from its inputs.
209
- * @param input - Inputs to the circuit.
210
- * @returns The public inputs as outputs of the simulation.
211
- */
212
270
  @trackSpan('TestCircuitProver.getBlockRootRollupProof')
213
271
  public getBlockRootRollupProof(
214
- input: BlockRootRollupInputs,
215
- ): Promise<
216
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
217
- > {
272
+ input: BlockRootRollupPrivateInputs,
273
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
218
274
  return this.applyDelay(ProvingRequestType.BLOCK_ROOT_ROLLUP, () =>
219
275
  this.simulate(
220
276
  input,
221
277
  'BlockRootRollupArtifact',
222
278
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
223
- convertSimulatedBlockRootRollupInputsToWitnessMap,
224
- convertSimulatedBlockRootRollupOutputsFromWitnessMap,
279
+ convertBlockRootRollupPrivateInputsToWitnessMap,
280
+ convertBlockRootRollupOutputsFromWitnessMap,
281
+ ),
282
+ );
283
+ }
284
+
285
+ @trackSpan('TestCircuitProver.getBlockRootSingleTxRollupProof')
286
+ public async getBlockRootSingleTxRollupProof(
287
+ input: BlockRootSingleTxRollupPrivateInputs,
288
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
289
+ return await this.applyDelay(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, () =>
290
+ this.simulate(
291
+ input,
292
+ 'BlockRootSingleTxRollupArtifact',
293
+ NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
294
+ convertBlockRootSingleTxRollupPrivateInputsToWitnessMap,
295
+ convertBlockRootSingleTxRollupOutputsFromWitnessMap,
296
+ ),
297
+ );
298
+ }
299
+
300
+ @trackSpan('TestCircuitProver.getBlockMergeRollupProof')
301
+ public getBlockMergeRollupProof(
302
+ input: BlockMergeRollupPrivateInputs,
303
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
304
+ return this.applyDelay(ProvingRequestType.BLOCK_MERGE_ROLLUP, () =>
305
+ this.simulate(
306
+ input,
307
+ 'BlockMergeRollupArtifact',
308
+ NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
309
+ convertBlockMergeRollupPrivateInputsToWitnessMap,
310
+ convertBlockMergeRollupOutputsFromWitnessMap,
225
311
  ),
226
312
  );
227
313
  }
228
314
 
229
- @trackSpan('TestCircuitProver.getSingleTxBlockRootRollupProof')
230
- public async getSingleTxBlockRootRollupProof(
231
- input: SingleTxBlockRootRollupInputs,
315
+ @trackSpan('TestCircuitProver.getCheckpointRootRollupProof')
316
+ public getCheckpointRootRollupProof(
317
+ input: CheckpointRootRollupPrivateInputs,
232
318
  ): Promise<
233
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
319
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
234
320
  > {
235
- return await this.applyDelay(ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP, () =>
321
+ return this.applyDelay(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, () =>
236
322
  this.simulate(
237
323
  input,
238
- 'SingleTxBlockRootRollupArtifact',
324
+ 'CheckpointRootRollupArtifact',
239
325
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
240
- convertSimulatedSingleTxBlockRootRollupInputsToWitnessMap,
241
- convertSimulatedSingleTxBlockRootRollupOutputsFromWitnessMap,
326
+ convertCheckpointRootRollupPrivateInputsToWitnessMap,
327
+ convertCheckpointRootRollupOutputsFromWitnessMap,
242
328
  ),
243
329
  );
244
330
  }
245
331
 
246
- /**
247
- * Simulates the empty block root rollup circuit from its inputs.
248
- * @param input - Inputs to the circuit.
249
- * @returns The public inputs as outputs of the simulation.
250
- */
251
- @trackSpan('TestCircuitProver.getEmptyBlockRootRollupProof')
252
- public getEmptyBlockRootRollupProof(
253
- input: EmptyBlockRootRollupInputs,
332
+ @trackSpan('TestCircuitProver.getCheckpointRootSingleBlockRollupProof')
333
+ public getCheckpointRootSingleBlockRollupProof(
334
+ input: CheckpointRootSingleBlockRollupPrivateInputs,
254
335
  ): Promise<
255
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
336
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
256
337
  > {
257
- return this.applyDelay(ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, () =>
338
+ return this.applyDelay(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, () =>
258
339
  this.simulate(
259
340
  input,
260
- 'EmptyBlockRootRollupArtifact',
341
+ 'CheckpointRootSingleBlockRollupArtifact',
261
342
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
262
- convertEmptyBlockRootRollupInputsToWitnessMap,
263
- convertEmptyBlockRootRollupOutputsFromWitnessMap,
343
+ convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap,
344
+ convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap,
264
345
  ),
265
346
  );
266
347
  }
267
348
 
268
- @trackSpan('TestCircuitProver.getPaddingBlockRootRollupProof')
269
- public getPaddingBlockRootRollupProof(
270
- input: PaddingBlockRootRollupInputs,
349
+ @trackSpan('TestCircuitProver.getCheckpointPaddingRollupProof')
350
+ public getCheckpointPaddingRollupProof(
351
+ input: CheckpointPaddingRollupPrivateInputs,
271
352
  ): Promise<
272
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
353
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
273
354
  > {
274
- return this.applyDelay(ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP, () =>
355
+ return this.applyDelay(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, () =>
275
356
  this.simulate(
276
357
  input,
277
- 'PaddingBlockRootRollupArtifact',
358
+ 'CheckpointPaddingRollupArtifact',
278
359
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
279
- convertPaddingBlockRootRollupInputsToWitnessMap,
280
- convertPaddingBlockRootRollupOutputsFromWitnessMap,
360
+ convertCheckpointPaddingRollupPrivateInputsToWitnessMap,
361
+ convertCheckpointPaddingRollupOutputsFromWitnessMap,
281
362
  ),
282
363
  );
283
364
  }
284
365
 
285
- /**
286
- * Simulates the block merge rollup circuit from its inputs.
287
- * @param input - Inputs to the circuit.
288
- * @returns The public inputs as outputs of the simulation.
289
- */
290
- @trackSpan('TestCircuitProver.getBlockMergeRollupProof')
291
- public getBlockMergeRollupProof(
292
- input: BlockMergeRollupInputs,
366
+ @trackSpan('TestCircuitProver.getCheckpointMergeRollupProof')
367
+ public getCheckpointMergeRollupProof(
368
+ input: CheckpointMergeRollupPrivateInputs,
293
369
  ): Promise<
294
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
370
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
295
371
  > {
296
- return this.applyDelay(ProvingRequestType.BLOCK_MERGE_ROLLUP, () =>
372
+ return this.applyDelay(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, () =>
297
373
  this.simulate(
298
374
  input,
299
- 'BlockMergeRollupArtifact',
375
+ 'CheckpointMergeRollupArtifact',
300
376
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
301
- convertBlockMergeRollupInputsToWitnessMap,
302
- convertBlockMergeRollupOutputsFromWitnessMap,
377
+ convertCheckpointMergeRollupPrivateInputsToWitnessMap,
378
+ convertCheckpointMergeRollupOutputsFromWitnessMap,
303
379
  ),
304
380
  );
305
381
  }
@@ -310,13 +386,15 @@ export class TestCircuitProver implements ServerCircuitProver {
310
386
  * @returns The public inputs as outputs of the simulation.
311
387
  */
312
388
  @trackSpan('TestCircuitProver.getRootRollupProof')
313
- public getRootRollupProof(input: RootRollupInputs): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs>> {
389
+ public getRootRollupProof(
390
+ input: RootRollupPrivateInputs,
391
+ ): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs>> {
314
392
  return this.applyDelay(ProvingRequestType.ROOT_ROLLUP, () =>
315
393
  this.simulate(
316
394
  input,
317
395
  'RootRollupArtifact',
318
396
  NESTED_RECURSIVE_PROOF_LENGTH,
319
- convertRootRollupInputsToWitnessMap,
397
+ convertRootRollupPrivateInputsToWitnessMap,
320
398
  convertRootRollupOutputsFromWitnessMap,
321
399
  ),
322
400
  );
@@ -363,21 +441,20 @@ export class TestCircuitProver implements ServerCircuitProver {
363
441
  input: CircuitInputType,
364
442
  artifactName: ServerProtocolArtifact,
365
443
  proofLength: PROOF_LENGTH,
366
- convertInput: (input: CircuitInputType) => WitnessMap,
367
- convertOutput: (outputWitness: WitnessMap) => CircuitOutputType,
444
+ convertInput: (input: CircuitInputType, simulated?: boolean) => WitnessMap,
445
+ convertOutput: (outputWitness: WitnessMap, simulated?: boolean) => CircuitOutputType,
368
446
  ) {
369
447
  const timer = new Timer();
370
- const witnessMap = convertInput(input);
448
+ const witnessMap = convertInput(input, true /* simulated */);
371
449
  const circuitName = mapProtocolArtifactNameToCircuitName(artifactName);
372
450
 
373
451
  let witness: WitnessMap;
374
452
  if (
375
- ['BlockRootRollupArtifact', 'SingleTxBlockRootRollupArtifact'].includes(artifactName) ||
453
+ ['CheckpointRootRollupArtifact', 'CheckpointRootSingleBlockRollupArtifact'].includes(artifactName) ||
376
454
  this.simulator == undefined
377
455
  ) {
378
456
  // TODO(#10323): Native ACVM simulator does not support foreign call handler so we use the wasm simulator
379
- // when simulating block root rollup and single tx block root rollup circuits or when the native ACVM simulator
380
- // is not provided.
457
+ // when simulating checkpoint root rollup circuits or when the native ACVM simulator is not provided.
381
458
  witness = (
382
459
  await this.wasmSimulator.executeProtocolCircuit(
383
460
  witnessMap,
@@ -395,7 +472,7 @@ export class TestCircuitProver implements ServerCircuitProver {
395
472
  ).witness;
396
473
  }
397
474
 
398
- const result = convertOutput(witness);
475
+ const result = convertOutput(witness, true /* simulated */);
399
476
 
400
477
  this.instrumentation.recordDuration('simulationDuration', circuitName, timer);
401
478
  emitCircuitSimulationStats(circuitName, timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
@@ -2,7 +2,15 @@ import type { ClientProtocolCircuitVerifier, IVCProofVerificationResult } from '
2
2
  import type { Tx } from '@aztec/stdlib/tx';
3
3
 
4
4
  export class TestCircuitVerifier implements ClientProtocolCircuitVerifier {
5
+ constructor(private verificationDelayMs?: number) {}
5
6
  verifyProof(_tx: Tx): Promise<IVCProofVerificationResult> {
7
+ if (this.verificationDelayMs !== undefined && this.verificationDelayMs > 0) {
8
+ return new Promise(resolve => {
9
+ setTimeout(() => {
10
+ resolve({ valid: true, durationMs: this.verificationDelayMs!, totalDurationMs: this.verificationDelayMs! });
11
+ }, this.verificationDelayMs);
12
+ });
13
+ }
6
14
  return Promise.resolve({ valid: true, durationMs: 0, totalDurationMs: 0 });
7
15
  }
8
16
 
@@ -1,5 +1,5 @@
1
1
  import { AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED } from '@aztec/constants';
2
- import { Fr } from '@aztec/foundation/fields';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { BufferReader } from '@aztec/foundation/serialize';
4
4
  import { VerificationKeyAsFields, VerificationKeyData } from '@aztec/stdlib/vks';
5
5