@aztec/bb-prover 0.0.0-test.0 → 0.0.1-commit.0208eb9

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 (112) hide show
  1. package/dest/avm_proving_tests/avm_proving_tester.d.ts +14 -18
  2. package/dest/avm_proving_tests/avm_proving_tester.d.ts.map +1 -1
  3. package/dest/avm_proving_tests/avm_proving_tester.js +146 -79
  4. package/dest/bb/cli.d.ts +1 -1
  5. package/dest/bb/execute.d.ts +17 -50
  6. package/dest/bb/execute.d.ts.map +1 -1
  7. package/dest/bb/execute.js +145 -278
  8. package/dest/bb/index.d.ts +1 -1
  9. package/dest/config.d.ts +3 -1
  10. package/dest/config.d.ts.map +1 -1
  11. package/dest/honk.d.ts +3 -3
  12. package/dest/honk.d.ts.map +1 -1
  13. package/dest/honk.js +3 -2
  14. package/dest/index.d.ts +2 -1
  15. package/dest/index.d.ts.map +1 -1
  16. package/dest/index.js +1 -0
  17. package/dest/instrumentation.d.ts +3 -3
  18. package/dest/instrumentation.d.ts.map +1 -1
  19. package/dest/instrumentation.js +11 -43
  20. package/dest/prover/client/bb_private_kernel_prover.d.ts +38 -0
  21. package/dest/prover/client/bb_private_kernel_prover.d.ts.map +1 -0
  22. package/dest/prover/{bb_private_kernel_prover.js → client/bb_private_kernel_prover.js} +53 -21
  23. package/dest/prover/client/bundle.d.ts +6 -0
  24. package/dest/prover/client/bundle.d.ts.map +1 -0
  25. package/dest/prover/client/bundle.js +7 -0
  26. package/dest/prover/client/lazy.d.ts +6 -0
  27. package/dest/prover/client/lazy.d.ts.map +1 -0
  28. package/dest/prover/client/lazy.js +7 -0
  29. package/dest/prover/index.d.ts +3 -4
  30. package/dest/prover/index.d.ts.map +1 -1
  31. package/dest/prover/index.js +2 -3
  32. package/dest/prover/proof_utils.d.ts +19 -0
  33. package/dest/prover/proof_utils.d.ts.map +1 -0
  34. package/dest/prover/proof_utils.js +72 -0
  35. package/dest/prover/server/bb_prover.d.ts +97 -0
  36. package/dest/prover/server/bb_prover.d.ts.map +1 -0
  37. package/dest/prover/server/bb_prover.js +712 -0
  38. package/dest/test/delay_values.d.ts +1 -1
  39. package/dest/test/delay_values.d.ts.map +1 -1
  40. package/dest/test/delay_values.js +37 -23
  41. package/dest/test/index.d.ts +2 -1
  42. package/dest/test/index.d.ts.map +1 -1
  43. package/dest/test/index.js +1 -0
  44. package/dest/test/test_circuit_prover.d.ts +27 -36
  45. package/dest/test/test_circuit_prover.d.ts.map +1 -1
  46. package/dest/test/test_circuit_prover.js +517 -88
  47. package/dest/test/test_verifier.d.ts +6 -3
  48. package/dest/test/test_verifier.d.ts.map +1 -1
  49. package/dest/test/test_verifier.js +23 -1
  50. package/dest/verification_key/verification_key_data.d.ts +1 -2
  51. package/dest/verification_key/verification_key_data.d.ts.map +1 -1
  52. package/dest/verification_key/verification_key_data.js +9 -34
  53. package/dest/verifier/bb_verifier.d.ts +6 -5
  54. package/dest/verifier/bb_verifier.d.ts.map +1 -1
  55. package/dest/verifier/bb_verifier.js +45 -27
  56. package/dest/verifier/index.d.ts +2 -1
  57. package/dest/verifier/index.d.ts.map +1 -1
  58. package/dest/verifier/index.js +1 -0
  59. package/dest/verifier/queued_chonk_verifier.d.ts +15 -0
  60. package/dest/verifier/queued_chonk_verifier.d.ts.map +1 -0
  61. package/dest/verifier/queued_chonk_verifier.js +101 -0
  62. package/package.json +35 -33
  63. package/src/avm_proving_tests/avm_proving_tester.ts +223 -113
  64. package/src/bb/execute.ts +116 -291
  65. package/src/config.ts +2 -0
  66. package/src/honk.ts +3 -2
  67. package/src/index.ts +1 -0
  68. package/src/instrumentation.ts +10 -43
  69. package/src/prover/{bb_private_kernel_prover.ts → client/bb_private_kernel_prover.ts} +94 -33
  70. package/src/prover/client/bundle.ts +10 -0
  71. package/src/prover/client/lazy.ts +10 -0
  72. package/src/prover/index.ts +2 -3
  73. package/src/prover/proof_utils.ts +115 -0
  74. package/src/prover/server/bb_prover.ts +718 -0
  75. package/src/test/delay_values.ts +38 -22
  76. package/src/test/index.ts +1 -0
  77. package/src/test/test_circuit_prover.ts +264 -154
  78. package/src/test/test_verifier.ts +15 -3
  79. package/src/verification_key/verification_key_data.ts +11 -31
  80. package/src/verifier/bb_verifier.ts +62 -35
  81. package/src/verifier/index.ts +1 -0
  82. package/src/verifier/queued_chonk_verifier.ts +109 -0
  83. package/dest/prover/bb_native_private_kernel_prover.d.ts +0 -25
  84. package/dest/prover/bb_native_private_kernel_prover.d.ts.map +0 -1
  85. package/dest/prover/bb_native_private_kernel_prover.js +0 -69
  86. package/dest/prover/bb_private_kernel_prover.d.ts +0 -32
  87. package/dest/prover/bb_private_kernel_prover.d.ts.map +0 -1
  88. package/dest/prover/bb_prover.d.ts +0 -120
  89. package/dest/prover/bb_prover.d.ts.map +0 -1
  90. package/dest/prover/bb_prover.js +0 -423
  91. package/dest/prover/client_ivc_proof_utils.d.ts +0 -25
  92. package/dest/prover/client_ivc_proof_utils.d.ts.map +0 -1
  93. package/dest/prover/client_ivc_proof_utils.js +0 -43
  94. package/dest/stats.d.ts +0 -5
  95. package/dest/stats.d.ts.map +0 -1
  96. package/dest/stats.js +0 -62
  97. package/dest/wasm/bb_wasm_private_kernel_prover.d.ts +0 -17
  98. package/dest/wasm/bb_wasm_private_kernel_prover.d.ts.map +0 -1
  99. package/dest/wasm/bb_wasm_private_kernel_prover.js +0 -46
  100. package/dest/wasm/bundle.d.ts +0 -6
  101. package/dest/wasm/bundle.d.ts.map +0 -1
  102. package/dest/wasm/bundle.js +0 -8
  103. package/dest/wasm/lazy.d.ts +0 -6
  104. package/dest/wasm/lazy.d.ts.map +0 -1
  105. package/dest/wasm/lazy.js +0 -8
  106. package/src/prover/bb_native_private_kernel_prover.ts +0 -119
  107. package/src/prover/bb_prover.ts +0 -781
  108. package/src/prover/client_ivc_proof_utils.ts +0 -42
  109. package/src/stats.ts +0 -64
  110. package/src/wasm/bb_wasm_private_kernel_prover.ts +0 -55
  111. package/src/wasm/bundle.ts +0 -11
  112. package/src/wasm/lazy.ts +0 -11
