@aztec/bb-prover 0.0.1-commit.993d240 → 0.0.1-commit.9a89641
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/avm_proving_tests/avm_proving_tester.d.ts +4 -3
- package/dest/avm_proving_tests/avm_proving_tester.d.ts.map +1 -1
- package/dest/avm_proving_tests/avm_proving_tester.js +28 -6
- package/dest/bb/bb_js_backend.d.ts +1 -1
- package/dest/bb/bb_js_backend.d.ts.map +1 -1
- package/dest/bb/bb_js_backend.js +8 -2
- package/dest/prover/client/bb_private_kernel_prover.d.ts +13 -5
- package/dest/prover/client/bb_private_kernel_prover.d.ts.map +1 -1
- package/dest/prover/client/bb_private_kernel_prover.js +37 -9
- package/dest/prover/server/bb_prover.d.ts +3 -3
- package/dest/prover/server/bb_prover.d.ts.map +1 -1
- package/dest/prover/server/bb_prover.js +10 -8
- package/dest/test/test_circuit_prover.d.ts +3 -3
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/test/test_circuit_prover.js +2 -2
- package/dest/verifier/batch_chonk_verifier.d.ts +13 -2
- package/dest/verifier/batch_chonk_verifier.d.ts.map +1 -1
- package/dest/verifier/batch_chonk_verifier.js +210 -58
- package/package.json +16 -16
- package/src/avm_proving_tests/avm_proving_tester.ts +34 -6
- package/src/bb/bb_js_backend.ts +8 -2
- package/src/prover/client/bb_private_kernel_prover.ts +125 -17
- package/src/prover/server/bb_prover.ts +12 -18
- package/src/test/test_circuit_prover.ts +3 -5
- package/src/verifier/batch_chonk_verifier.ts +204 -65
|
@@ -9,22 +9,31 @@ import {
|
|
|
9
9
|
convertPrivateKernelInit2OutputsFromWitnessMapWithAbi,
|
|
10
10
|
convertPrivateKernelInit3InputsToWitnessMapWithAbi,
|
|
11
11
|
convertPrivateKernelInit3OutputsFromWitnessMapWithAbi,
|
|
12
|
+
convertPrivateKernelInit4InputsToWitnessMapWithAbi,
|
|
13
|
+
convertPrivateKernelInit4OutputsFromWitnessMapWithAbi,
|
|
14
|
+
convertPrivateKernelInit5InputsToWitnessMapWithAbi,
|
|
15
|
+
convertPrivateKernelInit5OutputsFromWitnessMapWithAbi,
|
|
12
16
|
convertPrivateKernelInitInputsToWitnessMapWithAbi,
|
|
13
17
|
convertPrivateKernelInitOutputsFromWitnessMapWithAbi,
|
|
14
18
|
convertPrivateKernelInner2InputsToWitnessMapWithAbi,
|
|
15
19
|
convertPrivateKernelInner2OutputsFromWitnessMapWithAbi,
|
|
16
20
|
convertPrivateKernelInner3InputsToWitnessMapWithAbi,
|
|
17
21
|
convertPrivateKernelInner3OutputsFromWitnessMapWithAbi,
|
|
22
|
+
convertPrivateKernelInner4InputsToWitnessMapWithAbi,
|
|
23
|
+
convertPrivateKernelInner4OutputsFromWitnessMapWithAbi,
|
|
24
|
+
convertPrivateKernelInner5InputsToWitnessMapWithAbi,
|
|
25
|
+
convertPrivateKernelInner5OutputsFromWitnessMapWithAbi,
|
|
18
26
|
convertPrivateKernelInnerInputsToWitnessMapWithAbi,
|
|
19
27
|
convertPrivateKernelInnerOutputsFromWitnessMapWithAbi,
|
|
20
28
|
convertPrivateKernelResetInputsToWitnessMapWithAbi,
|
|
21
29
|
convertPrivateKernelResetOutputsFromWitnessMapWithAbi,
|
|
30
|
+
convertPrivateKernelResetTailInputsToWitnessMapWithAbi,
|
|
31
|
+
convertPrivateKernelResetTailToPublicInputsToWitnessMapWithAbi,
|
|
22
32
|
convertPrivateKernelTailForPublicOutputsFromWitnessMapWithAbi,
|
|
23
|
-
convertPrivateKernelTailInputsToWitnessMapWithAbi,
|
|
24
33
|
convertPrivateKernelTailOutputsFromWitnessMapWithAbi,
|
|
25
|
-
convertPrivateKernelTailToPublicInputsToWitnessMapWithAbi,
|
|
26
34
|
foreignCallHandler,
|
|
27
35
|
getPrivateKernelResetArtifactName,
|
|
36
|
+
getPrivateKernelResetTailArtifactName,
|
|
28
37
|
updateResetCircuitSampleInputs,
|
|
29
38
|
} from '@aztec/noir-protocol-circuits-types/client';
|
|
30
39
|
import {
|
|
@@ -42,13 +51,17 @@ import type {
|
|
|
42
51
|
PrivateKernelCircuitPublicInputs,
|
|
43
52
|
PrivateKernelInit2CircuitPrivateInputs,
|
|
44
53
|
PrivateKernelInit3CircuitPrivateInputs,
|
|
54
|
+
PrivateKernelInit4CircuitPrivateInputs,
|
|
55
|
+
PrivateKernelInit5CircuitPrivateInputs,
|
|
45
56
|
PrivateKernelInitCircuitPrivateInputs,
|
|
46
57
|
PrivateKernelInner2CircuitPrivateInputs,
|
|
47
58
|
PrivateKernelInner3CircuitPrivateInputs,
|
|
59
|
+
PrivateKernelInner4CircuitPrivateInputs,
|
|
60
|
+
PrivateKernelInner5CircuitPrivateInputs,
|
|
48
61
|
PrivateKernelInnerCircuitPrivateInputs,
|
|
49
62
|
PrivateKernelResetCircuitPrivateInputs,
|
|
63
|
+
PrivateKernelResetTailCircuitPrivateInputs,
|
|
50
64
|
PrivateKernelSimulateOutput,
|
|
51
|
-
PrivateKernelTailCircuitPrivateInputs,
|
|
52
65
|
PrivateKernelTailCircuitPublicInputs,
|
|
53
66
|
} from '@aztec/stdlib/kernel';
|
|
54
67
|
import type { NoirCompiledCircuitWithName } from '@aztec/stdlib/noir';
|
|
@@ -135,6 +148,50 @@ export abstract class BBPrivateKernelProver implements PrivateKernelProver {
|
|
|
135
148
|
);
|
|
136
149
|
}
|
|
137
150
|
|
|
151
|
+
public async generateInit4Output(
|
|
152
|
+
inputs: PrivateKernelInit4CircuitPrivateInputs,
|
|
153
|
+
): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
|
|
154
|
+
return await this.generateCircuitOutput(
|
|
155
|
+
inputs,
|
|
156
|
+
'PrivateKernelInit4Artifact',
|
|
157
|
+
convertPrivateKernelInit4InputsToWitnessMapWithAbi,
|
|
158
|
+
convertPrivateKernelInit4OutputsFromWitnessMapWithAbi,
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
public async simulateInit4(
|
|
163
|
+
inputs: PrivateKernelInit4CircuitPrivateInputs,
|
|
164
|
+
): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
|
|
165
|
+
return await this.simulateCircuitOutput(
|
|
166
|
+
inputs,
|
|
167
|
+
'PrivateKernelInit4Artifact',
|
|
168
|
+
convertPrivateKernelInit4InputsToWitnessMapWithAbi,
|
|
169
|
+
convertPrivateKernelInit4OutputsFromWitnessMapWithAbi,
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
public async generateInit5Output(
|
|
174
|
+
inputs: PrivateKernelInit5CircuitPrivateInputs,
|
|
175
|
+
): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
|
|
176
|
+
return await this.generateCircuitOutput(
|
|
177
|
+
inputs,
|
|
178
|
+
'PrivateKernelInit5Artifact',
|
|
179
|
+
convertPrivateKernelInit5InputsToWitnessMapWithAbi,
|
|
180
|
+
convertPrivateKernelInit5OutputsFromWitnessMapWithAbi,
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
public async simulateInit5(
|
|
185
|
+
inputs: PrivateKernelInit5CircuitPrivateInputs,
|
|
186
|
+
): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
|
|
187
|
+
return await this.simulateCircuitOutput(
|
|
188
|
+
inputs,
|
|
189
|
+
'PrivateKernelInit5Artifact',
|
|
190
|
+
convertPrivateKernelInit5InputsToWitnessMapWithAbi,
|
|
191
|
+
convertPrivateKernelInit5OutputsFromWitnessMapWithAbi,
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
|
|
138
195
|
public async generateInnerOutput(
|
|
139
196
|
inputs: PrivateKernelInnerCircuitPrivateInputs,
|
|
140
197
|
): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
|
|
@@ -201,6 +258,50 @@ export abstract class BBPrivateKernelProver implements PrivateKernelProver {
|
|
|
201
258
|
);
|
|
202
259
|
}
|
|
203
260
|
|
|
261
|
+
public async generateInner4Output(
|
|
262
|
+
inputs: PrivateKernelInner4CircuitPrivateInputs,
|
|
263
|
+
): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
|
|
264
|
+
return await this.generateCircuitOutput(
|
|
265
|
+
inputs,
|
|
266
|
+
'PrivateKernelInner4Artifact',
|
|
267
|
+
convertPrivateKernelInner4InputsToWitnessMapWithAbi,
|
|
268
|
+
convertPrivateKernelInner4OutputsFromWitnessMapWithAbi,
|
|
269
|
+
);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
public async simulateInner4(
|
|
273
|
+
inputs: PrivateKernelInner4CircuitPrivateInputs,
|
|
274
|
+
): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
|
|
275
|
+
return await this.simulateCircuitOutput(
|
|
276
|
+
inputs,
|
|
277
|
+
'PrivateKernelInner4Artifact',
|
|
278
|
+
convertPrivateKernelInner4InputsToWitnessMapWithAbi,
|
|
279
|
+
convertPrivateKernelInner4OutputsFromWitnessMapWithAbi,
|
|
280
|
+
);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
public async generateInner5Output(
|
|
284
|
+
inputs: PrivateKernelInner5CircuitPrivateInputs,
|
|
285
|
+
): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
|
|
286
|
+
return await this.generateCircuitOutput(
|
|
287
|
+
inputs,
|
|
288
|
+
'PrivateKernelInner5Artifact',
|
|
289
|
+
convertPrivateKernelInner5InputsToWitnessMapWithAbi,
|
|
290
|
+
convertPrivateKernelInner5OutputsFromWitnessMapWithAbi,
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
public async simulateInner5(
|
|
295
|
+
inputs: PrivateKernelInner5CircuitPrivateInputs,
|
|
296
|
+
): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
|
|
297
|
+
return await this.simulateCircuitOutput(
|
|
298
|
+
inputs,
|
|
299
|
+
'PrivateKernelInner5Artifact',
|
|
300
|
+
convertPrivateKernelInner5InputsToWitnessMapWithAbi,
|
|
301
|
+
convertPrivateKernelInner5OutputsFromWitnessMapWithAbi,
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
|
|
204
305
|
public async generateResetOutput(
|
|
205
306
|
inputs: PrivateKernelResetCircuitPrivateInputs,
|
|
206
307
|
): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
|
|
@@ -228,40 +329,42 @@ export abstract class BBPrivateKernelProver implements PrivateKernelProver {
|
|
|
228
329
|
);
|
|
229
330
|
}
|
|
230
331
|
|
|
231
|
-
public async
|
|
232
|
-
inputs:
|
|
332
|
+
public async generateResetTailOutput(
|
|
333
|
+
inputs: PrivateKernelResetTailCircuitPrivateInputs,
|
|
233
334
|
): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
335
|
+
const artifactName = getPrivateKernelResetTailArtifactName(inputs.dimensions, inputs.isForPublic());
|
|
234
336
|
if (!inputs.isForPublic()) {
|
|
235
337
|
return await this.generateCircuitOutput(
|
|
236
338
|
inputs,
|
|
237
|
-
|
|
238
|
-
|
|
339
|
+
artifactName,
|
|
340
|
+
convertPrivateKernelResetTailInputsToWitnessMapWithAbi,
|
|
239
341
|
convertPrivateKernelTailOutputsFromWitnessMapWithAbi,
|
|
240
342
|
);
|
|
241
343
|
}
|
|
242
344
|
return await this.generateCircuitOutput(
|
|
243
345
|
inputs,
|
|
244
|
-
|
|
245
|
-
|
|
346
|
+
artifactName,
|
|
347
|
+
convertPrivateKernelResetTailToPublicInputsToWitnessMapWithAbi,
|
|
246
348
|
convertPrivateKernelTailForPublicOutputsFromWitnessMapWithAbi,
|
|
247
349
|
);
|
|
248
350
|
}
|
|
249
351
|
|
|
250
|
-
public async
|
|
251
|
-
inputs:
|
|
352
|
+
public async simulateResetTail(
|
|
353
|
+
inputs: PrivateKernelResetTailCircuitPrivateInputs,
|
|
252
354
|
): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>> {
|
|
355
|
+
const artifactName = getPrivateKernelResetTailArtifactName(inputs.dimensions, inputs.isForPublic());
|
|
253
356
|
if (!inputs.isForPublic()) {
|
|
254
357
|
return await this.simulateCircuitOutput(
|
|
255
358
|
inputs,
|
|
256
|
-
|
|
257
|
-
|
|
359
|
+
artifactName,
|
|
360
|
+
convertPrivateKernelResetTailInputsToWitnessMapWithAbi,
|
|
258
361
|
convertPrivateKernelTailOutputsFromWitnessMapWithAbi,
|
|
259
362
|
);
|
|
260
363
|
}
|
|
261
364
|
return await this.simulateCircuitOutput(
|
|
262
365
|
inputs,
|
|
263
|
-
|
|
264
|
-
|
|
366
|
+
artifactName,
|
|
367
|
+
convertPrivateKernelResetTailToPublicInputsToWitnessMapWithAbi,
|
|
265
368
|
convertPrivateKernelTailForPublicOutputsFromWitnessMapWithAbi,
|
|
266
369
|
);
|
|
267
370
|
}
|
|
@@ -384,6 +487,7 @@ export abstract class BBPrivateKernelProver implements PrivateKernelProver {
|
|
|
384
487
|
executionSteps.map(step => ungzip(step.bytecode)),
|
|
385
488
|
barretenberg,
|
|
386
489
|
executionSteps.map(step => step.functionName),
|
|
490
|
+
executionSteps.map(step => step.kind),
|
|
387
491
|
);
|
|
388
492
|
|
|
389
493
|
// Use compressed prove path to get both proof fields and compressed proof bytes
|
|
@@ -410,13 +514,17 @@ export abstract class BBPrivateKernelProver implements PrivateKernelProver {
|
|
|
410
514
|
return proofWithPubInputs;
|
|
411
515
|
}
|
|
412
516
|
|
|
413
|
-
public async computeGateCountForCircuit(
|
|
517
|
+
public async computeGateCountForCircuit(
|
|
518
|
+
_bytecode: Buffer,
|
|
519
|
+
_circuitName: string,
|
|
520
|
+
_circuitKind: PrivateExecutionStep['kind'],
|
|
521
|
+
): Promise<number> {
|
|
414
522
|
// Note we do not pass the vk to the backend. This is unneeded for gate counts.
|
|
415
523
|
const barretenberg = await Barretenberg.initSingleton({
|
|
416
524
|
...this.options,
|
|
417
525
|
logger: this.options.logger?.[(process.env.LOG_LEVEL as LogLevel) || 'verbose'],
|
|
418
526
|
});
|
|
419
|
-
const backend = new AztecClientBackend([ungzip(_bytecode)], barretenberg, [_circuitName]);
|
|
527
|
+
const backend = new AztecClientBackend([ungzip(_bytecode)], barretenberg, [_circuitName], [_circuitKind]);
|
|
420
528
|
const gateCount = await backend.gates();
|
|
421
529
|
return gateCount[0];
|
|
422
530
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
AVM_V2_PROOF_LENGTH_IN_FIELDS,
|
|
3
3
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
4
4
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
5
5
|
PAIRING_POINTS_SIZE,
|
|
@@ -177,9 +177,7 @@ export class BBNativeRollupProver implements ServerCircuitProver {
|
|
|
177
177
|
@trackSpan('BBNativeRollupProver.getAvmProof', inputs => ({
|
|
178
178
|
[Attributes.APP_CIRCUIT_NAME]: inputs.hints.tx.hash,
|
|
179
179
|
}))
|
|
180
|
-
public async getAvmProof(
|
|
181
|
-
inputs: AvmCircuitInputs,
|
|
182
|
-
): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>> {
|
|
180
|
+
public async getAvmProof(inputs: AvmCircuitInputs): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>> {
|
|
183
181
|
const proof = await this.createAvmProof(inputs);
|
|
184
182
|
await this.verifyAvmProof(proof.binaryProof, inputs.publicInputs);
|
|
185
183
|
return proof;
|
|
@@ -499,7 +497,9 @@ export class BBNativeRollupProver implements ServerCircuitProver {
|
|
|
499
497
|
getUltraHonkFlavorForCircuit(circuitType),
|
|
500
498
|
);
|
|
501
499
|
} catch (error) {
|
|
502
|
-
|
|
500
|
+
// Preserve retryability of the underlying failure (e.g. a transient bb startup error).
|
|
501
|
+
const retry = error instanceof ProvingError && error.retry;
|
|
502
|
+
throw new ProvingError(`Failed to generate proof for ${circuitType}: ${error}`, error, retry);
|
|
503
503
|
}
|
|
504
504
|
|
|
505
505
|
return {
|
|
@@ -508,9 +508,7 @@ export class BBNativeRollupProver implements ServerCircuitProver {
|
|
|
508
508
|
};
|
|
509
509
|
}
|
|
510
510
|
|
|
511
|
-
private async createAvmProof(
|
|
512
|
-
input: AvmCircuitInputs,
|
|
513
|
-
): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>> {
|
|
511
|
+
private async createAvmProof(input: AvmCircuitInputs): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>> {
|
|
514
512
|
logger.info(`Proving avm-circuit for TX ${input.hints.tx.hash}...`);
|
|
515
513
|
|
|
516
514
|
const inputsBuffer = input.serializeWithMessagePack();
|
|
@@ -520,20 +518,14 @@ export class BBNativeRollupProver implements ServerCircuitProver {
|
|
|
520
518
|
// Convert Uint8Array[] (32-byte field elements) to Fr[]
|
|
521
519
|
const proofFields = proofFieldArrays.map(f => Fr.fromBuffer(Buffer.from(f)));
|
|
522
520
|
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
throw new Error(
|
|
526
|
-
`Proof has ${proofFields.length} fields, expected no more than ${AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED}.`,
|
|
527
|
-
);
|
|
521
|
+
if (proofFields.length !== AVM_V2_PROOF_LENGTH_IN_FIELDS) {
|
|
522
|
+
throw new Error(`Proof has ${proofFields.length} fields, expected exactly ${AVM_V2_PROOF_LENGTH_IN_FIELDS}.`);
|
|
528
523
|
}
|
|
529
|
-
const proofFieldsPadded = proofFields.concat(
|
|
530
|
-
Array(AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED - proofFields.length).fill(new Fr(0)),
|
|
531
|
-
);
|
|
532
524
|
|
|
533
525
|
// Build the binary proof from the raw field data
|
|
534
526
|
const rawProofBuffer = Buffer.concat(proofFieldArrays.map(f => Buffer.from(f)));
|
|
535
527
|
const binaryProof = new Proof(rawProofBuffer, /*numPublicInputs=*/ 0);
|
|
536
|
-
const avmProof = new RecursiveProof(
|
|
528
|
+
const avmProof = new RecursiveProof(proofFields, binaryProof, true, AVM_V2_PROOF_LENGTH_IN_FIELDS);
|
|
537
529
|
|
|
538
530
|
const circuitType = 'avm-circuit' as const;
|
|
539
531
|
const appCircuitName = 'unknown' as const;
|
|
@@ -645,7 +637,9 @@ export class BBNativeRollupProver implements ServerCircuitProver {
|
|
|
645
637
|
flavor,
|
|
646
638
|
));
|
|
647
639
|
} catch (error) {
|
|
648
|
-
|
|
640
|
+
// Preserve retryability of the underlying failure (e.g. a transient bb startup error).
|
|
641
|
+
const retry = error instanceof ProvingError && error.retry;
|
|
642
|
+
throw new ProvingError(`Failed to verify proof for ${circuitType}: ${error}`, error, retry);
|
|
649
643
|
}
|
|
650
644
|
|
|
651
645
|
if (!verified) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
AVM_V2_PROOF_LENGTH_IN_FIELDS,
|
|
3
3
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
4
4
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
5
5
|
RECURSIVE_PROOF_LENGTH,
|
|
@@ -402,13 +402,11 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
402
402
|
);
|
|
403
403
|
}
|
|
404
404
|
|
|
405
|
-
public getAvmProof(_inputs: AvmCircuitInputs): Promise<RecursiveProof<typeof
|
|
405
|
+
public getAvmProof(_inputs: AvmCircuitInputs): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>> {
|
|
406
406
|
// We can't simulate the AVM because we don't have enough context to do so (e.g., DBs).
|
|
407
407
|
// We just return an empty proof.
|
|
408
408
|
this.logger.debug('Skipping AVM simulation in TestCircuitProver.');
|
|
409
|
-
return this.applyDelay(ProvingRequestType.PUBLIC_VM, () =>
|
|
410
|
-
makeEmptyRecursiveProof(AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED),
|
|
411
|
-
);
|
|
409
|
+
return this.applyDelay(ProvingRequestType.PUBLIC_VM, () => makeEmptyRecursiveProof(AVM_V2_PROOF_LENGTH_IN_FIELDS));
|
|
412
410
|
}
|
|
413
411
|
|
|
414
412
|
private async applyDelay<F extends () => any>(type: ProvingRequestType, fn: F): Promise<Awaited<ReturnType<F>>> {
|