@aztec/bb-prover 3.0.0-nightly.20250917 → 3.0.0-nightly.20250919
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.
- package/dest/bb/execute.js +2 -2
- package/dest/honk.d.ts +1 -1
- package/dest/honk.js +2 -2
- package/dest/prover/client/bb_private_kernel_prover.d.ts +1 -1
- package/dest/prover/client/bb_private_kernel_prover.d.ts.map +1 -1
- package/dest/prover/client/bb_private_kernel_prover.js +1 -1
- package/dest/prover/server/bb_prover.d.ts +19 -29
- package/dest/prover/server/bb_prover.d.ts.map +1 -1
- package/dest/prover/server/bb_prover.js +51 -102
- package/dest/test/delay_values.d.ts.map +1 -1
- package/dest/test/delay_values.js +28 -18
- package/dest/test/test_circuit_prover.d.ts +18 -28
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/test/test_circuit_prover.js +70 -53
- package/dest/verifier/bb_verifier.d.ts +1 -1
- package/dest/verifier/bb_verifier.d.ts.map +1 -1
- package/dest/verifier/bb_verifier.js +1 -1
- package/package.json +16 -16
- package/src/bb/execute.ts +2 -2
- package/src/honk.ts +1 -1
- package/src/prover/client/bb_private_kernel_prover.ts +5 -3
- package/src/prover/server/bb_prover.ts +205 -233
- package/src/test/delay_values.ts +28 -18
- package/src/test/test_circuit_prover.ts +204 -135
- package/src/verifier/bb_verifier.ts +5 -5
- package/dest/stats.d.ts +0 -4
- package/dest/stats.d.ts.map +0 -1
- package/dest/stats.js +0 -47
- package/src/stats.ts +0 -49
|
@@ -10,32 +10,43 @@ import { sleep } from '@aztec/foundation/sleep';
|
|
|
10
10
|
import { Timer } from '@aztec/foundation/timer';
|
|
11
11
|
import {
|
|
12
12
|
type ServerProtocolArtifact,
|
|
13
|
-
convertBaseParityInputsToWitnessMap,
|
|
14
|
-
convertBaseParityOutputsFromWitnessMap,
|
|
15
|
-
convertBlockMergeRollupInputsToWitnessMap,
|
|
16
13
|
convertBlockMergeRollupOutputsFromWitnessMap,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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,
|
|
26
41
|
convertRootRollupOutputsFromWitnessMap,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
convertSimulatedPrivateBaseRollupOutputsFromWitnessMap,
|
|
31
|
-
convertSimulatedPublicBaseRollupInputsToWitnessMap,
|
|
32
|
-
convertSimulatedPublicBaseRollupOutputsFromWitnessMap,
|
|
33
|
-
convertSimulatedSingleTxBlockRootRollupInputsToWitnessMap,
|
|
34
|
-
convertSimulatedSingleTxBlockRootRollupOutputsFromWitnessMap,
|
|
42
|
+
convertRootRollupPrivateInputsToWitnessMap,
|
|
43
|
+
convertTxMergeRollupOutputsFromWitnessMap,
|
|
44
|
+
convertTxMergeRollupPrivateInputsToWitnessMap,
|
|
35
45
|
foreignCallHandler,
|
|
36
46
|
getSimulatedServerCircuitArtifact,
|
|
37
47
|
} from '@aztec/noir-protocol-circuits-types/server';
|
|
38
48
|
import { ProtocolCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks';
|
|
49
|
+
import { mapProtocolArtifactNameToCircuitName } from '@aztec/noir-protocol-circuits-types/types';
|
|
39
50
|
import type { WitnessMap } from '@aztec/noir-types';
|
|
40
51
|
import { type CircuitSimulator, WASMSimulatorWithBlobs, emitCircuitSimulationStats } from '@aztec/simulator/server';
|
|
41
52
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
@@ -47,28 +58,33 @@ import {
|
|
|
47
58
|
makePublicInputsAndRecursiveProof,
|
|
48
59
|
} from '@aztec/stdlib/interfaces/server';
|
|
49
60
|
import type { PrivateToPublicKernelCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
50
|
-
import type {
|
|
61
|
+
import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
51
62
|
import { type Proof, ProvingRequestType, makeEmptyRecursiveProof, makeRecursiveProof } from '@aztec/stdlib/proofs';
|
|
52
63
|
import type {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
BlockMergeRollupPrivateInputs,
|
|
65
|
+
BlockRollupPublicInputs,
|
|
66
|
+
BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
67
|
+
BlockRootFirstRollupPrivateInputs,
|
|
68
|
+
BlockRootRollupPrivateInputs,
|
|
69
|
+
BlockRootSingleTxFirstRollupPrivateInputs,
|
|
70
|
+
BlockRootSingleTxRollupPrivateInputs,
|
|
71
|
+
CheckpointMergeRollupPrivateInputs,
|
|
72
|
+
CheckpointPaddingRollupPrivateInputs,
|
|
73
|
+
CheckpointRollupPublicInputs,
|
|
74
|
+
CheckpointRootRollupPrivateInputs,
|
|
75
|
+
CheckpointRootSingleBlockRollupPrivateInputs,
|
|
76
|
+
PrivateTxBaseRollupPrivateInputs,
|
|
62
77
|
PublicTubePrivateInputs,
|
|
63
|
-
|
|
78
|
+
PublicTxBaseRollupPrivateInputs,
|
|
79
|
+
RootRollupPrivateInputs,
|
|
64
80
|
RootRollupPublicInputs,
|
|
65
|
-
|
|
81
|
+
TxMergeRollupPrivateInputs,
|
|
82
|
+
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:
|
|
128
|
+
inputs: ParityBasePrivateInputs,
|
|
113
129
|
): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
|
|
114
|
-
return this.applyDelay(ProvingRequestType.
|
|
130
|
+
return this.applyDelay(ProvingRequestType.PARITY_BASE, () =>
|
|
115
131
|
this.simulate(
|
|
116
132
|
inputs,
|
|
117
|
-
'
|
|
133
|
+
'ParityBaseArtifact',
|
|
118
134
|
RECURSIVE_PROOF_LENGTH,
|
|
119
|
-
|
|
120
|
-
|
|
135
|
+
convertParityBasePrivateInputsToWitnessMap,
|
|
136
|
+
convertParityBaseOutputsFromWitnessMap,
|
|
121
137
|
),
|
|
122
138
|
);
|
|
123
139
|
}
|
|
@@ -129,15 +145,15 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
129
145
|
*/
|
|
130
146
|
@trackSpan('TestCircuitProver.getRootParityProof')
|
|
131
147
|
public getRootParityProof(
|
|
132
|
-
inputs:
|
|
148
|
+
inputs: ParityRootPrivateInputs,
|
|
133
149
|
): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
|
|
134
|
-
return this.applyDelay(ProvingRequestType.
|
|
150
|
+
return this.applyDelay(ProvingRequestType.PARITY_ROOT, () =>
|
|
135
151
|
this.simulate(
|
|
136
152
|
inputs,
|
|
137
|
-
'
|
|
153
|
+
'ParityRootArtifact',
|
|
138
154
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
139
|
-
|
|
140
|
-
|
|
155
|
+
convertParityRootPrivateInputsToWitnessMap,
|
|
156
|
+
convertParityRootOutputsFromWitnessMap,
|
|
141
157
|
),
|
|
142
158
|
);
|
|
143
159
|
}
|
|
@@ -159,36 +175,32 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
159
175
|
);
|
|
160
176
|
}
|
|
161
177
|
|
|
162
|
-
@trackSpan('TestCircuitProver.
|
|
163
|
-
public
|
|
164
|
-
inputs:
|
|
165
|
-
): Promise<
|
|
166
|
-
|
|
167
|
-
> {
|
|
168
|
-
return this.applyDelay(ProvingRequestType.PRIVATE_BASE_ROLLUP, () =>
|
|
178
|
+
@trackSpan('TestCircuitProver.getPrivateTxBaseRollupProof')
|
|
179
|
+
public getPrivateTxBaseRollupProof(
|
|
180
|
+
inputs: PrivateTxBaseRollupPrivateInputs,
|
|
181
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
182
|
+
return this.applyDelay(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, () =>
|
|
169
183
|
this.simulate(
|
|
170
184
|
inputs,
|
|
171
|
-
'
|
|
185
|
+
'PrivateTxBaseRollupArtifact',
|
|
172
186
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
173
|
-
|
|
174
|
-
|
|
187
|
+
convertPrivateTxBaseRollupPrivateInputsToWitnessMap,
|
|
188
|
+
convertPrivateTxBaseRollupOutputsFromWitnessMap,
|
|
175
189
|
),
|
|
176
190
|
);
|
|
177
191
|
}
|
|
178
192
|
|
|
179
|
-
@trackSpan('TestCircuitProver.
|
|
180
|
-
public
|
|
181
|
-
inputs:
|
|
182
|
-
): Promise<
|
|
183
|
-
|
|
184
|
-
> {
|
|
185
|
-
return this.applyDelay(ProvingRequestType.PUBLIC_BASE_ROLLUP, () =>
|
|
193
|
+
@trackSpan('TestCircuitProver.getPublicTxBaseRollupProof')
|
|
194
|
+
public getPublicTxBaseRollupProof(
|
|
195
|
+
inputs: PublicTxBaseRollupPrivateInputs,
|
|
196
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
197
|
+
return this.applyDelay(ProvingRequestType.PUBLIC_TX_BASE_ROLLUP, () =>
|
|
186
198
|
this.simulate(
|
|
187
199
|
inputs,
|
|
188
|
-
'
|
|
200
|
+
'PublicTxBaseRollupArtifact',
|
|
189
201
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
190
|
-
|
|
191
|
-
|
|
202
|
+
convertPublicTxBaseRollupPrivateInputsToWitnessMap,
|
|
203
|
+
convertPublicTxBaseRollupOutputsFromWitnessMap,
|
|
192
204
|
),
|
|
193
205
|
);
|
|
194
206
|
}
|
|
@@ -198,119 +210,175 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
198
210
|
* @param input - Inputs to the circuit.
|
|
199
211
|
* @returns The public inputs as outputs of the simulation.
|
|
200
212
|
*/
|
|
201
|
-
@trackSpan('TestCircuitProver.
|
|
202
|
-
public
|
|
203
|
-
input:
|
|
204
|
-
): Promise<
|
|
205
|
-
|
|
206
|
-
> {
|
|
207
|
-
return this.applyDelay(ProvingRequestType.MERGE_ROLLUP, () =>
|
|
213
|
+
@trackSpan('TestCircuitProver.getTxMergeRollupProof')
|
|
214
|
+
public getTxMergeRollupProof(
|
|
215
|
+
input: TxMergeRollupPrivateInputs,
|
|
216
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
217
|
+
return this.applyDelay(ProvingRequestType.TX_MERGE_ROLLUP, () =>
|
|
208
218
|
this.simulate(
|
|
209
219
|
input,
|
|
210
|
-
'
|
|
220
|
+
'TxMergeRollupArtifact',
|
|
211
221
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
212
|
-
|
|
213
|
-
|
|
222
|
+
convertTxMergeRollupPrivateInputsToWitnessMap,
|
|
223
|
+
convertTxMergeRollupOutputsFromWitnessMap,
|
|
224
|
+
),
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
@trackSpan('TestCircuitProver.getBlockRootFirstRollupProof')
|
|
229
|
+
public getBlockRootFirstRollupProof(
|
|
230
|
+
input: BlockRootFirstRollupPrivateInputs,
|
|
231
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
232
|
+
return this.applyDelay(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, () =>
|
|
233
|
+
this.simulate(
|
|
234
|
+
input,
|
|
235
|
+
'BlockRootFirstRollupArtifact',
|
|
236
|
+
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
237
|
+
convertBlockRootFirstRollupPrivateInputsToWitnessMap,
|
|
238
|
+
convertBlockRootFirstRollupOutputsFromWitnessMap,
|
|
239
|
+
),
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
@trackSpan('TestCircuitProver.getBlockRootSingleTxFirstRollupProof')
|
|
244
|
+
public async getBlockRootSingleTxFirstRollupProof(
|
|
245
|
+
input: BlockRootSingleTxFirstRollupPrivateInputs,
|
|
246
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
247
|
+
return await this.applyDelay(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, () =>
|
|
248
|
+
this.simulate(
|
|
249
|
+
input,
|
|
250
|
+
'BlockRootSingleTxFirstRollupArtifact',
|
|
251
|
+
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
252
|
+
convertBlockRootSingleTxFirstRollupPrivateInputsToWitnessMap,
|
|
253
|
+
convertBlockRootSingleTxFirstRollupOutputsFromWitnessMap,
|
|
254
|
+
),
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
@trackSpan('TestCircuitProver.getBlockRootEmptyTxFirstRollupProof')
|
|
259
|
+
public getBlockRootEmptyTxFirstRollupProof(
|
|
260
|
+
input: BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
261
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
262
|
+
return this.applyDelay(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, () =>
|
|
263
|
+
this.simulate(
|
|
264
|
+
input,
|
|
265
|
+
'BlockRootEmptyTxFirstRollupArtifact',
|
|
266
|
+
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
267
|
+
convertBlockRootEmptyTxFirstRollupPrivateInputsToWitnessMap,
|
|
268
|
+
convertBlockRootEmptyTxFirstRollupOutputsFromWitnessMap,
|
|
214
269
|
),
|
|
215
270
|
);
|
|
216
271
|
}
|
|
217
272
|
|
|
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
|
-
*/
|
|
223
273
|
@trackSpan('TestCircuitProver.getBlockRootRollupProof')
|
|
224
274
|
public getBlockRootRollupProof(
|
|
225
|
-
input:
|
|
226
|
-
): Promise<
|
|
227
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
228
|
-
> {
|
|
275
|
+
input: BlockRootRollupPrivateInputs,
|
|
276
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
229
277
|
return this.applyDelay(ProvingRequestType.BLOCK_ROOT_ROLLUP, () =>
|
|
230
278
|
this.simulate(
|
|
231
279
|
input,
|
|
232
280
|
'BlockRootRollupArtifact',
|
|
233
281
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
234
|
-
|
|
235
|
-
|
|
282
|
+
convertBlockRootRollupPrivateInputsToWitnessMap,
|
|
283
|
+
convertBlockRootRollupOutputsFromWitnessMap,
|
|
236
284
|
),
|
|
237
285
|
);
|
|
238
286
|
}
|
|
239
287
|
|
|
240
|
-
@trackSpan('TestCircuitProver.
|
|
241
|
-
public async
|
|
242
|
-
input:
|
|
288
|
+
@trackSpan('TestCircuitProver.getBlockRootSingleTxRollupProof')
|
|
289
|
+
public async getBlockRootSingleTxRollupProof(
|
|
290
|
+
input: BlockRootSingleTxRollupPrivateInputs,
|
|
291
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
292
|
+
return await this.applyDelay(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, () =>
|
|
293
|
+
this.simulate(
|
|
294
|
+
input,
|
|
295
|
+
'BlockRootSingleTxRollupArtifact',
|
|
296
|
+
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
297
|
+
convertBlockRootSingleTxRollupPrivateInputsToWitnessMap,
|
|
298
|
+
convertBlockRootSingleTxRollupOutputsFromWitnessMap,
|
|
299
|
+
),
|
|
300
|
+
);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
@trackSpan('TestCircuitProver.getBlockMergeRollupProof')
|
|
304
|
+
public getBlockMergeRollupProof(
|
|
305
|
+
input: BlockMergeRollupPrivateInputs,
|
|
306
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
307
|
+
return this.applyDelay(ProvingRequestType.BLOCK_MERGE_ROLLUP, () =>
|
|
308
|
+
this.simulate(
|
|
309
|
+
input,
|
|
310
|
+
'BlockMergeRollupArtifact',
|
|
311
|
+
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
312
|
+
convertBlockMergeRollupPrivateInputsToWitnessMap,
|
|
313
|
+
convertBlockMergeRollupOutputsFromWitnessMap,
|
|
314
|
+
),
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
@trackSpan('TestCircuitProver.getCheckpointRootRollupProof')
|
|
319
|
+
public getCheckpointRootRollupProof(
|
|
320
|
+
input: CheckpointRootRollupPrivateInputs,
|
|
243
321
|
): Promise<
|
|
244
|
-
PublicInputsAndRecursiveProof<
|
|
322
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
245
323
|
> {
|
|
246
|
-
return
|
|
324
|
+
return this.applyDelay(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, () =>
|
|
247
325
|
this.simulate(
|
|
248
326
|
input,
|
|
249
|
-
'
|
|
327
|
+
'CheckpointRootRollupArtifact',
|
|
250
328
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
251
|
-
|
|
252
|
-
|
|
329
|
+
convertCheckpointRootRollupPrivateInputsToWitnessMap,
|
|
330
|
+
convertCheckpointRootRollupOutputsFromWitnessMap,
|
|
253
331
|
),
|
|
254
332
|
);
|
|
255
333
|
}
|
|
256
334
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
* @returns The public inputs as outputs of the simulation.
|
|
261
|
-
*/
|
|
262
|
-
@trackSpan('TestCircuitProver.getEmptyBlockRootRollupProof')
|
|
263
|
-
public getEmptyBlockRootRollupProof(
|
|
264
|
-
input: EmptyBlockRootRollupInputs,
|
|
335
|
+
@trackSpan('TestCircuitProver.getCheckpointRootSingleBlockRollupProof')
|
|
336
|
+
public getCheckpointRootSingleBlockRollupProof(
|
|
337
|
+
input: CheckpointRootSingleBlockRollupPrivateInputs,
|
|
265
338
|
): Promise<
|
|
266
|
-
PublicInputsAndRecursiveProof<
|
|
339
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
267
340
|
> {
|
|
268
|
-
return this.applyDelay(ProvingRequestType.
|
|
341
|
+
return this.applyDelay(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, () =>
|
|
269
342
|
this.simulate(
|
|
270
343
|
input,
|
|
271
|
-
'
|
|
344
|
+
'CheckpointRootSingleBlockRollupArtifact',
|
|
272
345
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
273
|
-
|
|
274
|
-
|
|
346
|
+
convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap,
|
|
347
|
+
convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap,
|
|
275
348
|
),
|
|
276
349
|
);
|
|
277
350
|
}
|
|
278
351
|
|
|
279
|
-
@trackSpan('TestCircuitProver.
|
|
280
|
-
public
|
|
281
|
-
input:
|
|
352
|
+
@trackSpan('TestCircuitProver.getCheckpointPaddingRollupProof')
|
|
353
|
+
public getCheckpointPaddingRollupProof(
|
|
354
|
+
input: CheckpointPaddingRollupPrivateInputs,
|
|
282
355
|
): Promise<
|
|
283
|
-
PublicInputsAndRecursiveProof<
|
|
356
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
284
357
|
> {
|
|
285
|
-
return this.applyDelay(ProvingRequestType.
|
|
358
|
+
return this.applyDelay(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, () =>
|
|
286
359
|
this.simulate(
|
|
287
360
|
input,
|
|
288
|
-
'
|
|
361
|
+
'CheckpointPaddingRollupArtifact',
|
|
289
362
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
290
|
-
|
|
291
|
-
|
|
363
|
+
convertCheckpointPaddingRollupPrivateInputsToWitnessMap,
|
|
364
|
+
convertCheckpointPaddingRollupOutputsFromWitnessMap,
|
|
292
365
|
),
|
|
293
366
|
);
|
|
294
367
|
}
|
|
295
368
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
* @returns The public inputs as outputs of the simulation.
|
|
300
|
-
*/
|
|
301
|
-
@trackSpan('TestCircuitProver.getBlockMergeRollupProof')
|
|
302
|
-
public getBlockMergeRollupProof(
|
|
303
|
-
input: BlockMergeRollupInputs,
|
|
369
|
+
@trackSpan('TestCircuitProver.getCheckpointMergeRollupProof')
|
|
370
|
+
public getCheckpointMergeRollupProof(
|
|
371
|
+
input: CheckpointMergeRollupPrivateInputs,
|
|
304
372
|
): Promise<
|
|
305
|
-
PublicInputsAndRecursiveProof<
|
|
373
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
306
374
|
> {
|
|
307
|
-
return this.applyDelay(ProvingRequestType.
|
|
375
|
+
return this.applyDelay(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, () =>
|
|
308
376
|
this.simulate(
|
|
309
377
|
input,
|
|
310
|
-
'
|
|
378
|
+
'CheckpointMergeRollupArtifact',
|
|
311
379
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
312
|
-
|
|
313
|
-
|
|
380
|
+
convertCheckpointMergeRollupPrivateInputsToWitnessMap,
|
|
381
|
+
convertCheckpointMergeRollupOutputsFromWitnessMap,
|
|
314
382
|
),
|
|
315
383
|
);
|
|
316
384
|
}
|
|
@@ -321,13 +389,15 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
321
389
|
* @returns The public inputs as outputs of the simulation.
|
|
322
390
|
*/
|
|
323
391
|
@trackSpan('TestCircuitProver.getRootRollupProof')
|
|
324
|
-
public getRootRollupProof(
|
|
392
|
+
public getRootRollupProof(
|
|
393
|
+
input: RootRollupPrivateInputs,
|
|
394
|
+
): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs>> {
|
|
325
395
|
return this.applyDelay(ProvingRequestType.ROOT_ROLLUP, () =>
|
|
326
396
|
this.simulate(
|
|
327
397
|
input,
|
|
328
398
|
'RootRollupArtifact',
|
|
329
399
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
330
|
-
|
|
400
|
+
convertRootRollupPrivateInputsToWitnessMap,
|
|
331
401
|
convertRootRollupOutputsFromWitnessMap,
|
|
332
402
|
),
|
|
333
403
|
);
|
|
@@ -374,21 +444,20 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
374
444
|
input: CircuitInputType,
|
|
375
445
|
artifactName: ServerProtocolArtifact,
|
|
376
446
|
proofLength: PROOF_LENGTH,
|
|
377
|
-
convertInput: (input: CircuitInputType) => WitnessMap,
|
|
378
|
-
convertOutput: (outputWitness: WitnessMap) => CircuitOutputType,
|
|
447
|
+
convertInput: (input: CircuitInputType, simulated?: boolean) => WitnessMap,
|
|
448
|
+
convertOutput: (outputWitness: WitnessMap, simulated?: boolean) => CircuitOutputType,
|
|
379
449
|
) {
|
|
380
450
|
const timer = new Timer();
|
|
381
|
-
const witnessMap = convertInput(input);
|
|
451
|
+
const witnessMap = convertInput(input, true /* simulated */);
|
|
382
452
|
const circuitName = mapProtocolArtifactNameToCircuitName(artifactName);
|
|
383
453
|
|
|
384
454
|
let witness: WitnessMap;
|
|
385
455
|
if (
|
|
386
|
-
['
|
|
456
|
+
['CheckpointRootRollupArtifact', 'CheckpointRootSingleBlockRollupArtifact'].includes(artifactName) ||
|
|
387
457
|
this.simulator == undefined
|
|
388
458
|
) {
|
|
389
459
|
// TODO(#10323): Native ACVM simulator does not support foreign call handler so we use the wasm simulator
|
|
390
|
-
// when simulating
|
|
391
|
-
// is not provided.
|
|
460
|
+
// when simulating checkpoint root rollup circuits or when the native ACVM simulator is not provided.
|
|
392
461
|
witness = (
|
|
393
462
|
await this.wasmSimulator.executeProtocolCircuit(
|
|
394
463
|
witnessMap,
|
|
@@ -406,7 +475,7 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
406
475
|
).witness;
|
|
407
476
|
}
|
|
408
477
|
|
|
409
|
-
const result = convertOutput(witness);
|
|
478
|
+
const result = convertOutput(witness, true /* simulated */);
|
|
410
479
|
|
|
411
480
|
this.instrumentation.recordDuration('simulationDuration', circuitName, timer);
|
|
412
481
|
emitCircuitSimulationStats(circuitName, timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
@@ -2,10 +2,11 @@ import { runInDirectory } from '@aztec/foundation/fs';
|
|
|
2
2
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { Timer } from '@aztec/foundation/timer';
|
|
4
4
|
import { ProtocolCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks';
|
|
5
|
-
import
|
|
6
|
-
ClientProtocolArtifact,
|
|
7
|
-
ProtocolArtifact,
|
|
8
|
-
ServerProtocolArtifact,
|
|
5
|
+
import {
|
|
6
|
+
type ClientProtocolArtifact,
|
|
7
|
+
type ProtocolArtifact,
|
|
8
|
+
type ServerProtocolArtifact,
|
|
9
|
+
mapProtocolArtifactNameToCircuitName,
|
|
9
10
|
} from '@aztec/noir-protocol-circuits-types/types';
|
|
10
11
|
import type { ClientProtocolCircuitVerifier, IVCProofVerificationResult } from '@aztec/stdlib/interfaces/server';
|
|
11
12
|
import type { Proof } from '@aztec/stdlib/proofs';
|
|
@@ -27,7 +28,6 @@ import {
|
|
|
27
28
|
import type { BBConfig } from '../config.js';
|
|
28
29
|
import { getUltraHonkFlavorForCircuit } from '../honk.js';
|
|
29
30
|
import { writeClientIVCProofToPath } from '../prover/proof_utils.js';
|
|
30
|
-
import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
|
|
31
31
|
|
|
32
32
|
export class BBCircuitVerifier implements ClientProtocolCircuitVerifier {
|
|
33
33
|
private constructor(
|
package/dest/stats.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { ProtocolArtifact } from '@aztec/noir-protocol-circuits-types/types';
|
|
2
|
-
import type { CircuitName } from '@aztec/stdlib/stats';
|
|
3
|
-
export declare function mapProtocolArtifactNameToCircuitName(artifact: ProtocolArtifact): CircuitName;
|
|
4
|
-
//# sourceMappingURL=stats.d.ts.map
|
package/dest/stats.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,wBAAgB,oCAAoC,CAAC,QAAQ,EAAE,gBAAgB,GAAG,WAAW,CA6C5F"}
|
package/dest/stats.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
export function mapProtocolArtifactNameToCircuitName(artifact) {
|
|
2
|
-
switch(artifact){
|
|
3
|
-
case 'BaseParityArtifact':
|
|
4
|
-
return 'base-parity';
|
|
5
|
-
case 'RootParityArtifact':
|
|
6
|
-
return 'root-parity';
|
|
7
|
-
case 'PublicTube':
|
|
8
|
-
return 'public-tube';
|
|
9
|
-
case 'PrivateBaseRollupArtifact':
|
|
10
|
-
return 'private-base-rollup';
|
|
11
|
-
case 'PublicBaseRollupArtifact':
|
|
12
|
-
return 'public-base-rollup';
|
|
13
|
-
case 'MergeRollupArtifact':
|
|
14
|
-
return 'merge-rollup';
|
|
15
|
-
case 'BlockRootRollupArtifact':
|
|
16
|
-
return 'block-root-rollup';
|
|
17
|
-
case 'SingleTxBlockRootRollupArtifact':
|
|
18
|
-
return 'single-tx-block-root-rollup';
|
|
19
|
-
case 'EmptyBlockRootRollupArtifact':
|
|
20
|
-
return 'empty-block-root-rollup';
|
|
21
|
-
case 'PaddingBlockRootRollupArtifact':
|
|
22
|
-
return 'padding-block-root-rollup';
|
|
23
|
-
case 'BlockMergeRollupArtifact':
|
|
24
|
-
return 'block-merge-rollup';
|
|
25
|
-
case 'RootRollupArtifact':
|
|
26
|
-
return 'root-rollup';
|
|
27
|
-
case 'PrivateKernelInitArtifact':
|
|
28
|
-
return 'private-kernel-init';
|
|
29
|
-
case 'PrivateKernelInnerArtifact':
|
|
30
|
-
return 'private-kernel-inner';
|
|
31
|
-
case 'PrivateKernelTailArtifact':
|
|
32
|
-
return 'private-kernel-tail';
|
|
33
|
-
case 'PrivateKernelTailToPublicArtifact':
|
|
34
|
-
return 'private-kernel-tail-to-public';
|
|
35
|
-
case 'HidingKernelToRollup':
|
|
36
|
-
return 'hiding-kernel-to-rollup';
|
|
37
|
-
case 'HidingKernelToPublic':
|
|
38
|
-
return 'hiding-kernel-to-public';
|
|
39
|
-
default:
|
|
40
|
-
{
|
|
41
|
-
if (artifact.startsWith('PrivateKernelReset')) {
|
|
42
|
-
return 'private-kernel-reset';
|
|
43
|
-
}
|
|
44
|
-
throw new Error(`Unknown circuit type: ${artifact}`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
package/src/stats.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { ProtocolArtifact } from '@aztec/noir-protocol-circuits-types/types';
|
|
2
|
-
import type { CircuitName } from '@aztec/stdlib/stats';
|
|
3
|
-
|
|
4
|
-
export function mapProtocolArtifactNameToCircuitName(artifact: ProtocolArtifact): CircuitName {
|
|
5
|
-
switch (artifact) {
|
|
6
|
-
case 'BaseParityArtifact':
|
|
7
|
-
return 'base-parity';
|
|
8
|
-
case 'RootParityArtifact':
|
|
9
|
-
return 'root-parity';
|
|
10
|
-
case 'PublicTube':
|
|
11
|
-
return 'public-tube';
|
|
12
|
-
case 'PrivateBaseRollupArtifact':
|
|
13
|
-
return 'private-base-rollup';
|
|
14
|
-
case 'PublicBaseRollupArtifact':
|
|
15
|
-
return 'public-base-rollup';
|
|
16
|
-
case 'MergeRollupArtifact':
|
|
17
|
-
return 'merge-rollup';
|
|
18
|
-
case 'BlockRootRollupArtifact':
|
|
19
|
-
return 'block-root-rollup';
|
|
20
|
-
case 'SingleTxBlockRootRollupArtifact':
|
|
21
|
-
return 'single-tx-block-root-rollup';
|
|
22
|
-
case 'EmptyBlockRootRollupArtifact':
|
|
23
|
-
return 'empty-block-root-rollup';
|
|
24
|
-
case 'PaddingBlockRootRollupArtifact':
|
|
25
|
-
return 'padding-block-root-rollup';
|
|
26
|
-
case 'BlockMergeRollupArtifact':
|
|
27
|
-
return 'block-merge-rollup';
|
|
28
|
-
case 'RootRollupArtifact':
|
|
29
|
-
return 'root-rollup';
|
|
30
|
-
case 'PrivateKernelInitArtifact':
|
|
31
|
-
return 'private-kernel-init';
|
|
32
|
-
case 'PrivateKernelInnerArtifact':
|
|
33
|
-
return 'private-kernel-inner';
|
|
34
|
-
case 'PrivateKernelTailArtifact':
|
|
35
|
-
return 'private-kernel-tail';
|
|
36
|
-
case 'PrivateKernelTailToPublicArtifact':
|
|
37
|
-
return 'private-kernel-tail-to-public';
|
|
38
|
-
case 'HidingKernelToRollup':
|
|
39
|
-
return 'hiding-kernel-to-rollup';
|
|
40
|
-
case 'HidingKernelToPublic':
|
|
41
|
-
return 'hiding-kernel-to-public';
|
|
42
|
-
default: {
|
|
43
|
-
if (artifact.startsWith('PrivateKernelReset')) {
|
|
44
|
-
return 'private-kernel-reset';
|
|
45
|
-
}
|
|
46
|
-
throw new Error(`Unknown circuit type: ${artifact}`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|