package/dest/honk.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/server';
2
- export type UltraHonkFlavor = 'ultra_honk' | 'ultra_keccak_honk' | 'ultra_rollup_honk';
2
+ export type UltraHonkFlavor = 'ultra_honk' | 'ultra_keccak_honk' | 'ultra_starknet_honk' | 'ultra_rollup_honk';
3
3
  declare const UltraKeccakHonkCircuits: ["RootRollupArtifact"];
4
- declare const UltraHonkCircuits: ["BaseParityArtifact", "RootParityArtifact"];
4
+ declare const UltraHonkCircuits: ["ParityBaseArtifact", "ParityRootArtifact"];
5
5
  export type UltraKeccakHonkServerProtocolArtifact = (typeof UltraKeccakHonkCircuits)[number];
6
6
  export type UltraHonkServerProtocolArtifact = (typeof UltraHonkCircuits)[number];
7
7
  export type UltraRollupHonkServerProtocolArtifact = Exclude<Exclude<ServerProtocolArtifact, UltraKeccakHonkServerProtocolArtifact>, UltraHonkServerProtocolArtifact>;
@@ -10,4 +10,4 @@ export declare function getUltraHonkFlavorForCircuit(artifact: UltraHonkServerPr
10
10
  export declare function getUltraHonkFlavorForCircuit(artifact: UltraRollupHonkServerProtocolArtifact): 'ultra_rollup_honk';
11
11
  export declare function getUltraHonkFlavorForCircuit(artifact: ServerProtocolArtifact): UltraHonkFlavor;
12
12
  export {};
13
- //# sourceMappingURL=honk.d.ts.map
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9uay5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2hvbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUV6RixNQUFNLE1BQU0sZUFBZSxHQUFHLFlBQVksR0FBRyxtQkFBbUIsR0FBRyxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUUvRyxRQUFBLE1BQU0sdUJBQXVCLHdCQUFxRSxDQUFDO0FBQ25HLFFBQUEsTUFBTSxpQkFBaUIsOENBQTJGLENBQUM7QUFFbkgsTUFBTSxNQUFNLHFDQUFxQyxHQUFHLENBQUMsT0FBTyx1QkFBdUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdGLE1BQU0sTUFBTSwrQkFBK0IsR0FBRyxDQUFDLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqRixNQUFNLE1BQU0scUNBQXFDLEdBQUcsT0FBTyxDQUN6RCxPQUFPLENBQUMsc0JBQXNCLEVBQUUscUNBQXFDLENBQUMsRUFDdEUsK0JBQStCLENBQ2hDLENBQUM7QUFFRix3QkFBZ0IsNEJBQTRCLENBQUMsUUFBUSxFQUFFLHFDQUFxQyxHQUFHLG1CQUFtQixDQUFDO0FBQ25ILHdCQUFnQiw0QkFBNEIsQ0FBQyxRQUFRLEVBQUUsK0JBQStCLEdBQUcsWUFBWSxDQUFDO0FBQ3RHLHdCQUFnQiw0QkFBNEIsQ0FBQyxRQUFRLEVBQUUscUNBQXFDLEdBQUcsbUJBQW1CLENBQUM7QUFDbkgsd0JBQWdCLDRCQUE0QixDQUFDLFFBQVEsRUFBRSxzQkFBc0IsR0FBRyxlQUFlLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"honk.d.ts","sourceRoot":"","sources":["../src/honk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEzF,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAEvF,QAAA,MAAM,uBAAuB,wBAAqE,CAAC;AACnG,QAAA,MAAM,iBAAiB,8CAA2F,CAAC;AAEnH,MAAM,MAAM,qCAAqC,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7F,MAAM,MAAM,+BAA+B,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AACjF,MAAM,MAAM,qCAAqC,GAAG,OAAO,CACzD,OAAO,CAAC,sBAAsB,EAAE,qCAAqC,CAAC,EACtE,+BAA+B,CAChC,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,qCAAqC,GAAG,mBAAmB,CAAC;AACnH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,+BAA+B,GAAG,YAAY,CAAC;AACtG,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,qCAAqC,GAAG,mBAAmB,CAAC;AACnH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,sBAAsB,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"honk.d.ts","sourceRoot":"","sources":["../src/honk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEzF,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,mBAAmB,GAAG,qBAAqB,GAAG,mBAAmB,CAAC;AAE/G,QAAA,MAAM,uBAAuB,wBAAqE,CAAC;AACnG,QAAA,MAAM,iBAAiB,8CAA2F,CAAC;AAEnH,MAAM,MAAM,qCAAqC,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7F,MAAM,MAAM,+BAA+B,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AACjF,MAAM,MAAM,qCAAqC,GAAG,OAAO,CACzD,OAAO,CAAC,sBAAsB,EAAE,qCAAqC,CAAC,EACtE,+BAA+B,CAChC,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,qCAAqC,GAAG,mBAAmB,CAAC;AACnH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,+BAA+B,GAAG,YAAY,CAAC;AACtG,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,qCAAqC,GAAG,mBAAmB,CAAC;AACnH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,sBAAsB,GAAG,eAAe,CAAC"}
package/dest/honk.js CHANGED
@@ -2,10 +2,11 @@ const UltraKeccakHonkCircuits = [
2
2
  'RootRollupArtifact'
3
3
  ];
4
4
  const UltraHonkCircuits = [
5
- 'BaseParityArtifact',
6
- 'RootParityArtifact'
5
+ 'ParityBaseArtifact',
6
+ 'ParityRootArtifact'
7
7
  ];
8
8
  export function getUltraHonkFlavorForCircuit(artifact) {
9
+ // STARKNET: how to allow for the distinction between keccak/starknet? ultra_keccak_honk is returned in both cases
9
10
  if (isUltraKeccakHonkCircuit(artifact)) {
10
11
  return 'ultra_keccak_honk';
11
12
  } else if (UltraHonkCircuits.includes(artifact)) {
package/dest/index.d.ts CHANGED
@@ -4,5 +4,6 @@ export * from './verifier/index.js';
4
4
  export * from './config.js';
5
5
  export * from './bb/execute.js';
6
6
  export * from './honk.js';
7
+ export * from './verification_key/verification_key_data.js';
7
8
  export { type ClientProtocolCircuitVerifier } from '@aztec/stdlib/interfaces/server';
8
- //# sourceMappingURL=index.d.ts.map
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsT0FBTyxFQUFFLEtBQUssNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAE1B,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,6CAA6C,CAAC;AAE5D,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,iCAAiC,CAAC"}
package/dest/index.js CHANGED
@@ -4,3 +4,4 @@ export * from './verifier/index.js';
4
4
  export * from './config.js';
5
5
  export * from './bb/execute.js';
6
6
  export * from './honk.js';
7
+ export * from './verification_key/verification_key_data.js';
@@ -21,7 +21,7 @@ export declare class ProverInstrumentation {
21
21
  * @param circuitName - The name of the circuit
22
22
  * @param timerOrMS - The duration
23
23
  */
24
- recordDuration(metric: 'simulationDuration' | 'witGenDuration' | 'provingDuration', circuitName: CircuitName | 'tubeCircuit', timerOrMS: Timer | number): void;
24
+ recordDuration(metric: 'simulationDuration' | 'witGenDuration' | 'provingDuration', circuitName: CircuitName, timerOrMS: Timer | number): void;
25
25
  /**
26
26
  * Records the duration of an AVM circuit operation.
27
27
  * @param metric - The metric to record
@@ -35,7 +35,7 @@ export declare class ProverInstrumentation {
35
35
  * @param circuitName - The name of the circuit
36
36
  * @param size - The size
37
37
  */
38
- recordSize(metric: 'witGenInputSize' | 'witGenOutputSize' | 'proofSize' | 'circuitSize' | 'circuitPublicInputCount', circuitName: CircuitName | 'tubeCircuit', size: number): void;
38
+ recordSize(metric: 'witGenInputSize' | 'witGenOutputSize' | 'proofSize' | 'circuitSize' | 'circuitPublicInputCount', circuitName: CircuitName, size: number): void;
39
39
  /**
40
40
  * Records the size of an AVM circuit operation.
41
41
  * @param metric - The metric to record
@@ -44,4 +44,4 @@ export declare class ProverInstrumentation {
44
44
  */
45
45
  recordAvmSize(metric: 'witGenInputSize' | 'witGenOutputSize' | 'proofSize' | 'circuitSize' | 'circuitPublicInputCount', appCircuitName: string, size: number): void;
46
46
  }
47
- //# sourceMappingURL=instrumentation.d.ts.map
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFLTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxNQUFNLEVBQ1osTUFBTSx5QkFBeUIsQ0FBQztBQUVqQzs7R0FFRztBQUNILHFCQUFhLHFCQUFxQjtJQUNoQyxPQUFPLENBQUMsa0JBQWtCLENBQVk7SUFDdEMsT0FBTyxDQUFDLGNBQWMsQ0FBWTtJQUNsQyxPQUFPLENBQUMsZUFBZSxDQUFZO0lBRW5DLE9BQU8sQ0FBQyxlQUFlLENBQVE7SUFDL0IsT0FBTyxDQUFDLGdCQUFnQixDQUFRO0lBRWhDLE9BQU8sQ0FBQyxTQUFTLENBQVE7SUFDekIsT0FBTyxDQUFDLFdBQVcsQ0FBUTtJQUMzQixPQUFPLENBQUMsdUJBQXVCLENBQVE7SUFFdkMsU0FBZ0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUUvQixZQUFZLFNBQVMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFtQm5EO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQ1osTUFBTSxFQUFFLG9CQUFvQixHQUFHLGdCQUFnQixHQUFHLGlCQUFpQixFQUNuRSxXQUFXLEVBQUUsV0FBVyxFQUN4QixTQUFTLEVBQUUsS0FBSyxHQUFHLE1BQU0sUUFNMUI7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsR0FBRyxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxRQUtoSDtJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUNSLE1BQU0sRUFBRSxpQkFBaUIsR0FBRyxrQkFBa0IsR0FBRyxXQUFXLEdBQUcsYUFBYSxHQUFHLHlCQUF5QixFQUN4RyxXQUFXLEVBQUUsV0FBVyxFQUN4QixJQUFJLEVBQUUsTUFBTSxRQUtiO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhLENBQ1gsTUFBTSxFQUFFLGlCQUFpQixHQUFHLGtCQUFrQixHQUFHLFdBQVcsR0FBRyxhQUFhLEdBQUcseUJBQXlCLEVBQ3hHLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLElBQUksRUFBRSxNQUFNLFFBS2I7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EAEZ,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,eAAe,CAAY;IAEnC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,gBAAgB,CAAQ;IAEhC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,uBAAuB,CAAQ;IAEvC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM;IAmDpD;;;;;OAKG;IACH,cAAc,CACZ,MAAM,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,iBAAiB,EACnE,WAAW,EAAE,WAAW,GAAG,aAAa,EACxC,SAAS,EAAE,KAAK,GAAG,MAAM;IAS3B;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM;IAOjH;;;;;OAKG;IACH,UAAU,CACR,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,WAAW,GAAG,aAAa,GAAG,yBAAyB,EACxG,WAAW,EAAE,WAAW,GAAG,aAAa,EACxC,IAAI,EAAE,MAAM;IAQd;;;;;OAKG;IACH,aAAa,CACX,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,WAAW,GAAG,aAAa,GAAG,yBAAyB,EACxG,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM;CAMf"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EACZ,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,eAAe,CAAY;IAEnC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,gBAAgB,CAAQ;IAEhC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,uBAAuB,CAAQ;IAEvC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YAAY,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAmBnD;IAED;;;;;OAKG;IACH,cAAc,CACZ,MAAM,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,iBAAiB,EACnE,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,KAAK,GAAG,MAAM,QAM1B;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAKhH;IAED;;;;;OAKG;IACH,UAAU,CACR,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,WAAW,GAAG,aAAa,GAAG,yBAAyB,EACxG,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,QAKb;IAED;;;;;OAKG;IACH,aAAa,CACX,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,WAAW,GAAG,aAAa,GAAG,yBAAyB,EACxG,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,QAKb;CACF"}
@@ -1,4 +1,4 @@
1
- import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
1
+ import { Attributes, Metrics } from '@aztec/telemetry-client';
2
2
  /**
3
3
  * Instrumentation class for Prover implementations.
4
4
  */ export class ProverInstrumentation {
@@ -14,44 +14,14 @@ import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
14
14
  constructor(telemetry, name){
15
15
  this.tracer = telemetry.getTracer(name);
16
16
  const meter = telemetry.getMeter(name);
17
- this.simulationDuration = meter.createHistogram(Metrics.CIRCUIT_SIMULATION_DURATION, {
18
- description: 'Records how long it takes to simulate a circuit',
19
- unit: 'ms',
20
- valueType: ValueType.INT
21
- });
22
- this.witGenDuration = meter.createHistogram(Metrics.CIRCUIT_WITNESS_GEN_DURATION, {
23
- description: 'Records how long it takes to generate the partial witness for a circuit',
24
- unit: 's',
25
- valueType: ValueType.DOUBLE
26
- });
27
- this.provingDuration = meter.createHistogram(Metrics.CIRCUIT_PROVING_DURATION, {
28
- unit: 's',
29
- description: 'Records how long it takes to prove a circuit',
30
- valueType: ValueType.DOUBLE
31
- });
32
- this.witGenInputSize = meter.createGauge(Metrics.CIRCUIT_WITNESS_GEN_INPUT_SIZE, {
33
- unit: 'By',
34
- description: 'Records the size of the input to the witness generation',
35
- valueType: ValueType.INT
36
- });
37
- this.witGenOutputSize = meter.createGauge(Metrics.CIRCUIT_WITNESS_GEN_OUTPUT_SIZE, {
38
- unit: 'By',
39
- description: 'Records the size of the output of the witness generation',
40
- valueType: ValueType.INT
41
- });
42
- this.proofSize = meter.createGauge(Metrics.CIRCUIT_PROVING_PROOF_SIZE, {
43
- unit: 'By',
44
- description: 'Records the size of the proof generated for a circuit',
45
- valueType: ValueType.INT
46
- });
47
- this.circuitPublicInputCount = meter.createGauge(Metrics.CIRCUIT_PUBLIC_INPUTS_COUNT, {
48
- description: 'Records the number of public inputs in a circuit',
49
- valueType: ValueType.INT
50
- });
51
- this.circuitSize = meter.createGauge(Metrics.CIRCUIT_SIZE, {
52
- description: 'Records the size of the circuit in gates',
53
- valueType: ValueType.INT
54
- });
17
+ this.simulationDuration = meter.createHistogram(Metrics.CIRCUIT_SIMULATION_DURATION);
18
+ this.witGenDuration = meter.createHistogram(Metrics.CIRCUIT_WITNESS_GEN_DURATION);
19
+ this.provingDuration = meter.createHistogram(Metrics.CIRCUIT_PROVING_DURATION);
20
+ this.witGenInputSize = meter.createGauge(Metrics.CIRCUIT_WITNESS_GEN_INPUT_SIZE);
21
+ this.witGenOutputSize = meter.createGauge(Metrics.CIRCUIT_WITNESS_GEN_OUTPUT_SIZE);
22
+ this.proofSize = meter.createGauge(Metrics.CIRCUIT_PROVING_PROOF_SIZE);
23
+ this.circuitPublicInputCount = meter.createGauge(Metrics.CIRCUIT_PUBLIC_INPUTS_COUNT);
24
+ this.circuitSize = meter.createGauge(Metrics.CIRCUIT_SIZE);
55
25
  }
56
26
  /**
57
27
  * Records the duration of a circuit operation.
@@ -61,8 +31,7 @@ import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
61
31
  */ recordDuration(metric, circuitName, timerOrMS) {
62
32
  const s = typeof timerOrMS === 'number' ? timerOrMS / 1000 : timerOrMS.s();
63
33
  this[metric].record(s, {
64
- [Attributes.PROTOCOL_CIRCUIT_NAME]: circuitName,
65
- [Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server'
34
+ [Attributes.PROTOCOL_CIRCUIT_NAME]: circuitName
66
35
  });
67
36
  }
68
37
  /**
@@ -83,8 +52,7 @@ import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
83
52
  * @param size - The size
84
53
  */ recordSize(metric, circuitName, size) {
85
54
  this[metric].record(Math.ceil(size), {
86
- [Attributes.PROTOCOL_CIRCUIT_NAME]: circuitName,
87
- [Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server'
55
+ [Attributes.PROTOCOL_CIRCUIT_NAME]: circuitName
88
56
  });
89
57
  }
90
58
  /**
@@ -0,0 +1,38 @@
1
+ import { type BackendOptions } from '@aztec/bb.js';
2
+ import { type Logger } from '@aztec/foundation/log';
3
+ import { type ArtifactProvider, type ClientProtocolArtifact } from '@aztec/noir-protocol-circuits-types/types';
4
+ import type { Abi, WitnessMap } from '@aztec/noir-types';
5
+ import type { CircuitSimulator } from '@aztec/simulator/client';
6
+ import type { PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
7
+ import type { HidingKernelToPublicPrivateInputs, HidingKernelToRollupPrivateInputs, PrivateExecutionStep, PrivateKernelCircuitPublicInputs, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelResetCircuitPrivateInputs, PrivateKernelSimulateOutput, PrivateKernelTailCircuitPrivateInputs, PrivateKernelTailCircuitPublicInputs } from '@aztec/stdlib/kernel';
8
+ import { ChonkProofWithPublicInputs } from '@aztec/stdlib/proofs';
9
+ export type BBPrivateKernelProverOptions = Omit<BackendOptions, 'logger'> & {
10
+ logger?: Logger;
11
+ };
12
+ export declare abstract class BBPrivateKernelProver implements PrivateKernelProver {
13
+ protected artifactProvider: ArtifactProvider;
14
+ protected simulator: CircuitSimulator;
15
+ protected options: BBPrivateKernelProverOptions;
16
+ private log;
17
+ constructor(artifactProvider: ArtifactProvider, simulator: CircuitSimulator, options?: BBPrivateKernelProverOptions);
18
+ generateInitOutput(inputs: PrivateKernelInitCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
19
+ simulateInit(inputs: PrivateKernelInitCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
20
+ generateInnerOutput(inputs: PrivateKernelInnerCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
21
+ simulateInner(inputs: PrivateKernelInnerCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
22
+ generateResetOutput(inputs: PrivateKernelResetCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
23
+ simulateReset(inputs: PrivateKernelResetCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
24
+ generateTailOutput(inputs: PrivateKernelTailCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>>;
25
+ simulateTail(inputs: PrivateKernelTailCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>>;
26
+ generateHidingToRollupOutput(inputs: HidingKernelToRollupPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>>;
27
+ generateHidingToPublicOutput(inputs: HidingKernelToPublicPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>>;
28
+ simulateCircuitOutput<I extends {
29
+ toBuffer: () => Buffer;
30
+ }, O extends PrivateKernelCircuitPublicInputs | PrivateKernelTailCircuitPublicInputs>(inputs: I, circuitType: ClientProtocolArtifact, convertInputs: (inputs: I, abi: Abi) => WitnessMap, convertOutputs: (outputs: WitnessMap, abi: Abi) => O): Promise<PrivateKernelSimulateOutput<O>>;
31
+ generateCircuitOutput<I extends {
32
+ toBuffer: () => Buffer;
33
+ }, O extends PrivateKernelCircuitPublicInputs | PrivateKernelTailCircuitPublicInputs>(inputs: I, circuitType: ClientProtocolArtifact, convertInputs: (inputs: I, abi: Abi) => WitnessMap, convertOutputs: (outputs: WitnessMap, abi: Abi) => O): Promise<PrivateKernelSimulateOutput<O>>;
34
+ makeEmptyKernelSimulateOutput<PublicInputsType extends PrivateKernelTailCircuitPublicInputs | PrivateKernelCircuitPublicInputs>(publicInputs: PublicInputsType, circuitType: ClientProtocolArtifact): Promise<PrivateKernelSimulateOutput<PublicInputsType>>;
35
+ createChonkProof(executionSteps: PrivateExecutionStep[]): Promise<ChonkProofWithPublicInputs>;
36
+ computeGateCountForCircuit(_bytecode: Buffer, _circuitName: string): Promise<number>;
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfcHJpdmF0ZV9rZXJuZWxfcHJvdmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmVyL2NsaWVudC9iYl9wcml2YXRlX2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixLQUFLLGNBQWMsRUFBZ0IsTUFBTSxjQUFjLENBQUM7QUFDckYsT0FBTyxFQUFpQixLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQW9CakYsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssc0JBQXNCLEVBRTVCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEtBQUssRUFDVixpQ0FBaUMsRUFDakMsaUNBQWlDLEVBQ2pDLG9CQUFvQixFQUNwQixnQ0FBZ0MsRUFDaEMscUNBQXFDLEVBQ3JDLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsMkJBQTJCLEVBQzNCLHFDQUFxQyxFQUNyQyxvQ0FBb0MsRUFDckMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUtsRSxNQUFNLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsR0FBRztJQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBQUM7QUFDaEcsOEJBQXNCLHFCQUFzQixZQUFXLG1CQUFtQjtJQUl0RSxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQzVDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdC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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bb_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../../src/prover/client/bb_private_kernel_prover.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,21 @@
1
+ import { AztecClientBackend, Barretenberg } from '@aztec/bb.js';
1
2
  import { createLogger } from '@aztec/foundation/log';
2
3
  import { Timer } from '@aztec/foundation/timer';
3
- import { convertPrivateKernelInitInputsToWitnessMapWithAbi, convertPrivateKernelInitOutputsFromWitnessMapWithAbi, convertPrivateKernelInnerInputsToWitnessMapWithAbi, convertPrivateKernelInnerOutputsFromWitnessMapWithAbi, convertPrivateKernelResetInputsToWitnessMapWithAbi, convertPrivateKernelResetOutputsFromWitnessMapWithAbi, convertPrivateKernelTailForPublicOutputsFromWitnessMapWithAbi, convertPrivateKernelTailInputsToWitnessMapWithAbi, convertPrivateKernelTailOutputsFromWitnessMapWithAbi, convertPrivateKernelTailToPublicInputsToWitnessMapWithAbi, getPrivateKernelResetArtifactName, updateResetCircuitSampleInputs } from '@aztec/noir-protocol-circuits-types/client';
4
- import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
4
+ import { serializeWitness } from '@aztec/noir-noirc_abi';
5
+ import { convertHidingKernelPublicInputsToWitnessMapWithAbi, convertHidingKernelToRollupInputsToWitnessMapWithAbi, convertPrivateKernelInitInputsToWitnessMapWithAbi, convertPrivateKernelInitOutputsFromWitnessMapWithAbi, convertPrivateKernelInnerInputsToWitnessMapWithAbi, convertPrivateKernelInnerOutputsFromWitnessMapWithAbi, convertPrivateKernelResetInputsToWitnessMapWithAbi, convertPrivateKernelResetOutputsFromWitnessMapWithAbi, convertPrivateKernelTailForPublicOutputsFromWitnessMapWithAbi, convertPrivateKernelTailInputsToWitnessMapWithAbi, convertPrivateKernelTailOutputsFromWitnessMapWithAbi, convertPrivateKernelTailToPublicInputsToWitnessMapWithAbi, foreignCallHandler, getPrivateKernelResetArtifactName, updateResetCircuitSampleInputs } from '@aztec/noir-protocol-circuits-types/client';
6
+ import { mapProtocolArtifactNameToCircuitName } from '@aztec/noir-protocol-circuits-types/types';
7
+ import { ChonkProofWithPublicInputs } from '@aztec/stdlib/proofs';
8
+ import { ungzip } from 'pako';
5
9
  export class BBPrivateKernelProver {
6
10
  artifactProvider;
7
- simulationProvider;
11
+ simulator;
12
+ options;
8
13
  log;
9
- constructor(artifactProvider, simulationProvider, log = createLogger('bb-prover')){
14
+ constructor(artifactProvider, simulator, options = {}){
10
15
  this.artifactProvider = artifactProvider;
11
- this.simulationProvider = simulationProvider;
12
- this.log = log;
16
+ this.simulator = simulator;
17
+ this.options = options;
18
+ this.log = options.logger || createLogger('bb-prover:private-kernel');
13
19
  }
14
20
  async generateInitOutput(inputs) {
15
21
  return await this.generateCircuitOutput(inputs, 'PrivateKernelInitArtifact', convertPrivateKernelInitInputsToWitnessMapWithAbi, convertPrivateKernelInitOutputsFromWitnessMapWithAbi);
@@ -46,22 +52,27 @@ export class BBPrivateKernelProver {
46
52
  }
47
53
  return await this.simulateCircuitOutput(inputs, 'PrivateKernelTailToPublicArtifact', convertPrivateKernelTailToPublicInputsToWitnessMapWithAbi, convertPrivateKernelTailForPublicOutputsFromWitnessMapWithAbi);
48
54
  }
55
+ async generateHidingToRollupOutput(inputs) {
56
+ return await this.generateCircuitOutput(inputs, 'HidingKernelToRollup', convertHidingKernelToRollupInputsToWitnessMapWithAbi, convertPrivateKernelTailOutputsFromWitnessMapWithAbi);
57
+ }
58
+ async generateHidingToPublicOutput(inputs) {
59
+ return await this.generateCircuitOutput(inputs, 'HidingKernelToPublic', convertHidingKernelPublicInputsToWitnessMapWithAbi, convertPrivateKernelTailForPublicOutputsFromWitnessMapWithAbi);
60
+ }
49
61
  async simulateCircuitOutput(inputs, circuitType, convertInputs, convertOutputs) {
50
62
  const compiledCircuit = await this.artifactProvider.getSimulatedClientCircuitArtifactByName(circuitType);
51
63
  const witnessMap = convertInputs(inputs, compiledCircuit.abi);
52
- const timer = new Timer();
53
- const outputWitness = await this.simulationProvider.executeProtocolCircuit(witnessMap, compiledCircuit).catch((err)=>{
64
+ const outputWitness = await this.simulator.executeProtocolCircuit(witnessMap, compiledCircuit, foreignCallHandler).catch((err)=>{
54
65
  this.log.debug(`Failed to simulate ${circuitType}`, {
55
66
  circuitName: mapProtocolArtifactNameToCircuitName(circuitType),
56
67
  error: err
57
68
  });
58
69
  throw err;
59
70
  });
60
- const output = convertOutputs(outputWitness, compiledCircuit.abi);
71
+ const output = convertOutputs(outputWitness.witness, compiledCircuit.abi);
61
72
  this.log.debug(`Simulated ${circuitType}`, {
62
73
  eventName: 'circuit-simulation',
63
74
  circuitName: mapProtocolArtifactNameToCircuitName(circuitType),
64
- duration: timer.ms(),
75
+ duration: outputWitness.duration,
65
76
  inputSize: inputs.toBuffer().length,
66
77
  outputSize: output.toBuffer().length
67
78
  });
@@ -71,22 +82,21 @@ export class BBPrivateKernelProver {
71
82
  this.log.debug(`Generating witness for ${circuitType}`);
72
83
  const compiledCircuit = await this.artifactProvider.getClientCircuitArtifactByName(circuitType);
73
84
  const witnessMap = convertInputs(inputs, compiledCircuit.abi);
74
- const timer = new Timer();
75
- const outputWitness = await this.simulationProvider.executeProtocolCircuit(witnessMap, compiledCircuit);
76
- const output = convertOutputs(outputWitness, compiledCircuit.abi);
85
+ const outputWitness = await this.simulator.executeProtocolCircuit(witnessMap, compiledCircuit, foreignCallHandler);
86
+ const output = convertOutputs(outputWitness.witness, compiledCircuit.abi);
77
87
  this.log.debug(`Generated witness for ${circuitType}`, {
78
88
  eventName: 'circuit-witness-generation',
79
89
  circuitName: mapProtocolArtifactNameToCircuitName(circuitType),
80
- duration: timer.ms(),
90
+ duration: outputWitness.duration,
81
91
  inputSize: inputs.toBuffer().length,
82
92
  outputSize: output.toBuffer().length
83
93
  });
84
- const verificationKey = (await this.artifactProvider.getCircuitVkByName(circuitType)).keyAsFields;
94
+ const verificationKey = await this.artifactProvider.getCircuitVkByName(circuitType);
85
95
  const bytecode = Buffer.from(compiledCircuit.bytecode, 'base64');
86
96
  const kernelOutput = {
87
97
  publicInputs: output,
88
98
  verificationKey,
89
- outputWitness,
99
+ outputWitness: outputWitness.witness,
90
100
  bytecode
91
101
  };
92
102
  return kernelOutput;
@@ -94,16 +104,38 @@ export class BBPrivateKernelProver {
94
104
  async makeEmptyKernelSimulateOutput(publicInputs, circuitType) {
95
105
  const kernelProofOutput = {
96
106
  publicInputs,
97
- verificationKey: (await this.artifactProvider.getCircuitVkByName(circuitType)).keyAsFields,
107
+ verificationKey: await this.artifactProvider.getCircuitVkByName(circuitType),
98
108
  outputWitness: new Map(),
99
109
  bytecode: Buffer.from([])
100
110
  };
101
111
  return kernelProofOutput;
102
112
  }
103
- createClientIvcProof(_acirs, _witnessStack) {
104
- throw new Error('Not implemented');
113
+ async createChonkProof(executionSteps) {
114
+ const timer = new Timer();
115
+ this.log.info(`Generating ClientIVC proof...`);
116
+ const barretenberg = await Barretenberg.initSingleton({
117
+ ...this.options,
118
+ logger: this.options.logger?.[process.env.LOG_LEVEL || 'verbose']
119
+ });
120
+ const backend = new AztecClientBackend(executionSteps.map((step)=>ungzip(step.bytecode)), barretenberg);
121
+ const [proof] = await backend.prove(executionSteps.map((step)=>ungzip(serializeWitness(step.witness))), executionSteps.map((step)=>step.vk));
122
+ this.log.info(`Generated ClientIVC proof`, {
123
+ eventName: 'client-ivc-proof-generation',
124
+ duration: timer.ms(),
125
+ proofSize: proof.length
126
+ });
127
+ return ChonkProofWithPublicInputs.fromBufferArray(proof);
105
128
  }
106
- computeGateCountForCircuit(_bytecode, _circuitName) {
107
- throw new Error('Not implemented');
129
+ async computeGateCountForCircuit(_bytecode, _circuitName) {
130
+ // Note we do not pass the vk to the backend. This is unneeded for gate counts.
131
+ const barretenberg = await Barretenberg.initSingleton({
132
+ ...this.options,
133
+ logger: this.options.logger?.[process.env.LOG_LEVEL || 'verbose']
134
+ });
135
+ const backend = new AztecClientBackend([
136
+ ungzip(_bytecode)
137
+ ], barretenberg);
138
+ const gateCount = await backend.gates();
139
+ return gateCount[0];
108
140
  }
109
141
  }
@@ -0,0 +1,6 @@
1
+ import type { CircuitSimulator } from '@aztec/simulator/client';
2
+ import { BBPrivateKernelProver, type BBPrivateKernelProverOptions } from './bb_private_kernel_prover.js';
3
+ export declare class BBBundlePrivateKernelProver extends BBPrivateKernelProver {
4
+ constructor(simulator: CircuitSimulator, options?: BBPrivateKernelProverOptions);
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmVyL2NsaWVudC9idW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsS0FBSyw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpHLHFCQUFhLDJCQUE0QixTQUFRLHFCQUFxQjtJQUNwRSxZQUFZLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEdBQUUsNEJBQWlDLEVBRWxGO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../src/prover/client/bundle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,KAAK,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAEzG,qBAAa,2BAA4B,SAAQ,qBAAqB;IACpE,YAAY,SAAS,EAAE,gBAAgB,EAAE,OAAO,GAAE,4BAAiC,EAElF;CACF"}
@@ -0,0 +1,7 @@
1
+ import { BundleArtifactProvider } from '@aztec/noir-protocol-circuits-types/client/bundle';
2
+ import { BBPrivateKernelProver } from './bb_private_kernel_prover.js';
3
+ export class BBBundlePrivateKernelProver extends BBPrivateKernelProver {
4
+ constructor(simulator, options = {}){
5
+ super(new BundleArtifactProvider(), simulator, options);
6
+ }
7
+ }
@@ -0,0 +1,6 @@
1
+ import type { CircuitSimulator } from '@aztec/simulator/client';
2
+ import { BBPrivateKernelProver, type BBPrivateKernelProverOptions } from './bb_private_kernel_prover.js';
3
+ export declare class BBLazyPrivateKernelProver extends BBPrivateKernelProver {
4
+ constructor(simulator: CircuitSimulator, options?: BBPrivateKernelProverOptions);
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3Zlci9jbGllbnQvbGF6eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxLQUFLLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekcscUJBQWEseUJBQTBCLFNBQVEscUJBQXFCO0lBQ2xFLFlBQVksU0FBUyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sR0FBRSw0QkFBaUMsRUFFbEY7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../../src/prover/client/lazy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,KAAK,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAEzG,qBAAa,yBAA0B,SAAQ,qBAAqB;IAClE,YAAY,SAAS,EAAE,gBAAgB,EAAE,OAAO,GAAE,4BAAiC,EAElF;CACF"}
@@ -0,0 +1,7 @@
1
+ import { LazyArtifactProvider } from '@aztec/noir-protocol-circuits-types/client/lazy';
2
+ import { BBPrivateKernelProver } from './bb_private_kernel_prover.js';
3
+ export class BBLazyPrivateKernelProver extends BBPrivateKernelProver {
4
+ constructor(simulator, options = {}){
5
+ super(new LazyArtifactProvider(), simulator, options);
6
+ }
7
+ }
@@ -1,4 +1,3 @@
1
- export * from './bb_prover.js';
2
- export * from './bb_native_private_kernel_prover.js';
3
- export * from './client_ivc_proof_utils.js';
4
- //# sourceMappingURL=index.d.ts.map
1
+ export * from './server/bb_prover.js';
2
+ export * from './proof_utils.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGtCQUFrQixDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prover/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prover/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
@@ -1,3 +1,2 @@
1
- export * from './bb_prover.js';
2
- export * from './bb_native_private_kernel_prover.js';
3
- export * from './client_ivc_proof_utils.js';
1
+ export * from './server/bb_prover.js';
2
+ export * from './proof_utils.js';
@@ -0,0 +1,19 @@
1
+ import type { Logger } from '@aztec/foundation/log';
2
+ import { ChonkProofWithPublicInputs, RecursiveProof } from '@aztec/stdlib/proofs';
3
+ import type { VerificationKeyData } from '@aztec/stdlib/vks';
4
+ /**
5
+ * Create a ChonkProof proof file.
6
+ *
7
+ * @param directory the directory to read the proof from.
8
+ * @returns the encapsulated chonk proof
9
+ */
10
+ export declare function readChonkProofFromOutputDirectory(directory: string): Promise<ChonkProofWithPublicInputs>;
11
+ /**
12
+ * Serialize a ChonkProof to a proof file.
13
+ *
14
+ * @param proof the ChonkProof from object
15
+ * @param directory the directory to write in
16
+ */
17
+ export declare function writeChonkProofToPath(chonkProof: ChonkProofWithPublicInputs, outputPath: string): Promise<void>;
18
+ export declare function readProofsFromOutputDirectory<PROOF_LENGTH extends number>(directory: string, vkData: VerificationKeyData, proofLength: PROOF_LENGTH, logger: Logger): Promise<RecursiveProof<PROOF_LENGTH>>;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvb2ZfdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92ZXIvcHJvb2ZfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDBCQUEwQixFQUFTLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFRN0Q7Ozs7O0dBS0c7QUFDSCx3QkFBc0IsaUNBQWlDLENBQUMsU0FBUyxFQUFFLE1BQU0sdUNBS3hFO0FBRUQ7Ozs7O0dBS0c7QUFDSCx3QkFBc0IscUJBQXFCLENBQUMsVUFBVSxFQUFFLDBCQUEwQixFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUlyRztBQXVCRCx3QkFBc0IsNkJBQTZCLENBQUMsWUFBWSxTQUFTLE1BQU0sRUFDN0UsU0FBUyxFQUFFLE1BQU0sRUFDakIsTUFBTSxFQUFFLG1CQUFtQixFQUMzQixXQUFXLEVBQUUsWUFBWSxFQUN6QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsQ0EyQ3ZDIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof_utils.d.ts","sourceRoot":"","sources":["../../src/prover/proof_utils.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAS,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAQ7D;;;;;GAKG;AACH,wBAAsB,iCAAiC,CAAC,SAAS,EAAE,MAAM,uCAKxE;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,0BAA0B,EAAE,UAAU,EAAE,MAAM,iBAIrG;AAuBD,wBAAsB,6BAA6B,CAAC,YAAY,SAAS,MAAM,EAC7E,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CA2CvC"}
@@ -0,0 +1,72 @@
1
+ import { CHONK_PROOF_LENGTH, HIDING_KERNEL_IO_PUBLIC_INPUTS_SIZE, IPA_CLAIM_SIZE, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, PAIRING_POINTS_SIZE, ULTRA_KECCAK_PROOF_LENGTH } from '@aztec/constants';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { ChonkProofWithPublicInputs, Proof, RecursiveProof } from '@aztec/stdlib/proofs';
4
+ import assert from 'assert';
5
+ import { promises as fs } from 'fs';
6
+ import * as path from 'path';
7
+ import { PROOF_FILENAME, PUBLIC_INPUTS_FILENAME } from '../bb/execute.js';
8
+ /**
9
+ * Create a ChonkProof proof file.
10
+ *
11
+ * @param directory the directory to read the proof from.
12
+ * @returns the encapsulated chonk proof
13
+ */ export async function readChonkProofFromOutputDirectory(directory) {
14
+ const proofFilename = path.join(directory, PROOF_FILENAME);
15
+ const binaryProof = await fs.readFile(proofFilename);
16
+ const proofFields = splitBufferIntoFields(binaryProof);
17
+ return new ChonkProofWithPublicInputs(proofFields);
18
+ }
19
+ /**
20
+ * Serialize a ChonkProof to a proof file.
21
+ *
22
+ * @param proof the ChonkProof from object
23
+ * @param directory the directory to write in
24
+ */ export async function writeChonkProofToPath(chonkProof, outputPath) {
25
+ // NB: Don't use chonkProof.toBuffer here because it will include the proof length.
26
+ const fieldsBuf = Buffer.concat(chonkProof.fieldsWithPublicInputs.map((field)=>field.toBuffer()));
27
+ await fs.writeFile(outputPath, fieldsBuf);
28
+ }
29
+ function getNumCustomPublicInputs(proofLength, vkData) {
30
+ let numPublicInputs = vkData.numPublicInputs;
31
+ if (proofLength == CHONK_PROOF_LENGTH) {
32
+ numPublicInputs -= HIDING_KERNEL_IO_PUBLIC_INPUTS_SIZE;
33
+ } else {
34
+ numPublicInputs -= PAIRING_POINTS_SIZE;
35
+ if (proofLength == NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH) {
36
+ numPublicInputs -= IPA_CLAIM_SIZE;
37
+ }
38
+ }
39
+ return numPublicInputs;
40
+ }
41
+ function splitBufferIntoFields(buffer) {
42
+ const fields = [];
43
+ for(let i = 0; i < buffer.length / Fr.SIZE_IN_BYTES; i++){
44
+ fields.push(Fr.fromBuffer(buffer.subarray(i * Fr.SIZE_IN_BYTES, (i + 1) * Fr.SIZE_IN_BYTES)));
45
+ }
46
+ return fields;
47
+ }
48
+ export async function readProofsFromOutputDirectory(directory, vkData, proofLength, logger) {
49
+ assert(proofLength == CHONK_PROOF_LENGTH || proofLength == NESTED_RECURSIVE_PROOF_LENGTH || proofLength == NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH || proofLength == ULTRA_KECCAK_PROOF_LENGTH, `Proof length must be one of the expected proof lengths, received ${proofLength}`);
50
+ const publicInputsFilename = path.join(directory, PUBLIC_INPUTS_FILENAME);
51
+ const proofFilename = path.join(directory, PROOF_FILENAME);
52
+ // Handle CHONK separately because bb outputs the proof fields with public inputs for CHONK.
53
+ const isChonk = proofLength == CHONK_PROOF_LENGTH;
54
+ const [binaryPublicInputs, binaryProof] = await Promise.all([
55
+ isChonk ? Buffer.alloc(0) : fs.readFile(publicInputsFilename),
56
+ fs.readFile(proofFilename)
57
+ ]);
58
+ const numPublicInputs = getNumCustomPublicInputs(proofLength, vkData);
59
+ let fieldsWithoutPublicInputs = splitBufferIntoFields(binaryProof);
60
+ if (isChonk) {
61
+ fieldsWithoutPublicInputs = fieldsWithoutPublicInputs.slice(numPublicInputs);
62
+ }
63
+ assert(fieldsWithoutPublicInputs.length == proofLength, `Proof fields length mismatch: ${fieldsWithoutPublicInputs.length} != ${proofLength}`);
64
+ // Concat binary public inputs and binary proof
65
+ // This buffer will have the form: [binary public inputs, binary proof]
66
+ const binaryProofWithPublicInputs = Buffer.concat([
67
+ binaryPublicInputs,
68
+ binaryProof
69
+ ]);
70
+ logger.debug(`Circuit path: ${directory}, proof fields length: ${fieldsWithoutPublicInputs.length}, num public inputs: ${numPublicInputs}, circuit size: ${vkData.circuitSize}`);
71
+ return new RecursiveProof(fieldsWithoutPublicInputs, new Proof(binaryProofWithPublicInputs, numPublicInputs), true, proofLength);
72
+ }