@aztec/bb-prover 0.56.0 → 0.58.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 (40) hide show
  1. package/dest/bb/execute.d.ts +1 -1
  2. package/dest/bb/execute.d.ts.map +1 -1
  3. package/dest/bb/execute.js +1 -1
  4. package/dest/bb/index.js +0 -0
  5. package/dest/config.d.ts +1 -1
  6. package/dest/config.d.ts.map +1 -1
  7. package/dest/honk.d.ts +5 -5
  8. package/dest/honk.d.ts.map +1 -1
  9. package/dest/honk.js +2 -5
  10. package/dest/index.d.ts +1 -0
  11. package/dest/index.d.ts.map +1 -1
  12. package/dest/index.js +2 -1
  13. package/dest/prover/bb_private_kernel_prover.d.ts +2 -3
  14. package/dest/prover/bb_private_kernel_prover.d.ts.map +1 -1
  15. package/dest/prover/bb_private_kernel_prover.js +9 -11
  16. package/dest/prover/bb_prover.d.ts +8 -13
  17. package/dest/prover/bb_prover.d.ts.map +1 -1
  18. package/dest/prover/bb_prover.js +12 -15
  19. package/dest/stats.d.ts.map +1 -1
  20. package/dest/stats.js +6 -16
  21. package/dest/test/test_circuit_prover.d.ts +10 -8
  22. package/dest/test/test_circuit_prover.d.ts.map +1 -1
  23. package/dest/test/test_circuit_prover.js +26 -14
  24. package/dest/verification_key/verification_key_data.d.ts +2 -2
  25. package/dest/verification_key/verification_key_data.d.ts.map +1 -1
  26. package/dest/verification_key/verification_key_data.js +7 -6
  27. package/dest/verifier/bb_verifier.d.ts +2 -1
  28. package/dest/verifier/bb_verifier.d.ts.map +1 -1
  29. package/dest/verifier/bb_verifier.js +1 -1
  30. package/package.json +10 -7
  31. package/src/bb/execute.ts +1 -1
  32. package/src/config.ts +1 -1
  33. package/src/honk.ts +7 -10
  34. package/src/index.ts +1 -0
  35. package/src/prover/bb_private_kernel_prover.ts +15 -20
  36. package/src/prover/bb_prover.ts +25 -24
  37. package/src/stats.ts +5 -15
  38. package/src/test/test_circuit_prover.ts +48 -13
  39. package/src/verification_key/verification_key_data.ts +6 -7
  40. package/src/verifier/bb_verifier.ts +2 -2
@@ -2,6 +2,7 @@ import { type ClientProtocolCircuitVerifier, Tx } from '@aztec/circuit-types';
2
2
  import { type Proof, type VerificationKeyData } from '@aztec/circuits.js';
3
3
  import { type ProtocolArtifact } from '@aztec/noir-protocol-circuits-types';
4
4
  import { type BBConfig } from '../config.js';
5
+ import { type UltraKeccakHonkProtocolArtifact } from '../honk.js';
5
6
  export declare class BBCircuitVerifier implements ClientProtocolCircuitVerifier {
6
7
  private config;
7
8
  private verificationKeys;
@@ -11,7 +12,7 @@ export declare class BBCircuitVerifier implements ClientProtocolCircuitVerifier
11
12
  private static generateVerificationKey;
12
13
  getVerificationKeyData(circuit: ProtocolArtifact): Promise<VerificationKeyData>;
13
14
  verifyProofForCircuit(circuit: ProtocolArtifact, proof: Proof): Promise<void>;
14
- generateSolidityContract(circuit: ProtocolArtifact, contractName: string): Promise<string>;
15
+ generateSolidityContract(circuit: UltraKeccakHonkProtocolArtifact, contractName: string): Promise<string>;
15
16
  verifyProof(tx: Tx): Promise<boolean>;
16
17
  }
17
18
  //# 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;AAG1E,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,qCAAqC,CAAC;AAc7C,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,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,gBAAgB,EAAO,EACxC,MAAM,yCAAyC;mBAgB5B,uBAAuB;IAsB/B,sBAAsB,CAAC,OAAO,EAAE,gBAAgB;IAehD,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK;IAsC7D,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM;IAiBxE,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;AAG1E,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,qCAAqC,CAAC;AAc7C,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,KAAK,+BAA+B,EAAgC,MAAM,YAAY,CAAC;AAIhG,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,gBAAgB,EAAO,EACxC,MAAM,yCAAyC;mBAgB5B,uBAAuB;IAsB/B,sBAAsB,CAAC,OAAO,EAAE,gBAAgB;IAehD,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK;IAsC7D,wBAAwB,CAAC,OAAO,EAAE,+BAA+B,EAAE,YAAY,EAAE,MAAM;IAiBvF,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAuCnD"}
@@ -109,4 +109,4 @@ export class BBCircuitVerifier {
109
109
  }
