@aztec/bb-prover 0.0.1-commit.d431d1c → 0.0.1-commit.d58ff9d0

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 (68) hide show
  1. package/dest/avm_proving_tests/avm_proving_tester.d.ts +16 -10
  2. package/dest/avm_proving_tests/avm_proving_tester.d.ts.map +1 -1
  3. package/dest/avm_proving_tests/avm_proving_tester.js +178 -111
  4. package/dest/bb/bb_js_backend.d.ts +196 -0
  5. package/dest/bb/bb_js_backend.d.ts.map +1 -0
  6. package/dest/bb/bb_js_backend.js +379 -0
  7. package/dest/bb/bb_js_debug.d.ts +52 -0
  8. package/dest/bb/bb_js_debug.d.ts.map +1 -0
  9. package/dest/bb/bb_js_debug.js +176 -0
  10. package/dest/bb/file_names.d.ts +4 -0
  11. package/dest/bb/file_names.d.ts.map +1 -0
  12. package/dest/bb/file_names.js +5 -0
  13. package/dest/config.d.ts +17 -1
  14. package/dest/config.d.ts.map +1 -1
  15. package/dest/index.d.ts +3 -2
  16. package/dest/index.d.ts.map +1 -1
  17. package/dest/index.js +2 -1
  18. package/dest/instrumentation.d.ts +1 -1
  19. package/dest/instrumentation.d.ts.map +1 -1
  20. package/dest/instrumentation.js +12 -4
  21. package/dest/prover/client/bb_private_kernel_prover.d.ts +21 -5
  22. package/dest/prover/client/bb_private_kernel_prover.d.ts.map +1 -1
  23. package/dest/prover/client/bb_private_kernel_prover.js +79 -15
  24. package/dest/prover/proof_utils.d.ts +11 -1
  25. package/dest/prover/proof_utils.d.ts.map +1 -1
  26. package/dest/prover/proof_utils.js +24 -1
  27. package/dest/prover/server/bb_prover.d.ts +6 -7
  28. package/dest/prover/server/bb_prover.d.ts.map +1 -1
  29. package/dest/prover/server/bb_prover.js +207 -80
  30. package/dest/test/delay_values.js +1 -1
  31. package/dest/test/test_circuit_prover.d.ts +3 -3
  32. package/dest/test/test_circuit_prover.d.ts.map +1 -1
  33. package/dest/test/test_circuit_prover.js +2 -2
  34. package/dest/verification_key/verification_key_data.js +1 -1
  35. package/dest/verifier/batch_chonk_verifier.d.ts +56 -0
  36. package/dest/verifier/batch_chonk_verifier.d.ts.map +1 -0
  37. package/dest/verifier/batch_chonk_verifier.js +384 -0
  38. package/dest/verifier/bb_verifier.d.ts +4 -1
  39. package/dest/verifier/bb_verifier.d.ts.map +1 -1
  40. package/dest/verifier/bb_verifier.js +134 -45
  41. package/dest/verifier/index.d.ts +2 -1
  42. package/dest/verifier/index.d.ts.map +1 -1
  43. package/dest/verifier/index.js +1 -0
  44. package/dest/verifier/queued_chonk_verifier.d.ts +2 -3
  45. package/dest/verifier/queued_chonk_verifier.d.ts.map +1 -1
  46. package/dest/verifier/queued_chonk_verifier.js +8 -7
  47. package/package.json +19 -17
  48. package/src/avm_proving_tests/avm_proving_tester.ts +85 -126
  49. package/src/bb/bb_js_backend.ts +435 -0
  50. package/src/bb/bb_js_debug.ts +227 -0
  51. package/src/bb/file_names.ts +6 -0
  52. package/src/config.ts +16 -0
  53. package/src/index.ts +2 -1
  54. package/src/instrumentation.ts +12 -4
  55. package/src/prover/client/bb_private_kernel_prover.ts +242 -21
  56. package/src/prover/proof_utils.ts +41 -1
  57. package/src/prover/server/bb_prover.ts +127 -141
  58. package/src/test/delay_values.ts +1 -1
  59. package/src/test/test_circuit_prover.ts +3 -5
  60. package/src/verification_key/verification_key_data.ts +1 -1
  61. package/src/verifier/batch_chonk_verifier.ts +415 -0
  62. package/src/verifier/bb_verifier.ts +66 -76
  63. package/src/verifier/index.ts +1 -0
  64. package/src/verifier/queued_chonk_verifier.ts +8 -8
  65. package/dest/bb/execute.d.ts +0 -107
  66. package/dest/bb/execute.d.ts.map +0 -1
  67. package/dest/bb/execute.js +0 -647
  68. package/src/bb/execute.ts +0 -678
