@aztec/bb-prover 0.73.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2
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.js +15 -15
- package/dest/bb/cli.js +4 -9
- package/dest/bb/execute.js +395 -267
- package/dest/bb/index.js +4 -6
- package/dest/config.js +1 -2
- package/dest/honk.js +8 -5
- package/dest/index.js +0 -1
- package/dest/instrumentation.js +44 -41
- package/dest/prover/bb_native_private_kernel_prover.js +19 -19
- package/dest/prover/bb_private_kernel_prover.js +11 -11
- package/dest/prover/bb_prover.js +431 -445
- package/dest/prover/client_ivc_proof_utils.js +15 -9
- package/dest/prover/index.js +0 -1
- package/dest/stats.js +15 -14
- package/dest/test/index.js +0 -1
- package/dest/test/test_circuit_prover.js +156 -160
- package/dest/test/test_verifier.js +0 -1
- package/dest/verification_key/verification_key_data.js +10 -8
- package/dest/verifier/bb_verifier.js +13 -13
- package/dest/verifier/index.js +0 -1
- package/dest/wasm/bb_wasm_private_kernel_prover.js +11 -10
- package/dest/wasm/bundle.js +1 -2
- package/dest/wasm/lazy.js +1 -2
- package/package.json +10 -10
- package/src/avm_proving_tests/avm_proving_tester.ts +3 -4
- package/dest/avm_proving_tests/avm_proving_tester.d.ts +0 -24
- package/dest/avm_proving_tests/avm_proving_tester.d.ts.map +0 -1
- package/dest/bb/cli.d.ts +0 -12
- package/dest/bb/cli.d.ts.map +0 -1
- package/dest/bb/execute.d.ts +0 -170
- package/dest/bb/execute.d.ts.map +0 -1
- package/dest/bb/index.d.ts +0 -3
- package/dest/bb/index.d.ts.map +0 -1
- package/dest/config.d.ts +0 -13
- package/dest/config.d.ts.map +0 -1
- package/dest/honk.d.ts +0 -13
- package/dest/honk.d.ts.map +0 -1
- package/dest/index.d.ts +0 -8
- package/dest/index.d.ts.map +0 -1
- package/dest/instrumentation.d.ts +0 -47
- package/dest/instrumentation.d.ts.map +0 -1
- 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_private_kernel_prover.d.ts +0 -31
- package/dest/prover/bb_private_kernel_prover.d.ts.map +0 -1
- package/dest/prover/bb_prover.d.ts +0 -123
- package/dest/prover/bb_prover.d.ts.map +0 -1
- 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/index.d.ts +0 -4
- package/dest/prover/index.d.ts.map +0 -1
- package/dest/stats.d.ts +0 -5
- package/dest/stats.d.ts.map +0 -1
- package/dest/test/index.d.ts +0 -3
- package/dest/test/index.d.ts.map +0 -1
- package/dest/test/test_circuit_prover.d.ts +0 -72
- package/dest/test/test_circuit_prover.d.ts.map +0 -1
- package/dest/test/test_verifier.d.ts +0 -5
- package/dest/test/test_verifier.d.ts.map +0 -1
- package/dest/verification_key/verification_key_data.d.ts +0 -9
- package/dest/verification_key/verification_key_data.d.ts.map +0 -1
- package/dest/verifier/bb_verifier.d.ts +0 -15
- package/dest/verifier/bb_verifier.d.ts.map +0 -1
- package/dest/verifier/index.d.ts +0 -2
- package/dest/verifier/index.d.ts.map +0 -1
- package/dest/wasm/bb_wasm_private_kernel_prover.d.ts +0 -16
- package/dest/wasm/bb_wasm_private_kernel_prover.d.ts.map +0 -1
- package/dest/wasm/bundle.d.ts +0 -6
- package/dest/wasm/bundle.d.ts.map +0 -1
- package/dest/wasm/lazy.d.ts +0 -6
- package/dest/wasm/lazy.d.ts.map +0 -1
|
@@ -8,9 +8,11 @@ export const CLIENT_IVC_PROOF_FILE_NAME = 'client_ivc_proof';
|
|
|
8
8
|
* Create a ClientIvcProof from the result of client_ivc_prove_output_all or client_ivc_prove_output_all_msgpack
|
|
9
9
|
* @param directory the directory of results
|
|
10
10
|
* @returns the encapsulated client ivc proof
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
*/ export async function readFromOutputDirectory(directory) {
|
|
12
|
+
const [clientIvcVkBuffer, clientIvcProofBuffer] = await Promise.all([
|
|
13
|
+
CLIENT_IVC_VK_FILE_NAME,
|
|
14
|
+
CLIENT_IVC_PROOF_FILE_NAME
|
|
15
|
+
].map((fileName)=>fs.readFile(join(directory, fileName))));
|
|
14
16
|
return new ClientIvcProof(clientIvcProofBuffer, clientIvcVkBuffer);
|
|
15
17
|
}
|
|
16
18
|
/**
|
|
@@ -25,13 +27,17 @@ export async function readFromOutputDirectory(directory) {
|
|
|
25
27
|
* });
|
|
26
28
|
* @param proof the ClientIvcProof from readFromOutputDirectory
|
|
27
29
|
* @param directory the directory of results
|
|
28
|
-
*/
|
|
29
|
-
export async function writeToOutputDirectory(clientIvcProof, directory) {
|
|
30
|
+
*/ export async function writeToOutputDirectory(clientIvcProof, directory) {
|
|
30
31
|
const { clientIvcProofBuffer, clientIvcVkBuffer } = clientIvcProof;
|
|
31
32
|
const fileData = [
|
|
32
|
-
[
|
|
33
|
-
|
|
33
|
+
[
|
|
34
|
+
CLIENT_IVC_PROOF_FILE_NAME,
|
|
35
|
+
clientIvcProofBuffer
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
CLIENT_IVC_VK_FILE_NAME,
|
|
39
|
+
clientIvcVkBuffer
|
|
40
|
+
]
|
|
34
41
|
];
|
|
35
|
-
await Promise.all(fileData.map(([fileName, buffer])
|
|
42
|
+
await Promise.all(fileData.map(([fileName, buffer])=>fs.writeFile(join(directory, fileName), buffer)));
|
|
36
43
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2l2Y19wcm9vZl91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92ZXIvY2xpZW50X2l2Y19wcm9vZl91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxlQUFlLENBQUM7QUFDdkQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsa0JBQWtCLENBQUM7QUFFN0Q7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHVCQUF1QixDQUFDLFNBQWlCO0lBQzdELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDakUsQ0FBQyx1QkFBdUIsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQzlHLENBQUM7SUFDRixPQUFPLElBQUksY0FBYyxDQUFDLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsc0JBQXNCLENBQUMsY0FBOEIsRUFBRSxTQUFpQjtJQUM1RixNQUFNLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxjQUFjLENBQUM7SUFDbkUsTUFBTSxRQUFRLEdBQUc7UUFDZixDQUFDLDBCQUEwQixFQUFFLG9CQUFvQixDQUFDO1FBQ2xELENBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLENBQUM7S0FDcEMsQ0FBQztJQUNYLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0csQ0FBQyJ9
|
package/dest/prover/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export * from './bb_prover.js';
|
|
2
2
|
export * from './bb_native_private_kernel_prover.js';
|
|
3
3
|
export * from './client_ivc_proof_utils.js';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDZCQUE2QixDQUFDIn0=
|
package/dest/stats.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export function mapProtocolArtifactNameToCircuitName(artifact) {
|
|
2
|
-
switch
|
|
2
|
+
switch(artifact){
|
|
3
3
|
case 'BaseParityArtifact':
|
|
4
4
|
return 'base-parity';
|
|
5
5
|
case 'RootParityArtifact':
|
|
@@ -28,16 +28,17 @@ export function mapProtocolArtifactNameToCircuitName(artifact) {
|
|
|
28
28
|
return 'private-kernel-tail';
|
|
29
29
|
case 'PrivateKernelTailToPublicArtifact':
|
|
30
30
|
return 'private-kernel-tail-to-public';
|
|
31
|
-
default:
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
default:
|
|
32
|
+
{
|
|
33
|
+
if (artifact.startsWith('PrivateKernelReset')) {
|
|
34
|
+
return 'private-kernel-reset';
|
|
35
|
+
}
|
|
36
|
+
throw new Error(`Unknown circuit type: ${artifact}`);
|
|
34
37
|
}
|
|
35
|
-
throw new Error(`Unknown circuit type: ${artifact}`);
|
|
36
|
-
}
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
export function isProtocolArtifactRecursive(artifact) {
|
|
40
|
-
switch
|
|
41
|
+
switch(artifact){
|
|
41
42
|
case 'BaseParityArtifact':
|
|
42
43
|
case 'RootParityArtifact':
|
|
43
44
|
case 'PrivateBaseRollupArtifact':
|
|
@@ -49,13 +50,13 @@ export function isProtocolArtifactRecursive(artifact) {
|
|
|
49
50
|
case 'BlockMergeRollupArtifact':
|
|
50
51
|
case 'RootRollupArtifact':
|
|
51
52
|
return true;
|
|
52
|
-
default:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
default:
|
|
54
|
+
{
|
|
55
|
+
if (artifact.startsWith('PrivateKernel')) {
|
|
56
|
+
// The kernel prover, where these are used, eventually calls `createClientIvcProof`, which is recursive.
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
throw new Error(`Unknown circuit type: ${artifact}`);
|
|
56
60
|
}
|
|
57
|
-
throw new Error(`Unknown circuit type: ${artifact}`);
|
|
58
|
-
}
|
|
59
61
|
}
|
|
60
62
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3RhdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLG9DQUFvQyxDQUFDLFFBQTBCO0lBQzdFLFFBQVEsUUFBUSxFQUFFLENBQUM7UUFDakIsS0FBSyxvQkFBb0I7WUFDdkIsT0FBTyxhQUFhLENBQUM7UUFDdkIsS0FBSyxvQkFBb0I7WUFDdkIsT0FBTyxhQUFhLENBQUM7UUFDdkIsS0FBSywyQkFBMkI7WUFDOUIsT0FBTyxxQkFBcUIsQ0FBQztRQUMvQixLQUFLLDBCQUEwQjtZQUM3QixPQUFPLG9CQUFvQixDQUFDO1FBQzlCLEtBQUsscUJBQXFCO1lBQ3hCLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLEtBQUsseUJBQXlCO1lBQzVCLE9BQU8sbUJBQW1CLENBQUM7UUFDN0IsS0FBSyxpQ0FBaUM7WUFDcEMsT0FBTyw2QkFBNkIsQ0FBQztRQUN2QyxLQUFLLDhCQUE4QjtZQUNqQyxPQUFPLHlCQUF5QixDQUFDO1FBQ25DLEtBQUssMEJBQTBCO1lBQzdCLE9BQU8sb0JBQW9CLENBQUM7UUFDOUIsS0FBSyxvQkFBb0I7WUFDdkIsT0FBTyxhQUFhLENBQUM7UUFDdkIsS0FBSywyQkFBMkI7WUFDOUIsT0FBTyxxQkFBcUIsQ0FBQztRQUMvQixLQUFLLDRCQUE0QjtZQUMvQixPQUFPLHNCQUFzQixDQUFDO1FBQ2hDLEtBQUssMkJBQTJCO1lBQzlCLE9BQU8scUJBQXFCLENBQUM7UUFDL0IsS0FBSyxtQ0FBbUM7WUFDdEMsT0FBTywrQkFBK0IsQ0FBQztRQUN6QyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ1IsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxzQkFBc0IsQ0FBQztZQUNoQyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsUUFBMEI7SUFDcEUsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLG9CQUFvQixDQUFDO1FBQzFCLEtBQUssb0JBQW9CLENBQUM7UUFDMUIsS0FBSywyQkFBMkIsQ0FBQztRQUNqQyxLQUFLLDBCQUEwQixDQUFDO1FBQ2hDLEtBQUsscUJBQXFCLENBQUM7UUFDM0IsS0FBSyx5QkFBeUIsQ0FBQztRQUMvQixLQUFLLGlDQUFpQyxDQUFDO1FBQ3ZDLEtBQUssOEJBQThCLENBQUM7UUFDcEMsS0FBSywwQkFBMEIsQ0FBQztRQUNoQyxLQUFLLG9CQUFvQjtZQUN2QixPQUFPLElBQUksQ0FBQztRQUNkLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDUixJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDekMsd0dBQXdHO2dCQUN4RyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyJ9
|
package/dest/test/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
export * from './test_circuit_prover.js';
|
|
2
2
|
export * from './test_verifier.js';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsb0JBQW9CLENBQUMifQ==
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
}
|
|
7
|
+
import { makeProofAndVerificationKey, makePublicInputsAndRecursiveProof } from '@aztec/circuit-types';
|
|
8
|
+
import { AVM_PROOF_LENGTH_IN_FIELDS, AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH, TUBE_PROOF_LENGTH, VerificationKeyData, makeEmptyRecursiveProof, makeRecursiveProof } from '@aztec/circuits.js';
|
|
4
9
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
10
|
import { sleep } from '@aztec/foundation/sleep';
|
|
6
11
|
import { Timer } from '@aztec/foundation/timer';
|
|
7
|
-
import { SimulatedServerCircuitArtifacts, convertBaseParityInputsToWitnessMap, convertBaseParityOutputsFromWitnessMap, convertBlockMergeRollupInputsToWitnessMap, convertBlockMergeRollupOutputsFromWitnessMap, convertEmptyBlockRootRollupInputsToWitnessMap, convertEmptyBlockRootRollupOutputsFromWitnessMap, convertMergeRollupInputsToWitnessMap, convertMergeRollupOutputsFromWitnessMap, convertRootParityInputsToWitnessMap, convertRootParityOutputsFromWitnessMap, convertRootRollupInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap, convertSimulatedBlockRootRollupInputsToWitnessMap, convertSimulatedBlockRootRollupOutputsFromWitnessMap, convertSimulatedPrivateBaseRollupInputsToWitnessMap, convertSimulatedPrivateBaseRollupOutputsFromWitnessMap, convertSimulatedPublicBaseRollupInputsToWitnessMap, convertSimulatedPublicBaseRollupOutputsFromWitnessMap, convertSimulatedSingleTxBlockRootRollupInputsToWitnessMap, convertSimulatedSingleTxBlockRootRollupOutputsFromWitnessMap
|
|
12
|
+
import { SimulatedServerCircuitArtifacts, convertBaseParityInputsToWitnessMap, convertBaseParityOutputsFromWitnessMap, convertBlockMergeRollupInputsToWitnessMap, convertBlockMergeRollupOutputsFromWitnessMap, convertEmptyBlockRootRollupInputsToWitnessMap, convertEmptyBlockRootRollupOutputsFromWitnessMap, convertMergeRollupInputsToWitnessMap, convertMergeRollupOutputsFromWitnessMap, convertRootParityInputsToWitnessMap, convertRootParityOutputsFromWitnessMap, convertRootRollupInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap, convertSimulatedBlockRootRollupInputsToWitnessMap, convertSimulatedBlockRootRollupOutputsFromWitnessMap, convertSimulatedPrivateBaseRollupInputsToWitnessMap, convertSimulatedPrivateBaseRollupOutputsFromWitnessMap, convertSimulatedPublicBaseRollupInputsToWitnessMap, convertSimulatedPublicBaseRollupOutputsFromWitnessMap, convertSimulatedSingleTxBlockRootRollupInputsToWitnessMap, convertSimulatedSingleTxBlockRootRollupOutputsFromWitnessMap } from '@aztec/noir-protocol-circuits-types/server';
|
|
8
13
|
import { ProtocolCircuitVks } from '@aztec/noir-protocol-circuits-types/vks';
|
|
9
14
|
import { WASMSimulatorWithBlobs, emitCircuitSimulationStats } from '@aztec/simulator/server';
|
|
10
15
|
import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
@@ -13,159 +18,150 @@ import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
|
|
|
13
18
|
/**
|
|
14
19
|
* A class for use in testing situations (e2e, unit test, etc) and temporarily for assembling a block in the sequencer.
|
|
15
20
|
* Simulates circuits using the most efficient method and performs no proving.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
//
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
__esDecorate(_a, null, _getEmptyBlockRootRollupProof_decorators, { kind: "method", name: "getEmptyBlockRootRollupProof", static: false, private: false, access: { has: obj => "getEmptyBlockRootRollupProof" in obj, get: obj => obj.getEmptyBlockRootRollupProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
164
|
-
__esDecorate(_a, null, _getBlockMergeRollupProof_decorators, { kind: "method", name: "getBlockMergeRollupProof", static: false, private: false, access: { has: obj => "getBlockMergeRollupProof" in obj, get: obj => obj.getBlockMergeRollupProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
165
|
-
__esDecorate(_a, null, _getRootRollupProof_decorators, { kind: "method", name: "getRootRollupProof", static: false, private: false, access: { has: obj => "getRootRollupProof" in obj, get: obj => obj.getRootRollupProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
166
|
-
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
167
|
-
})(),
|
|
168
|
-
_a;
|
|
169
|
-
})();
|
|
170
|
-
export { TestCircuitProver };
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jaXJjdWl0X3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3Rlc3RfY2lyY3VpdF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFJTCwyQkFBMkIsRUFDM0IsaUNBQWlDLEdBQ2xDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixxQ0FBcUMsRUFHckMsNkJBQTZCLEVBQzdCLHlDQUF5QyxFQUd6QyxzQkFBc0IsRUFFdEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsa0JBQWtCLEdBQ25CLE1BQU0sb0JBQW9CLENBQUM7QUFlNUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUVMLCtCQUErQixFQUMvQixtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLHlDQUF5QyxFQUN6Qyw0Q0FBNEMsRUFDNUMsNkNBQTZDLEVBQzdDLGdEQUFnRCxFQUNoRCxvQ0FBb0MsRUFDcEMsdUNBQXVDLEVBQ3ZDLG1DQUFtQyxFQUNuQyxzQ0FBc0MsRUFDdEMsbUNBQW1DLEVBQ25DLHNDQUFzQyxFQUN0QyxpREFBaUQsRUFDakQsb0RBQW9ELEVBQ3BELG1EQUFtRCxFQUNuRCxzREFBc0QsRUFDdEQsa0RBQWtELEVBQ2xELHFEQUFxRCxFQUNyRCx5REFBeUQsRUFDekQsNERBQTRELEdBQzdELE1BQU0sNENBQTRDLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDN0UsT0FBTyxFQUEyQixzQkFBc0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RILE9BQU8sRUFBd0Is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
|
|
21
|
+
*/ export class TestCircuitProver {
|
|
22
|
+
simulationProvider;
|
|
23
|
+
opts;
|
|
24
|
+
wasmSimulator;
|
|
25
|
+
instrumentation;
|
|
26
|
+
logger;
|
|
27
|
+
constructor(simulationProvider, opts = {
|
|
28
|
+
proverTestDelayMs: 0
|
|
29
|
+
}, telemetry = getTelemetryClient()){
|
|
30
|
+
this.simulationProvider = simulationProvider;
|
|
31
|
+
this.opts = opts;
|
|
32
|
+
this.wasmSimulator = new WASMSimulatorWithBlobs();
|
|
33
|
+
this.logger = createLogger('bb-prover:test-prover');
|
|
34
|
+
this.instrumentation = new ProverInstrumentation(telemetry, 'TestCircuitProver');
|
|
35
|
+
}
|
|
36
|
+
get tracer() {
|
|
37
|
+
return this.instrumentation.tracer;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Simulates the base parity circuit from its inputs.
|
|
41
|
+
* @param inputs - Inputs to the circuit.
|
|
42
|
+
* @returns The public inputs of the parity circuit.
|
|
43
|
+
*/ async getBaseParityProof(inputs) {
|
|
44
|
+
return await this.simulate(inputs, 'BaseParityArtifact', RECURSIVE_PROOF_LENGTH, convertBaseParityInputsToWitnessMap, convertBaseParityOutputsFromWitnessMap);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Simulates the root parity circuit from its inputs.
|
|
48
|
+
* @param inputs - Inputs to the circuit.
|
|
49
|
+
* @returns The public inputs of the parity circuit.
|
|
50
|
+
*/ async getRootParityProof(inputs) {
|
|
51
|
+
return await this.simulate(inputs, 'RootParityArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertRootParityInputsToWitnessMap, convertRootParityOutputsFromWitnessMap);
|
|
52
|
+
}
|
|
53
|
+
async getTubeProof(_tubeInput) {
|
|
54
|
+
await this.delay();
|
|
55
|
+
return makeProofAndVerificationKey(makeEmptyRecursiveProof(TUBE_PROOF_LENGTH), VerificationKeyData.makeFakeRollupHonk());
|
|
56
|
+
}
|
|
57
|
+
async getPrivateBaseRollupProof(inputs) {
|
|
58
|
+
return await this.simulate(inputs, 'PrivateBaseRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertSimulatedPrivateBaseRollupInputsToWitnessMap, convertSimulatedPrivateBaseRollupOutputsFromWitnessMap);
|
|
59
|
+
}
|
|
60
|
+
async getPublicBaseRollupProof(inputs) {
|
|
61
|
+
return await this.simulate(inputs, 'PublicBaseRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertSimulatedPublicBaseRollupInputsToWitnessMap, convertSimulatedPublicBaseRollupOutputsFromWitnessMap);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Simulates the merge rollup circuit from its inputs.
|
|
65
|
+
* @param input - Inputs to the circuit.
|
|
66
|
+
* @returns The public inputs as outputs of the simulation.
|
|
67
|
+
*/ async getMergeRollupProof(input) {
|
|
68
|
+
return await this.simulate(input, 'MergeRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertMergeRollupInputsToWitnessMap, convertMergeRollupOutputsFromWitnessMap);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Simulates the block root rollup circuit from its inputs.
|
|
72
|
+
* @param input - Inputs to the circuit.
|
|
73
|
+
* @returns The public inputs as outputs of the simulation.
|
|
74
|
+
*/ async getBlockRootRollupProof(input) {
|
|
75
|
+
return await this.simulate(input, 'BlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertSimulatedBlockRootRollupInputsToWitnessMap, convertSimulatedBlockRootRollupOutputsFromWitnessMap);
|
|
76
|
+
}
|
|
77
|
+
async getSingleTxBlockRootRollupProof(input) {
|
|
78
|
+
return await this.simulate(input, 'SingleTxBlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertSimulatedSingleTxBlockRootRollupInputsToWitnessMap, convertSimulatedSingleTxBlockRootRollupOutputsFromWitnessMap);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Simulates the empty block root rollup circuit from its inputs.
|
|
82
|
+
* @param input - Inputs to the circuit.
|
|
83
|
+
* @returns The public inputs as outputs of the simulation.
|
|
84
|
+
*/ async getEmptyBlockRootRollupProof(input) {
|
|
85
|
+
return await this.simulate(input, 'EmptyBlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertEmptyBlockRootRollupInputsToWitnessMap, convertEmptyBlockRootRollupOutputsFromWitnessMap);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Simulates the block merge rollup circuit from its inputs.
|
|
89
|
+
* @param input - Inputs to the circuit.
|
|
90
|
+
* @returns The public inputs as outputs of the simulation.
|
|
91
|
+
*/ async getBlockMergeRollupProof(input) {
|
|
92
|
+
return await this.simulate(input, 'BlockMergeRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockMergeRollupInputsToWitnessMap, convertBlockMergeRollupOutputsFromWitnessMap);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Simulates the root rollup circuit from its inputs.
|
|
96
|
+
* @param input - Inputs to the circuit.
|
|
97
|
+
* @returns The public inputs as outputs of the simulation.
|
|
98
|
+
*/ async getRootRollupProof(input) {
|
|
99
|
+
return await this.simulate(input, 'RootRollupArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertRootRollupInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap);
|
|
100
|
+
}
|
|
101
|
+
async getAvmProof(_inputs) {
|
|
102
|
+
// We can't simulate the AVM because we don't have enough context to do so (e.g., DBs).
|
|
103
|
+
// We just return an empty proof and VK data.
|
|
104
|
+
this.logger.debug('Skipping AVM simulation in TestCircuitProver.');
|
|
105
|
+
await this.delay();
|
|
106
|
+
return makeProofAndVerificationKey(makeEmptyRecursiveProof(AVM_PROOF_LENGTH_IN_FIELDS), VerificationKeyData.makeFake(AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS));
|
|
107
|
+
}
|
|
108
|
+
async delay() {
|
|
109
|
+
if (this.opts.proverTestDelayMs > 0) {
|
|
110
|
+
await sleep(this.opts.proverTestDelayMs);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// Not implemented for test circuits
|
|
114
|
+
verifyProof(_1, _2) {
|
|
115
|
+
return Promise.reject(new Error('Method not implemented.'));
|
|
116
|
+
}
|
|
117
|
+
async simulate(input, artifactName, proofLength, convertInput, convertOutput) {
|
|
118
|
+
const timer = new Timer();
|
|
119
|
+
const witnessMap = convertInput(input);
|
|
120
|
+
const circuitName = mapProtocolArtifactNameToCircuitName(artifactName);
|
|
121
|
+
let simulationProvider = this.simulationProvider ?? this.wasmSimulator;
|
|
122
|
+
if ([
|
|
123
|
+
'BlockRootRollupArtifact',
|
|
124
|
+
'SingleTxBlockRootRollupArtifact'
|
|
125
|
+
].includes(artifactName)) {
|
|
126
|
+
// TODO(#10323): temporarily force block root to use wasm while we simulate
|
|
127
|
+
// the blob operations with an oracle. Appears to be no way to provide nativeACVM with a foreign call hander.
|
|
128
|
+
simulationProvider = this.wasmSimulator;
|
|
129
|
+
}
|
|
130
|
+
const witness = await simulationProvider.executeProtocolCircuit(witnessMap, SimulatedServerCircuitArtifacts[artifactName]);
|
|
131
|
+
const result = convertOutput(witness);
|
|
132
|
+
this.instrumentation.recordDuration('simulationDuration', circuitName, timer);
|
|
133
|
+
emitCircuitSimulationStats(circuitName, timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
134
|
+
await this.delay();
|
|
135
|
+
return makePublicInputsAndRecursiveProof(result, makeRecursiveProof(proofLength), ProtocolCircuitVks[artifactName]);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
_ts_decorate([
|
|
139
|
+
trackSpan('TestCircuitProver.getBaseParityProof')
|
|
140
|
+
], TestCircuitProver.prototype, "getBaseParityProof", null);
|
|
141
|
+
_ts_decorate([
|
|
142
|
+
trackSpan('TestCircuitProver.getRootParityProof')
|
|
143
|
+
], TestCircuitProver.prototype, "getRootParityProof", null);
|
|
144
|
+
_ts_decorate([
|
|
145
|
+
trackSpan('TestCircuitProver.getPrivateBaseRollupProof')
|
|
146
|
+
], TestCircuitProver.prototype, "getPrivateBaseRollupProof", null);
|
|
147
|
+
_ts_decorate([
|
|
148
|
+
trackSpan('TestCircuitProver.getPublicBaseRollupProof')
|
|
149
|
+
], TestCircuitProver.prototype, "getPublicBaseRollupProof", null);
|
|
150
|
+
_ts_decorate([
|
|
151
|
+
trackSpan('TestCircuitProver.getMergeRollupProof')
|
|
152
|
+
], TestCircuitProver.prototype, "getMergeRollupProof", null);
|
|
153
|
+
_ts_decorate([
|
|
154
|
+
trackSpan('TestCircuitProver.getBlockRootRollupProof')
|
|
155
|
+
], TestCircuitProver.prototype, "getBlockRootRollupProof", null);
|
|
156
|
+
_ts_decorate([
|
|
157
|
+
trackSpan('TestCircuitProver.getSingleTxBlockRootRollupProof')
|
|
158
|
+
], TestCircuitProver.prototype, "getSingleTxBlockRootRollupProof", null);
|
|
159
|
+
_ts_decorate([
|
|
160
|
+
trackSpan('TestCircuitProver.getEmptyBlockRootRollupProof')
|
|
161
|
+
], TestCircuitProver.prototype, "getEmptyBlockRootRollupProof", null);
|
|
162
|
+
_ts_decorate([
|
|
163
|
+
trackSpan('TestCircuitProver.getBlockMergeRollupProof')
|
|
164
|
+
], TestCircuitProver.prototype, "getBlockMergeRollupProof", null);
|
|
165
|
+
_ts_decorate([
|
|
166
|
+
trackSpan('TestCircuitProver.getRootRollupProof')
|
|
167
|
+
], TestCircuitProver.prototype, "getRootRollupProof", null);
|
|
@@ -3,4 +3,3 @@ export class TestCircuitVerifier {
|
|
|
3
3
|
return Promise.resolve(true);
|
|
4
4
|
}
|
|
5
5
|
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF92ZXJpZmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3Rlc3RfdmVyaWZpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixXQUFXLENBQUMsR0FBTztRQUNqQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGIn0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, Fr, VerificationKeyAsFields, VerificationKeyData
|
|
1
|
+
import { AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, Fr, VerificationKeyAsFields, VerificationKeyData } from '@aztec/circuits.js';
|
|
2
2
|
import { hashVK } from '@aztec/circuits.js/hash';
|
|
3
3
|
import { strict as assert } from 'assert';
|
|
4
4
|
import { promises as fs } from 'fs';
|
|
@@ -8,11 +8,12 @@ import { VK_FIELDS_FILENAME, VK_FILENAME } from '../bb/execute.js';
|
|
|
8
8
|
* Reads the verification key data stored at the specified location and parses into a VerificationKeyData
|
|
9
9
|
* @param vkDirectoryPath - The directory containing the verification key data files
|
|
10
10
|
* @returns The verification key data
|
|
11
|
-
*/
|
|
12
|
-
export async function extractVkData(vkDirectoryPath) {
|
|
11
|
+
*/ export async function extractVkData(vkDirectoryPath) {
|
|
13
12
|
const [rawFields, rawBinary] = await Promise.all([
|
|
14
|
-
fs.readFile(path.join(vkDirectoryPath, VK_FIELDS_FILENAME), {
|
|
15
|
-
|
|
13
|
+
fs.readFile(path.join(vkDirectoryPath, VK_FIELDS_FILENAME), {
|
|
14
|
+
encoding: 'utf-8'
|
|
15
|
+
}),
|
|
16
|
+
fs.readFile(path.join(vkDirectoryPath, VK_FILENAME))
|
|
16
17
|
]);
|
|
17
18
|
const fieldsJson = JSON.parse(rawFields);
|
|
18
19
|
const fields = fieldsJson.map(Fr.fromHexString);
|
|
@@ -24,8 +25,10 @@ export async function extractVkData(vkDirectoryPath) {
|
|
|
24
25
|
// TODO: This was adapted from the above function. A refactor might be needed.
|
|
25
26
|
export async function extractAvmVkData(vkDirectoryPath) {
|
|
26
27
|
const [rawFields, rawBinary] = await Promise.all([
|
|
27
|
-
fs.readFile(path.join(vkDirectoryPath, VK_FIELDS_FILENAME), {
|
|
28
|
-
|
|
28
|
+
fs.readFile(path.join(vkDirectoryPath, VK_FIELDS_FILENAME), {
|
|
29
|
+
encoding: 'utf-8'
|
|
30
|
+
}),
|
|
31
|
+
fs.readFile(path.join(vkDirectoryPath, VK_FILENAME))
|
|
29
32
|
]);
|
|
30
33
|
const fieldsJson = JSON.parse(rawFields);
|
|
31
34
|
const fields = fieldsJson.map(Fr.fromHexString);
|
|
@@ -37,4 +40,3 @@ export async function extractAvmVkData(vkDirectoryPath) {
|
|
|
37
40
|
const vk = new VerificationKeyData(vkAsFields, rawBinary);
|
|
38
41
|
return vk;
|
|
39
42
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uX2tleV9kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZlcmlmaWNhdGlvbl9rZXkvdmVyaWZpY2F0aW9uX2tleV9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMsRUFBRSxFQUNGLHVCQUF1QixFQUN2QixtQkFBbUIsR0FDcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakQsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5FOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FBQyxlQUF1QjtJQUN6RCxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUMvQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDbEYsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNyRCxDQUFDLENBQUM7SUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELDhDQUE4QztJQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxNQUFNLFVBQVUsR0FBRyxJQUFJLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRCxPQUFPLElBQUksbUJBQW1CLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxlQUF1QjtJQUM1RCxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUMvQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDbEYsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNyRCxDQUFDLENBQUM7SUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELGdFQUFnRTtJQUNoRSx3Q0FBd0M7SUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLHFDQUFxQyxFQUFFLHFDQUFxQyxDQUFDLENBQUM7SUFDdkcsTUFBTSxVQUFVLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUQsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDIn0=
|
|
@@ -9,12 +9,16 @@ import { getUltraHonkFlavorForCircuit } from '../honk.js';
|
|
|
9
9
|
import { writeToOutputDirectory } from '../prover/client_ivc_proof_utils.js';
|
|
10
10
|
import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
|
|
11
11
|
export class BBCircuitVerifier {
|
|
12
|
-
|
|
12
|
+
config;
|
|
13
|
+
logger;
|
|
14
|
+
constructor(config, logger){
|
|
13
15
|
this.config = config;
|
|
14
16
|
this.logger = logger;
|
|
15
17
|
}
|
|
16
18
|
static async new(config, logger = createLogger('bb-prover:verifier')) {
|
|
17
|
-
await fs.mkdir(config.bbWorkingDirectory, {
|
|
19
|
+
await fs.mkdir(config.bbWorkingDirectory, {
|
|
20
|
+
recursive: true
|
|
21
|
+
});
|
|
18
22
|
return new BBCircuitVerifier(config, logger);
|
|
19
23
|
}
|
|
20
24
|
getVerificationKeyData(circuitType) {
|
|
@@ -25,7 +29,7 @@ export class BBCircuitVerifier {
|
|
|
25
29
|
return vk;
|
|
26
30
|
}
|
|
27
31
|
async verifyProofForCircuit(circuit, proof) {
|
|
28
|
-
const operation = async (bbWorkingDirectory)
|
|
32
|
+
const operation = async (bbWorkingDirectory)=>{
|
|
29
33
|
const proofFileName = path.join(bbWorkingDirectory, PROOF_FILENAME);
|
|
30
34
|
const verificationKeyPath = path.join(bbWorkingDirectory, VK_FILENAME);
|
|
31
35
|
const verificationKey = this.getVerificationKeyData(circuit);
|
|
@@ -41,7 +45,7 @@ export class BBCircuitVerifier {
|
|
|
41
45
|
circuitName: mapProtocolArtifactNameToCircuitName(circuit),
|
|
42
46
|
duration: result.durationMs,
|
|
43
47
|
eventName: 'circuit-verification',
|
|
44
|
-
proofType: 'ultra-honk'
|
|
48
|
+
proofType: 'ultra-honk'
|
|
45
49
|
});
|
|
46
50
|
};
|
|
47
51
|
await runInDirectory(this.config.bbWorkingDirectory, operation, this.config.bbSkipCleanup);
|
|
@@ -52,13 +56,11 @@ export class BBCircuitVerifier {
|
|
|
52
56
|
// rather than read from the tx object itself. We also need the vks for the translator and ecc, which
|
|
53
57
|
// are not being saved along the other vks yet. Reuse the 'verifyProofForCircuit' method above once
|
|
54
58
|
// we have all the verification keys available.
|
|
55
|
-
const expectedCircuit = tx.data.forPublic
|
|
56
|
-
? 'PrivateKernelTailToPublicArtifact'
|
|
57
|
-
: 'PrivateKernelTailArtifact';
|
|
59
|
+
const expectedCircuit = tx.data.forPublic ? 'PrivateKernelTailToPublicArtifact' : 'PrivateKernelTailArtifact';
|
|
58
60
|
const circuit = 'ClientIVC';
|
|
59
61
|
// Block below is almost copy-pasted from verifyProofForCircuit
|
|
60
|
-
const operation = async (bbWorkingDirectory)
|
|
61
|
-
const logFunction = (message)
|
|
62
|
+
const operation = async (bbWorkingDirectory)=>{
|
|
63
|
+
const logFunction = (message)=>{
|
|
62
64
|
this.logger.debug(`${circuit} BB out - ${message}`);
|
|
63
65
|
};
|
|
64
66
|
await writeToOutputDirectory(tx.clientIvcProof, bbWorkingDirectory);
|
|
@@ -71,16 +73,14 @@ export class BBCircuitVerifier {
|
|
|
71
73
|
circuitName: mapProtocolArtifactNameToCircuitName(expectedCircuit),
|
|
72
74
|
duration: result.durationMs,
|
|
73
75
|
eventName: 'circuit-verification',
|
|
74
|
-
proofType: 'client-ivc'
|
|
76
|
+
proofType: 'client-ivc'
|
|
75
77
|
});
|
|
76
78
|
};
|
|
77
79
|
await runInDirectory(this.config.bbWorkingDirectory, operation, this.config.bbSkipCleanup);
|
|
78
80
|
return true;
|
|
79
|
-
}
|
|
80
|
-
catch (err) {
|
|
81
|
+
} catch (err) {
|
|
81
82
|
this.logger.warn(`Failed to verify ClientIVC proof for tx ${Tx.getHash(tx)}: ${String(err)}`);
|
|
82
83
|
return false;
|
|
83
84
|
}
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfdmVyaWZpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVyaWZpZXIvYmJfdmVyaWZpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQyxFQUFFLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFlLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRW5FLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBNEIsTUFBZ0IsRUFBVSxNQUFjO1FBQXhDLFdBQU0sR0FBTixNQUFNLENBQVU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUVqRSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFnQixFQUFFLE1BQU0sR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQUM7UUFDbkYsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sSUFBSSxpQkFB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
|
package/dest/verifier/index.js
CHANGED