110
110
  }
111
111
  }
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfdmVyaWZpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVyaWZpZXIvYmJfdmVyaWZpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQyxFQUFFLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFnQyxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hGLE9BQU8sRUFHTCx3QkFBd0IsR0FDekIsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQ0wsU0FBUyxFQUNULGNBQWMsRUFDZCxXQUFXLEVBQ1gsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIsV0FBVyxHQUNaLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFN0UsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUNVLE1BQWdCLEVBQ2hCLG1CQUFtQixJQUFJLEdBQUcsRUFBa0QsRUFDNUUsTUFBbUI7UUFGbkIsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTREO1FBQzVFLFdBQU0sR0FBTixNQUFNLENBQWE7SUFDMUIsQ0FBQztJQUVHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNyQixNQUFnQixFQUNoQixrQkFBc0MsRUFBRSxFQUN4QyxNQUFNLEdBQUcsaUJBQWlCLENBQUMsbUJBQW1CLENBQUM7UUFFL0MsTUFB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
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfdmVyaWZpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVyaWZpZXIvYmJfdmVyaWZpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQyxFQUFFLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFnQyxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hGLE9BQU8sRUFHTCx3QkFBd0IsR0FDekIsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUU3QixPQUFPLEVBQ0wsU0FBUyxFQUNULGNBQWMsRUFDZCxXQUFXLEVBQ1gsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIsV0FBVyxHQUNaLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUF3Qyw0QkFBNEIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTdFLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFDVSxNQUFnQixFQUNoQixtQkFBbUIsSUFBSSxHQUFHLEVBQWtELEVBQzVFLE1BQW1CO1FBRm5CLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE0RDtRQUM1RSxXQUFNLEdBQU4sTUFBTSxDQUFhO0lBQzFCLENBQUM7SUFFRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDckIsTUFBZ0IsRUFDaEIsa0JBQXNDLEVBQUUsRUFDeEMsTUFBTSxHQUFHLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDO1FBRS9DLE1B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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/bb-prover",
3
- "version": "0.56.0",
3
+ "version": "0.58.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js"
@@ -41,6 +41,9 @@
41
41
  "parser": {
42
42
  "syntax": "typescript",
43
43
  "decorators": true
44
+ },
45
+ "transform": {
46
+ "decoratorVersion": "2022-03"
44
47
  }
45
48
  }
46
49
  }
@@ -59,12 +62,12 @@
59
62
  ]
60
63
  },
