@aztec/bb-prover 0.71.0 → 0.73.0

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 (33) hide show
  1. package/dest/avm_proving_tests/avm_proving_tester.d.ts +24 -0
  2. package/dest/avm_proving_tests/avm_proving_tester.d.ts.map +1 -0
  3. package/dest/avm_proving_tests/avm_proving_tester.js +104 -0
  4. package/dest/bb/cli.d.ts.map +1 -1
  5. package/dest/bb/cli.js +1 -52
  6. package/dest/bb/execute.d.ts +0 -16
  7. package/dest/bb/execute.d.ts.map +1 -1
  8. package/dest/bb/execute.js +10 -99
  9. package/dest/prover/bb_private_kernel_prover.d.ts.map +1 -1
  10. package/dest/prover/bb_private_kernel_prover.js +10 -2
  11. package/dest/prover/bb_prover.d.ts +2 -15
  12. package/dest/prover/bb_prover.d.ts.map +1 -1
  13. package/dest/prover/bb_prover.js +25 -57
  14. package/dest/prover/client_ivc_proof_utils.d.ts +2 -0
  15. package/dest/prover/client_ivc_proof_utils.d.ts.map +1 -1
  16. package/dest/prover/client_ivc_proof_utils.js +6 -4
  17. package/dest/verification_key/verification_key_data.js +2 -2
  18. package/dest/verifier/bb_verifier.d.ts +2 -6
  19. package/dest/verifier/bb_verifier.d.ts.map +1 -1
  20. package/dest/verifier/bb_verifier.js +13 -37
  21. package/package.json +12 -10
  22. package/src/avm_proving_tests/avm_proving_tester.ts +175 -0
  23. package/src/bb/cli.ts +0 -76
  24. package/src/bb/execute.ts +9 -143
  25. package/src/prover/bb_private_kernel_prover.ts +9 -1
  26. package/src/prover/bb_prover.ts +36 -89
  27. package/src/prover/client_ivc_proof_utils.ts +6 -3
  28. package/src/verification_key/verification_key_data.ts +1 -1
  29. package/src/verifier/bb_verifier.ts +16 -94
  30. package/dest/test/test_avm.d.ts +0 -4
  31. package/dest/test/test_avm.d.ts.map +0 -1
  32. package/dest/test/test_avm.js +0 -33
  33. package/src/test/test_avm.ts +0 -85
