@aztec/bb-prover 0.69.0-devnet → 0.69.1-devnet
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/bb/cli.d.ts +3 -0
- package/dest/bb/cli.d.ts.map +1 -1
- package/dest/bb/cli.js +7 -2
- package/dest/honk.d.ts +8 -8
- package/dest/honk.d.ts.map +1 -1
- package/dest/honk.js +2 -7
- package/dest/prover/bb_native_private_kernel_prover.d.ts +23 -0
- package/dest/prover/bb_native_private_kernel_prover.d.ts.map +1 -0
- package/dest/prover/bb_native_private_kernel_prover.js +68 -0
- package/dest/prover/bb_private_kernel_prover.d.ts +26 -41
- package/dest/prover/bb_private_kernel_prover.d.ts.map +1 -1
- package/dest/prover/bb_private_kernel_prover.js +62 -117
- package/dest/prover/bb_prover.d.ts +4 -6
- package/dest/prover/bb_prover.d.ts.map +1 -1
- package/dest/prover/bb_prover.js +9 -30
- package/dest/prover/index.d.ts +1 -1
- package/dest/prover/index.d.ts.map +1 -1
- package/dest/prover/index.js +2 -2
- package/dest/stats.d.ts +3 -3
- package/dest/stats.d.ts.map +1 -1
- package/dest/stats.js +4 -7
- package/dest/test/test_circuit_prover.d.ts +4 -4
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/test/test_circuit_prover.js +11 -9
- package/dest/verifier/bb_verifier.d.ts +6 -6
- package/dest/verifier/bb_verifier.d.ts.map +1 -1
- package/dest/verifier/bb_verifier.js +4 -4
- package/dest/wasm/bb_wasm_private_kernel_prover.d.ts +14 -0
- package/dest/wasm/bb_wasm_private_kernel_prover.d.ts.map +1 -0
- package/dest/wasm/bb_wasm_private_kernel_prover.js +30 -0
- package/dest/wasm/bundle.d.ts +5 -0
- package/dest/wasm/bundle.d.ts.map +1 -0
- package/dest/wasm/bundle.js +9 -0
- package/dest/wasm/lazy.d.ts +5 -0
- package/dest/wasm/lazy.d.ts.map +1 -0
- package/dest/wasm/lazy.js +9 -0
- package/package.json +11 -10
- package/src/bb/cli.ts +9 -1
- package/src/honk.ts +16 -21
- package/src/prover/bb_native_private_kernel_prover.ts +110 -0
- package/src/prover/bb_private_kernel_prover.ts +138 -201
- package/src/prover/bb_prover.ts +25 -67
- package/src/prover/index.ts +1 -1
- package/src/stats.ts +6 -11
- package/src/test/test_circuit_prover.ts +21 -36
- package/src/verifier/bb_verifier.ts +11 -10
- package/src/wasm/bb_wasm_private_kernel_prover.ts +40 -0
- package/src/wasm/bundle.ts +10 -0
- package/src/wasm/lazy.ts +10 -0
- package/dest/wasm/index.d.ts +0 -19
- package/dest/wasm/index.d.ts.map +0 -1
- package/dest/wasm/index.js +0 -74
- package/src/wasm/index.ts +0 -155
package/dest/bb/cli.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { type LogFn } from '@aztec/foundation/log';
|
|
2
|
+
import { type ProtocolArtifact } from '@aztec/noir-protocol-circuits-types/types';
|
|
3
|
+
import { type NoirCompiledCircuit } from '@aztec/types/noir';
|
|
2
4
|
import { Command } from 'commander';
|
|
5
|
+
export declare const ProtocolCircuitArtifacts: Record<ProtocolArtifact, NoirCompiledCircuit>;
|
|
3
6
|
/**
|
|
4
7
|
* Returns commander program that defines the CLI.
|
|
5
8
|
* @param log - Console logger.
|
package/dest/bb/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/bb/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAoF9C"}
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/bb/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAGlF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAoF9C"}
|
package/dest/bb/cli.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ClientCircuitArtifacts } from '@aztec/noir-protocol-circuits-types/client/bundle';
|
|
2
|
+
import { ServerCircuitArtifacts } from '@aztec/noir-protocol-circuits-types/server';
|
|
2
3
|
import { Command } from 'commander';
|
|
3
4
|
import { promises as fs } from 'fs';
|
|
4
5
|
import { generateContractForCircuit, generateKeyForNoirCircuit } from './execute.js';
|
|
5
6
|
const { BB_WORKING_DIRECTORY, BB_BINARY_PATH } = process.env;
|
|
7
|
+
export const ProtocolCircuitArtifacts = {
|
|
8
|
+
...ClientCircuitArtifacts,
|
|
9
|
+
...ServerCircuitArtifacts,
|
|
10
|
+
};
|
|
6
11
|
/**
|
|
7
12
|
* Returns commander program that defines the CLI.
|
|
8
13
|
* @param log - Console logger.
|
|
@@ -67,4 +72,4 @@ export function getProgram(log) {
|
|
|
67
72
|
});
|
|
68
73
|
return program;
|
|
69
74
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JiL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUlwRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVyRixNQUFNLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBa0Q7SUFDckYsR0FBRyxzQkFBc0I7SUFDekIsR0FBRyxzQkFBc0I7Q0FDMUIsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVU7SUFDbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBRTlELE9BQU87U0FDSixPQUFPLENBQUMsbUJBQW1CLENBQUM7U0FDNUIsV0FBVyxDQUFDLGdEQUFnRCxDQUFDO1NBQzdELE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDWCxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVksRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RyxDQUFDLENBQUMsQ0FBQztJQUVMLE9BQU87U0FDSixP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
|
package/dest/honk.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/server';
|
|
2
2
|
export type UltraHonkFlavor = 'ultra_honk' | 'ultra_keccak_honk' | 'ultra_rollup_honk';
|
|
3
3
|
declare const UltraKeccakHonkCircuits: ["RootRollupArtifact"];
|
|
4
4
|
declare const UltraHonkCircuits: ["BaseParityArtifact", "RootParityArtifact"];
|
|
5
|
-
export type
|
|
6
|
-
export type
|
|
7
|
-
export type
|
|
8
|
-
export declare function getUltraHonkFlavorForCircuit(artifact:
|
|
9
|
-
export declare function getUltraHonkFlavorForCircuit(artifact:
|
|
10
|
-
export declare function getUltraHonkFlavorForCircuit(artifact:
|
|
11
|
-
export declare function getUltraHonkFlavorForCircuit(artifact:
|
|
5
|
+
export type UltraKeccakHonkServerProtocolArtifact = (typeof UltraKeccakHonkCircuits)[number];
|
|
6
|
+
export type UltraHonkServerProtocolArtifact = (typeof UltraHonkCircuits)[number];
|
|
7
|
+
export type UltraRollupHonkServerProtocolArtifact = Exclude<Exclude<ServerProtocolArtifact, UltraKeccakHonkServerProtocolArtifact>, UltraHonkServerProtocolArtifact>;
|
|
8
|
+
export declare function getUltraHonkFlavorForCircuit(artifact: UltraKeccakHonkServerProtocolArtifact): 'ultra_keccak_honk';
|
|
9
|
+
export declare function getUltraHonkFlavorForCircuit(artifact: UltraHonkServerProtocolArtifact): 'ultra_honk';
|
|
10
|
+
export declare function getUltraHonkFlavorForCircuit(artifact: UltraRollupHonkServerProtocolArtifact): 'ultra_rollup_honk';
|
|
11
|
+
export declare function getUltraHonkFlavorForCircuit(artifact: ServerProtocolArtifact): UltraHonkFlavor;
|
|
12
12
|
export {};
|
|
13
13
|
//# sourceMappingURL=honk.d.ts.map
|
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,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"honk.d.ts","sourceRoot":"","sources":["../src/honk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,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"}
|
package/dest/honk.js
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
const UltraKeccakHonkCircuits = ['RootRollupArtifact'];
|
|
2
|
-
const UltraHonkCircuits = [
|
|
3
|
-
// 'EmptyNestedArtifact',
|
|
4
|
-
// 'PrivateKernelEmptyArtifact',
|
|
5
|
-
'BaseParityArtifact',
|
|
6
|
-
'RootParityArtifact',
|
|
7
|
-
];
|
|
2
|
+
const UltraHonkCircuits = ['BaseParityArtifact', 'RootParityArtifact'];
|
|
8
3
|
export function getUltraHonkFlavorForCircuit(artifact) {
|
|
9
4
|
if (isUltraKeccakHonkCircuit(artifact)) {
|
|
10
5
|
return 'ultra_keccak_honk';
|
|
@@ -17,4 +12,4 @@ export function getUltraHonkFlavorForCircuit(artifact) {
|
|
|
17
12
|
function isUltraKeccakHonkCircuit(artifact) {
|
|
18
13
|
return UltraKeccakHonkCircuits.includes(artifact);
|
|
19
14
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9uay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ob25rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBNkMsQ0FBQztBQUNuRyxNQUFNLGlCQUFpQixHQUFHLENBQUMsb0JBQW9CLEVBQUUsb0JBQW9CLENBQTZDLENBQUM7QUFhbkgsTUFBTSxVQUFVLDRCQUE0QixDQUFDLFFBQWdDO0lBQzNFLElBQUksd0JBQXdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN2QyxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7U0FBTSxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxRQUEyQyxDQUFDLEVBQUUsQ0FBQztRQUNuRixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBQ0QsT0FBTyxtQkFBbUIsQ0FBQztBQUM3QixDQUFDO0FBRUQsU0FBUyx3QkFBd0IsQ0FBQyxRQUFnQztJQUNoRSxPQUFPLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxRQUFpRCxDQUFDLENBQUM7QUFDN0YsQ0FBQyJ9
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import { type ClientIvcProof } from '@aztec/circuits.js';
|
|
4
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
5
|
+
import { type WitnessMap } from '@noir-lang/types';
|
|
6
|
+
import { type BBConfig } from '../config.js';
|
|
7
|
+
import { BBPrivateKernelProver } from './bb_private_kernel_prover.js';
|
|
8
|
+
/**
|
|
9
|
+
* This proof creator implementation uses the native bb binary.
|
|
10
|
+
*/
|
|
11
|
+
export declare class BBNativePrivateKernelProver extends BBPrivateKernelProver {
|
|
12
|
+
private bbBinaryPath;
|
|
13
|
+
private bbWorkingDirectory;
|
|
14
|
+
private skipCleanup;
|
|
15
|
+
protected log: Logger;
|
|
16
|
+
private constructor();
|
|
17
|
+
static new(config: BBConfig, log?: Logger): Promise<BBNativePrivateKernelProver>;
|
|
18
|
+
private _createClientIvcProof;
|
|
19
|
+
createClientIvcProof(acirs: Buffer[], witnessStack: WitnessMap[]): Promise<ClientIvcProof>;
|
|
20
|
+
computeGateCountForCircuit(bytecode: Buffer, circuitName: string): Promise<number>;
|
|
21
|
+
private runInDirectory;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=bb_native_private_kernel_prover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bb_native_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../src/prover/bb_native_private_kernel_prover.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAKlE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,qBAAqB;IAElE,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,WAAW;cACA,GAAG;IAJxB,OAAO;WASa,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM;YAKxC,qBAAqB;IAmCb,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAQ1F,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBxG,OAAO,CAAC,cAAc;CAYvB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { runInDirectory } from '@aztec/foundation/fs';
|
|
2
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
+
import { BundleArtifactProvider } from '@aztec/noir-protocol-circuits-types/client/bundle';
|
|
4
|
+
import { encode } from '@msgpack/msgpack';
|
|
5
|
+
import { serializeWitness } from '@noir-lang/noirc_abi';
|
|
6
|
+
import { promises as fs } from 'fs';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
import { BB_RESULT, computeGateCountForCircuit, executeBbClientIvcProof } from '../bb/execute.js';
|
|
9
|
+
import { BBPrivateKernelProver } from './bb_private_kernel_prover.js';
|
|
10
|
+
import { readFromOutputDirectory } from './client_ivc_proof_utils.js';
|
|
11
|
+
/**
|
|
12
|
+
* This proof creator implementation uses the native bb binary.
|
|
13
|
+
*/
|
|
14
|
+
export class BBNativePrivateKernelProver extends BBPrivateKernelProver {
|
|
15
|
+
constructor(bbBinaryPath, bbWorkingDirectory, skipCleanup, log = createLogger('bb-prover:native')) {
|
|
16
|
+
super(new BundleArtifactProvider(), log);
|
|
17
|
+
this.bbBinaryPath = bbBinaryPath;
|
|
18
|
+
this.bbWorkingDirectory = bbWorkingDirectory;
|
|
19
|
+
this.skipCleanup = skipCleanup;
|
|
20
|
+
this.log = log;
|
|
21
|
+
}
|
|
22
|
+
static async new(config, log) {
|
|
23
|
+
await fs.mkdir(config.bbWorkingDirectory, { recursive: true });
|
|
24
|
+
return new BBNativePrivateKernelProver(config.bbBinaryPath, config.bbWorkingDirectory, !!config.bbSkipCleanup, log);
|
|
25
|
+
}
|
|
26
|
+
async _createClientIvcProof(directory, acirs, witnessStack) {
|
|
27
|
+
// TODO(#7371): Longer term we won't use this hacked together msgpack format
|
|
28
|
+
// and instead properly create the bincode serialization from rust
|
|
29
|
+
await fs.writeFile(path.join(directory, 'acir.msgpack'), encode(acirs));
|
|
30
|
+
await fs.writeFile(path.join(directory, 'witnesses.msgpack'), encode(witnessStack.map(map => serializeWitness(map))));
|
|
31
|
+
const provingResult = await executeBbClientIvcProof(this.bbBinaryPath, directory, path.join(directory, 'acir.msgpack'), path.join(directory, 'witnesses.msgpack'), this.log.info);
|
|
32
|
+
if (provingResult.status === BB_RESULT.FAILURE) {
|
|
33
|
+
this.log.error(`Failed to generate client ivc proof`);
|
|
34
|
+
throw new Error(provingResult.reason);
|
|
35
|
+
}
|
|
36
|
+
const proof = await readFromOutputDirectory(directory);
|
|
37
|
+
this.log.info(`Generated IVC proof`, {
|
|
38
|
+
duration: provingResult.durationMs,
|
|
39
|
+
eventName: 'circuit-proving',
|
|
40
|
+
});
|
|
41
|
+
return proof;
|
|
42
|
+
}
|
|
43
|
+
async createClientIvcProof(acirs, witnessStack) {
|
|
44
|
+
this.log.info(`Generating Client IVC proof`);
|
|
45
|
+
const operation = async (directory) => {
|
|
46
|
+
return await this._createClientIvcProof(directory, acirs, witnessStack);
|
|
47
|
+
};
|
|
48
|
+
return await this.runInDirectory(operation);
|
|
49
|
+
}
|
|
50
|
+
async computeGateCountForCircuit(bytecode, circuitName) {
|
|
51
|
+
const logFunction = (message) => {
|
|
52
|
+
this.log.debug(`$bb gates ${circuitName} - ${message}`);
|
|
53
|
+
};
|
|
54
|
+
const result = await computeGateCountForCircuit(this.bbBinaryPath, this.bbWorkingDirectory, circuitName, bytecode, 'mega_honk', logFunction);
|
|
55
|
+
if (result.status === BB_RESULT.FAILURE) {
|
|
56
|
+
throw new Error(result.reason);
|
|
57
|
+
}
|
|
58
|
+
return result.circuitSize;
|
|
59
|
+
}
|
|
60
|
+
runInDirectory(fn) {
|
|
61
|
+
const log = this.log;
|
|
62
|
+
return runInDirectory(this.bbWorkingDirectory, (dir) => fn(dir).catch(err => {
|
|
63
|
+
log.error(`Error running operation at ${dir}: ${err}`);
|
|
64
|
+
throw err;
|
|
65
|
+
}), this.skipCleanup);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfbmF0aXZlX3ByaXZhdGVfa2VybmVsX3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92ZXIvYmJfbmF0aXZlX3ByaXZhdGVfa2VybmVsX3Byb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFlLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsUUFBUSxJQUFJLEVBQUUsRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEIsT0FBTyxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXRFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHFCQUFxQjtJQUNwRSxZQUNVLFlBQW9CLEVBQ3BCLGtCQUEwQixFQUMxQixXQUFvQixFQUNULE1BQU0sWUFBWSxDQUFDLGtCQUFrQixDQUFDO1FBRXpELEtBQUssQ0FBQyxJQUFJLHNCQUFzQixFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFMakMsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDcEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFTO1FBQ1QsUUFBRyxHQUFILEdBQUcsQ0FBbUM7SUFHM0QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQWdCLEVBQUUsR0FBWTtRQUNwRCxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFFTyxLQUFLLENBQUMscUJBQXFCLENBQ2pDLFNBQWlCLEVBQ2pCLEtBQWUsRUFDZixZQUEwQjtRQUUxQiw0RUFBNEU7UUFDNUUsa0VBQWtFO1FBQ2xFLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RSxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLEVBQ3pDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUN2RCxDQUFDO1FBQ0YsTUFBTSxhQUFhLEdBQUcsTUFBTSx1QkFBdUIsQ0FDakQsSUFBSSxDQUFDLFlBQVksRUFDakIsU0FBUyxFQUNULElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxFQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxFQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FDZCxDQUFDO1FBRUYsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ25DLFFBQVEsRUFBRSxhQUFhLENBQUMsVUFBVTtZQUNsQyxTQUFTLEVBQUUsaUJBQWlCO1NBQzdCLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVlLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxLQUFlLEVBQUUsWUFBMEI7UUFDcEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUM3QyxNQUFNLFNBQVMsR0FBRyxLQUFLLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1lBQzVDLE9BQU8sTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUM7UUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRWUsS0FBSyxDQUFDLDBCQUEwQixDQUFDLFFBQWdCLEVBQUUsV0FBbUI7UUFDcEYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLFdBQVcsTUFBTSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sMEJBQTBCLENBQzdDLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxrQkFBa0IsRUFDdkIsV0FBVyxFQUNYLFFBQVEsRUFDUixXQUFXLEVBQ1gsV0FBVyxDQUNaLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxXQUFxQixDQUFDO0lBQ3RDLENBQUM7SUFFTyxjQUFjLENBQUksRUFBK0I7UUFDdkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNyQixPQUFPLGNBQWMsQ0FDbkIsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixDQUFDLEdBQVcsRUFBRSxFQUFFLENBQ2QsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsQixHQUFHLENBQUMsS0FBSyxDQUFDLDhCQUE4QixHQUFHLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN2RCxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUMsQ0FBQyxFQUNKLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -1,46 +1,31 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
3
|
import { type PrivateKernelProver, type PrivateKernelSimulateOutput } from '@aztec/circuit-types';
|
|
4
|
-
import { type ClientIvcProof, type PrivateKernelCircuitPublicInputs, type PrivateKernelInitCircuitPrivateInputs, type PrivateKernelInnerCircuitPrivateInputs, type PrivateKernelResetCircuitPrivateInputs, type PrivateKernelTailCircuitPrivateInputs, type PrivateKernelTailCircuitPublicInputs
|
|
5
|
-
import { type
|
|
6
|
-
import {
|
|
7
|
-
import { type WitnessMap } from '@noir-lang/types';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
* Verifies a proof, will generate the verification key if one is not cached internally
|
|
31
|
-
* @param circuitType - The type of circuit whose proof is to be verified
|
|
32
|
-
* @param proof - The proof to be verified
|
|
33
|
-
*/
|
|
34
|
-
verifyProofForProtocolCircuit(circuitType: ClientProtocolArtifact, proof: Proof): Promise<void>;
|
|
35
|
-
computeGateCountForCircuit(bytecode: Buffer, circuitName: string): Promise<number>;
|
|
36
|
-
private verifyProofFromKey;
|
|
37
|
-
/**
|
|
38
|
-
* Ensures our verification key cache includes the key data located at the specified directory
|
|
39
|
-
* @param filePath - The directory containing the verification key data files
|
|
40
|
-
* @param circuitType - The type of circuit to which the verification key corresponds
|
|
41
|
-
*/
|
|
42
|
-
private updateVerificationKeyAfterSimulation;
|
|
43
|
-
private simulate;
|
|
44
|
-
private runInDirectory;
|
|
4
|
+
import { type ClientIvcProof, type PrivateKernelCircuitPublicInputs, type PrivateKernelInitCircuitPrivateInputs, type PrivateKernelInnerCircuitPrivateInputs, type PrivateKernelResetCircuitPrivateInputs, type PrivateKernelTailCircuitPrivateInputs, type PrivateKernelTailCircuitPublicInputs } from '@aztec/circuits.js';
|
|
5
|
+
import { type ArtifactProvider, type ClientProtocolArtifact } from '@aztec/noir-protocol-circuits-types/types';
|
|
6
|
+
import { WASMSimulator } from '@aztec/simulator/client';
|
|
7
|
+
import { type Abi, type WitnessMap } from '@noir-lang/types';
|
|
8
|
+
export declare abstract class BBPrivateKernelProver implements PrivateKernelProver {
|
|
9
|
+
protected artifactProvider: ArtifactProvider;
|
|
10
|
+
protected log: import("@aztec/foundation/log").Logger;
|
|
11
|
+
protected simulator: WASMSimulator;
|
|
12
|
+
constructor(artifactProvider: ArtifactProvider, log?: import("@aztec/foundation/log").Logger);
|
|
13
|
+
generateInitOutput(inputs: PrivateKernelInitCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
|
|
14
|
+
simulateInit(inputs: PrivateKernelInitCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
|
|
15
|
+
generateInnerOutput(inputs: PrivateKernelInnerCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
|
|
16
|
+
simulateInner(inputs: PrivateKernelInnerCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
|
|
17
|
+
generateResetOutput(inputs: PrivateKernelResetCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
|
|
18
|
+
simulateReset(inputs: PrivateKernelResetCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
|
|
19
|
+
generateTailOutput(inputs: PrivateKernelTailCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>>;
|
|
20
|
+
simulateTail(inputs: PrivateKernelTailCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelTailCircuitPublicInputs>>;
|
|
21
|
+
simulateCircuitOutput<I extends {
|
|
22
|
+
toBuffer: () => Buffer;
|
|
23
|
+
}, O extends PrivateKernelCircuitPublicInputs | PrivateKernelTailCircuitPublicInputs>(inputs: I, circuitType: ClientProtocolArtifact, convertInputs: (inputs: I, abi: Abi) => WitnessMap, convertOutputs: (outputs: WitnessMap, abi: Abi) => O): Promise<PrivateKernelSimulateOutput<O>>;
|
|
24
|
+
generateCircuitOutput<I extends {
|
|
25
|
+
toBuffer: () => Buffer;
|
|
26
|
+
}, O extends PrivateKernelCircuitPublicInputs | PrivateKernelTailCircuitPublicInputs>(inputs: I, circuitType: ClientProtocolArtifact, convertInputs: (inputs: I, abi: Abi) => WitnessMap, convertOutputs: (outputs: WitnessMap, abi: Abi) => O): Promise<PrivateKernelSimulateOutput<O>>;
|
|
27
|
+
makeEmptyKernelSimulateOutput<PublicInputsType extends PrivateKernelTailCircuitPublicInputs | PrivateKernelCircuitPublicInputs>(publicInputs: PublicInputsType, circuitType: ClientProtocolArtifact): PrivateKernelSimulateOutput<PublicInputsType>;
|
|
28
|
+
createClientIvcProof(_acirs: Buffer[], _witnessStack: WitnessMap[]): Promise<ClientIvcProof>;
|
|
29
|
+
computeGateCountForCircuit(_bytecode: Buffer, _circuitName: string): Promise<number>;
|
|
45
30
|
}
|
|
46
31
|
//# sourceMappingURL=bb_private_kernel_prover.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bb_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../src/prover/bb_private_kernel_prover.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAElG,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gCAAgC,EACrC,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,EAC3C,KAAK,sCAAsC,EAC3C,KAAK,qCAAqC,EAC1C,KAAK,oCAAoC,
|
|
1
|
+
{"version":3,"file":"bb_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../src/prover/bb_private_kernel_prover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,135 +1,72 @@
|
|
|
1
|
-
import { runInDirectory } from '@aztec/foundation/fs';
|
|
2
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
2
|
import { Timer } from '@aztec/foundation/timer';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { serializeWitness } from '@noir-lang/noirc_abi';
|
|
8
|
-
import { promises as fs } from 'fs';
|
|
9
|
-
import path from 'path';
|
|
10
|
-
import { BB_RESULT, computeGateCountForCircuit, executeBbClientIvcProof, verifyProof } from '../bb/execute.js';
|
|
11
|
-
import { getUltraHonkFlavorForCircuit } from '../honk.js';
|
|
3
|
+
import { convertPrivateKernelInitInputsToWitnessMapWithAbi, convertPrivateKernelInitOutputsFromWitnessMapWithAbi, convertPrivateKernelInnerInputsToWitnessMapWithAbi, convertPrivateKernelInnerOutputsFromWitnessMapWithAbi, convertPrivateKernelResetInputsToWitnessMapWithAbi, convertPrivateKernelResetOutputsFromWitnessMapWithAbi, convertPrivateKernelTailForPublicOutputsFromWitnessMapWithAbi, convertPrivateKernelTailInputsToWitnessMapWithAbi, convertPrivateKernelTailOutputsFromWitnessMapWithAbi, convertPrivateKernelTailToPublicInputsToWitnessMapWithAbi, getPrivateKernelResetArtifactName, updateResetCircuitSampleInputs, } from '@aztec/noir-protocol-circuits-types/client';
|
|
4
|
+
import { ClientCircuitVks } from '@aztec/noir-protocol-circuits-types/vks';
|
|
5
|
+
import { WASMSimulator } from '@aztec/simulator/client';
|
|
12
6
|
import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* This proof creator implementation uses the native bb binary.
|
|
17
|
-
* This is a temporary implementation until we make the WASM version work.
|
|
18
|
-
* TODO(#7368): this class grew 'organically' aka it could use a look at its resposibilities
|
|
19
|
-
*/
|
|
20
|
-
export class BBNativePrivateKernelProver {
|
|
21
|
-
constructor(bbBinaryPath, bbWorkingDirectory, skipCleanup, log = createLogger('bb-prover:native')) {
|
|
22
|
-
this.bbBinaryPath = bbBinaryPath;
|
|
23
|
-
this.bbWorkingDirectory = bbWorkingDirectory;
|
|
24
|
-
this.skipCleanup = skipCleanup;
|
|
7
|
+
export class BBPrivateKernelProver {
|
|
8
|
+
constructor(artifactProvider, log = createLogger('bb-prover')) {
|
|
9
|
+
this.artifactProvider = artifactProvider;
|
|
25
10
|
this.log = log;
|
|
26
|
-
this.simulator = new
|
|
27
|
-
this.verificationKeys = new Map();
|
|
11
|
+
this.simulator = new WASMSimulator();
|
|
28
12
|
}
|
|
29
|
-
|
|
30
|
-
await
|
|
31
|
-
return new BBNativePrivateKernelProver(config.bbBinaryPath, config.bbWorkingDirectory, !!config.bbSkipCleanup, log);
|
|
13
|
+
async generateInitOutput(inputs) {
|
|
14
|
+
return await this.generateCircuitOutput(inputs, 'PrivateKernelInitArtifact', convertPrivateKernelInitInputsToWitnessMapWithAbi, convertPrivateKernelInitOutputsFromWitnessMapWithAbi);
|
|
32
15
|
}
|
|
33
|
-
async
|
|
34
|
-
|
|
35
|
-
// and instead properly create the bincode serialization from rust
|
|
36
|
-
await fs.writeFile(path.join(directory, 'acir.msgpack'), encode(acirs));
|
|
37
|
-
await fs.writeFile(path.join(directory, 'witnesses.msgpack'), encode(witnessStack.map(map => serializeWitness(map))));
|
|
38
|
-
const provingResult = await executeBbClientIvcProof(this.bbBinaryPath, directory, path.join(directory, 'acir.msgpack'), path.join(directory, 'witnesses.msgpack'), this.log.info);
|
|
39
|
-
if (provingResult.status === BB_RESULT.FAILURE) {
|
|
40
|
-
this.log.error(`Failed to generate client ivc proof`);
|
|
41
|
-
throw new Error(provingResult.reason);
|
|
42
|
-
}
|
|
43
|
-
const proof = await readFromOutputDirectory(directory);
|
|
44
|
-
this.log.info(`Generated IVC proof`, {
|
|
45
|
-
duration: provingResult.durationMs,
|
|
46
|
-
eventName: 'circuit-proving',
|
|
47
|
-
});
|
|
48
|
-
return proof;
|
|
16
|
+
async simulateInit(inputs) {
|
|
17
|
+
return await this.simulateCircuitOutput(inputs, 'PrivateKernelInitArtifact', convertPrivateKernelInitInputsToWitnessMapWithAbi, convertPrivateKernelInitOutputsFromWitnessMapWithAbi);
|
|
49
18
|
}
|
|
50
|
-
async
|
|
51
|
-
this.
|
|
52
|
-
const operation = async (directory) => {
|
|
53
|
-
return await this._createClientIvcProof(directory, acirs, witnessStack);
|
|
54
|
-
};
|
|
55
|
-
return await this.runInDirectory(operation);
|
|
19
|
+
async generateInnerOutput(inputs) {
|
|
20
|
+
return await this.generateCircuitOutput(inputs, 'PrivateKernelInnerArtifact', convertPrivateKernelInnerInputsToWitnessMapWithAbi, convertPrivateKernelInnerOutputsFromWitnessMapWithAbi);
|
|
56
21
|
}
|
|
57
|
-
async
|
|
58
|
-
return await this.
|
|
22
|
+
async simulateInner(inputs) {
|
|
23
|
+
return await this.simulateCircuitOutput(inputs, 'PrivateKernelInnerArtifact', convertPrivateKernelInnerInputsToWitnessMapWithAbi, convertPrivateKernelInnerOutputsFromWitnessMapWithAbi);
|
|
59
24
|
}
|
|
60
|
-
async
|
|
61
|
-
|
|
25
|
+
async generateResetOutput(inputs) {
|
|
26
|
+
const variantInputs = inputs.trimToSizes();
|
|
27
|
+
const artifactName = getPrivateKernelResetArtifactName(inputs.dimensions);
|
|
28
|
+
return await this.generateCircuitOutput(variantInputs, artifactName, convertPrivateKernelResetInputsToWitnessMapWithAbi, convertPrivateKernelResetOutputsFromWitnessMapWithAbi);
|
|
62
29
|
}
|
|
63
|
-
async
|
|
30
|
+
async simulateReset(inputs) {
|
|
31
|
+
updateResetCircuitSampleInputs(inputs);
|
|
64
32
|
const variantInputs = inputs.trimToSizes();
|
|
65
33
|
const artifactName = getPrivateKernelResetArtifactName(inputs.dimensions);
|
|
66
|
-
return await this.
|
|
34
|
+
return await this.simulateCircuitOutput(variantInputs, artifactName, convertPrivateKernelResetInputsToWitnessMapWithAbi, convertPrivateKernelResetOutputsFromWitnessMapWithAbi);
|
|
67
35
|
}
|
|
68
|
-
async
|
|
36
|
+
async generateTailOutput(inputs) {
|
|
69
37
|
if (!inputs.isForPublic()) {
|
|
70
|
-
return await this.
|
|
71
|
-
}
|
|
72
|
-
return await this.simulate(inputs, 'PrivateKernelTailToPublicArtifact', convertPrivateKernelTailToPublicInputsToWitnessMap, convertPrivateKernelTailForPublicOutputsFromWitnessMap);
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Verifies a proof, will generate the verification key if one is not cached internally
|
|
76
|
-
* @param circuitType - The type of circuit whose proof is to be verified
|
|
77
|
-
* @param proof - The proof to be verified
|
|
78
|
-
*/
|
|
79
|
-
async verifyProofForProtocolCircuit(circuitType, proof) {
|
|
80
|
-
const verificationKey = ProtocolCircuitVks[circuitType];
|
|
81
|
-
this.log.debug(`Verifying with key: ${verificationKey.keyAsFields.hash.toString()}`);
|
|
82
|
-
const logFunction = (message) => {
|
|
83
|
-
this.log.debug(`${circuitType} BB out - ${message}`);
|
|
84
|
-
};
|
|
85
|
-
const result = await this.verifyProofFromKey(getUltraHonkFlavorForCircuit(circuitType), verificationKey.keyAsBytes, proof, logFunction);
|
|
86
|
-
if (result.status === BB_RESULT.FAILURE) {
|
|
87
|
-
const errorMessage = `Failed to verify ${circuitType} proof!`;
|
|
88
|
-
throw new Error(errorMessage);
|
|
38
|
+
return await this.generateCircuitOutput(inputs, 'PrivateKernelTailArtifact', convertPrivateKernelTailInputsToWitnessMapWithAbi, convertPrivateKernelTailOutputsFromWitnessMapWithAbi);
|
|
89
39
|
}
|
|
90
|
-
this.
|
|
40
|
+
return await this.generateCircuitOutput(inputs, 'PrivateKernelTailToPublicArtifact', convertPrivateKernelTailToPublicInputsToWitnessMapWithAbi, convertPrivateKernelTailForPublicOutputsFromWitnessMapWithAbi);
|
|
91
41
|
}
|
|
92
|
-
async
|
|
93
|
-
|
|
94
|
-
this.
|
|
95
|
-
};
|
|
96
|
-
const result = await computeGateCountForCircuit(this.bbBinaryPath, this.bbWorkingDirectory, circuitName, bytecode, 'mega_honk', logFunction);
|
|
97
|
-
if (result.status === BB_RESULT.FAILURE) {
|
|
98
|
-
throw new Error(result.reason);
|
|
42
|
+
async simulateTail(inputs) {
|
|
43
|
+
if (!inputs.isForPublic()) {
|
|
44
|
+
return await this.simulateCircuitOutput(inputs, 'PrivateKernelTailArtifact', convertPrivateKernelTailInputsToWitnessMapWithAbi, convertPrivateKernelTailOutputsFromWitnessMapWithAbi);
|
|
99
45
|
}
|
|
100
|
-
return
|
|
101
|
-
}
|
|
102
|
-
async verifyProofFromKey(flavor, verificationKey, proof, logFunction = () => { }) {
|
|
103
|
-
const operation = async (bbWorkingDirectory) => {
|
|
104
|
-
const proofFileName = `${bbWorkingDirectory}/proof`;
|
|
105
|
-
const verificationKeyPath = `${bbWorkingDirectory}/vk`;
|
|
106
|
-
await fs.writeFile(proofFileName, proof.buffer);
|
|
107
|
-
await fs.writeFile(verificationKeyPath, verificationKey);
|
|
108
|
-
return await verifyProof(this.bbBinaryPath, proofFileName, verificationKeyPath, flavor, logFunction);
|
|
109
|
-
};
|
|
110
|
-
return await this.runInDirectory(operation);
|
|
46
|
+
return await this.simulateCircuitOutput(inputs, 'PrivateKernelTailToPublicArtifact', convertPrivateKernelTailToPublicInputsToWitnessMapWithAbi, convertPrivateKernelTailForPublicOutputsFromWitnessMapWithAbi);
|
|
111
47
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
48
|
+
async simulateCircuitOutput(inputs, circuitType, convertInputs, convertOutputs) {
|
|
49
|
+
const compiledCircuit = await this.artifactProvider.getSimulatedClientCircuitArtifactByName(circuitType);
|
|
50
|
+
const witnessMap = convertInputs(inputs, compiledCircuit.abi);
|
|
51
|
+
const timer = new Timer();
|
|
52
|
+
const outputWitness = await this.simulator.simulateCircuit(witnessMap, compiledCircuit);
|
|
53
|
+
const output = convertOutputs(outputWitness, compiledCircuit.abi);
|
|
54
|
+
this.log.debug(`Simulated ${circuitType}`, {
|
|
55
|
+
eventName: 'circuit-simulation',
|
|
56
|
+
circuitName: mapProtocolArtifactNameToCircuitName(circuitType),
|
|
57
|
+
duration: timer.ms(),
|
|
58
|
+
inputSize: inputs.toBuffer().length,
|
|
59
|
+
outputSize: output.toBuffer().length,
|
|
60
|
+
});
|
|
61
|
+
return this.makeEmptyKernelSimulateOutput(output, circuitType);
|
|
125
62
|
}
|
|
126
|
-
async
|
|
63
|
+
async generateCircuitOutput(inputs, circuitType, convertInputs, convertOutputs) {
|
|
127
64
|
this.log.debug(`Generating witness for ${circuitType}`);
|
|
128
|
-
const compiledCircuit =
|
|
129
|
-
const witnessMap = convertInputs(inputs);
|
|
65
|
+
const compiledCircuit = await this.artifactProvider.getClientCircuitArtifactByName(circuitType);
|
|
66
|
+
const witnessMap = convertInputs(inputs, compiledCircuit.abi);
|
|
130
67
|
const timer = new Timer();
|
|
131
68
|
const outputWitness = await this.simulator.simulateCircuit(witnessMap, compiledCircuit);
|
|
132
|
-
const output = convertOutputs(outputWitness);
|
|
69
|
+
const output = convertOutputs(outputWitness, compiledCircuit.abi);
|
|
133
70
|
this.log.debug(`Generated witness for ${circuitType}`, {
|
|
134
71
|
eventName: 'circuit-witness-generation',
|
|
135
72
|
circuitName: mapProtocolArtifactNameToCircuitName(circuitType),
|
|
@@ -147,12 +84,20 @@ export class BBNativePrivateKernelProver {
|
|
|
147
84
|
};
|
|
148
85
|
return kernelOutput;
|
|
149
86
|
}
|
|
150
|
-
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
87
|
+
makeEmptyKernelSimulateOutput(publicInputs, circuitType) {
|
|
88
|
+
const kernelProofOutput = {
|
|
89
|
+
publicInputs,
|
|
90
|
+
verificationKey: ClientCircuitVks[circuitType].keyAsFields,
|
|
91
|
+
outputWitness: new Map(),
|
|
92
|
+
bytecode: Buffer.from([]),
|
|
93
|
+
};
|
|
94
|
+
return kernelProofOutput;
|
|
95
|
+
}
|
|
96
|
+
createClientIvcProof(_acirs, _witnessStack) {
|
|
97
|
+
throw new Error('Not implemented');
|
|
98
|
+
}
|
|
99
|
+
computeGateCountForCircuit(_bytecode, _circuitName) {
|
|
100
|
+
throw new Error('Not implemented');
|
|
156
101
|
}
|
|
157
102
|
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfcHJpdmF0ZV9rZXJuZWxfcHJvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci9iYl9wcml2YXRlX2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsaURBQWlELEVBQ2pELG9EQUFvRCxFQUNwRCxrREFBa0QsRUFDbEQscURBQXFELEVBQ3JELGtEQUFrRCxFQUNsRCxxREFBcUQsRUFDckQsNkRBQTZELEVBQzdELGlEQUFpRCxFQUNqRCxvREFBb0QsRUFDcEQseURBQXlELEVBQ3pELGlDQUFpQyxFQUNqQyw4QkFBOEIsR0FDL0IsTUFBTSw0Q0FBNEMsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFLeEQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRW5FLE1BQU0sT0FBZ0IscUJBQXFCO0lBR3pDLFlBQXNCLGdCQUFrQyxFQUFZLE1BQU0sWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUE3RSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVksUUFBRyxHQUFILEdBQUcsQ0FBNEI7UUFGekYsY0FBUyxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7SUFFNEQsQ0FBQztJQUVoRyxLQUFLLENBQUMsa0JBQWtCLENBQzdCLE1BQTZDO1FBRTdDLE9BQU8sTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQ3JDLE1BQU0sRUFDTiwyQkFBMkIsRUFDM0IsaURBQWlELEVBQ2pELG9EQUFvRCxDQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxZQUFZLENBQ3ZCLE1BQTZD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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ProofAndVerificationKey, type PublicInputsAndRecursiveProof, type ServerCircuitProver } from '@aztec/circuit-types';
|
|
2
|
-
import { AVM_PROOF_LENGTH_IN_FIELDS, type AvmCircuitInputs, type BaseParityInputs,
|
|
3
|
-
import { type BaseOrMergeRollupPublicInputs, type BlockMergeRollupInputs, type BlockRootOrBlockMergePublicInputs, type BlockRootRollupInputs, type EmptyBlockRootRollupInputs, type MergeRollupInputs, type PrivateBaseRollupInputs, type PublicBaseRollupInputs, type RootRollupInputs, type RootRollupPublicInputs, type TubeInputs } from '@aztec/circuits.js/rollup';
|
|
4
|
-
import { type ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types';
|
|
2
|
+
import { AVM_PROOF_LENGTH_IN_FIELDS, type AvmCircuitInputs, type BaseParityInputs, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, type ParityPublicInputs, Proof, RECURSIVE_PROOF_LENGTH, RecursiveProof, type RootParityInputs, TUBE_PROOF_LENGTH, type VerificationKeyAsFields, type VerificationKeyData } from '@aztec/circuits.js';
|
|
3
|
+
import { type BaseOrMergeRollupPublicInputs, type BlockMergeRollupInputs, type BlockRootOrBlockMergePublicInputs, type BlockRootRollupInputs, type EmptyBlockRootRollupInputs, type MergeRollupInputs, type PrivateBaseRollupInputs, type PublicBaseRollupInputs, type RootRollupInputs, type RootRollupPublicInputs, type SingleTxBlockRootRollupInputs, type TubeInputs } from '@aztec/circuits.js/rollup';
|
|
4
|
+
import { type ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/server';
|
|
5
5
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
6
6
|
import type { ACVMConfig, BBConfig } from '../config.js';
|
|
7
7
|
import { type UltraHonkFlavor } from '../honk.js';
|
|
@@ -60,6 +60,7 @@ export declare class BBNativeRollupProver implements ServerCircuitProver {
|
|
|
60
60
|
* @returns The public inputs as outputs of the simulation.
|
|
61
61
|
*/
|
|
62
62
|
getBlockRootRollupProof(input: BlockRootRollupInputs): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
63
|
+
getSingleTxBlockRootRollupProof(input: SingleTxBlockRootRollupInputs): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
63
64
|
/**
|
|
64
65
|
* Simulates the empty block root rollup circuit from its inputs.
|
|
65
66
|
* @param input - Inputs to the circuit.
|
|
@@ -78,9 +79,6 @@ export declare class BBNativeRollupProver implements ServerCircuitProver {
|
|
|
78
79
|
* @returns The public inputs as outputs of the simulation.
|
|
79
80
|
*/
|
|
80
81
|
getRootRollupProof(input: RootRollupInputs): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs>>;
|
|
81
|
-
getEmptyPrivateKernelProof(inputs: PrivateKernelEmptyInputData): Promise<PublicInputsAndRecursiveProof<KernelCircuitPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
82
|
-
private getEmptyNestedProof;
|
|
83
|
-
private getEmptyPrivateKernelProofFromEmptyNested;
|
|
84
82
|
private generateProofWithBB;
|
|
85
83
|
private createProof;
|
|
86
84
|
private generateAvmProofWithBB;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bb_prover.d.ts","sourceRoot":"","sources":["../../src/prover/bb_prover.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,uBAAuB,EAE5B,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EAGzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,0BAA0B,EAC1B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"bb_prover.d.ts","sourceRoot":"","sources":["../../src/prover/bb_prover.ts"],"names":[],"mappings":"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"}
|