@aztec/bb-prover 0.40.1 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bb/cli.d.ts.map +1 -1
- package/dest/bb/cli.js +24 -2
- package/dest/bb/execute.d.ts +37 -2
- package/dest/bb/execute.d.ts.map +1 -1
- package/dest/bb/execute.js +276 -75
- package/dest/config.d.ts +9 -0
- package/dest/config.d.ts.map +1 -0
- package/dest/config.js +2 -0
- package/dest/index.d.ts +2 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +3 -1
- package/dest/mappings/mappings.d.ts +1 -0
- package/dest/mappings/mappings.d.ts.map +1 -1
- package/dest/mappings/mappings.js +27 -8
- package/dest/prover/bb_native_proof_creator.d.ts +4 -9
- package/dest/prover/bb_native_proof_creator.d.ts.map +1 -1
- package/dest/prover/bb_native_proof_creator.js +77 -101
- package/dest/prover/bb_prover.d.ts +35 -23
- package/dest/prover/bb_prover.d.ts.map +1 -1
- package/dest/prover/bb_prover.js +247 -155
- package/dest/stats.d.ts +2 -5
- package/dest/stats.d.ts.map +1 -1
- package/dest/stats.js +27 -26
- package/dest/test/index.d.ts +1 -0
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +2 -1
- package/dest/test/test_circuit_prover.d.ts +9 -7
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/test/test_circuit_prover.js +31 -15
- package/dest/test/test_verifier.d.ts +7 -0
- package/dest/test/test_verifier.d.ts.map +1 -0
- package/dest/test/test_verifier.js +10 -0
- package/dest/verification_key/verification_key_data.d.ts +8 -0
- package/dest/verification_key/verification_key_data.d.ts.map +1 -0
- package/dest/verification_key/verification_key_data.js +24 -0
- package/dest/verifier/bb_verifier.d.ts +18 -0
- package/dest/verifier/bb_verifier.d.ts.map +1 -0
- package/dest/verifier/bb_verifier.js +90 -0
- package/dest/verifier/index.d.ts +2 -0
- package/dest/verifier/index.d.ts.map +1 -0
- package/dest/verifier/index.js +2 -0
- package/package.json +6 -6
- package/src/bb/cli.ts +36 -1
- package/src/bb/execute.ts +371 -83
- package/src/config.ts +9 -0
- package/src/index.ts +2 -0
- package/src/mappings/mappings.ts +38 -12
- package/src/prover/bb_native_proof_creator.ts +139 -119
- package/src/prover/bb_prover.ts +454 -242
- package/src/stats.ts +30 -45
- package/src/test/index.ts +1 -0
- package/src/test/test_circuit_prover.ts +84 -21
- package/src/test/test_verifier.ts +12 -0
- package/src/verification_key/verification_key_data.ts +35 -0
- package/src/verifier/bb_verifier.ts +156 -0
- package/src/verifier/index.ts +1 -0
- package/dest/prover/verification_key_data.d.ts +0 -16
- package/dest/prover/verification_key_data.d.ts.map +0 -1
- package/dest/prover/verification_key_data.js +0 -5
- package/src/prover/verification_key_data.ts +0 -16
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,
|
|
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,CA+G9C"}
|
package/dest/bb/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ProtocolCircuitArtifacts } from '@aztec/noir-protocol-circuits-types';
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import * as fs from 'fs/promises';
|
|
4
|
-
import { generateKeyForNoirCircuit } from './execute.js';
|
|
4
|
+
import { generateContractForCircuit, generateKeyForNoirCircuit } from './execute.js';
|
|
5
5
|
const { BB_WORKING_DIRECTORY, BB_BINARY_PATH } = process.env;
|
|
6
6
|
/**
|
|
7
7
|
* Returns commander program that defines the CLI.
|
|
@@ -59,6 +59,28 @@ export function getProgram(log) {
|
|
|
59
59
|
}
|
|
60
60
|
await generateKeyForNoirCircuit(options.bbPath, options.workingDirectory, options.circuit, compiledCircuit, 'vk', log);
|
|
61
61
|
});
|
|
62
|
+
program
|
|
63
|
+
.command('write-contract')
|
|
64
|
+
.description('Generates the verification contract for the specified circuit')
|
|
65
|
+
.requiredOption('-w, --working-directory <string>', 'A directory to use for storing input/output files', BB_WORKING_DIRECTORY)
|
|
66
|
+
.requiredOption('-b, --bb-path <string>', 'The path to the BB binary', BB_BINARY_PATH)
|
|
67
|
+
.requiredOption('-c, --circuit <string>', 'The name of a protocol circuit')
|
|
68
|
+
.requiredOption('-n --contract-name <string>', 'The name of the contract to generate', 'contract.sol')
|
|
69
|
+
.action(async (options) => {
|
|
70
|
+
const compiledCircuit = ProtocolCircuitArtifacts[options.circuit];
|
|
71
|
+
if (!compiledCircuit) {
|
|
72
|
+
log(`Failed to find circuit ${options.circuit}`);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
await fs.access(options.workingDirectory, fs.constants.W_OK);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
log(`Working directory does not exist`);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
await generateContractForCircuit(options.bbPath, options.workingDirectory, options.circuit, compiledCircuit, options.contractName, log);
|
|
83
|
+
});
|
|
62
84
|
return program;
|
|
63
85
|
}
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JiL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXlCLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFdEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFckYsTUFBTSxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFFN0Q7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsR0FBVTtJQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFFN0UsT0FBTztTQUNKLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztTQUM1QixXQUFXLENBQUMsZ0RBQWdELENBQUM7U0FDN0QsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUNYLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBWSxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUMsQ0FBQyxDQUFDO0lBRUwsT0FBTztTQUNKLE9BQU8sQ0FBQyxVQUFVLENBQUM7U0FDbkIsV0FBVyxDQUFDLHFEQUFxRCxDQUFDO1NBQ2xFLGNBQWMsQ0FDYixrQ0FBa0MsRUFDbEMsbURBQW1ELEVBQ25ELG9CQUFvQixDQUNyQjtTQUNBLGNBQWMsQ0FBQyx3QkFBd0Is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
|
package/dest/bb/execute.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { type AvmCircuitInputs } from '@aztec/circuits.js';
|
|
2
3
|
import { type LogFn } from '@aztec/foundation/log';
|
|
3
4
|
import { type NoirCompiledCircuit } from '@aztec/types/noir';
|
|
4
5
|
export declare const VK_FILENAME = "vk";
|
|
@@ -13,15 +14,26 @@ export declare enum BB_RESULT {
|
|
|
13
14
|
export type BBSuccess = {
|
|
14
15
|
status: BB_RESULT.SUCCESS | BB_RESULT.ALREADY_PRESENT;
|
|
15
16
|
duration: number;
|
|
17
|
+
/** Full path of the public key. */
|
|
16
18
|
pkPath?: string;
|
|
19
|
+
/** Base directory for the VKs (raw, fields). */
|
|
17
20
|
vkPath?: string;
|
|
21
|
+
/** Full path of the proof. */
|
|
18
22
|
proofPath?: string;
|
|
23
|
+
/** Full path of the contract. */
|
|
24
|
+
contractPath?: string;
|
|
19
25
|
};
|
|
20
26
|
export type BBFailure = {
|
|
21
27
|
status: BB_RESULT.FAILURE;
|
|
22
28
|
reason: string;
|
|
23
29
|
};
|
|
24
30
|
export type BBResult = BBSuccess | BBFailure;
|
|
31
|
+
export type VerificationFunction = typeof verifyProof | typeof verifyAvmProof;
|
|
32
|
+
type BBExecResult = {
|
|
33
|
+
status: BB_RESULT;
|
|
34
|
+
exitCode: number;
|
|
35
|
+
signal: string | undefined;
|
|
36
|
+
};
|
|
25
37
|
/**
|
|
26
38
|
* Invokes the Barretenberg binary with the provided command and args
|
|
27
39
|
* @param pathToBB - The path to the BB binary
|
|
@@ -31,7 +43,7 @@ export type BBResult = BBSuccess | BBFailure;
|
|
|
31
43
|
* @param resultParser - An optional handler for detecting success or failure
|
|
32
44
|
* @returns The completed partial witness outputted from the circuit
|
|
33
45
|
*/
|
|
34
|
-
export declare function executeBB(pathToBB: string, command: string, args: string[], logger: LogFn, resultParser?: (code: number) => boolean): Promise<
|
|
46
|
+
export declare function executeBB(pathToBB: string, command: string, args: string[], logger: LogFn, resultParser?: (code: number) => boolean): Promise<BBExecResult>;
|
|
35
47
|
/**
|
|
36
48
|
* Used for generating either a proving or verification key, will exit early if the key already exists
|
|
37
49
|
* It assumes the provided working directory is one where the caller wishes to maintain a permanent set of keys
|
|
@@ -58,6 +70,16 @@ export declare function generateKeyForNoirCircuit(pathToBB: string, workingDirec
|
|
|
58
70
|
* @returns An object containing a result indication, the location of the proof and the duration taken
|
|
59
71
|
*/
|
|
60
72
|
export declare function generateProof(pathToBB: string, workingDirectory: string, circuitName: string, bytecode: Buffer, inputWitnessFile: string, log: LogFn): Promise<BBFailure | BBSuccess>;
|
|
73
|
+
/**
|
|
74
|
+
* Used for generating AVM proofs.
|
|
75
|
+
* It is assumed that the working directory is a temporary and/or random directory used solely for generating this proof.
|
|
76
|
+
* @param pathToBB - The full path to the bb binary
|
|
77
|
+
* @param workingDirectory - A working directory for use by bb
|
|
78
|
+
* @param bytecode - The AVM bytecode for the public function to be proven (expected to be decompressed)
|
|
79
|
+
* @param log - A logging function
|
|
80
|
+
* @returns An object containing a result indication, the location of the proof and the duration taken
|
|
81
|
+
*/
|
|
82
|
+
export declare function generateAvmProof(pathToBB: string, workingDirectory: string, input: AvmCircuitInputs, log: LogFn): Promise<BBFailure | BBSuccess>;
|
|
61
83
|
/**
|
|
62
84
|
* Used for verifying proofs of noir circuits
|
|
63
85
|
* @param pathToBB - The full path to the bb binary
|
|
@@ -67,6 +89,15 @@ export declare function generateProof(pathToBB: string, workingDirectory: string
|
|
|
67
89
|
* @returns An object containing a result indication and duration taken
|
|
68
90
|
*/
|
|
69
91
|
export declare function verifyProof(pathToBB: string, proofFullPath: string, verificationKeyPath: string, log: LogFn): Promise<BBFailure | BBSuccess>;
|
|
92
|
+
/**
|
|
93
|
+
* Used for verifying proofs of the AVM
|
|
94
|
+
* @param pathToBB - The full path to the bb binary
|
|
95
|
+
* @param proofFullPath - The full path to the proof to be verified
|
|
96
|
+
* @param verificationKeyPath - The full path to the circuit verification key
|
|
97
|
+
* @param log - A logging function
|
|
98
|
+
* @returns An object containing a result indication and duration taken
|
|
99
|
+
*/
|
|
100
|
+
export declare function verifyAvmProof(pathToBB: string, proofFullPath: string, verificationKeyPath: string, log: LogFn): Promise<BBFailure | BBSuccess>;
|
|
70
101
|
/**
|
|
71
102
|
* Used for verifying proofs of noir circuits
|
|
72
103
|
* @param pathToBB - The full path to the bb binary
|
|
@@ -81,8 +112,12 @@ export declare function writeVkAsFields(pathToBB: string, verificationKeyPath: s
|
|
|
81
112
|
* @param pathToBB - The full path to the bb binary
|
|
82
113
|
* @param proofPath - The directory containing the binary proof
|
|
83
114
|
* @param proofFileName - The filename of the proof
|
|
115
|
+
* @param vkFileName - The filename of the verification key
|
|
84
116
|
* @param log - A logging function
|
|
85
117
|
* @returns An object containing a result indication and duration taken
|
|
86
118
|
*/
|
|
87
|
-
export declare function writeProofAsFields(pathToBB: string, proofPath: string, proofFileName: string, log: LogFn): Promise<BBFailure | BBSuccess>;
|
|
119
|
+
export declare function writeProofAsFields(pathToBB: string, proofPath: string, proofFileName: string, vkFilePath: string, log: LogFn): Promise<BBFailure | BBSuccess>;
|
|
120
|
+
export declare function generateContractForVerificationKey(pathToBB: string, vkFilePath: string, contractPath: string, log: LogFn): Promise<BBFailure | BBSuccess>;
|
|
121
|
+
export declare function generateContractForCircuit(pathToBB: string, workingDirectory: string, circuitName: string, compiledCircuit: NoirCompiledCircuit, contractName: string, log: LogFn, force?: boolean): Promise<BBSuccess | BBFailure>;
|
|
122
|
+
export {};
|
|
88
123
|
//# sourceMappingURL=execute.d.ts.map
|
package/dest/bb/execute.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/bb/execute.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/bb/execute.ts"],"names":[],"mappings":"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"}
|