@@ -1 +1 @@
1
- {"version":3,"file":"bb_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../src/prover/bb_private_kernel_prover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bb_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../src/prover/bb_private_kernel_prover.ts"],"names":[],"mappings":"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"}
@@ -48,7 +48,15 @@ export class BBPrivateKernelProver {
48
48
  const compiledCircuit = await this.artifactProvider.getSimulatedClientCircuitArtifactByName(circuitType);
49
49
  const witnessMap = convertInputs(inputs, compiledCircuit.abi);
50
50
  const timer = new Timer();
51
- const outputWitness = await this.simulationProvider.executeProtocolCircuit(witnessMap, compiledCircuit);
51
+ const outputWitness = await this.simulationProvider
52
+ .executeProtocolCircuit(witnessMap, compiledCircuit)
53
+ .catch((err) => {
54
+ this.log.debug(`Failed to simulate ${circuitType}`, {
55
+ circuitName: mapProtocolArtifactNameToCircuitName(circuitType),
56
+ error: err,
57
+ });
58
+ throw err;
59
+ });
52
60
  const output = convertOutputs(outputWitness, compiledCircuit.abi);
53
61
  this.log.debug(`Simulated ${circuitType}`, {
54
62
  eventName: 'circuit-simulation',
@@ -99,4 +107,4 @@ export class BBPrivateKernelProver {
99
107
  throw new Error('Not implemented');
100
108
  }
101
109
  }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfcHJpdmF0ZV9rZXJuZWxfcHJvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci9iYl9wcml2YXRlX2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsaURBQWlELEVBQ2pELG9EQUFvRCxFQUNwRCxrREFBa0QsRUFDbEQscURBQXFELEVBQ3JELGtEQUFrRCxFQUNsRCxxREFBcUQsRUFDckQsNkRBQTZELEVBQzdELGlEQUFpRCxFQUNqRCxvREFBb0QsRUFDcEQseURBQXlELEVBQ3pELGlDQUFpQyxFQUNqQyw4QkFBOEIsR0FDL0IsTUFBTSw0Q0FBNEMsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQU0zRSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkUsTUFBTSxPQUFnQixxQkFBcUI7SUFDekMsWUFDWSxnQkFBa0MsRUFDbEMsa0JBQXNDLEVBQ3RDLE1BQU0sWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUYvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsUUFBRyxHQUFILEdBQUcsQ0FBNEI7SUFDeEMsQ0FBQztJQUVHLEtBQUssQ0FBQyxrQkFBa0IsQ0FDN0IsTUFBNkM7UUFFN0MsT0FBTyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FDckMsTUFBTSxFQUNOLDJCQUEyQixFQUMzQixpREFBaUQsRUFDakQsb0RBQW9ELENBQ3JELENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FDdkIsTUFBNkM7UUFFN0MsT0FBTyxNQUFNLElBQUksQ0FBQyxxQkFBcUIs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
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfcHJpdmF0ZV9rZXJuZWxfcHJvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci9iYl9wcml2YXRlX2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsaURBQWlELEVBQ2pELG9EQUFvRCxFQUNwRCxrREFBa0QsRUFDbEQscURBQXFELEVBQ3JELGtEQUFrRCxFQUNsRCxxREFBcUQsRUFDckQsNkRBQTZELEVBQzdELGlEQUFpRCxFQUNqRCxvREFBb0QsRUFDcEQseURBQXlELEVBQ3pELGlDQUFpQyxFQUNqQyw4QkFBOEIsR0FDL0IsTUFBTSw0Q0FBNEMsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQU0zRSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkUsTUFBTSxPQUFnQixxQkFBcUI7SUFDekMsWUFDWSxnQkFBa0MsRUFDbEMsa0JBQXNDLEVBQ3RDLE1BQU0sWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUYvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsUUFBRyxHQUFILEdBQUcsQ0FBNEI7SUFDeEMsQ0FBQztJQUVHLEtBQUssQ0FBQyxrQkFBa0IsQ0FDN0IsTUFBNkM7UUFFN0MsT0FBTyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FDckMsTUFBTSxFQUNOLDJCQUEyQixFQUMzQixpREFBaUQsRUFDakQsb0RBQW9ELENBQ3JELENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FDdkIsTUFBNkM7UUFFN0MsT0FBTyxNQUFNLElBQUksQ0FBQyxxQkFBcUIs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
@@ -1,5 +1,5 @@
1
1
  import { type ProofAndVerificationKey, type PublicInputsAndRecursiveProof, type ServerCircuitProver } from '@aztec/circuit-types';
2
- import { AVM_PROOF_LENGTH_IN_FIELDS, type AvmCircuitInputs, type BaseParityInputs, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, type ParityPublicInputs, Proof, RECURSIVE_PROOF_LENGTH, RecursiveProof, type RootParityInputs, TUBE_PROOF_LENGTH, type VerificationKeyAsFields, type VerificationKeyData } from '@aztec/circuits.js';
2
+ import { AVM_PROOF_LENGTH_IN_FIELDS, type AvmCircuitInputs, type BaseParityInputs, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, type ParityPublicInputs, Proof, RECURSIVE_PROOF_LENGTH, RecursiveProof, type RootParityInputs, TUBE_PROOF_LENGTH, type VerificationKeyData } from '@aztec/circuits.js';
3
3
  import { type BaseOrMergeRollupPublicInputs, type BlockMergeRollupInputs, type BlockRootOrBlockMergePublicInputs, type BlockRootRollupInputs, type EmptyBlockRootRollupInputs, type MergeRollupInputs, type PrivateBaseRollupInputs, type PublicBaseRollupInputs, type RootRollupInputs, type RootRollupPublicInputs, type SingleTxBlockRootRollupInputs, type TubeInputs } from '@aztec/circuits.js/rollup';
4
4
  import { type ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/server';
5
5
  import { type TelemetryClient } from '@aztec/telemetry-client';
@@ -13,7 +13,6 @@ export interface BBProverConfig extends BBConfig, ACVMConfig {
13
13
  */
14
14
  export declare class BBNativeRollupProver implements ServerCircuitProver {
15
15
  private config;
16
- private verificationKeys;
17
16
  private instrumentation;
18
17
  constructor(config: BBProverConfig, telemetry: TelemetryClient);
19
18
  get tracer(): import("@aztec/telemetry-client").Tracer;
@@ -104,12 +103,6 @@ export declare class BBNativeRollupProver implements ServerCircuitProver {
104
103
  verifyAvmProof(proof: Proof, verificationKey: VerificationKeyData): Promise<void>;
105
104
  verifyWithKey(flavor: UltraHonkFlavor, verificationKey: VerificationKeyData, proof: Proof): Promise<void>;
106
105
  private verifyWithKeyInternal;
107
- /**
108
- * Returns the verification key for a circuit, will generate it if not cached internally
109
- * @param circuitType - The type of circuit for which the verification key is required
110
- * @returns The verification key
111
- */
112
- getVerificationKeyForCircuit(circuitType: ServerProtocolArtifact): Promise<VerificationKeyAsFields>;
113
106
  /**
114
107
  * Will check a recursive proof argument for validity of it's 'fields' format of proof and convert if required
115
108
  * @param proof - The input proof that may need converting
@@ -118,17 +111,11 @@ export declare class BBNativeRollupProver implements ServerCircuitProver {
118
111
  ensureValidProof(proof: RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>, // WORKTODO
119
112
  circuit: ServerProtocolArtifact, vk: VerificationKeyData): Promise<RecursiveProof<459>>;
120
113
  /**
121
- * Returns the verification key data for a circuit, will generate and cache it if not cached internally
114
+ * Returns the verification key data for a circuit.
122
115
  * @param circuitType - The type of circuit for which the verification key is required
123
116
  * @returns The verification key data
124
117
  */
125
118
  private getVerificationKeyDataForCircuit;
126
- /**
127
- * Ensures our verification key cache includes the key data located at the specified directory
128
- * @param filePath - The directory containing the verification key data files
129
- * @param circuitType - The type of circuit to which the verification key corresponds
130
- */
131
- private updateVerificationKeyAfterProof;
132
119
  private readProofAsFields;
133
120
  private readAvmProofAsFields;
134
121
  private runInDirectory;
@@ -1 +1 @@
1
- {"version":3,"file":"bb_prover.d.ts","sourceRoot":"","sources":["../../src/prover/bb_prover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bb_prover.d.ts","sourceRoot":"","sources":["../../src/prover/bb_prover.ts"],"names":[],"mappings":"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"}
@@ -7,13 +7,14 @@ import { createLogger } from '@aztec/foundation/log';
7
7
  import { BufferReader } from '@aztec/foundation/serialize';
8
8
  import { Timer } from '@aztec/foundation/timer';
9
9
  import { ServerCircuitArtifacts, convertBaseParityInputsToWitnessMap, convertBaseParityOutputsFromWitnessMap, convertBlockMergeRollupInputsToWitnessMap, convertBlockMergeRollupOutputsFromWitnessMap, convertBlockRootRollupInputsToWitnessMap, convertBlockRootRollupOutputsFromWitnessMap, convertEmptyBlockRootRollupInputsToWitnessMap, convertEmptyBlockRootRollupOutputsFromWitnessMap, convertMergeRollupInputsToWitnessMap, convertMergeRollupOutputsFromWitnessMap, convertPrivateBaseRollupInputsToWitnessMap, convertPrivateBaseRollupOutputsFromWitnessMap, convertPublicBaseRollupInputsToWitnessMap, convertPublicBaseRollupOutputsFromWitnessMap, convertRootParityInputsToWitnessMap, convertRootParityOutputsFromWitnessMap, convertRootRollupInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap, convertSingleTxBlockRootRollupInputsToWitnessMap, convertSingleTxBlockRootRollupOutputsFromWitnessMap, } from '@aztec/noir-protocol-circuits-types/server';
10
+ import { ServerCircuitVks } from '@aztec/noir-protocol-circuits-types/vks';
10
11
  import { NativeACVMSimulator } from '@aztec/simulator/server';
11
12
  import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
12
13
  import { assert } from 'console';
13
14
  import crypto from 'crypto';
14
15
  import { promises as fs } from 'fs';
15
16
  import * as path from 'path';
16
- import { BB_RESULT, PROOF_FIELDS_FILENAME, PROOF_FILENAME, VK_FILENAME, generateAvmProof, generateKeyForNoirCircuit, generateProof, generateTubeProof, verifyAvmProof, verifyProof, writeProofAsFields, } from '../bb/execute.js';
17
+ import { BB_RESULT, PROOF_FIELDS_FILENAME, PROOF_FILENAME, VK_FILENAME, generateAvmProof, generateProof, generateTubeProof, verifyAvmProof, verifyProof, writeProofAsFields, } from '../bb/execute.js';
17
18
  import { getUltraHonkFlavorForCircuit } from '../honk.js';
18
19
  import { ProverInstrumentation } from '../instrumentation.js';
19
20
  import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
@@ -34,7 +35,6 @@ let BBNativeRollupProver = (() => {
34
35
  return _a = class BBNativeRollupProver {
35
36
  constructor(config, telemetry) {
36
37
  this.config = (__runInitializers(this, _instanceExtraInitializers), config);
37
- this.verificationKeys = new Map();
38
38
  this.instrumentation = new ProverInstrumentation(telemetry, 'BBNativeRollupProver');
39
39
  }
40
40
  get tracer() {
@@ -56,7 +56,7 @@ let BBNativeRollupProver = (() => {
56
56
  */
57
57
  async getBaseParityProof(inputs) {
58
58
  const { circuitOutput, proof } = await this.createRecursiveProof(inputs, 'BaseParityArtifact', RECURSIVE_PROOF_LENGTH, convertBaseParityInputsToWitnessMap, convertBaseParityOutputsFromWitnessMap);
59
- const verificationKey = await this.getVerificationKeyDataForCircuit('BaseParityArtifact');
59
+ const verificationKey = this.getVerificationKeyDataForCircuit('BaseParityArtifact');
60
60
  await this.verifyProof('BaseParityArtifact', proof.binaryProof);
61
61
  return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
62
62
  }
@@ -67,7 +67,7 @@ let BBNativeRollupProver = (() => {
67
67
  */
68
68
  async getRootParityProof(inputs) {
69
69
  const { circuitOutput, proof } = await this.createRecursiveProof(inputs, 'RootParityArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertRootParityInputsToWitnessMap, convertRootParityOutputsFromWitnessMap);
70
- const verificationKey = await this.getVerificationKeyDataForCircuit('RootParityArtifact');
70
+ const verificationKey = this.getVerificationKeyDataForCircuit('RootParityArtifact');
71
71
  await this.verifyProof('RootParityArtifact', proof.binaryProof);
72
72
  return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
73
73
  }
@@ -89,7 +89,7 @@ let BBNativeRollupProver = (() => {
89
89
  async getPrivateBaseRollupProof(inputs) {
90
90
  const artifactName = 'PrivateBaseRollupArtifact';
91
91
  const { circuitOutput, proof } = await this.createRecursiveProof(inputs, artifactName, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPrivateBaseRollupInputsToWitnessMap, convertPrivateBaseRollupOutputsFromWitnessMap);
92
- const verificationKey = await this.getVerificationKeyDataForCircuit(artifactName);
92
+ const verificationKey = this.getVerificationKeyDataForCircuit(artifactName);
93
93
  await this.verifyProof(artifactName, proof.binaryProof);
94
94
  return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
95
95
  }
@@ -101,7 +101,7 @@ let BBNativeRollupProver = (() => {
101
101
  async getPublicBaseRollupProof(inputs) {
102
102
  const artifactName = 'PublicBaseRollupArtifact';
103
103
  const { circuitOutput, proof } = await this.createRecursiveProof(inputs, artifactName, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPublicBaseRollupInputsToWitnessMap, convertPublicBaseRollupOutputsFromWitnessMap);
104
- const verificationKey = await this.getVerificationKeyDataForCircuit(artifactName);
104
+ const verificationKey = this.getVerificationKeyDataForCircuit(artifactName);
105
105
  await this.verifyProof(artifactName, proof.binaryProof);
106
106
  return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
107
107
  }
@@ -112,7 +112,7 @@ let BBNativeRollupProver = (() => {
112
112
  */
113
113
  async getMergeRollupProof(input) {
114
114
  const { circuitOutput, proof } = await this.createRecursiveProof(input, 'MergeRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertMergeRollupInputsToWitnessMap, convertMergeRollupOutputsFromWitnessMap);
115
- const verificationKey = await this.getVerificationKeyDataForCircuit('MergeRollupArtifact');
115
+ const verificationKey = this.getVerificationKeyDataForCircuit('MergeRollupArtifact');
116
116
  await this.verifyProof('MergeRollupArtifact', proof.binaryProof);
117
117
  return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
118
118
  }
@@ -123,13 +123,13 @@ let BBNativeRollupProver = (() => {
123
123
  */
124
124
  async getBlockRootRollupProof(input) {
125
125
  const { circuitOutput, proof } = await this.createRecursiveProof(input, 'BlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootRollupInputsToWitnessMap, convertBlockRootRollupOutputsFromWitnessMap);
126
- const verificationKey = await this.getVerificationKeyDataForCircuit('BlockRootRollupArtifact');
126
+ const verificationKey = this.getVerificationKeyDataForCircuit('BlockRootRollupArtifact');
127
127
  await this.verifyProof('BlockRootRollupArtifact', proof.binaryProof);
128
128
  return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
129
129
  }
130
130
  async getSingleTxBlockRootRollupProof(input) {
131
131
  const { circuitOutput, proof } = await this.createRecursiveProof(input, 'SingleTxBlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertSingleTxBlockRootRollupInputsToWitnessMap, convertSingleTxBlockRootRollupOutputsFromWitnessMap);
132
- const verificationKey = await this.getVerificationKeyDataForCircuit('SingleTxBlockRootRollupArtifact');
132
+ const verificationKey = this.getVerificationKeyDataForCircuit('SingleTxBlockRootRollupArtifact');
133
133
  await this.verifyProof('SingleTxBlockRootRollupArtifact', proof.binaryProof);
134
134
  return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
135
135
  }
@@ -140,7 +140,7 @@ let BBNativeRollupProver = (() => {
140
140
  */
141
141
  async getEmptyBlockRootRollupProof(input) {
142
142
  const { circuitOutput, proof } = await this.createRecursiveProof(input, 'EmptyBlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertEmptyBlockRootRollupInputsToWitnessMap, convertEmptyBlockRootRollupOutputsFromWitnessMap);
143
- const verificationKey = await this.getVerificationKeyDataForCircuit('EmptyBlockRootRollupArtifact');
143
+ const verificationKey = this.getVerificationKeyDataForCircuit('EmptyBlockRootRollupArtifact');
144
144
  await this.verifyProof('EmptyBlockRootRollupArtifact', proof.binaryProof);
145
145
  return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
146
146
  }
@@ -151,7 +151,7 @@ let BBNativeRollupProver = (() => {
151
151
  */
152
152
  async getBlockMergeRollupProof(input) {
153
153
  const { circuitOutput, proof } = await this.createRecursiveProof(input, 'BlockMergeRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockMergeRollupInputsToWitnessMap, convertBlockMergeRollupOutputsFromWitnessMap);
154
- const verificationKey = await this.getVerificationKeyDataForCircuit('BlockMergeRollupArtifact');
154
+ const verificationKey = this.getVerificationKeyDataForCircuit('BlockMergeRollupArtifact');
155
155
  await this.verifyProof('BlockMergeRollupArtifact', proof.binaryProof);
156
156
  return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
157
157
  }
@@ -163,7 +163,7 @@ let BBNativeRollupProver = (() => {
163
163
  async getRootRollupProof(input) {
164
164
  const { circuitOutput, proof } = await this.createProof(input, 'RootRollupArtifact', convertRootRollupInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap);
165
165
  const recursiveProof = makeRecursiveProofFromBinary(proof, NESTED_RECURSIVE_PROOF_LENGTH);
166
- const verificationKey = await this.getVerificationKeyDataForCircuit('RootRollupArtifact');
166
+ const verificationKey = this.getVerificationKeyDataForCircuit('RootRollupArtifact');
167
167
  await this.verifyProof('RootRollupArtifact', proof);
168
168
  return makePublicInputsAndRecursiveProof(circuitOutput, recursiveProof, verificationKey);
169
169
  }
@@ -197,19 +197,17 @@ let BBNativeRollupProver = (() => {
197
197
  logger.error(`Failed to generate proof for ${circuitType}: ${provingResult.reason}`);
198
198
  throw new ProvingError(provingResult.reason, provingResult, provingResult.retry);
199
199
  }
200
- // Ensure our vk cache is up to date
201
- const vkData = await this.updateVerificationKeyAfterProof(provingResult.vkPath, circuitType);
202
200
  return {
203
201
  circuitOutput: output,
204
- vkData,
205
202
  provingResult,
206
203
  };
207
204
  }
208
205
  async createProof(input, circuitType, convertInput, convertOutput) {
209
206
  const operation = async (bbWorkingDirectory) => {
210
- const { provingResult, vkData, circuitOutput: output, } = await this.generateProofWithBB(input, circuitType, convertInput, convertOutput, bbWorkingDirectory);
207
+ const { provingResult, circuitOutput: output } = await this.generateProofWithBB(input, circuitType, convertInput, convertOutput, bbWorkingDirectory);
211
208
  // Read the binary proof
212
209
  const rawProof = await fs.readFile(`${provingResult.proofPath}/${PROOF_FILENAME}`);
210
+ const vkData = this.getVerificationKeyDataForCircuit(circuitType);
213
211
  const proof = new Proof(rawProof, vkData.numPublicInputs);
214
212
  const circuitName = mapProtocolArtifactNameToCircuitName(circuitType);
215
213
  this.instrumentation.recordDuration('provingDuration', circuitName, provingResult.durationMs);
@@ -281,11 +279,11 @@ let BBNativeRollupProver = (() => {
281
279
  return await this.runInDirectory(operation);
282
280
  }
283
281
  async getTubeProof(input) {
284
- // this probably is gonna need to call client ivc
285
282
  const operation = async (bbWorkingDirectory) => {
286
283
  logger.debug(`createTubeProof: ${bbWorkingDirectory}`);
287
284
  const provingResult = await this.generateTubeProofWithBB(bbWorkingDirectory, input);
288
285
  // Read the proof as fields
286
+ // TODO(AD): this is the only remaining use of extractVkData.
289
287
  const tubeVK = await extractVkData(provingResult.vkPath);
290
288
  const tubeProof = await this.readProofAsFields(provingResult.proofPath, tubeVK, TUBE_PROOF_LENGTH);
291
289
  this.instrumentation.recordDuration('provingDuration', 'tubeCircuit', provingResult.durationMs);
@@ -311,7 +309,8 @@ let BBNativeRollupProver = (() => {
311
309
  async createRecursiveProof(input, circuitType, proofLength, convertInput, convertOutput) {
312
310
  // this probably is gonna need to call client ivc
313
311
  const operation = async (bbWorkingDirectory) => {
314
- const { provingResult, vkData, circuitOutput: output, } = await this.generateProofWithBB(input, circuitType, convertInput, convertOutput, bbWorkingDirectory);
312
+ const { provingResult, circuitOutput: output } = await this.generateProofWithBB(input, circuitType, convertInput, convertOutput, bbWorkingDirectory);
313
+ const vkData = this.getVerificationKeyDataForCircuit(circuitType);
315
314
  // Read the proof as fields
316
315
  const proof = await this.readProofAsFields(provingResult.proofPath, vkData, proofLength);
317
316
  const circuitName = mapProtocolArtifactNameToCircuitName(circuitType);
@@ -341,7 +340,7 @@ let BBNativeRollupProver = (() => {
341
340
  * @param proof - The proof to be verified
342
341
  */
343
342
  async verifyProof(circuitType, proof) {
344
- const verificationKey = await this.getVerificationKeyDataForCircuit(circuitType);
343
+ const verificationKey = this.getVerificationKeyDataForCircuit(circuitType);
345
344
  return await this.verifyWithKey(getUltraHonkFlavorForCircuit(circuitType), verificationKey, proof);
346
345
  }
347
346
  async verifyAvmProof(proof, verificationKey) {
@@ -365,15 +364,6 @@ let BBNativeRollupProver = (() => {
365
364
  };
366
365
  await this.runInDirectory(operation);
367
366
  }
368
- /**
369
- * Returns the verification key for a circuit, will generate it if not cached internally
370
- * @param circuitType - The type of circuit for which the verification key is required
371
- * @returns The verification key
372
- */
373
- async getVerificationKeyForCircuit(circuitType) {
374
- const vkData = await this.getVerificationKeyDataForCircuit(circuitType);
375
- return vkData.clone().keyAsFields;
376
- }
377
367
  /**
378
368
  * Will check a recursive proof argument for validity of it's 'fields' format of proof and convert if required
379
369
  * @param proof - The input proof that may need converting
@@ -414,38 +404,16 @@ let BBNativeRollupProver = (() => {
414
404
  return await this.runInDirectory(operation);
415
405
  }
416
406
  /**
417
- * Returns the verification key data for a circuit, will generate and cache it if not cached internally
407
+ * Returns the verification key data for a circuit.
418
408
  * @param circuitType - The type of circuit for which the verification key is required
419
409
  * @returns The verification key data
420
410
  */
421
- async getVerificationKeyDataForCircuit(circuitType) {
422
- const flavor = getUltraHonkFlavorForCircuit(circuitType);
423
- let promise = this.verificationKeys.get(`${flavor}_${circuitType}`);
424
- if (!promise) {
425
- promise = generateKeyForNoirCircuit(this.config.bbBinaryPath, this.config.bbWorkingDirectory, circuitType, ServerCircuitArtifacts[circuitType], SERVER_CIRCUIT_RECURSIVE, flavor, logger.debug).then(result => {
426
- if (result.status === BB_RESULT.FAILURE) {
427
- throw new ProvingError(`Failed to generate verification key for ${circuitType}, ${result.reason}`, result, result.retry);
428
- }
429
- return extractVkData(result.vkPath);
430
- });
431
- this.verificationKeys.set(`${flavor}_${circuitType}`, promise);
432
- }
433
- const vk = await promise;
434
- return vk.clone();
435
- }
436
- /**
437
- * Ensures our verification key cache includes the key data located at the specified directory
438
- * @param filePath - The directory containing the verification key data files
439
- * @param circuitType - The type of circuit to which the verification key corresponds
440
- */
441
- async updateVerificationKeyAfterProof(filePath, circuitType) {
442
- const flavor = getUltraHonkFlavorForCircuit(circuitType);
443
- let promise = this.verificationKeys.get(`${flavor}_${circuitType}`);
444
- if (!promise) {
445
- promise = extractVkData(filePath);
446
- this.verificationKeys.set(`${flavor}_${circuitType}`, promise);
411
+ getVerificationKeyDataForCircuit(circuitType) {
412
+ const vk = ServerCircuitVks[circuitType];
413
+ if (vk === undefined) {
414
+ throw new Error('Could not find VK for server artifact ' + circuitType);
447
415
  }
448
- return promise;
416
+ return vk;
449
417
  }
450
418
  async readProofAsFields(filePath, vkData, proofLength) {
451
419
  const proofFilename = path.join(filePath, PROOF_FILENAME);
@@ -497,4 +465,4 @@ let BBNativeRollupProver = (() => {
497
465
  _a;
498
466
  })();
499
467
  export { BBNativeRollupProver };
500
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfcHJvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci9iYl9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGtDQUFrQztBQUNsQyxPQUFPLEVBRUwsWUFBWSxFQUdaLDJCQUEyQixFQUMzQixpQ0FBaUMsR0FDbEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUcxQixFQUFFLEVBQ0YsZ0JBQWdCLEVBQ2hCLDZCQUE2QixFQUM3Qix5Q0FBeUMsRUFFekMsS0FBSyxFQUNMLHNCQUFzQixFQUN0QixjQUFjLEVBRWQsaUJBQWlCLEVBR2pCLDRCQUE0QixHQUM3QixNQUFNLG9CQUFvQixDQUFDO0FBZTVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsc0JBQXNCLEVBRXRCLG1DQUFtQyxFQUNuQyxzQ0FBc0MsRUFDdEMseUNBQXlDLEVBQ3pDLDRDQUE0QyxFQUM1Qyx3Q0FBd0MsRUFDeEMsMkNBQTJDLEVBQzNDLDZDQUE2QyxFQUM3QyxnREFBZ0QsRUFDaEQsb0NBQW9DLEVBQ3BDLHVDQUF1QyxFQUN2QywwQ0FBMEMsRUFDMUMsNkNBQTZDLEVBQzdDLHlDQUF5QyxFQUN6Qyw0Q0FBNEMsRUFDNUMsbUNBQW1DLEVBQ25DLHNDQUFzQyxFQUN0QyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLGdEQUFnRCxFQUNoRCxtREFBbUQsR0FDcEQsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFP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
468
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfcHJvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci9iYl9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGtDQUFrQztBQUNsQyxPQUFPLEVBRUwsWUFBWSxFQUdaLDJCQUEyQixFQUMzQixpQ0FBaUMsR0FDbEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUcxQixFQUFFLEVBQ0YsZ0JBQWdCLEVBQ2hCLDZCQUE2QixFQUM3Qix5Q0FBeUMsRUFFekMsS0FBSyxFQUNMLHNCQUFzQixFQUN0QixjQUFjLEVBRWQsaUJBQWlCLEVBRWpCLDRCQUE0QixHQUM3QixNQUFNLG9CQUFvQixDQUFDO0FBZTVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsc0JBQXNCLEVBRXRCLG1DQUFtQyxFQUNuQyxzQ0FBc0MsRUFDdEMseUNBQXlDLEVBQ3pDLDRDQUE0QyxFQUM1Qyx3Q0FBd0MsRUFDeEMsMkNBQTJDLEVBQzNDLDZDQUE2QyxFQUM3QyxnREFBZ0QsRUFDaEQsb0NBQW9DLEVBQ3BDLHVDQUF1QyxFQUN2QywwQ0FBMEMsRUFDMUMsNkNBQTZDLEVBQzdDLHlDQUF5QyxFQUN6Qyw0Q0FBNEMsRUFDNUMsbUNBQW1DLEVBQ25DLHNDQUFzQyxFQUN0QyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLGdEQUFnRCxFQUNoRCxtREFBbUQsR0FDcEQsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFP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
@@ -1,4 +1,6 @@
1
1
  import { ClientIvcProof } from '@aztec/circuits.js';
2
+ export declare const CLIENT_IVC_VK_FILE_NAME = "client_ivc_vk";
3
+ export declare const CLIENT_IVC_PROOF_FILE_NAME = "client_ivc_proof";
2
4
  /**
3
5
  * TODO(#7371): eventually remove client_ivc_prove_output_all_msgpack and properly handle these accumulators and VKs
4
6
  * Create a ClientIvcProof from the result of client_ivc_prove_output_all or client_ivc_prove_output_all_msgpack
@@ -1 +1 @@
1
- {"version":3,"file":"client_ivc_proof_utils.d.ts","sourceRoot":"","sources":["../../src/prover/client_ivc_proof_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,2BAK9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAO7F"}
1
+ {"version":3,"file":"client_ivc_proof_utils.d.ts","sourceRoot":"","sources":["../../src/prover/client_ivc_proof_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AACvD,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAE7D;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,2BAK9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAO7F"}
@@ -1,6 +1,8 @@
1
1
  import { ClientIvcProof } from '@aztec/circuits.js';
2
2
  import { promises as fs } from 'fs';
3
3
  import { join } from 'path';
4
+ export const CLIENT_IVC_VK_FILE_NAME = 'client_ivc_vk';
5
+ export const CLIENT_IVC_PROOF_FILE_NAME = 'client_ivc_proof';
4
6
  /**
5
7
  * TODO(#7371): eventually remove client_ivc_prove_output_all_msgpack and properly handle these accumulators and VKs
6
8
  * Create a ClientIvcProof from the result of client_ivc_prove_output_all or client_ivc_prove_output_all_msgpack
@@ -8,7 +10,7 @@ import { join } from 'path';
8
10
  * @returns the encapsulated client ivc proof
9
11
  */
10
12
  export async function readFromOutputDirectory(directory) {
11
- const [clientIvcVkBuffer, clientIvcProofBuffer] = await Promise.all(['client_ivc_vk', 'client_ivc_proof'].map(fileName => fs.readFile(join(directory, fileName))));
13
+ const [clientIvcVkBuffer, clientIvcProofBuffer] = await Promise.all([CLIENT_IVC_VK_FILE_NAME, CLIENT_IVC_PROOF_FILE_NAME].map(fileName => fs.readFile(join(directory, fileName))));
12
14
  return new ClientIvcProof(clientIvcProofBuffer, clientIvcVkBuffer);
13
15
  }
14
16
  /**
@@ -27,9 +29,9 @@ export async function readFromOutputDirectory(directory) {
27
29
  export async function writeToOutputDirectory(clientIvcProof, directory) {
28
30
  const { clientIvcProofBuffer, clientIvcVkBuffer } = clientIvcProof;
29
31
  const fileData = [
30
- ['client_ivc_proof', clientIvcProofBuffer],
31
- ['client_ivc_vk', clientIvcVkBuffer],
32
+ [CLIENT_IVC_PROOF_FILE_NAME, clientIvcProofBuffer],
33
+ [CLIENT_IVC_VK_FILE_NAME, clientIvcVkBuffer],
32
34
  ];
33
35
  await Promise.all(fileData.map(([fileName, buffer]) => fs.writeFile(join(directory, fileName), buffer)));
34
36
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2l2Y19wcm9vZl91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92ZXIvY2xpZW50X2l2Y19wcm9vZl91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1Qjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsdUJBQXVCLENBQUMsU0FBaUI7SUFDN0QsTUFBTSxDQUFDLGlCQUFpQixFQUFFLG9CQUFvQixDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNqRSxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQzlGLENBQUM7SUFDRixPQUFPLElBQUksY0FBYyxDQUFDLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsc0JBQXNCLENBQUMsY0FBOEIsRUFBRSxTQUFpQjtJQUM1RixNQUFNLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxjQUFjLENBQUM7SUFDbkUsTUFBTSxRQUFRLEdBQUc7UUFDZixDQUFDLGtCQUFrQixFQUFFLG9CQUFvQixDQUFDO1FBQzFDLENBQUMsZUFBZSxFQUFFLGlCQUFpQixDQUFDO0tBQzVCLENBQUM7SUFDWCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNHLENBQUMifQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2l2Y19wcm9vZl91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92ZXIvY2xpZW50X2l2Y19wcm9vZl91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxlQUFlLENBQUM7QUFDdkQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsa0JBQWtCLENBQUM7QUFFN0Q7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHVCQUF1QixDQUFDLFNBQWlCO0lBQzdELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDakUsQ0FBQyx1QkFBdUIsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQzlHLENBQUM7SUFDRixPQUFPLElBQUksY0FBYyxDQUFDLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsc0JBQXNCLENBQUMsY0FBOEIsRUFBRSxTQUFpQjtJQUM1RixNQUFNLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxjQUFjLENBQUM7SUFDbkUsTUFBTSxRQUFRLEdBQUc7UUFDZixDQUFDLDBCQUEwQixFQUFFLG9CQUFvQixDQUFDO1FBQ2xELENBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLENBQUM7S0FDcEMsQ0FBQztJQUNYLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0csQ0FBQyJ9
@@ -17,7 +17,7 @@ export async function extractVkData(vkDirectoryPath) {
17
17
  const fieldsJson = JSON.parse(rawFields);
18
18
  const fields = fieldsJson.map(Fr.fromHexString);
19
19
  // The hash is not included in the BB response
20
- const vkHash = hashVK(fields);
20
+ const vkHash = await hashVK(fields);
21
21
  const vkAsFields = new VerificationKeyAsFields(fields, vkHash);
22
22
  return new VerificationKeyData(vkAsFields, rawBinary);
23
23
  }
@@ -37,4 +37,4 @@ export async function extractAvmVkData(vkDirectoryPath) {
37
37
  const vk = new VerificationKeyData(vkAsFields, rawBinary);
38
38
  return vk;
39
39
  }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uX2tleV9kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZlcmlmaWNhdGlvbl9rZXkvdmVyaWZpY2F0aW9uX2tleV9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMsRUFBRSxFQUNGLHVCQUF1QixFQUN2QixtQkFBbUIsR0FDcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakQsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5FOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FBQyxlQUF1QjtJQUN6RCxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUMvQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDbEYsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNyRCxDQUFDLENBQUM7SUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELDhDQUE4QztJQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUIsTUFBTSxVQUFVLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0QsT0FBTyxJQUFJLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsOEVBQThFO0FBQzlFLE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsZUFBdUI7SUFDNUQsTUFBTSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDL0MsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2xGLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7S0FDckQsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoRCxnRUFBZ0U7SUFDaEUsd0NBQXdDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxxQ0FBcUMsRUFBRSxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ3ZHLE1BQU0sVUFBVSxHQUFHLElBQUksdUJBQXVCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELE1BQU0sRUFBRSxHQUFHLElBQUksbUJBQW1CLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzFELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyJ9
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uX2tleV9kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZlcmlmaWNhdGlvbl9rZXkvdmVyaWZpY2F0aW9uX2tleV9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMsRUFBRSxFQUNGLHVCQUF1QixFQUN2QixtQkFBbUIsR0FDcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakQsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5FOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FBQyxlQUF1QjtJQUN6RCxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUMvQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDbEYsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNyRCxDQUFDLENBQUM7SUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELDhDQUE4QztJQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxNQUFNLFVBQVUsR0FBRyxJQUFJLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRCxPQUFPLElBQUksbUJBQW1CLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxlQUF1QjtJQUM1RCxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUMvQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDbEYsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNyRCxDQUFDLENBQUM7SUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELGdFQUFnRTtJQUNoRSx3Q0FBd0M7SUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLHFDQUFxQyxFQUFFLHFDQUFxQyxDQUFDLENBQUM7SUFDdkcsTUFBTSxVQUFVLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUQsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDIn0=
@@ -3,17 +3,13 @@ import { type Proof, type VerificationKeyData } from '@aztec/circuits.js';
3
3
  import { type Logger } from '@aztec/foundation/log';
4
4
  import { type ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/types';
5
5
  import { type BBConfig } from '../config.js';
6
- import { type UltraKeccakHonkServerProtocolArtifact } from '../honk.js';
7
6
  export declare class BBCircuitVerifier implements ClientProtocolCircuitVerifier {
8
7
  private config;
9
- private verificationKeys;
10
8
  private logger;
11
9
  private constructor();
12
- static new(config: BBConfig, initialCircuits?: ServerProtocolArtifact[], logger?: Logger): Promise<BBCircuitVerifier>;
13
- private static generateVerificationKey;
14
- getVerificationKeyData(circuit: ServerProtocolArtifact): Promise<VerificationKeyData>;
10
+ static new(config: BBConfig, logger?: Logger): Promise<BBCircuitVerifier>;
11
+ getVerificationKeyData(circuitType: ServerProtocolArtifact): VerificationKeyData;
15
12
  verifyProofForCircuit(circuit: ServerProtocolArtifact, proof: Proof): Promise<void>;
16
- generateSolidityContract(circuit: UltraKeccakHonkServerProtocolArtifact, contractName: string): Promise<string>;
17
13
  verifyProof(tx: Tx): Promise<boolean>;
18
14
  }
19
15
  //# sourceMappingURL=bb_verifier.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bb_verifier.d.ts","sourceRoot":"","sources":["../../src/verifier/bb_verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,6BAA6B,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAc,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,2CAA2C,CAAC;AAcnD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,KAAK,qCAAqC,EAAgC,MAAM,YAAY,CAAC;AAKtG,qBAAa,iBAAkB,YAAW,6BAA6B;IAEnE,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,MAAM;IAHhB,OAAO;WAMa,GAAG,CACrB,MAAM,EAAE,QAAQ,EAChB,eAAe,GAAE,sBAAsB,EAAO,EAC9C,MAAM,SAAqC;mBAgBxB,uBAAuB;IAuB/B,sBAAsB,CAAC,OAAO,EAAE,sBAAsB;IAetD,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK;IAkCnE,wBAAwB,CAAC,OAAO,EAAE,qCAAqC,EAAE,YAAY,EAAE,MAAM;IAiB7F,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAuCnD"}
1
+ {"version":3,"file":"bb_verifier.d.ts","sourceRoot":"","sources":["../../src/verifier/bb_verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,6BAA6B,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAA+B,KAAK,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAOrH,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,qBAAa,iBAAkB,YAAW,6BAA6B;IACjD,OAAO,CAAC,MAAM;IAAY,OAAO,CAAC,MAAM;IAA5D,OAAO;WAEa,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAqC;IAK9E,sBAAsB,CAAC,WAAW,EAAE,sBAAsB,GAAG,mBAAmB;IAQ1E,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK;IAkCnE,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAuCnD"}