61
64
  "dependencies": {
62
- "@aztec/circuit-types": "0.56.0",
63
- "@aztec/circuits.js": "0.56.0",
64
- "@aztec/foundation": "0.56.0",
65
- "@aztec/noir-protocol-circuits-types": "0.56.0",
66
- "@aztec/simulator": "0.56.0",
67
- "@aztec/telemetry-client": "0.56.0",
65
+ "@aztec/circuit-types": "0.58.0",
66
+ "@aztec/circuits.js": "0.58.0",
67
+ "@aztec/foundation": "0.58.0",
68
+ "@aztec/noir-protocol-circuits-types": "0.58.0",
69
+ "@aztec/simulator": "0.58.0",
70
+ "@aztec/telemetry-client": "0.58.0",
68
71
  "@msgpack/msgpack": "^3.0.0-beta2",
69
72
  "@noir-lang/noirc_abi": "portal:../../noir/packages/noirc_abi",
70
73
  "@noir-lang/types": "portal:../../noir/packages/types",
package/src/bb/execute.ts CHANGED
@@ -263,7 +263,7 @@ export async function computeVerificationKey(
263
263
  workingDirectory: string,
264
264
  circuitName: string,
265
265
  bytecode: Buffer,
266
- flavor: UltraHonkFlavor,
266
+ flavor: UltraHonkFlavor | 'mega_honk',
267
267
  log: LogFn,
268
268
  ): Promise<BBFailure | BBSuccess> {
269
269
  // Check that the working directory exists
package/src/config.ts CHANGED
@@ -2,7 +2,7 @@ export interface BBConfig {
2
2
  bbBinaryPath: string;
3
3
  bbWorkingDirectory: string;
4
4
  /** Whether to skip tmp dir cleanup for debugging purposes */
5
- bbSkipCleanup?: boolean;
5
+ bbSkipCleanup: boolean;
6
6
  }
7
7
 
8
8
  export interface ACVMConfig {
package/src/honk.ts CHANGED
@@ -2,20 +2,17 @@ import { type ProtocolArtifact } from '@aztec/noir-protocol-circuits-types';
2
2
 
3
3
  export type UltraHonkFlavor = 'ultra_honk' | 'ultra_keccak_honk';
4
4
 
5
- const UltraKeccakHonkCircuits = [
6
- 'BlockRootRollupFinalArtifact',
7
- 'RootRollupArtifact',
8
- ] as const satisfies ProtocolArtifact[];
9
- type UltraKeccakHonkCircuits = (typeof UltraKeccakHonkCircuits)[number];
10
- type UltraHonkCircuits = Exclude<ProtocolArtifact, UltraKeccakHonkCircuits>;
5
+ const UltraKeccakHonkCircuits = ['RootRollupArtifact'] as const satisfies ProtocolArtifact[];
6
+ export type UltraKeccakHonkProtocolArtifact = (typeof UltraKeccakHonkCircuits)[number];
7
+ export type UltraHonkProtocolArtifact = Exclude<ProtocolArtifact, UltraKeccakHonkProtocolArtifact>;
11
8
 
12
- export function getUltraHonkFlavorForCircuit(artifact: UltraKeccakHonkCircuits): 'ultra_keccak_honk';
13
- export function getUltraHonkFlavorForCircuit(artifact: UltraHonkCircuits): 'ultra_honk';
9
+ export function getUltraHonkFlavorForCircuit(artifact: UltraKeccakHonkProtocolArtifact): 'ultra_keccak_honk';
10
+ export function getUltraHonkFlavorForCircuit(artifact: UltraHonkProtocolArtifact): 'ultra_honk';
14
11
  export function getUltraHonkFlavorForCircuit(artifact: ProtocolArtifact): UltraHonkFlavor;
15
12
  export function getUltraHonkFlavorForCircuit(artifact: ProtocolArtifact): UltraHonkFlavor {
16
13
  return isUltraKeccakHonkCircuit(artifact) ? 'ultra_keccak_honk' : 'ultra_honk';
17
14
  }
18
15
 
19
- function isUltraKeccakHonkCircuit(artifact: ProtocolArtifact): artifact is UltraKeccakHonkCircuits {
20
- return UltraKeccakHonkCircuits.includes(artifact as UltraKeccakHonkCircuits);
16
+ function isUltraKeccakHonkCircuit(artifact: ProtocolArtifact): artifact is UltraKeccakHonkProtocolArtifact {
17
+ return UltraKeccakHonkCircuits.includes(artifact as UltraKeccakHonkProtocolArtifact);
21
18
  }
package/src/index.ts CHANGED
@@ -3,5 +3,6 @@ export * from './test/index.js';
3
3
  export * from './verifier/index.js';
4
4
  export * from './config.js';
5
5
  export * from './bb/execute.js';
6
+ export * from './honk.js';
6
7
 
7
8
  export { type ClientProtocolCircuitVerifier } from '@aztec/circuit-types';
@@ -8,11 +8,10 @@ import {
8
8
  AGGREGATION_OBJECT_LENGTH,
9
9
  ClientIvcProof,
10
10
  Fr,
11
- type PrivateCircuitPublicInputs,
12
11
  type PrivateKernelCircuitPublicInputs,
13
12
  type PrivateKernelInitCircuitPrivateInputs,
14
13
  type PrivateKernelInnerCircuitPrivateInputs,
15
- type PrivateKernelResetCircuitPrivateInputsVariants,
14
+ type PrivateKernelResetCircuitPrivateInputs,
16
15
  type PrivateKernelTailCircuitPrivateInputs,
17
16
  type PrivateKernelTailCircuitPublicInputs,
18
17
  Proof,
@@ -20,14 +19,13 @@ import {
20
19
  type VerificationKeyAsFields,
21
20
  type VerificationKeyData,
22
21
  } from '@aztec/circuits.js';
23
- import { siloNoteHash } from '@aztec/circuits.js/hash';
24
22
  import { runInDirectory } from '@aztec/foundation/fs';
25
23
  import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log';
26
24
  import { Timer } from '@aztec/foundation/timer';
27
25
  import {
28
26
  ClientCircuitArtifacts,
27
+ ClientCircuitVks,
29
28
  type ClientProtocolArtifact,
30
- PrivateResetTagToArtifactName,
31
29
  ProtocolCircuitVks,
32
30
  convertPrivateKernelInitInputsToWitnessMap,
33
31
  convertPrivateKernelInitOutputsFromWitnessMap,
@@ -39,6 +37,7 @@ import {
39
37
  convertPrivateKernelTailInputsToWitnessMap,
40
38
  convertPrivateKernelTailOutputsFromWitnessMap,
41
39
  convertPrivateKernelTailToPublicInputsToWitnessMap,
40
+ getPrivateKernelResetArtifactName,
42
41
  } from '@aztec/noir-protocol-circuits-types';
43
42
  import { WASMSimulator } from '@aztec/simulator';
44
43
  import { type NoirCompiledCircuit } from '@aztec/types/noir';
@@ -130,12 +129,6 @@ export class BBNativePrivateKernelProver implements PrivateKernelProver {
130
129
  return await this.runInDirectory(operation);
131
130
  }
132
131
 
133
- public getSiloedCommitments(publicInputs: PrivateCircuitPublicInputs) {
134
- const contractAddress = publicInputs.callContext.storageContractAddress;
135
-
136
- return Promise.resolve(publicInputs.noteHashes.map(commitment => siloNoteHash(contractAddress, commitment.value)));
137
- }
138
-
139
132
  public async simulateProofInit(
140
133
  inputs: PrivateKernelInitCircuitPrivateInputs,
141
134
  ): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
@@ -159,13 +152,15 @@ export class BBNativePrivateKernelProver implements PrivateKernelProver {
159
152
  }
160
153
 
161
154
  public async simulateProofReset(
162
- inputs: PrivateKernelResetCircuitPrivateInputsVariants,
155
+ inputs: PrivateKernelResetCircuitPrivateInputs,
163
156
  ): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
157
+ const variantInputs = inputs.trimToSizes();
158
+ const artifactName = getPrivateKernelResetArtifactName(inputs.dimensions);
164
159
  return await this.simulate(
165
- inputs,
166
- PrivateResetTagToArtifactName[inputs.sizeTag],
167
- convertPrivateKernelResetInputsToWitnessMap,
168
- output => convertPrivateKernelResetOutputsFromWitnessMap(output, inputs.sizeTag),
160
+ variantInputs,
161
+ artifactName,
162
+ variantInputs => convertPrivateKernelResetInputsToWitnessMap(variantInputs, artifactName),
163
+ output => convertPrivateKernelResetOutputsFromWitnessMap(output, artifactName),
169
164
  );
170
165
  }
171
166
 
@@ -283,14 +278,14 @@ export class BBNativePrivateKernelProver implements PrivateKernelProver {
283
278
  outputSize: output.toBuffer().length,
284
279
  } satisfies CircuitWitnessGenerationStats);
285
280
 
286
- // TODO(#7410) we dont need to generate vk's for these circuits, they are in the vk tree
287
- const { verificationKey } = await this.runInDirectory(dir =>
288
- this.computeVerificationKey(dir, Buffer.from(compiledCircuit.bytecode, 'base64'), circuitType),
289
- );
281
+ const verificationKey = ClientCircuitVks[circuitType].keyAsFields;
282
+ const bytecode = Buffer.from(compiledCircuit.bytecode, 'base64');
283
+
290
284
  const kernelOutput: PrivateKernelSimulateOutput<O> = {
291
285
  publicInputs: output,
292
286
  verificationKey,
293
287
  outputWitness,
288
+ bytecode,
294
289
  };
295
290
  return kernelOutput;
296
291
  }
@@ -313,7 +308,7 @@ export class BBNativePrivateKernelProver implements PrivateKernelProver {
313
308
  directory,
314
309
  circuitType,
315
310
  bytecode,
316
- circuitType === 'App' ? 'ultra_honk' : getUltraHonkFlavorForCircuit(circuitType),
311
+ circuitType === 'App' ? 'mega_honk' : getUltraHonkFlavorForCircuit(circuitType),
317
312
  this.log.debug,
318
313
  );
319
314
 
@@ -1,21 +1,22 @@
1
1
  /* eslint-disable require-await */
2
2
  import {
3
- type AvmProofAndVerificationKey,
3
+ type ProofAndVerificationKey,
4
4
  type PublicInputsAndRecursiveProof,
5
5
  type ServerCircuitProver,
6
+ makeProofAndVerificationKey,
6
7
  makePublicInputsAndRecursiveProof,
7
8
  } from '@aztec/circuit-types';
8
9
  import { type CircuitProvingStats, type CircuitWitnessGenerationStats } from '@aztec/circuit-types/stats';
9
10
  import {
10
11
  AGGREGATION_OBJECT_LENGTH,
11
12
  type AvmCircuitInputs,
12
- type AvmVerificationKeyData,
13
13
  type BaseOrMergeRollupPublicInputs,
14
14
  type BaseParityInputs,
15
15
  type BaseRollupInputs,
16
16
  type BlockMergeRollupInputs,
17
17
  type BlockRootOrBlockMergePublicInputs,
18
18
  type BlockRootRollupInputs,
19
+ type EmptyBlockRootRollupInputs,
19
20
  EmptyNestedCircuitInputs,
20
21
  EmptyNestedData,
21
22
  Fr,
@@ -47,6 +48,7 @@ import { createDebugLogger } from '@aztec/foundation/log';
47
48
  import { Timer } from '@aztec/foundation/timer';
48
49
  import {
49
50
  ProtocolCircuitVkIndexes,
51
+ ProtocolCircuitVks,
50
52
  ServerCircuitArtifacts,
51
53
  type ServerProtocolArtifact,
52
54
  convertBaseParityInputsToWitnessMap,
@@ -57,6 +59,8 @@ import {
57
59
  convertBlockMergeRollupOutputsFromWitnessMap,
58
60
  convertBlockRootRollupInputsToWitnessMap,
59
61
  convertBlockRootRollupOutputsFromWitnessMap,
62
+ convertEmptyBlockRootRollupInputsToWitnessMap,
63
+ convertEmptyBlockRootRollupOutputsFromWitnessMap,
60
64
  convertMergeRollupInputsToWitnessMap,
61
65
  convertMergeRollupOutputsFromWitnessMap,
62
66
  convertPrivateKernelEmptyInputsToWitnessMap,
@@ -204,7 +208,7 @@ export class BBNativeRollupProver implements ServerCircuitProver {
204
208
  @trackSpan('BBNativeRollupProver.getAvmProof', inputs => ({
205
209
  [Attributes.APP_CIRCUIT_NAME]: inputs.functionName,
206
210
  }))
207
- public async getAvmProof(inputs: AvmCircuitInputs): Promise<AvmProofAndVerificationKey> {
211
+ public async getAvmProof(inputs: AvmCircuitInputs): Promise<ProofAndVerificationKey<Proof>> {
208
212
  const proofAndVk = await this.createAvmProof(inputs);
209
213
  await this.verifyAvmProof(proofAndVk.proof, proofAndVk.verificationKey);
210
214
  return proofAndVk;
@@ -381,29 +385,26 @@ export class BBNativeRollupProver implements ServerCircuitProver {
381
385
  }
382
386
 
383
387
  /**
384
- * Simulates the block root rollup circuit from its inputs.
385
- * Returns a non-recursive proof to verify on L1.
386
- * @dev TODO(palla/prover): This is a temporary workaround to get the proof to L1 with the old block flow.
388
+ * Simulates the empty block root rollup circuit from its inputs.
387
389
  * @param input - Inputs to the circuit.
388
390
  * @returns The public inputs as outputs of the simulation.
389
391
  */
390
- public async getBlockRootRollupFinalProof(
391
- input: BlockRootRollupInputs,
392
+ public async getEmptyBlockRootRollupProof(
393
+ input: EmptyBlockRootRollupInputs,
392
394
  ): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs>> {
393
- const { circuitOutput, proof } = await this.createProof(
395
+ const { circuitOutput, proof } = await this.createRecursiveProof(
394
396
  input,
395
- 'BlockRootRollupFinalArtifact',
396
- convertBlockRootRollupInputsToWitnessMap,
397
- convertBlockRootRollupOutputsFromWitnessMap,
397
+ 'EmptyBlockRootRollupArtifact',
398
+ RECURSIVE_PROOF_LENGTH,
399
+ convertEmptyBlockRootRollupInputsToWitnessMap,
400
+ convertEmptyBlockRootRollupOutputsFromWitnessMap,
398
401
  );
399
402
 
400
- const recursiveProof = makeRecursiveProofFromBinary(proof, NESTED_RECURSIVE_PROOF_LENGTH);
401
-
402
- const verificationKey = await this.getVerificationKeyDataForCircuit('BlockRootRollupFinalArtifact');
403
+ const verificationKey = await this.getVerificationKeyDataForCircuit('EmptyBlockRootRollupArtifact');
403
404
 
404
- await this.verifyProof('BlockRootRollupFinalArtifact', proof);
405
+ await this.verifyProof('EmptyBlockRootRollupArtifact', proof.binaryProof);
405
406
 
406
- return makePublicInputsAndRecursiveProof(circuitOutput, recursiveProof, verificationKey);
407
+ return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
407
408
  }
408
409
 
409
410
  /**
@@ -529,7 +530,7 @@ export class BBNativeRollupProver implements ServerCircuitProver {
529
530
  convertPrivateKernelEmptyOutputsFromWitnessMap,
530
531
  );
531
532
  //info(`proof: ${proof.proof}`);
532
- const verificationKey = await this.getVerificationKeyDataForCircuit('PrivateKernelEmptyArtifact');
533
+ const verificationKey = ProtocolCircuitVks['PrivateKernelEmptyArtifact'];
533
534
  await this.verifyProof('PrivateKernelEmptyArtifact', proof.binaryProof);
534
535
 
535
536
  return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
@@ -676,8 +677,8 @@ export class BBNativeRollupProver implements ServerCircuitProver {
676
677
  return provingResult;
677
678
  }
678
679
 
679
- private async createAvmProof(input: AvmCircuitInputs): Promise<AvmProofAndVerificationKey> {
680
- const operation = async (bbWorkingDirectory: string): Promise<AvmProofAndVerificationKey> => {
680
+ private async createAvmProof(input: AvmCircuitInputs): Promise<ProofAndVerificationKey<Proof>> {
681
+ const operation = async (bbWorkingDirectory: string): Promise<ProofAndVerificationKey<Proof>> => {
681
682
  const provingResult = await this.generateAvmProofWithBB(input, bbWorkingDirectory);
682
683
 
683
684
  const rawProof = await fs.readFile(provingResult.proofPath!);
@@ -708,14 +709,14 @@ export class BBNativeRollupProver implements ServerCircuitProver {
708
709
  } satisfies CircuitProvingStats,
709
710
  );
710
711
 
711
- return { proof, verificationKey };
712
+ return makeProofAndVerificationKey(proof, verificationKey);
712
713
  };
713
714
  return await this.runInDirectory(operation);
714
715
  }
715
716
 
716
717
  public async getTubeProof(
717
718
  input: TubeInputs,
718
- ): Promise<{ tubeVK: VerificationKeyData; tubeProof: RecursiveProof<typeof TUBE_PROOF_LENGTH> }> {
719
+ ): Promise<ProofAndVerificationKey<RecursiveProof<typeof TUBE_PROOF_LENGTH>>> {
719
720
  // this probably is gonna need to call client ivc
720
721
  const operation = async (bbWorkingDirectory: string) => {
721
722
  logger.debug(`createTubeProof: ${bbWorkingDirectory}`);
@@ -739,7 +740,7 @@ export class BBNativeRollupProver implements ServerCircuitProver {
739
740
  } fields`,
740
741
  );
741
742
 
742
- return { tubeVK, tubeProof };
743
+ return makeProofAndVerificationKey(tubeProof, tubeVK);
743
744
  };
744
745
  return await this.runInDirectory(operation);
745
746
  }
@@ -813,7 +814,7 @@ export class BBNativeRollupProver implements ServerCircuitProver {
813
814
  return await this.verifyWithKey(getUltraHonkFlavorForCircuit(circuitType), verificationKey, proof);
814
815
  }
815
816
 
816
- public async verifyAvmProof(proof: Proof, verificationKey: AvmVerificationKeyData) {
817
+ public async verifyAvmProof(proof: Proof, verificationKey: VerificationKeyData) {
817
818
  return await this.verifyWithKeyInternal(proof, verificationKey, (proofPath, vkPath) =>
818
819
  verifyAvmProof(this.config.bbBinaryPath, proofPath, vkPath, logger.debug),
819
820
  );
package/src/stats.ts CHANGED
@@ -15,6 +15,8 @@ export function mapProtocolArtifactNameToCircuitName(
15
15
  return 'merge-rollup';
16
16
  case 'BlockRootRollupArtifact':
17
17
  return 'block-root-rollup';
18
+ case 'EmptyBlockRootRollupArtifact':
19
+ return 'empty-block-root-rollup';
18
20
  case 'BlockMergeRollupArtifact':
19
21
  return 'block-merge-rollup';
20
22
  case 'RootRollupArtifact':
@@ -33,26 +35,14 @@ export function mapProtocolArtifactNameToCircuitName(
33
35
  return 'private-kernel-tail';
34
36
  case 'PrivateKernelTailToPublicArtifact':
35
37
  return 'private-kernel-tail-to-public';
36
- case 'PrivateKernelResetFullArtifact':
37
- return 'private-kernel-reset-full';
38
- case 'PrivateKernelResetFullInnerArtifact':
39
- return 'private-kernel-reset-full-inner';
40
- case 'PrivateKernelResetBigArtifact':
41
- return 'private-kernel-reset-big';
42
- case 'PrivateKernelResetMediumArtifact':
43
- return 'private-kernel-reset-medium';
44
- case 'PrivateKernelResetSmallArtifact':
45
- return 'private-kernel-reset-small';
46
- case 'PrivateKernelResetTinyArtifact':
47
- return 'private-kernel-reset-tiny';
48
38
  case 'EmptyNestedArtifact':
49
39
  return 'empty-nested';
50
40
  case 'PrivateKernelEmptyArtifact':
51
41
  return 'private-kernel-empty';
52
- case 'BlockRootRollupFinalArtifact':
53
- return 'block-root-rollup-final';
54
42
  default: {
55
- const _foo: never = artifact;
43
+ if (artifact.startsWith('PrivateKernelReset')) {
44
+ return 'private-kernel-reset';
45
+ }
56
46
  throw new Error(`Unknown circuit type: ${artifact}`);
57
47
  }
58
48
  }
@@ -1,18 +1,20 @@
1
1
  import {
2
- type AvmProofAndVerificationKey,
2
+ type ProofAndVerificationKey,
3
3
  type PublicInputsAndRecursiveProof,
4
4
  type ServerCircuitProver,
5
+ makeProofAndVerificationKey,
5
6
  makePublicInputsAndRecursiveProof,
6
7
  } from '@aztec/circuit-types';
7
8
  import {
9
+ AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS,
8
10
  type AvmCircuitInputs,
9
- AvmVerificationKeyData,
10
11
  type BaseOrMergeRollupPublicInputs,
11
12
  type BaseParityInputs,
12
13
  type BaseRollupInputs,
13
14
  type BlockMergeRollupInputs,
14
15
  type BlockRootOrBlockMergePublicInputs,
15
16
  type BlockRootRollupInputs,
17
+ type EmptyBlockRootRollupInputs,
16
18
  EmptyNestedData,
17
19
  type KernelCircuitPublicInputs,
18
20
  type MergeRollupInputs,
@@ -52,6 +54,8 @@ import {
52
54
  convertBlockMergeRollupOutputsFromWitnessMap,
53
55
  convertBlockRootRollupInputsToWitnessMap,
54
56
  convertBlockRootRollupOutputsFromWitnessMap,
57
+ convertEmptyBlockRootRollupInputsToWitnessMap,
58
+ convertEmptyBlockRootRollupOutputsFromWitnessMap,
55
59
  convertMergeRollupInputsToWitnessMap,
56
60
  convertMergeRollupOutputsFromWitnessMap,
57
61
  convertPrivateKernelEmptyInputsToWitnessMap,
@@ -111,6 +115,7 @@ export class TestCircuitProver implements ServerCircuitProver {
111
115
  inputs.chainId,
112
116
  inputs.version,
113
117
  inputs.vkTreeRoot,
118
+ inputs.protocolContractTreeRoot,
114
119
  );
115
120
  const witnessMap = convertPrivateKernelEmptyInputsToWitnessMap(kernelInputs);
116
121
  const witness = await this.wasmSimulator.simulateCircuit(
@@ -139,6 +144,7 @@ export class TestCircuitProver implements ServerCircuitProver {
139
144
  inputs.chainId,
140
145
  inputs.version,
141
146
  inputs.vkTreeRoot,
147
+ inputs.protocolContractTreeRoot,
142
148
  );
143
149
  const witnessMap = convertPrivateKernelEmptyInputsToWitnessMap(kernelInputs);
144
150
  const witness = await this.wasmSimulator.simulateCircuit(
@@ -150,7 +156,7 @@ export class TestCircuitProver implements ServerCircuitProver {
150
156
  return makePublicInputsAndRecursiveProof(
151
157
  result,
152
158
  makeRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH),
153
- VerificationKeyData.makeFake(),
159
+ VerificationKeyData.makeFakeHonk(),
154
160
  );
155
161
  }
156
162
 
@@ -268,12 +274,9 @@ export class TestCircuitProver implements ServerCircuitProver {
268
274
 
269
275
  public async getTubeProof(
270
276
  _tubeInput: TubeInputs,
271
- ): Promise<{ tubeVK: VerificationKeyData; tubeProof: RecursiveProof<typeof TUBE_PROOF_LENGTH> }> {
277
+ ): Promise<ProofAndVerificationKey<RecursiveProof<typeof TUBE_PROOF_LENGTH>>> {
272
278
  await this.delay();
273
- return {
274
- tubeVK: VerificationKeyData.makeFake(),
275
- tubeProof: makeEmptyRecursiveProof(TUBE_PROOF_LENGTH),
276
- };
279
+ return makeProofAndVerificationKey(makeEmptyRecursiveProof(TUBE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk());
277
280
  }
278
281
 
279
282
  /**
@@ -347,10 +350,39 @@ export class TestCircuitProver implements ServerCircuitProver {
347
350
  );
348
351
  }
349
352
 
350
- public getBlockRootRollupFinalProof(
351
- input: BlockRootRollupInputs,
353
+ /**
354
+ * Simulates the empty block root rollup circuit from its inputs.
355
+ * @param input - Inputs to the circuit.
356
+ * @returns The public inputs as outputs of the simulation.
357
+ */
358
+ @trackSpan('TestCircuitProver.getEmptyBlockRootRollupProof')
359
+ public async getEmptyBlockRootRollupProof(
360
+ input: EmptyBlockRootRollupInputs,
352
361
  ): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs>> {
353
- return this.getBlockRootRollupProof(input);
362
+ const timer = new Timer();
363
+ const witnessMap = convertEmptyBlockRootRollupInputsToWitnessMap(input);
364
+
365
+ // use WASM here as it is faster for small circuits
366
+ const witness = await this.wasmSimulator.simulateCircuit(
367
+ witnessMap,
368
+ SimulatedServerCircuitArtifacts.EmptyBlockRootRollupArtifact,
369
+ );
370
+
371
+ const result = convertEmptyBlockRootRollupOutputsFromWitnessMap(witness);
372
+
373
+ this.instrumentation.recordDuration('simulationDuration', 'empty-block-root-rollup', timer);
374
+ emitCircuitSimulationStats(
375
+ 'empty-block-root-rollup',
376
+ timer.ms(),
377
+ input.toBuffer().length,
378
+ result.toBuffer().length,
379
+ this.logger,
380
+ );
381
+ return makePublicInputsAndRecursiveProof(
382
+ result,
383
+ makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH),
384
+ ProtocolCircuitVks['EmptyBlockRootRollupArtifact'],
385
+ );
354
386
  }
355
387
 
356
388
  /**
@@ -512,12 +544,15 @@ export class TestCircuitProver implements ServerCircuitProver {
512
544
  );
513
545
  }
514
546
 
515
- public async getAvmProof(_inputs: AvmCircuitInputs): Promise<AvmProofAndVerificationKey> {
547
+ public async getAvmProof(_inputs: AvmCircuitInputs): Promise<ProofAndVerificationKey<Proof>> {
516
548
  // We can't simulate the AVM because we don't have enough context to do so (e.g., DBs).
517
549
  // We just return an empty proof and VK data.
518
550
  this.logger.debug('Skipping AVM simulation in TestCircuitProver.');
519
551
  await this.delay();
520
- return { proof: makeEmptyProof(), verificationKey: AvmVerificationKeyData.makeFake() };
552
+ return makeProofAndVerificationKey(
553
+ makeEmptyProof(),
554
+ VerificationKeyData.makeFake(AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS),
555
+ );
521
556
  }
522
557
 
523
558
  private async delay(): Promise<void> {
@@ -1,11 +1,10 @@
1
1
  import {
2
2
  AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS,
3
- AvmVerificationKeyAsFields,
4
- AvmVerificationKeyData,
5
3
  Fr,
6
4
  VerificationKeyAsFields,
7
5
  VerificationKeyData,
8
6
  } from '@aztec/circuits.js';
7
+ import { hashVk } from '@aztec/noir-protocol-circuits-types';
9
8
 
10
9
  import { strict as assert } from 'assert';
11
10
  import * as fs from 'fs/promises';
@@ -25,14 +24,14 @@ export async function extractVkData(vkDirectoryPath: string): Promise<Verificati
25
24
  ]);
26
25
  const fieldsJson = JSON.parse(rawFields);
27
26
  const fields = fieldsJson.map(Fr.fromString);
28
- // The first item is the hash, this is not part of the actual VK
29
- const vkHash = fields[0];
27
+ // The hash is not included in the BB response
28
+ const vkHash = hashVk(fields);
30
29
  const vkAsFields = new VerificationKeyAsFields(fields, vkHash);
31
30
  return new VerificationKeyData(vkAsFields, rawBinary);
32
31
  }
33
32
 
34
33
  // TODO: This was adapted from the above function. A refactor might be needed.
35
- export async function extractAvmVkData(vkDirectoryPath: string): Promise<AvmVerificationKeyData> {
34
+ export async function extractAvmVkData(vkDirectoryPath: string): Promise<VerificationKeyData> {
36
35
  const [rawFields, rawBinary] = await Promise.all([
37
36
  fs.readFile(path.join(vkDirectoryPath, VK_FIELDS_FILENAME), { encoding: 'utf-8' }),
38
37
  fs.readFile(path.join(vkDirectoryPath, VK_FILENAME)),
@@ -43,7 +42,7 @@ export async function extractAvmVkData(vkDirectoryPath: string): Promise<AvmVeri
43
42
  // TODO: is the above actually the case?
44
43
  const vkHash = fields[0];
45
44
  assert(fields.length === AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, 'Invalid AVM verification key length');
46
- const vkAsFields = new AvmVerificationKeyAsFields(fields, vkHash);
47
- const vk = new AvmVerificationKeyData(vkAsFields, rawBinary);
45
+ const vkAsFields = new VerificationKeyAsFields(fields, vkHash);
46
+ const vk = new VerificationKeyData(vkAsFields, rawBinary);
48
47
  return vk;
49
48
  }
@@ -22,7 +22,7 @@ import {
22
22
  verifyProof,
23
23
  } from '../bb/execute.js';
24
24
  import { type BBConfig } from '../config.js';
25
- import { getUltraHonkFlavorForCircuit } from '../honk.js';
25
+ import { type UltraKeccakHonkProtocolArtifact, getUltraHonkFlavorForCircuit } from '../honk.js';
26
26
  import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
27
27
  import { extractVkData } from '../verification_key/verification_key_data.js';
28
28
 
@@ -127,7 +127,7 @@ export class BBCircuitVerifier implements ClientProtocolCircuitVerifier {
127
127
  await runInDirectory(this.config.bbWorkingDirectory, operation, this.config.bbSkipCleanup);
128
128
  }
129
129
 
130
- public async generateSolidityContract(circuit: ProtocolArtifact, contractName: string) {
130
+ public async generateSolidityContract(circuit: UltraKeccakHonkProtocolArtifact, contractName: string) {
131
131
  const result = await generateContractForCircuit(
132
132
  this.config.bbBinaryPath,
133
133
  this.config.bbWorkingDirectory,