@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.
- package/dest/avm_proving_tests/avm_proving_tester.d.ts +14 -18
- package/dest/avm_proving_tests/avm_proving_tester.d.ts.map +1 -1
- package/dest/avm_proving_tests/avm_proving_tester.js +146 -79
- package/dest/bb/cli.d.ts +1 -1
- package/dest/bb/execute.d.ts +17 -50
- package/dest/bb/execute.d.ts.map +1 -1
- package/dest/bb/execute.js +145 -278
- package/dest/bb/index.d.ts +1 -1
- package/dest/config.d.ts +3 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/honk.d.ts +3 -3
- package/dest/honk.d.ts.map +1 -1
- package/dest/honk.js +3 -2
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/instrumentation.d.ts +3 -3
- package/dest/instrumentation.d.ts.map +1 -1
- package/dest/instrumentation.js +11 -43
- package/dest/prover/client/bb_private_kernel_prover.d.ts +38 -0
- package/dest/prover/client/bb_private_kernel_prover.d.ts.map +1 -0
- package/dest/prover/{bb_private_kernel_prover.js → client/bb_private_kernel_prover.js} +53 -21
- package/dest/prover/client/bundle.d.ts +6 -0
- package/dest/prover/client/bundle.d.ts.map +1 -0
- package/dest/prover/client/bundle.js +7 -0
- package/dest/prover/client/lazy.d.ts +6 -0
- package/dest/prover/client/lazy.d.ts.map +1 -0
- package/dest/prover/client/lazy.js +7 -0
- package/dest/prover/index.d.ts +3 -4
- package/dest/prover/index.d.ts.map +1 -1
- package/dest/prover/index.js +2 -3
- package/dest/prover/proof_utils.d.ts +19 -0
- package/dest/prover/proof_utils.d.ts.map +1 -0
- package/dest/prover/proof_utils.js +72 -0
- package/dest/prover/server/bb_prover.d.ts +97 -0
- package/dest/prover/server/bb_prover.d.ts.map +1 -0
- package/dest/prover/server/bb_prover.js +712 -0
- package/dest/test/delay_values.d.ts +1 -1
- package/dest/test/delay_values.d.ts.map +1 -1
- package/dest/test/delay_values.js +37 -23
- package/dest/test/index.d.ts +2 -1
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +1 -0
- package/dest/test/test_circuit_prover.d.ts +27 -36
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/test/test_circuit_prover.js +517 -88
- package/dest/test/test_verifier.d.ts +6 -3
- package/dest/test/test_verifier.d.ts.map +1 -1
- package/dest/test/test_verifier.js +23 -1
- package/dest/verification_key/verification_key_data.d.ts +1 -2
- package/dest/verification_key/verification_key_data.d.ts.map +1 -1
- package/dest/verification_key/verification_key_data.js +9 -34
- package/dest/verifier/bb_verifier.d.ts +6 -5
- package/dest/verifier/bb_verifier.d.ts.map +1 -1
- package/dest/verifier/bb_verifier.js +45 -27
- package/dest/verifier/index.d.ts +2 -1
- package/dest/verifier/index.d.ts.map +1 -1
- package/dest/verifier/index.js +1 -0
- package/dest/verifier/queued_chonk_verifier.d.ts +15 -0
- package/dest/verifier/queued_chonk_verifier.d.ts.map +1 -0
- package/dest/verifier/queued_chonk_verifier.js +101 -0
- package/package.json +35 -33
- package/src/avm_proving_tests/avm_proving_tester.ts +223 -113
- package/src/bb/execute.ts +116 -291
- package/src/config.ts +2 -0
- package/src/honk.ts +3 -2
- package/src/index.ts +1 -0
- package/src/instrumentation.ts +10 -43
- package/src/prover/{bb_private_kernel_prover.ts → client/bb_private_kernel_prover.ts} +94 -33
- package/src/prover/client/bundle.ts +10 -0
- package/src/prover/client/lazy.ts +10 -0
- package/src/prover/index.ts +2 -3
- package/src/prover/proof_utils.ts +115 -0
- package/src/prover/server/bb_prover.ts +718 -0
- package/src/test/delay_values.ts +38 -22
- package/src/test/index.ts +1 -0
- package/src/test/test_circuit_prover.ts +264 -154
- package/src/test/test_verifier.ts +15 -3
- package/src/verification_key/verification_key_data.ts +11 -31
- package/src/verifier/bb_verifier.ts +62 -35
- package/src/verifier/index.ts +1 -0
- package/src/verifier/queued_chonk_verifier.ts +109 -0
- package/dest/prover/bb_native_private_kernel_prover.d.ts +0 -25
- package/dest/prover/bb_native_private_kernel_prover.d.ts.map +0 -1
- package/dest/prover/bb_native_private_kernel_prover.js +0 -69
- package/dest/prover/bb_private_kernel_prover.d.ts +0 -32
- package/dest/prover/bb_private_kernel_prover.d.ts.map +0 -1
- package/dest/prover/bb_prover.d.ts +0 -120
- package/dest/prover/bb_prover.d.ts.map +0 -1
- package/dest/prover/bb_prover.js +0 -423
- package/dest/prover/client_ivc_proof_utils.d.ts +0 -25
- package/dest/prover/client_ivc_proof_utils.d.ts.map +0 -1
- package/dest/prover/client_ivc_proof_utils.js +0 -43
- package/dest/stats.d.ts +0 -5
- package/dest/stats.d.ts.map +0 -1
- package/dest/stats.js +0 -62
- package/dest/wasm/bb_wasm_private_kernel_prover.d.ts +0 -17
- package/dest/wasm/bb_wasm_private_kernel_prover.d.ts.map +0 -1
- package/dest/wasm/bb_wasm_private_kernel_prover.js +0 -46
- package/dest/wasm/bundle.d.ts +0 -6
- package/dest/wasm/bundle.d.ts.map +0 -1
- package/dest/wasm/bundle.js +0 -8
- package/dest/wasm/lazy.d.ts +0 -6
- package/dest/wasm/lazy.d.ts.map +0 -1
- package/dest/wasm/lazy.js +0 -8
- package/src/prover/bb_native_private_kernel_prover.ts +0 -119
- package/src/prover/bb_prover.ts +0 -781
- package/src/prover/client_ivc_proof_utils.ts +0 -42
- package/src/stats.ts +0 -64
- package/src/wasm/bb_wasm_private_kernel_prover.ts +0 -55
- package/src/wasm/bundle.ts +0 -11
- 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: ["
|
|
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=
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9uay5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2hvbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUV6RixNQUFNLE1BQU0sZUFBZSxHQUFHLFlBQVksR0FBRyxtQkFBbUIsR0FBRyxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUUvRyxRQUFBLE1BQU0sdUJBQXVCLHdCQUFxRSxDQUFDO0FBQ25HLFFBQUEsTUFBTSxpQkFBaUIsOENBQTJGLENBQUM7QUFFbkgsTUFBTSxNQUFNLHFDQUFxQyxHQUFHLENBQUMsT0FBTyx1QkFBdUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdGLE1BQU0sTUFBTSwrQkFBK0IsR0FBRyxDQUFDLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqRixNQUFNLE1BQU0scUNBQXFDLEdBQUcsT0FBTyxDQUN6RCxPQUFPLENBQUMsc0JBQXNCLEVBQUUscUNBQXFDLENBQUMsRUFDdEUsK0JBQStCLENBQ2hDLENBQUM7QUFFRix3QkFBZ0IsNEJBQTRCLENBQUMsUUFBUSxFQUFFLHFDQUFxQyxHQUFHLG1CQUFtQixDQUFDO0FBQ25ILHdCQUFnQiw0QkFBNEIsQ0FBQyxRQUFRLEVBQUUsK0JBQStCLEdBQUcsWUFBWSxDQUFDO0FBQ3RHLHdCQUFnQiw0QkFBNEIsQ0FBQyxRQUFRLEVBQUUscUNBQXFDLEdBQUcsbUJBQW1CLENBQUM7QUFDbkgsd0JBQWdCLDRCQUE0QixDQUFDLFFBQVEsRUFBRSxzQkFBc0IsR0FBRyxlQUFlLENBQUMifQ==
|
package/dest/honk.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
'
|
|
6
|
-
'
|
|
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=
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsT0FBTyxFQUFFLEtBQUssNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQyJ9
|
package/dest/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
@@ -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
|
|
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
|
|
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=
|
|
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,
|
|
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"}
|
package/dest/instrumentation.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Attributes, Metrics
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.
|
|
23
|
-
|
|
24
|
-
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfcHJpdmF0ZV9rZXJuZWxfcHJvdmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmVyL2NsaWVudC9iYl9wcml2YXRlX2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixLQUFLLGNBQWMsRUFBZ0IsTUFBTSxjQUFjLENBQUM7QUFDckYsT0FBTyxFQUFpQixLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQW9CakYsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssc0JBQXNCLEVBRTVCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEtBQUssRUFDVixpQ0FBaUMsRUFDakMsaUNBQWlDLEVBQ2pDLG9CQUFvQixFQUNwQixnQ0FBZ0MsRUFDaEMscUNBQXFDLEVBQ3JDLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsMkJBQTJCLEVBQzNCLHFDQUFxQyxFQUNyQyxvQ0FBb0MsRUFDckMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUtsRSxNQUFNLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsR0FBRztJQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBQUM7QUFDaEcsOEJBQXNCLHFCQUFzQixZQUFXLG1CQUFtQjtJQUl0RSxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQzVDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCO0lBQ3JDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsNEJBQTRCO0lBTGpELE9BQU8sQ0FBQyxHQUFHLENBQVM7SUFFcEIsWUFDWSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsU0FBUyxFQUFFLGdCQUFnQixFQUMzQixPQUFPLEdBQUUsNEJBQWlDLEVBR3JEO0lBRVksa0JBQWtCLENBQzdCLE1BQU0sRUFBRSxxQ0FBcUMsR0FDNUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FPeEU7SUFFWSxZQUFZLENBQ3ZCLE1BQU0sRUFBRSxxQ0FBcUMsR0FDNUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FPeEU7SUFFWSxtQkFBbUIsQ0FDOUIsTUFBTSxFQUFFLHNDQUFzQyxHQUM3QyxPQUFPLENBQUMsMkJBQTJCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQU94RTtJQUVZLGFBQWEsQ0FDeEIsTUFBTSxFQUFFLHNDQUFzQyxHQUM3QyxPQUFPLENBQUMsMkJBQTJCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQU94RTtJQUVZLG1CQUFtQixDQUM5QixNQUFNLEVBQUUsc0NBQXNDLEdBQzdDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBU3hFO0lBRVksYUFBYSxDQUN4QixNQUFNLEVBQUUsc0NBQXNDLEdBQzdDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBVXhFO0lBRVksa0JBQWtCLENBQzdCLE1BQU0sRUFBRSxxQ0FBcUMsR0FDNUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FlNUU7SUFFWSxZQUFZLENBQ3ZCLE1BQU0sRUFBRSxxQ0FBcUMsR0FDNUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FlNUU7SUFFWSw0QkFBNEIsQ0FDdkMsTUFBTSxFQUFFLGlDQUFpQyxHQUN4QyxPQUFPLENBQUMsMkJBQTJCLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQU81RTtJQUVZLDRCQUE0QixDQUN2QyxNQUFNLEVBQUUsaUNBQWlDLEdBQ3hDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBTzVFO0lBRVkscUJBQXFCLENBQ2hDLENBQUMsU0FBUztRQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQTtLQUFFLEVBQ3BDLENBQUMsU0FBUyxnQ0FBZ0MsR0FBRyxvQ0FBb0MsRUFFakYsTUFBTSxFQUFFLENBQUMsRUFDVCxXQUFXLEVBQUUsc0JBQXNCLEVBQ25DLGFBQWEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxVQUFVLEVBQ2xELGNBQWMsRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQ25ELE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQTBCekM7SUFFWSxxQkFBcUIsQ0FDaEMsQ0FBQyxTQUFTO1FBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0tBQUUsRUFDcEMsQ0FBQyxTQUFTLGdDQUFnQyxHQUFHLG9DQUFvQyxFQUVqRixNQUFNLEVBQUUsQ0FBQyxFQUNULFdBQVcsRUFBRSxzQkFBc0IsRUFDbkMsYUFBYSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLFVBQVUsRUFDbEQsY0FBYyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FDbkQsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBMkJ6QztJQUVZLDZCQUE2QixDQUN4QyxnQkFBZ0IsU0FBUyxvQ0FBb0MsR0FBRyxnQ0FBZ0MsRUFDaEcsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxzQkFBc0IsMERBUXBFO0lBRVksZ0JBQWdCLENBQUMsY0FBYyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBc0J6RztJQUVZLDBCQUEwQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBU2hHO0NBQ0YifQ==
|
|
@@ -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 {
|
|
4
|
-
import {
|
|
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
|
-
|
|
11
|
+
simulator;
|
|
12
|
+
options;
|
|
8
13
|
log;
|
|
9
|
-
constructor(artifactProvider,
|
|
14
|
+
constructor(artifactProvider, simulator, options = {}){
|
|
10
15
|
this.artifactProvider = artifactProvider;
|
|
11
|
-
this.
|
|
12
|
-
this.
|
|
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
|
|
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:
|
|
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
|
|
75
|
-
const
|
|
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:
|
|
90
|
+
duration: outputWitness.duration,
|
|
81
91
|
inputSize: inputs.toBuffer().length,
|
|
82
92
|
outputSize: output.toBuffer().length
|
|
83
93
|
});
|
|
84
|
-
const verificationKey =
|
|
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:
|
|
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
|
-
|
|
104
|
-
|
|
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
|
-
|
|
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
|
+
}
|
package/dest/prover/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from './bb_prover.js';
|
|
2
|
-
export * from './
|
|
3
|
-
|
|
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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prover/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
|
package/dest/prover/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export * from './bb_prover.js';
|
|
2
|
-
export * from './
|
|
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
|
+
}
|