@@ -1,3 +1,68 @@
1
+ function _ts_add_disposable_resource(env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() {
16
+ try {
17
+ inner.call(this);
18
+ } catch (e) {
19
+ return Promise.reject(e);
20
+ }
21
+ };
22
+ env.stack.push({
23
+ value: value,
24
+ dispose: dispose,
25
+ async: async
26
+ });
27
+ } else if (async) {
28
+ env.stack.push({
29
+ async: true
30
+ });
31
+ }
32
+ return value;
33
+ }
34
+ function _ts_dispose_resources(env) {
35
+ var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
36
+ var e = new Error(message);
37
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
38
+ };
39
+ return (_ts_dispose_resources = function _ts_dispose_resources(env) {
40
+ function fail(e) {
41
+ env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
42
+ env.hasError = true;
43
+ }
44
+ var r, s = 0;
45
+ function next() {
46
+ while(r = env.stack.pop()){
47
+ try {
48
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
49
+ if (r.dispose) {
50
+ var result = r.dispose.call(r.value);
51
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
52
+ fail(e);
53
+ return next();
54
+ });
55
+ } else s |= 1;
56
+ } catch (e) {
57
+ fail(e);
58
+ }
59
+ }
60
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
61
+ if (env.hasError) throw env.error;
62
+ }
63
+ return next();
64
+ })(env);
65
+ }
1
66
  function applyDecs2203RFactory() {
2
67
  function createAddInitializerMethod(initializers, decoratorFinishedRef) {
3
68
  return function addInitializer(initializer) {
@@ -371,11 +436,10 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
371
436
  return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
372
437
  }
373
438
  var _dec, _dec1, _dec2, _initProto;
374
- import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, PAIRING_POINTS_SIZE, RECURSIVE_PROOF_LENGTH, ULTRA_KECCAK_PROOF_LENGTH } from '@aztec/constants';
439
+ import { AVM_V2_PROOF_LENGTH_IN_FIELDS, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, PAIRING_POINTS_SIZE, RECURSIVE_PROOF_LENGTH, ULTRA_KECCAK_PROOF_LENGTH } from '@aztec/constants';
375
440
  import { Fr } from '@aztec/foundation/curves/bn254';
376
441
  import { runInDirectory } from '@aztec/foundation/fs';
377
442
  import { createLogger } from '@aztec/foundation/log';
378
- import { BufferReader } from '@aztec/foundation/serialize';
379
443
  import { convertBlockMergeRollupOutputsFromWitnessMap, convertBlockMergeRollupPrivateInputsToWitnessMap, convertBlockRootEmptyTxFirstRollupOutputsFromWitnessMap, convertBlockRootEmptyTxFirstRollupPrivateInputsToWitnessMap, convertBlockRootFirstRollupOutputsFromWitnessMap, convertBlockRootFirstRollupPrivateInputsToWitnessMap, convertBlockRootRollupOutputsFromWitnessMap, convertBlockRootRollupPrivateInputsToWitnessMap, convertBlockRootSingleTxFirstRollupOutputsFromWitnessMap, convertBlockRootSingleTxFirstRollupPrivateInputsToWitnessMap, convertBlockRootSingleTxRollupOutputsFromWitnessMap, convertBlockRootSingleTxRollupPrivateInputsToWitnessMap, convertCheckpointMergeRollupOutputsFromWitnessMap, convertCheckpointMergeRollupPrivateInputsToWitnessMap, convertCheckpointPaddingRollupOutputsFromWitnessMap, convertCheckpointPaddingRollupPrivateInputsToWitnessMap, convertCheckpointRootRollupOutputsFromWitnessMap, convertCheckpointRootRollupPrivateInputsToWitnessMap, convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap, convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap, convertParityBaseOutputsFromWitnessMap, convertParityBasePrivateInputsToWitnessMap, convertParityRootOutputsFromWitnessMap, convertParityRootPrivateInputsToWitnessMap, convertPrivateTxBaseRollupOutputsFromWitnessMap, convertPrivateTxBaseRollupPrivateInputsToWitnessMap, convertPublicChonkVerifierOutputsFromWitnessMap, convertPublicChonkVerifierPrivateInputsToWitnessMap, convertPublicTxBaseRollupOutputsFromWitnessMap, convertPublicTxBaseRollupPrivateInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap, convertRootRollupPrivateInputsToWitnessMap, convertTxMergeRollupOutputsFromWitnessMap, convertTxMergeRollupPrivateInputsToWitnessMap, getServerCircuitArtifact } from '@aztec/noir-protocol-circuits-types/server';
380
444
  import { ServerCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks';
381
445
  import { mapProtocolArtifactNameToCircuitName } from '@aztec/noir-protocol-circuits-types/types';
@@ -385,11 +449,12 @@ import { makePublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/serv
385
449
  import { Proof, RecursiveProof, makeRecursiveProofFromBinary } from '@aztec/stdlib/proofs';
386
450
  import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
387
451
  import { promises as fs } from 'fs';
452
+ import { ungzip } from 'pako';
388
453
  import * as path from 'path';
389
- import { BB_RESULT, PROOF_FILENAME, PUBLIC_INPUTS_FILENAME, VK_FILENAME, generateAvmProof, generateProof, verifyAvmProof, verifyProof } from '../../bb/execute.js';
454
+ import { BBJsFactory } from '../../bb/bb_js_backend.js';
390
455
  import { getUltraHonkFlavorForCircuit } from '../../honk.js';
391
456
  import { ProverInstrumentation } from '../../instrumentation.js';
392
- import { readProofsFromOutputDirectory } from '../proof_utils.js';
457
+ import { constructRecursiveProofFromBuffers } from '../proof_utils.js';
393
458
  const logger = createLogger('bb-prover');
394
459
  _dec = trackSpan('BBNativeRollupProver.getBaseParityProof', {
395
460
  [Attributes.PROTOCOL_CIRCUIT_NAME]: 'parity-base'
@@ -422,10 +487,15 @@ _dec = trackSpan('BBNativeRollupProver.getBaseParityProof', {
422
487
  ], []));
423
488
  }
424
489
  instrumentation;
490
+ bbJsFactory;
425
491
  constructor(config, telemetry){
426
492
  this.config = config;
427
493
  _initProto(this);
428
494
  this.instrumentation = new ProverInstrumentation(telemetry, 'BBNativeRollupProver');
495
+ this.bbJsFactory = new BBJsFactory(config.bbBinaryPath, {
496
+ logger,
497
+ debugDir: config.bbDebugOutputDir
498
+ });
429
499
  }
430
500
  get tracer() {
431
501
  return this.instrumentation.tracer;
@@ -439,7 +509,7 @@ _dec = trackSpan('BBNativeRollupProver.getBaseParityProof', {
439
509
  await fs.mkdir(config.bbWorkingDirectory, {
440
510
  recursive: true
441
511
  });
442
- logger.info(`Using native BB at ${config.bbBinaryPath} and working directory ${config.bbWorkingDirectory}`);
512
+ logger.info(`Using bb.js API with binary at ${config.bbBinaryPath}`);
443
513
  logger.info(`Using native ACVM at ${config.acvmBinaryPath} and working directory ${config.acvmWorkingDirectory}`);
444
514
  return new BBNativeRollupProver(config, telemetry);
445
515
  }
@@ -545,15 +615,14 @@ _dec = trackSpan('BBNativeRollupProver.getBaseParityProof', {
545
615
  return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
546
616
  }
547
617
  async generateProofWithBB(input, circuitType, convertInput, convertOutput, workingDirectory) {
548
- // Have the ACVM write the partial witness here
618
+ // Have the ACVM write the partial witness here (still needs a temp directory)
549
619
  const outputWitnessFile = path.join(workingDirectory, 'partial-witness.gz');
550
620
  // Generate the partial witness using the ACVM
551
- // A further temp directory will be created beneath ours and then cleaned up after the partial witness has been copied to our specified location
552
- const simulator = new NativeACVMSimulator(this.config.acvmWorkingDirectory, this.config.acvmBinaryPath, outputWitnessFile);
621
+ const simulator = new NativeACVMSimulator(this.config.acvmWorkingDirectory, this.config.acvmBinaryPath, outputWitnessFile, logger);
553
622
  const artifact = getServerCircuitArtifact(circuitType);
554
623
  logger.debug(`Generating witness data for ${circuitType}`);
555
624
  const inputWitness = convertInput(input);
556
- const foreignCallHandler = undefined; // We don't handle foreign calls in the native ACVM simulator
625
+ const foreignCallHandler = undefined;
557
626
  const witnessResult = await simulator.executeProtocolCircuit(inputWitness, artifact, foreignCallHandler);
558
627
  const output = convertOutput(witnessResult.witness);
559
628
  const circuitName = mapProtocolArtifactNameToCircuitName(circuitType);
@@ -567,49 +636,80 @@ _dec = trackSpan('BBNativeRollupProver.getBaseParityProof', {
567
636
  outputSize: output.toBuffer().length,
568
637
  eventName: 'circuit-witness-generation'
569
638
  });
570
- // Now prove the circuit from the generated witness
571
- logger.debug(`Proving ${circuitType}...`);
572
- const provingResult = await generateProof(this.config.bbBinaryPath, workingDirectory, circuitType, Buffer.from(artifact.bytecode, 'base64'), this.getVerificationKeyDataForCircuit(circuitType).keyAsBytes, outputWitnessFile, getUltraHonkFlavorForCircuit(circuitType), logger);
573
- if (provingResult.status === BB_RESULT.FAILURE) {
574
- logger.error(`Failed to generate proof for ${circuitType}: ${provingResult.reason}`);
575
- throw new ProvingError(provingResult.reason, provingResult, provingResult.retry);
639
+ // Read and decompress the witness for bb.js
640
+ const witnessGz = await fs.readFile(outputWitnessFile);
641
+ const witness = ungzip(witnessGz);
642
+ // Decompress bytecode for bb.js
643
+ const bytecode = ungzip(Buffer.from(artifact.bytecode, 'base64'));
644
+ // Prove the circuit via bb.js API
645
+ logger.debug(`Proving ${circuitType} via bb.js...`);
646
+ let proofResult;
647
+ try {
648
+ const env = {
649
+ stack: [],
650
+ error: void 0,
651
+ hasError: false
652
+ };
653
+ try {
654
+ const instance = _ts_add_disposable_resource(env, await this.bbJsFactory.getInstance(), true);
655
+ proofResult = await instance.generateProof(circuitType, bytecode, this.getVerificationKeyDataForCircuit(circuitType).keyAsBytes, witness, getUltraHonkFlavorForCircuit(circuitType));
656
+ } catch (e) {
657
+ env.error = e;
658
+ env.hasError = true;
659
+ } finally{
660
+ const result = _ts_dispose_resources(env);
661
+ if (result) await result;
662
+ }
663
+ } catch (error) {
664
+ throw new ProvingError(`Failed to generate proof for ${circuitType}: ${error}`);
576
665
  }
577
666
  return {
578
667
  circuitOutput: output,
579
- provingResult
668
+ proofResult
580
669
  };
581
670
  }
582
- async generateAvmProofWithBB(input, workingDirectory) {
583
- logger.info(`Proving avm-circuit for TX ${input.hints.tx.hash}...`);
584
- const provingResult = await generateAvmProof(this.config.bbBinaryPath, workingDirectory, input, logger);
585
- if (provingResult.status === BB_RESULT.FAILURE) {
586
- logger.error(`Failed to generate AVM proof for TX ${input.hints.tx.hash}: ${provingResult.reason}`);
587
- throw new ProvingError(provingResult.reason, provingResult, provingResult.retry);
588
- }
589
- return provingResult;
590
- }
591
671
  async createAvmProof(input) {
592
- const operation = async (bbWorkingDirectory)=>{
593
- const provingResult = await this.generateAvmProofWithBB(input, bbWorkingDirectory);
594
- const avmProof = await this.readAvmProofAsFields(provingResult.proofPath);
672
+ const env = {
673
+ stack: [],
674
+ error: void 0,
675
+ hasError: false
676
+ };
677
+ try {
678
+ logger.info(`Proving avm-circuit for TX ${input.hints.tx.hash}...`);
679
+ const inputsBuffer = input.serializeWithMessagePack();
680
+ const instance = _ts_add_disposable_resource(env, await this.bbJsFactory.getInstance(), true);
681
+ const { proof: proofFieldArrays, durationMs } = await instance.generateAvmProof(inputsBuffer);
682
+ // Convert Uint8Array[] (32-byte field elements) to Fr[]
683
+ const proofFields = proofFieldArrays.map((f)=>Fr.fromBuffer(Buffer.from(f)));
684
+ if (proofFields.length !== AVM_V2_PROOF_LENGTH_IN_FIELDS) {
685
+ throw new Error(`Proof has ${proofFields.length} fields, expected exactly ${AVM_V2_PROOF_LENGTH_IN_FIELDS}.`);
686
+ }
687
+ // Build the binary proof from the raw field data
688
+ const rawProofBuffer = Buffer.concat(proofFieldArrays.map((f)=>Buffer.from(f)));
689
+ const binaryProof = new Proof(rawProofBuffer, /*numPublicInputs=*/ 0);
690
+ const avmProof = new RecursiveProof(proofFields, binaryProof, true, AVM_V2_PROOF_LENGTH_IN_FIELDS);
595
691
  const circuitType = 'avm-circuit';
596
692
  const appCircuitName = 'unknown';
597
- this.instrumentation.recordAvmDuration('provingDuration', appCircuitName, provingResult.durationMs);
693
+ this.instrumentation.recordAvmDuration('provingDuration', appCircuitName, durationMs);
598
694
  this.instrumentation.recordAvmSize('proofSize', appCircuitName, avmProof.binaryProof.buffer.length);
599
- logger.info(`Generated proof for ${circuitType}(${input.hints.tx.hash}) in ${Math.ceil(provingResult.durationMs)} ms`, {
695
+ logger.info(`Generated proof for ${circuitType}(${input.hints.tx.hash}) in ${Math.ceil(durationMs)} ms`, {
600
696
  circuitName: circuitType,
601
697
  appCircuitName: input.hints.tx.hash,
602
- // does not include reading the proof from disk
603
- duration: provingResult.durationMs,
698
+ duration: durationMs,
604
699
  proofSize: avmProof.binaryProof.buffer.length,
605
700
  eventName: 'circuit-proving',
606
- inputSize: input.serializeWithMessagePack().length,
701
+ inputSize: inputsBuffer.length,
607
702
  circuitSize: 1 << 21,
608
703
  numPublicInputs: 0
609
704
  });
610
705
  return avmProof;
611
- };
612
- return await this.runInDirectory(operation);
706
+ } catch (e) {
707
+ env.error = e;
708
+ env.hasError = true;
709
+ } finally{
710
+ const result = _ts_dispose_resources(env);
711
+ if (result) await result;
712
+ }
613
713
  }
614
714
  /**
615
715
  * Executes a circuit and returns its outputs and corresponding proof with embedded aggregation object
@@ -620,21 +720,21 @@ _dec = trackSpan('BBNativeRollupProver.getBaseParityProof', {
620
720
  * @param convertOutput - Function for parsing the output witness to it's corresponding object
621
721
  * @returns The circuits output object and it's proof
622
722
  */ async createRecursiveProof(input, circuitType, proofLength, convertInput, convertOutput) {
623
- // this probably is gonna need to call chonk
624
- const operation = async (bbWorkingDirectory)=>{
625
- const { provingResult, circuitOutput: output } = await this.generateProofWithBB(input, circuitType, convertInput, convertOutput, bbWorkingDirectory);
723
+ // Still need runInDirectory for ACVM witness generation temp files
724
+ const operation = async (workingDirectory)=>{
725
+ const { proofResult, circuitOutput: output } = await this.generateProofWithBB(input, circuitType, convertInput, convertOutput, workingDirectory);
626
726
  const vkData = this.getVerificationKeyDataForCircuit(circuitType);
627
- // Read the proof as fields
628
- const proof = await readProofsFromOutputDirectory(provingResult.proofPath, vkData, proofLength, logger);
727
+ // Construct proof from in-memory buffers (no file I/O needed)
728
+ const proof = constructRecursiveProofFromBuffers(proofResult.proofFields, proofResult.publicInputFields, vkData, proofLength);
629
729
  const circuitName = mapProtocolArtifactNameToCircuitName(circuitType);
630
- this.instrumentation.recordDuration('provingDuration', circuitName, provingResult.durationMs);
730
+ this.instrumentation.recordDuration('provingDuration', circuitName, proofResult.durationMs);
631
731
  this.instrumentation.recordSize('proofSize', circuitName, proof.binaryProof.buffer.length);
632
732
  this.instrumentation.recordSize('circuitPublicInputCount', circuitName, vkData.numPublicInputs);
633
733
  this.instrumentation.recordSize('circuitSize', circuitName, vkData.circuitSize);
634
- logger.info(`Generated proof for ${circuitType} in ${Math.ceil(provingResult.durationMs)} ms, size: ${proof.proof.length} fields`, {
734
+ logger.info(`Generated proof for ${circuitType} in ${Math.ceil(proofResult.durationMs)} ms, size: ${proof.proof.length} fields`, {
635
735
  circuitName,
636
736
  circuitSize: vkData.circuitSize,
637
- duration: provingResult.durationMs,
737
+ duration: proofResult.durationMs,
638
738
  inputSize: output.toBuffer().length,
639
739
  proofSize: proof.binaryProof.buffer.length,
640
740
  eventName: 'circuit-proving',
@@ -648,35 +748,69 @@ _dec = trackSpan('BBNativeRollupProver.getBaseParityProof', {
648
748
  return await this.runInDirectory(operation);
649
749
  }
650
750
  /**
651
- * Verifies a proof, will generate the verification key if one is not cached internally
751
+ * Verifies a proof via bb.js API (no temp files needed).
652
752
  * @param circuitType - The type of circuit whose proof is to be verified
653
753
  * @param proof - The proof to be verified
654
754
  */ async verifyProof(circuitType, proof) {
655
755
  const verificationKey = this.getVerificationKeyDataForCircuit(circuitType);
656
- return await this.verifyInternal(proof, verificationKey, (proofPath, vkPath)=>verifyProof(this.config.bbBinaryPath, proofPath, vkPath, getUltraHonkFlavorForCircuit(circuitType), logger));
657
- }
658
- async verifyAvmProof(proof, publicInputs) {
659
- return await this.verifyInternal(proof, /*verificationKey=*/ undefined, (proofPath, /*unused*/ _vkPath)=>verifyAvmProof(this.config.bbBinaryPath, this.config.bbWorkingDirectory, proofPath, publicInputs, logger));
660
- }
661
- async verifyInternal(proof, verificationKey, verificationFunction) {
662
- const operation = async (bbWorkingDirectory)=>{
663
- const publicInputsFileName = path.join(bbWorkingDirectory, PUBLIC_INPUTS_FILENAME);
664
- const proofFileName = path.join(bbWorkingDirectory, PROOF_FILENAME);
665
- const verificationKeyPath = path.join(bbWorkingDirectory, VK_FILENAME);
666
- // TODO(https://github.com/AztecProtocol/aztec-packages/issues/13189): Put this proof parsing logic in the proof class.
667
- await fs.writeFile(publicInputsFileName, proof.buffer.subarray(0, proof.numPublicInputs * 32));
668
- await fs.writeFile(proofFileName, proof.buffer.subarray(proof.numPublicInputs * 32));
669
- if (verificationKey !== undefined) {
670
- await fs.writeFile(verificationKeyPath, verificationKey.keyAsBytes);
671
- }
672
- const result = await verificationFunction(proofFileName, verificationKeyPath);
673
- if (result.status === BB_RESULT.FAILURE) {
674
- const errorMessage = `Failed to verify proof from key!`;
675
- throw new ProvingError(errorMessage, result, result.retry);
756
+ const flavor = getUltraHonkFlavorForCircuit(circuitType);
757
+ // Split proof buffer into public input fields and proof fields (32-byte each)
758
+ const publicInputFields = splitBufferToFieldArrays(proof.buffer.subarray(0, proof.numPublicInputs * 32));
759
+ const proofFields = splitBufferToFieldArrays(proof.buffer.subarray(proof.numPublicInputs * 32));
760
+ let verified;
761
+ let durationMs;
762
+ try {
763
+ const env = {
764
+ stack: [],
765
+ error: void 0,
766
+ hasError: false
767
+ };
768
+ try {
769
+ const instance = _ts_add_disposable_resource(env, await this.bbJsFactory.getInstance(), true);
770
+ ({ verified, durationMs } = await instance.verifyProof(proofFields, verificationKey.keyAsBytes, publicInputFields, flavor));
771
+ } catch (e) {
772
+ env.error = e;
773
+ env.hasError = true;
774
+ } finally{
775
+ const result = _ts_dispose_resources(env);
776
+ if (result) await result;
676
777
  }
677
- logger.info(`Successfully verified proof from key in ${result.durationMs} ms`);
778
+ } catch (error) {
779
+ throw new ProvingError(`Failed to verify proof for ${circuitType}: ${error}`);
780
+ }
781
+ if (!verified) {
782
+ throw new ProvingError('Failed to verify proof from key!');
783
+ }
784
+ logger.info(`Successfully verified proof from key in ${durationMs} ms`);
785
+ }
786
+ /** Verify an AVM proof via bb.js API. */ async verifyAvmProof(proof, publicInputs) {
787
+ const env = {
788
+ stack: [],
789
+ error: void 0,
790
+ hasError: false
678
791
  };
679
- await this.runInDirectory(operation);
792
+ try {
793
+ // For AVM proofs, numPublicInputs is 0, so the full buffer is the proof.
794
+ const proofBuffer = proof.buffer.subarray(proof.numPublicInputs * 32);
795
+ // Split the raw proof buffer into 32-byte field element arrays
796
+ const proofFields = [];
797
+ for(let i = 0; i < proofBuffer.length; i += Fr.SIZE_IN_BYTES){
798
+ proofFields.push(new Uint8Array(proofBuffer.subarray(i, i + Fr.SIZE_IN_BYTES)));
799
+ }
800
+ const piBuffer = publicInputs.serializeWithMessagePack();
801
+ const instance = _ts_add_disposable_resource(env, await this.bbJsFactory.getInstance(), true);
802
+ const { verified, durationMs } = await instance.verifyAvmProof(proofFields, piBuffer);
803
+ if (!verified) {
804
+ throw new ProvingError('Failed to verify AVM proof!');
805
+ }
806
+ logger.info(`Successfully verified AVM proof in ${durationMs} ms`);
807
+ } catch (e) {
808
+ env.error = e;
809
+ env.hasError = true;
810
+ } finally{
811
+ const result = _ts_dispose_resources(env);
812
+ if (result) await result;
813
+ }
680
814
  }
681
815
  /**
682
816
  * Returns the verification key data for a circuit.
@@ -689,20 +823,6 @@ _dec = trackSpan('BBNativeRollupProver.getBaseParityProof', {
689
823
  }
690
824
  return vk;
691
825
  }
692
- async readAvmProofAsFields(proofFilename) {
693
- const rawProofBuffer = await fs.readFile(proofFilename);
694
- const reader = BufferReader.asReader(rawProofBuffer);
695
- const proofFields = reader.readArray(rawProofBuffer.length / Fr.SIZE_IN_BYTES, Fr);
696
- // We extend to a fixed-size padded proof as during development any new AVM circuit column changes the
697
- // proof length and we do not have a mechanism to feedback a cpp constant to noir/TS.
698
- // TODO(#13390): Revive a non-padded AVM proof
699
- if (proofFields.length > AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED) {
700
- throw new Error(`Proof has ${proofFields.length} fields, expected no more than ${AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED}.`);
701
- }
702
- const proofFieldsPadded = proofFields.concat(Array(AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED - proofFields.length).fill(new Fr(0)));
703
- const proof = new Proof(rawProofBuffer, /*numPublicInputs=*/ 0);
704
- return new RecursiveProof(proofFieldsPadded, proof, true, AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED);
705
- }
706
826
  runInDirectory(fn) {
707
827
  return runInDirectory(this.config.bbWorkingDirectory, (dir)=>fn(dir).catch((err)=>{
708
828
  logger.error(`Error running operation at ${dir}: ${err}`);
@@ -710,3 +830,10 @@ _dec = trackSpan('BBNativeRollupProver.getBaseParityProof', {
710
830
  }), this.config.bbSkipCleanup, logger);
711
831
  }
712
832
  }
833
+ /** Split a buffer into 32-byte Uint8Array field elements. */ function splitBufferToFieldArrays(buffer) {
834
+ const fields = [];
835
+ for(let i = 0; i < buffer.length; i += 32){
836
+ fields.push(new Uint8Array(buffer.subarray(i, i + 32)));
837
+ }
838
+ return fields;
839
+ }
@@ -32,7 +32,7 @@ export const PROOF_DELAY_MS = {
32
32
  [ProvingRequestType.ROOT_ROLLUP]: 93_000,
33
33
  [ProvingRequestType.TX_MERGE_ROLLUP]: 10_000,
34
34
  [ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: 44_500,
35
- [ProvingRequestType.PUBLIC_VM]: 10_000,
35
+ [ProvingRequestType.PUBLIC_VM]: 180_000,
36
36
  // TBD
37
37
  [ProvingRequestType.BLOCK_MERGE_ROLLUP]: 15_000,
38
38
  [ProvingRequestType.BLOCK_ROOT_ROLLUP]: 35_000,
@@ -1,4 +1,4 @@
1
- import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH } from '@aztec/constants';
1
+ import { AVM_V2_PROOF_LENGTH_IN_FIELDS, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH } from '@aztec/constants';
2
2
  import { type ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/server';
3
3
  import { type CircuitSimulator } from '@aztec/simulator/server';
4
4
  import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
@@ -63,10 +63,10 @@ export declare class TestCircuitProver implements ServerCircuitProver {
63
63
  * @returns The public inputs as outputs of the simulation.
64
64
  */
65
65
  getRootRollupProof(input: RootRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs>>;
66
- getAvmProof(_inputs: AvmCircuitInputs): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>>;
66
+ getAvmProof(_inputs: AvmCircuitInputs): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>>;
67
67
  private applyDelay;
68
68
  verifyProof(_1: ServerProtocolArtifact, _2: Proof): Promise<void>;
69
69
  private simulate;
70
70
  }
71
71
  export {};
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jaXJjdWl0X3Byb3Zlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvdGVzdF9jaXJjdWl0X3Byb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsb0NBQW9DLEVBQ3BDLDZCQUE2QixFQUM3Qix5Q0FBeUMsRUFDekMsc0JBQXNCLEVBQ3ZCLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsT0FBTyxFQUNMLEtBQUssc0JBQXNCLEVBbUM1QixNQUFNLDRDQUE0QyxDQUFDO0FBSXBELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFzRCxNQUFNLHlCQUF5QixDQUFDO0FBQ3BILE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUNMLEtBQUssNkJBQTZCLEVBQ2xDLEtBQUssbUJBQW1CLEVBRXpCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqSCxPQUFPLEVBQ0wsS0FBSyxLQUFLLEVBRVYsY0FBYyxFQUdmLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLEtBQUssNkJBQTZCLEVBQ2xDLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssd0NBQXdDLEVBQzdDLEtBQUssaUNBQWlDLEVBQ3RDLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUsseUNBQXlDLEVBQzlDLEtBQUssb0NBQW9DLEVBQ3pDLEtBQUssa0NBQWtDLEVBQ3ZDLEtBQUssb0NBQW9DLEVBQ3pDLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUssaUNBQWlDLEVBQ3RDLEtBQUssNENBQTRDLEVBQ2pELEtBQUssZ0NBQWdDLEVBQ3JDLEtBQUssZ0NBQWdDLEVBQ3JDLCtCQUErQixFQUMvQixLQUFLLCtCQUErQixFQUNwQyxLQUFLLHVCQUF1QixFQUM1QixLQUFLLHNC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
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jaXJjdWl0X3Byb3Zlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvdGVzdF9jaXJjdWl0X3Byb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3Qix5Q0FBeUMsRUFDekMsc0JBQXNCLEVBQ3ZCLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsT0FBTyxFQUNMLEtBQUssc0JBQXNCLEVBbUM1QixNQUFNLDRDQUE0QyxDQUFDO0FBSXBELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFzRCxNQUFNLHlCQUF5QixDQUFDO0FBQ3BILE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUNMLEtBQUssNkJBQTZCLEVBQ2xDLEtBQUssbUJBQW1CLEVBRXpCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqSCxPQUFPLEVBQ0wsS0FBSyxLQUFLLEVBRVYsY0FBYyxFQUdmLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLEtBQUssNkJBQTZCLEVBQ2xDLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssd0NBQXdDLEVBQzdDLEtBQUssaUNBQWlDLEVBQ3RDLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUsseUNBQXlDLEVBQzlDLEtBQUssb0NBQW9DLEVBQ3pDLEtBQUssa0NBQWtDLEVBQ3ZDLEtBQUssb0NBQW9DLEVBQ3pDLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUssaUNBQWlDLEVBQ3RDLEtBQUssNENBQTRDLEVBQ2pELEtBQUssZ0NBQWdDLEVBQ3JDLEtBQUssZ0NBQWdDLEVBQ3JDLCtCQUErQixFQUMvQixLQUFLLCtCQUErQixFQUNwQyxLQUFLLHVCQUF1QixFQUM1QixLQUFLLHNC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
@@ -1 +1 @@
1
- {"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../src/test/test_circuit_prover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../src/test/test_circuit_prover.ts"],"names":[],"mappings":"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"}
@@ -371,7 +371,7 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
371
371
  return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
372
372
  }
373
373
  var _dec, _dec1, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _initProto;
374
- import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH } from '@aztec/constants';
374
+ import { AVM_V2_PROOF_LENGTH_IN_FIELDS, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH } from '@aztec/constants';
375
375
  import { createLogger } from '@aztec/foundation/log';
376
376
  import { sleep } from '@aztec/foundation/sleep';
377
377
  import { Timer } from '@aztec/foundation/timer';
@@ -563,7 +563,7 @@ _dec = trackSpan('TestCircuitProver.getBaseParityProof'), _dec1 = trackSpan('Tes
563
563
  // We can't simulate the AVM because we don't have enough context to do so (e.g., DBs).
564
564
  // We just return an empty proof.
565
565
  this.logger.debug('Skipping AVM simulation in TestCircuitProver.');
566
- return this.applyDelay(ProvingRequestType.PUBLIC_VM, ()=>makeEmptyRecursiveProof(AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED));
566
+ return this.applyDelay(ProvingRequestType.PUBLIC_VM, ()=>makeEmptyRecursiveProof(AVM_V2_PROOF_LENGTH_IN_FIELDS));
567
567
  }
568
568
  async applyDelay(type, fn) {
569
569
  const timer = new Timer();
@@ -3,7 +3,7 @@ import { BufferReader } from '@aztec/foundation/serialize';
3
3
  import { VerificationKeyAsFields, VerificationKeyData } from '@aztec/stdlib/vks';
4
4
  import { promises as fs } from 'fs';
5
5
  import * as path from 'path';
6
- import { VK_FILENAME } from '../bb/execute.js';
6
+ import { VK_FILENAME } from '../bb/file_names.js';
7
7
  /**
8
8
  * Reads the verification key data stored at the specified location and parses into a VerificationKeyData
9
9
  * @param vkDirectoryPath - The directory containing the verification key data files
@@ -0,0 +1,56 @@
1
+ import type { ClientProtocolCircuitVerifier, IVCProofVerificationResult } from '@aztec/stdlib/interfaces/server';
2
+ import type { Tx } from '@aztec/stdlib/tx';
3
+ import type { BBConfig } from '../config.js';
4
+ /**
5
+ * Batch verifier for Chonk IVC proofs. Uses the bb batch verifier service
6
+ * which batches IPA verification into a constant number of SRS MSMs for better throughput.
7
+ *
8
+ * Architecture:
9
+ * - Spawns a persistent `bb msgpack run` process via Barretenberg (native backend)
10
+ * - Sends proofs via the msgpack RPC protocol (ChonkBatchVerifierQueue)
11
+ * - Receives results via a named FIFO pipe (async, out-of-order)
12
+ * - Bisects batch failures to isolate individual bad proofs
13
+ */
14
+ export declare class BatchChonkVerifier implements ClientProtocolCircuitVerifier {
15
+ private config;
16
+ private vkBuffers;
17
+ private batchSize;
18
+ private label;
19
+ private bb;
20
+ private fifoDir;
21
+ private fifoPath;
22
+ private nextRequestId;
23
+ private pendingRequests;
24
+ private sendQueue;
25
+ private fifoReader;
26
+ private logger;
27
+ /** Maps artifact name to VK index in the batch verifier. */
28
+ private vkIndexMap;
29
+ /** Bound cleanup handler for process exit signals. */
30
+ private exitCleanup;
31
+ private stopped;
32
+ private fatalError;
33
+ private pendingDrainedResolvers;
34
+ private constructor();
35
+ /** Create and start a BatchChonkVerifier using the protocol circuit VKs. */
36
+ static new(config: BBConfig, batchSize: number, label: string): Promise<BatchChonkVerifier>;
37
+ /** Create and start a BatchChonkVerifier with custom VKs (for testing). */
38
+ static newForTesting(config: Pick<BBConfig, 'bbChonkVerifyConcurrency'> & Partial<Pick<BBConfig, 'bbBinaryPath'>>, vks: Uint8Array[], batchSize: number): Promise<BatchChonkVerifier>;
39
+ private start;
40
+ verifyProof(tx: Tx): Promise<IVCProofVerificationResult>;
41
+ /** Enqueue raw proof fields for verification. Used directly by tests with custom VKs. */
42
+ enqueueProof(vkIndex: number, proofFields: Uint8Array[]): Promise<IVCProofVerificationResult>;
43
+ stop(): Promise<void>;
44
+ private withTimeout;
45
+ private startFifoReader;
46
+ private handleResult;
47
+ private registerExitCleanup;
48
+ private deregisterExitCleanup;
49
+ private rejectPendingRequests;
50
+ private failVerifier;
51
+ private waitForPendingRequestsToDrain;
52
+ private notifyPendingDrained;
53
+ private cleanupFifo;
54
+ private cleanupFifoSync;
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hfY2hvbmtfdmVyaWZpZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci9iYXRjaF9jaG9ua192ZXJpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pILE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBVTNDLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQXdCN0M7Ozs7Ozs7OztHQVNHO0FBQ0gscUJBQWEsa0JBQW1CLFlBQVcsNkJBQTZCO0lBa0JwRSxPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxLQUFLO0lBcEJmLE9BQU8sQ0FBQyxFQUFFLENBQWdCO0lBQzFCLE9BQU8sQ0FBQyxPQUFPLENBQXFCO0lBQ3BDLE9BQU8sQ0FBQyxRQUFRLENBQU07SUFDdEIsT0FBTyxDQUFDLGFBQWEsQ0FBSztJQUMxQixPQUFPLENBQUMsZUFBZSxDQUFxQztJQUM1RCxPQUFPLENBQUMsU0FBUyxDQUFjO0lBQy9CLE9BQU8sQ0FBQyxVQUFVLENBQWtCO0lBQ3BDLE9BQU8sQ0FBQyxNQUFNLENBQWtEO0lBQ2hFLDREQUE0RDtJQUM1RCxPQUFPLENBQUMsVUFBVSxDQUE2QjtJQUMvQyxzREFBc0Q7SUFDdEQsT0FBTyxDQUFDLFdBQVcsQ0FBNkI7SUFDaEQsT0FBTyxDQUFDLE9BQU8sQ0FBUztJQUN4QixPQUFPLENBQUMsVUFBVSxDQUFvQjtJQUN0QyxPQUFPLENBQUMsdUJBQXVCLENBQXlCO0lBRXhELE9BQU8sZUFTTjtJQUVELDRFQUE0RTtJQUM1RSxPQUFhLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FlaEc7SUFFRCwyRUFBMkU7SUFDM0UsT0FBYSxhQUFhLENBQ3hCLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLDBCQUEwQixDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUMsRUFDNUYsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUNqQixTQUFTLEVBQUUsTUFBTSxHQUNoQixPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FPN0I7WUFFYSxLQUFLO0lBaUNaLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQWU5RDtJQUVELHlGQUF5RjtJQUNsRixZQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBa0RuRztJQUVZLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBK0JqQztZQU9hLFdBQVc7SUFrQnpCLE9BQU8sQ0FBQyxlQUFlO0lBNkJ2QixPQUFPLENBQUMsWUFBWTtJQTZCcEIsT0FBTyxDQUFDLG1CQUFtQjtJQU8zQixPQUFPLENBQUMscUJBQXFCO0lBTzdCLE9BQU8sQ0FBQyxxQkFBcUI7SUFTN0IsT0FBTyxDQUFDLFlBQVk7SUFPcEIsT0FBTyxDQUFDLDZCQUE2QjtJQTBCckMsT0FBTyxDQUFDLG9CQUFvQjtZQVNkLFdBQVc7SUFVekIsT0FBTyxDQUFDLGVBQWU7Q0FXeEIifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch_chonk_verifier.d.ts","sourceRoot":"","sources":["../../src/verifier/batch_chonk_verifier.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AACjH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAU3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAwB7C;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,YAAW,6BAA6B;IAkBpE,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK;IApBf,OAAO,CAAC,EAAE,CAAgB;IAC1B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAAkD;IAChE,4DAA4D;IAC5D,OAAO,CAAC,UAAU,CAA6B;IAC/C,sDAAsD;IACtD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,uBAAuB,CAAyB;IAExD,OAAO,eASN;IAED,4EAA4E;IAC5E,OAAa,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAehG;IAED,2EAA2E;IAC3E,OAAa,aAAa,CACxB,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,0BAA0B,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,EAC5F,GAAG,EAAE,UAAU,EAAE,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAO7B;YAEa,KAAK;IAiCZ,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAe9D;IAED,yFAAyF;IAClF,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAkDnG;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA+BjC;YAOa,WAAW;IAkBzB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,6BAA6B;IA0BrC,OAAO,CAAC,oBAAoB;YASd,WAAW;IAUzB,OAAO,CAAC,eAAe;CAWxB"}