@aztec/bb-prover 0.86.0 → 0.87.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/avm_proving_tests/avm_proving_tester.d.ts +2 -2
- package/dest/avm_proving_tests/avm_proving_tester.d.ts.map +1 -1
- package/dest/avm_proving_tests/avm_proving_tester.js +3 -6
- package/dest/bb/execute.d.ts +1 -3
- package/dest/bb/execute.d.ts.map +1 -1
- package/dest/bb/execute.js +9 -8
- package/dest/prover/client/bb_private_kernel_prover.d.ts +0 -2
- package/dest/prover/client/bb_private_kernel_prover.d.ts.map +1 -1
- package/dest/prover/client/native/bb_native_private_kernel_prover.d.ts +0 -2
- package/dest/prover/client/native/bb_native_private_kernel_prover.d.ts.map +1 -1
- package/dest/prover/client/wasm/bb_wasm_private_kernel_prover.d.ts +0 -2
- package/dest/prover/client/wasm/bb_wasm_private_kernel_prover.d.ts.map +1 -1
- package/dest/prover/proof_utils.js +3 -3
- package/dest/prover/server/bb_prover.d.ts.map +1 -1
- package/dest/prover/server/bb_prover.js +3 -3
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/verifier/bb_verifier.d.ts.map +1 -1
- package/dest/verifier/bb_verifier.js +6 -3
- package/package.json +19 -18
- package/src/avm_proving_tests/avm_proving_tester.ts +4 -8
- package/src/bb/execute.ts +8 -8
- package/src/prover/client/bb_private_kernel_prover.ts +2 -3
- package/src/prover/proof_utils.ts +4 -4
- package/src/prover/server/bb_prover.ts +6 -4
- package/src/verifier/bb_verifier.ts +17 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PublicTxSimulationTester, SimpleContractDataSource, type TestEnqueuedCall } from '@aztec/simulator/public/fixtures';
|
|
2
|
-
import type
|
|
2
|
+
import { type AvmCircuitInputs, AvmCircuitPublicInputs } from '@aztec/stdlib/avm';
|
|
3
3
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
5
5
|
import type { GlobalVariables } from '@aztec/stdlib/tx';
|
|
@@ -19,7 +19,7 @@ export declare class AvmProvingTesterV2 extends PublicTxSimulationTester {
|
|
|
19
19
|
constructor(bbWorkingDirectory: string, contractDataSource: SimpleContractDataSource, merkleTrees: MerkleTreeWriteOperations, globals?: GlobalVariables);
|
|
20
20
|
static new(globals?: GlobalVariables): Promise<AvmProvingTesterV2>;
|
|
21
21
|
proveV2(avmCircuitInputs: AvmCircuitInputs): Promise<BBResult>;
|
|
22
|
-
verifyV2(proofRes: BBSuccess): Promise<BBResult>;
|
|
22
|
+
verifyV2(proofRes: BBSuccess, publicInputs: AvmCircuitPublicInputs): Promise<BBResult>;
|
|
23
23
|
simProveVerifyV2(sender: AztecAddress, setupCalls: TestEnqueuedCall[], appCalls: TestEnqueuedCall[], teardownCall: TestEnqueuedCall | undefined, expectRevert: boolean | undefined, feePayer?: AztecAddress): Promise<void>;
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=avm_proving_tester.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avm_proving_tester.d.ts","sourceRoot":"","sources":["../../src/avm_proving_tests/avm_proving_tester.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"avm_proving_tester.d.ts","sourceRoot":"","sources":["../../src/avm_proving_tests/avm_proving_tester.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,KAAK,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAQxD,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,SAAS,EAMf,MAAM,kBAAkB,CAAC;AAK1B,qBAAa,gBAAiB,SAAQ,wBAAwB;IAE1D,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,gBAAgB;gBADhB,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,OAAO,EACjC,UAAU,EAAE,yBAAyB,EACrC,kBAAkB,EAAE,wBAAwB,EAC5C,OAAO,CAAC,EAAE,eAAe;WAMd,GAAG,CAAC,gBAAgB,GAAE,OAAe,EAAE,OAAO,CAAC,EAAE,eAAe;IAQvE,KAAK,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAe5D,MAAM,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBvC,cAAc,CACzB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,YAAY,EAAE,gBAAgB,GAAG,SAAS,EAC1C,YAAY,EAAE,OAAO,GAAG,SAAS,EACjC,QAAQ,eAAS;IAWN,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAE,OAAO;CAWtF;AAED,qBAAa,kBAAmB,SAAQ,wBAAwB;IAE5D,OAAO,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,MAAM,EAClC,kBAAkB,EAAE,wBAAwB,EAC5C,WAAW,EAAE,yBAAyB,EACtC,OAAO,CAAC,EAAE,eAAe;WAKd,GAAG,CAAC,OAAO,CAAC,EAAE,eAAe;IAQpC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU9D,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAW/E,gBAAgB,CAC3B,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,YAAY,EAAE,gBAAgB,GAAG,SAAS,EAC1C,YAAY,EAAE,OAAO,GAAG,SAAS,EACjC,QAAQ,eAAS;CAYpB"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { PublicTxSimulationTester, SimpleContractDataSource } from '@aztec/simulator/public/fixtures';
|
|
2
2
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
-
import { makeAvmCircuitInputs } from '@aztec/stdlib/testing';
|
|
4
3
|
import { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
5
4
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
6
5
|
import fs from 'node:fs/promises';
|
|
@@ -85,10 +84,8 @@ export class AvmProvingTesterV2 extends PublicTxSimulationTester {
|
|
|
85
84
|
expect(proofRes.status).toEqual(BB_RESULT.SUCCESS);
|
|
86
85
|
return proofRes;
|
|
87
86
|
}
|
|
88
|
-
async verifyV2(proofRes) {
|
|
89
|
-
|
|
90
|
-
const inputs = await makeAvmCircuitInputs();
|
|
91
|
-
return await verifyAvmProofV2(BB_PATH, this.bbWorkingDirectory, proofRes.proofPath, inputs.publicInputs, proofRes.vkPath, this.logger);
|
|
87
|
+
async verifyV2(proofRes, publicInputs) {
|
|
88
|
+
return await verifyAvmProofV2(BB_PATH, this.bbWorkingDirectory, proofRes.proofPath, publicInputs, proofRes.vkPath, this.logger);
|
|
92
89
|
}
|
|
93
90
|
async simProveVerifyV2(sender, setupCalls, appCalls, teardownCall, expectRevert, feePayer = sender) {
|
|
94
91
|
const simRes = await this.simulateTx(sender, setupCalls, appCalls, teardownCall, feePayer);
|
|
@@ -96,7 +93,7 @@ export class AvmProvingTesterV2 extends PublicTxSimulationTester {
|
|
|
96
93
|
const avmCircuitInputs = simRes.avmProvingRequest.inputs;
|
|
97
94
|
const provingRes = await this.proveV2(avmCircuitInputs);
|
|
98
95
|
expect(provingRes.status).toEqual(BB_RESULT.SUCCESS);
|
|
99
|
-
const verificationRes = await this.verifyV2(provingRes);
|
|
96
|
+
const verificationRes = await this.verifyV2(provingRes, avmCircuitInputs.publicInputs);
|
|
100
97
|
expect(verificationRes.status).toBe(BB_RESULT.SUCCESS);
|
|
101
98
|
}
|
|
102
99
|
}
|
package/dest/bb/execute.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
4
2
|
import type { AvmCircuitInputs, AvmCircuitPublicInputs } from '@aztec/stdlib/avm';
|
|
5
3
|
import type { UltraHonkFlavor } from '../honk.js';
|
|
@@ -54,7 +52,7 @@ type BBExecResult = {
|
|
|
54
52
|
* @param resultParser - An optional handler for detecting success or failure
|
|
55
53
|
* @returns The completed partial witness outputted from the circuit
|
|
56
54
|
*/
|
|
57
|
-
export declare function executeBB(pathToBB: string, command: string, args: string[], logger: LogFn, timeout?: number, resultParser?: (code: number) =>
|
|
55
|
+
export declare function executeBB(pathToBB: string, command: string, args: string[], logger: LogFn, timeout?: number, resultParser?: (code: number) => code is 0): Promise<BBExecResult>;
|
|
58
56
|
export declare function executeBbClientIvcProof(pathToBB: string, workingDirectory: string, inputsPath: string, log: LogFn, writeVk?: boolean): Promise<BBFailure | BBSuccess>;
|
|
59
57
|
/**
|
|
60
58
|
* Used for generating proofs of noir circuits.
|
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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"}
|
package/dest/bb/execute.js
CHANGED
|
@@ -90,7 +90,7 @@ export async function executeBbClientIvcProof(pathToBB, workingDirectory, inputs
|
|
|
90
90
|
// Check that the working directory exists
|
|
91
91
|
try {
|
|
92
92
|
await fs.access(workingDirectory);
|
|
93
|
-
} catch
|
|
93
|
+
} catch {
|
|
94
94
|
return {
|
|
95
95
|
status: 1,
|
|
96
96
|
reason: `Working directory ${workingDirectory} does not exist`
|
|
@@ -203,7 +203,7 @@ function getArgs(flavor) {
|
|
|
203
203
|
// Check that the working directory exists
|
|
204
204
|
try {
|
|
205
205
|
await fs.access(workingDirectory);
|
|
206
|
-
} catch
|
|
206
|
+
} catch {
|
|
207
207
|
return {
|
|
208
208
|
status: 1,
|
|
209
209
|
reason: `Working directory ${workingDirectory} does not exist`
|
|
@@ -275,7 +275,7 @@ function getArgs(flavor) {
|
|
|
275
275
|
// Check that the working directory exists
|
|
276
276
|
try {
|
|
277
277
|
await fs.access(workingDirectory);
|
|
278
|
-
} catch
|
|
278
|
+
} catch {
|
|
279
279
|
return {
|
|
280
280
|
status: 1,
|
|
281
281
|
reason: `Working directory ${workingDirectory} does not exist`
|
|
@@ -347,7 +347,7 @@ function getArgs(flavor) {
|
|
|
347
347
|
// Check that the working directory exists
|
|
348
348
|
try {
|
|
349
349
|
await fs.access(workingDirectory);
|
|
350
|
-
} catch
|
|
350
|
+
} catch {
|
|
351
351
|
return {
|
|
352
352
|
status: 1,
|
|
353
353
|
reason: `Working directory ${workingDirectory} does not exist`
|
|
@@ -424,7 +424,7 @@ function getArgs(flavor) {
|
|
|
424
424
|
// Check that the working directory exists
|
|
425
425
|
try {
|
|
426
426
|
await fs.access(workingDirectory);
|
|
427
|
-
} catch
|
|
427
|
+
} catch {
|
|
428
428
|
return {
|
|
429
429
|
status: 1,
|
|
430
430
|
reason: `Working directory ${workingDirectory} does not exist`
|
|
@@ -551,7 +551,8 @@ export async function verifyAvmProofV2(pathToBB, workingDirectory, proofFullPath
|
|
|
551
551
|
'-p',
|
|
552
552
|
proofPath,
|
|
553
553
|
'-k',
|
|
554
|
-
keyPath
|
|
554
|
+
keyPath,
|
|
555
|
+
'-v'
|
|
555
556
|
];
|
|
556
557
|
const timer = new Timer();
|
|
557
558
|
const command = 'verify';
|
|
@@ -720,7 +721,7 @@ export async function generateContractForVerificationKey(pathToBB, vkFilePath, c
|
|
|
720
721
|
// Check that the working directory exists
|
|
721
722
|
try {
|
|
722
723
|
await fs.access(workingDirectory);
|
|
723
|
-
} catch
|
|
724
|
+
} catch {
|
|
724
725
|
return {
|
|
725
726
|
status: 1,
|
|
726
727
|
reason: `Working directory ${workingDirectory} does not exist`
|
|
@@ -807,7 +808,7 @@ async function fsCache(dir, expectedCacheKey, logger, force, action) {
|
|
|
807
808
|
}
|
|
808
809
|
try {
|
|
809
810
|
await fs.writeFile(cacheFilePath, expectedCacheKey);
|
|
810
|
-
} catch
|
|
811
|
+
} catch {
|
|
811
812
|
logger(`Couldn't write cache data to ${cacheFilePath}. Skipping cache...`);
|
|
812
813
|
// ignore
|
|
813
814
|
}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import type { ArtifactProvider, ClientProtocolArtifact } from '@aztec/noir-protocol-circuits-types/types';
|
|
4
2
|
import type { Abi, WitnessMap } from '@aztec/noir-types';
|
|
5
3
|
import type { SimulationProvider } from '@aztec/simulator/client';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bb_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../../src/prover/client/bb_private_kernel_prover.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bb_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../../src/prover/client/bb_private_kernel_prover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import { type Logger } from '@aztec/foundation/log';
|
|
4
2
|
import type { SimulationProvider } from '@aztec/simulator/server';
|
|
5
3
|
import { type PrivateExecutionStep } from '@aztec/stdlib/kernel';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bb_native_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../../../src/prover/client/native/bb_native_private_kernel_prover.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bb_native_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../../../src/prover/client/native/bb_native_private_kernel_prover.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,KAAK,oBAAoB,EAAkC,MAAM,sBAAsB,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,qBAAqB;IAElE,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,WAAW;cACA,kBAAkB,EAAE,kBAAkB;cACtC,GAAG;IALxB,OAAO;WAUa,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE,MAAM;YAWhF,qBAAqB;IAuBb,oBAAoB,CAAC,cAAc,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAQrF,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBxG,OAAO,CAAC,cAAc;CAavB"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import type { ArtifactProvider } from '@aztec/noir-protocol-circuits-types/types';
|
|
4
2
|
import type { SimulationProvider } from '@aztec/simulator/client';
|
|
5
3
|
import type { PrivateExecutionStep } from '@aztec/stdlib/kernel';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bb_wasm_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../../../src/prover/client/wasm/bb_wasm_private_kernel_prover.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bb_wasm_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../../../src/prover/client/wasm/bb_wasm_private_kernel_prover.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,8BAAsB,yBAA0B,SAAQ,qBAAqB;cAEtD,gBAAgB,EAAE,gBAAgB;cAClC,kBAAkB,EAAE,kBAAkB;IACzD,OAAO,CAAC,OAAO;cACI,GAAG;gBAHH,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,EACjD,OAAO,GAAE,MAAU,EACR,GAAG,yCAAiC;IAKnC,oBAAoB,CAAC,cAAc,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAuBrF,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAa3G"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IPA_CLAIM_SIZE, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, PAIRING_POINTS_SIZE } from '@aztec/constants';
|
|
2
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
import { ClientIvcProof, Proof, RecursiveProof } from '@aztec/stdlib/proofs';
|
|
4
4
|
import assert from 'assert';
|
|
@@ -35,10 +35,10 @@ export async function readProofAsFields(filePath, vkData, proofLength, logger) {
|
|
|
35
35
|
})
|
|
36
36
|
]);
|
|
37
37
|
const json = JSON.parse(proofString);
|
|
38
|
-
let numPublicInputs = vkData.numPublicInputs -
|
|
38
|
+
let numPublicInputs = vkData.numPublicInputs - PAIRING_POINTS_SIZE;
|
|
39
39
|
assert(proofLength == NESTED_RECURSIVE_PROOF_LENGTH || proofLength == NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, `Proof length must be one of the expected proof lengths, received ${proofLength}`);
|
|
40
40
|
if (proofLength == NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH) {
|
|
41
|
-
numPublicInputs -=
|
|
41
|
+
numPublicInputs -= IPA_CLAIM_SIZE;
|
|
42
42
|
}
|
|
43
43
|
assert(json.length == proofLength, `Proof length mismatch: ${json.length} != ${proofLength}`);
|
|
44
44
|
const fieldsWithoutPublicInputs = json.map(Fr.fromHexString);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bb_prover.d.ts","sourceRoot":"","sources":["../../../src/prover/server/bb_prover.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bb_prover.d.ts","sourceRoot":"","sources":["../../../src/prover/server/bb_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,yCAAyC,EAEzC,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EACL,KAAK,sBAAsB,EAsB5B,MAAM,4CAA4C,CAAC;AAIpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EAGzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,KAAK,EAAgD,MAAM,sBAAsB,CAAC;AAC3F,OAAO,KAAK,EACV,6BAA6B,EAC7B,sBAAsB,EACtB,iCAAiC,EACjC,qBAAqB,EACrB,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,6BAA6B,EAC7B,UAAU,EACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAc,KAAK,eAAe,EAAiC,MAAM,yBAAyB,CAAC;AAmB1G,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,KAAK,eAAe,EAAgC,MAAM,eAAe,CAAC;AAYnF,MAAM,WAAW,cAAe,SAAQ,QAAQ,EAAE,UAAU;IAE1D,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC1C;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,mBAAmB;IAI5D,OAAO,CAAC,MAAM;IAHhB,OAAO,CAAC,eAAe,CAAwB;gBAGrC,MAAM,EAAE,cAAc,EAC9B,SAAS,EAAE,eAAe;IAK5B,IAAI,MAAM,6CAET;WAEY,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,GAAE,eAAsC;IAW1F;;;;OAIG;IAEU,kBAAkB,CAC7B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,6BAA6B,CAAC,kBAAkB,EAAE,OAAO,sBAAsB,CAAC,CAAC;IAe5F;;;;OAIG;IAEU,kBAAkB,CAC7B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,6BAA6B,CAAC,kBAAkB,EAAE,OAAO,6BAA6B,CAAC,CAAC;IAenG;;;;OAIG;IAIU,WAAW,CACtB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,uBAAuB,CAAC,OAAO,0BAA0B,CAAC,CAAC;IAMtE;;;;OAIG;IACU,yBAAyB,CACpC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CACR,6BAA6B,CAAC,6BAA6B,EAAE,OAAO,yCAAyC,CAAC,CAC/G;IAkBD;;;;OAIG;IACU,wBAAwB,CACnC,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CACR,6BAA6B,CAAC,6BAA6B,EAAE,OAAO,yCAAyC,CAAC,CAC/G;IAkBD;;;;OAIG;IACU,mBAAmB,CAC9B,KAAK,EAAE,iBAAiB,GACvB,OAAO,CACR,6BAA6B,CAAC,6BAA6B,EAAE,OAAO,yCAAyC,CAAC,CAC/G;IAgBD;;;;OAIG;IACU,uBAAuB,CAClC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CACR,6BAA6B,CAAC,iCAAiC,EAAE,OAAO,yCAAyC,CAAC,CACnH;IAgBY,+BAA+B,CAC1C,KAAK,EAAE,6BAA6B,GACnC,OAAO,CACR,6BAA6B,CAAC,iCAAiC,EAAE,OAAO,yCAAyC,CAAC,CACnH;IAgBD;;;;OAIG;IACU,4BAA4B,CACvC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CACR,6BAA6B,CAAC,iCAAiC,EAAE,OAAO,yCAAyC,CAAC,CACnH;IAgBD;;;;OAIG;IACU,wBAAwB,CACnC,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CACR,6BAA6B,CAAC,iCAAiC,EAAE,OAAO,yCAAyC,CAAC,CACnH;IAgBD;;;;OAIG;IACU,kBAAkB,CAC7B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,6BAA6B,CAAC,sBAAsB,CAAC,CAAC;YAkBnD,mBAAmB;YAoEnB,WAAW;YAyCX,sBAAsB;YAatB,uBAAuB;YAsBvB,cAAc;IAsCf,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,OAAO,iBAAiB,CAAC,CAAC;IA6BxG;;;;;;;;OAQG;YACW,oBAAoB;IAqDlC;;;;OAIG;IACU,WAAW,CAAC,WAAW,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK;IAK7D,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,mBAAmB;IAMjE,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK;YAMxF,qBAAqB;IA2BnC;;;;OAIG;IACH,OAAO,CAAC,gCAAgC;YAQ1B,oBAAoB;IAelC,OAAO,CAAC,cAAc;CAYvB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
2
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
}
|
|
7
|
-
import {
|
|
7
|
+
import { AVM_PROOF_LENGTH_IN_FIELDS, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, PAIRING_POINTS_SIZE, RECURSIVE_PROOF_LENGTH, TUBE_PROOF_LENGTH } from '@aztec/constants';
|
|
8
8
|
import { Fr } from '@aztec/foundation/fields';
|
|
9
9
|
import { runInDirectory } from '@aztec/foundation/fs';
|
|
10
10
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -161,7 +161,7 @@ const SERVER_CIRCUIT_RECURSIVE = true;
|
|
|
161
161
|
const verificationKey = this.getVerificationKeyDataForCircuit('RootRollupArtifact');
|
|
162
162
|
await this.verifyProof('RootRollupArtifact', proof);
|
|
163
163
|
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/13188): Remove this hack.
|
|
164
|
-
recursiveProof.binaryProof.numPublicInputs +=
|
|
164
|
+
recursiveProof.binaryProof.numPublicInputs += PAIRING_POINTS_SIZE;
|
|
165
165
|
return makePublicInputsAndRecursiveProof(circuitOutput, recursiveProof, verificationKey);
|
|
166
166
|
}
|
|
167
167
|
async generateProofWithBB(input, circuitType, convertInput, convertOutput, workingDirectory) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../src/test/test_circuit_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAE1B,6BAA6B,EAC7B,yCAAyC,EACzC,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EACL,KAAK,sBAAsB,EAuB5B,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAE,KAAK,kBAAkB,EAAsD,MAAM,yBAAyB,CAAC;AACtH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EAGzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,KAAK,KAAK,EAAmE,MAAM,sBAAsB,CAAC;AACnH,OAAO,KAAK,EACV,6BAA6B,EAC7B,sBAAsB,EACtB,iCAAiC,EACjC,qBAAqB,EACrB,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,EACtB,6BAA6B,EAC7B,UAAU,EACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,eAAe,EAAiC,MAAM,yBAAyB,CAAC;AAM9F,KAAK,SAAS,GACV;IACE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,mBAAmB,EAAE,WAAW,CAAC;IACjC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEN;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,mBAAmB;IAMzD,OAAO,CAAC,kBAAkB,CAAC;IAC3B,OAAO,CAAC,IAAI;IANd,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,MAAM,CAAyC;gBAG7C,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../src/test/test_circuit_prover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bb_verifier.d.ts","sourceRoot":"","sources":["../../src/verifier/bb_verifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAA0B,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAChH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"bb_verifier.d.ts","sourceRoot":"","sources":["../../src/verifier/bb_verifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAA0B,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAChH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAc7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQ7C,eAAO,MAAM,oBAAoB,QAA0D,CAAC;AAC5F,eAAO,MAAM,mBAAmB,QAAyD,CAAC;AAE1F,qBAAa,iBAAkB,YAAW,6BAA6B;IAEnE,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IAFhB,OAAO;WAKa,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAqC;IAK9E,sBAAsB,CAAC,WAAW,EAAE,sBAAsB,GAAG,mBAAmB;IAQ1E,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK;IAqCnE,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA4CnD"}
|
|
@@ -5,7 +5,7 @@ import { Tx } from '@aztec/stdlib/tx';
|
|
|
5
5
|
import { promises as fs } from 'fs';
|
|
6
6
|
import * as path from 'path';
|
|
7
7
|
import { fileURLToPath } from 'url';
|
|
8
|
-
import { BB_RESULT, PROOF_FILENAME, VK_FILENAME, verifyClientIvcProof, verifyProof } from '../bb/execute.js';
|
|
8
|
+
import { BB_RESULT, PROOF_FILENAME, PUBLIC_INPUTS_FILENAME, VK_FILENAME, verifyClientIvcProof, verifyProof } from '../bb/execute.js';
|
|
9
9
|
import { getUltraHonkFlavorForCircuit } from '../honk.js';
|
|
10
10
|
import { writeClientIVCProofToOutputDirectory } from '../prover/proof_utils.js';
|
|
11
11
|
import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
|
|
@@ -35,11 +35,14 @@ export class BBCircuitVerifier {
|
|
|
35
35
|
}
|
|
36
36
|
async verifyProofForCircuit(circuit, proof) {
|
|
37
37
|
const operation = async (bbWorkingDirectory)=>{
|
|
38
|
+
const publicInputsFileName = path.join(bbWorkingDirectory, PUBLIC_INPUTS_FILENAME);
|
|
38
39
|
const proofFileName = path.join(bbWorkingDirectory, PROOF_FILENAME);
|
|
39
40
|
const verificationKeyPath = path.join(bbWorkingDirectory, VK_FILENAME);
|
|
40
41
|
const verificationKey = this.getVerificationKeyData(circuit);
|
|
41
42
|
this.logger.debug(`${circuit} Verifying with key: ${verificationKey.keyAsFields.hash.toString()}`);
|
|
42
|
-
|
|
43
|
+
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/13189): Put this proof parsing logic in the proof class.
|
|
44
|
+
await fs.writeFile(publicInputsFileName, proof.buffer.slice(0, proof.numPublicInputs * 32));
|
|
45
|
+
await fs.writeFile(proofFileName, proof.buffer.slice(proof.numPublicInputs * 32));
|
|
43
46
|
await fs.writeFile(verificationKeyPath, verificationKey.keyAsBytes);
|
|
44
47
|
const result = await verifyProof(this.config.bbBinaryPath, proofFileName, verificationKeyPath, getUltraHonkFlavorForCircuit(circuit), this.logger);
|
|
45
48
|
if (result.status === BB_RESULT.FAILURE) {
|
|
@@ -71,7 +74,7 @@ export class BBCircuitVerifier {
|
|
|
71
74
|
await writeClientIVCProofToOutputDirectory(tx.clientIvcProof, bbWorkingDirectory);
|
|
72
75
|
const result = await verifyClientIvcProof(this.config.bbBinaryPath, bbWorkingDirectory.concat('/proof'), tx.data.forPublic ? PUBLIC_TAIL_CIVC_VK : PRIVATE_TAIL_CIVC_VK, logFunction);
|
|
73
76
|
if (result.status === BB_RESULT.FAILURE) {
|
|
74
|
-
const errorMessage = `Failed to verify ${circuit} proof!`;
|
|
77
|
+
const errorMessage = `Failed to verify ${circuit} proof for ${expectedCircuit}!`;
|
|
75
78
|
throw new Error(errorMessage);
|
|
76
79
|
}
|
|
77
80
|
this.logger.debug(`${circuit} verification successful`, {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/bb-prover",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.87.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -66,34 +66,35 @@
|
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@aztec/bb.js": "0.
|
|
70
|
-
"@aztec/constants": "0.
|
|
71
|
-
"@aztec/foundation": "0.
|
|
72
|
-
"@aztec/noir-noirc_abi": "0.
|
|
73
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
74
|
-
"@aztec/noir-types": "0.
|
|
75
|
-
"@aztec/simulator": "0.
|
|
76
|
-
"@aztec/stdlib": "0.
|
|
77
|
-
"@aztec/telemetry-client": "0.
|
|
78
|
-
"@aztec/world-state": "0.
|
|
69
|
+
"@aztec/bb.js": "0.87.0",
|
|
70
|
+
"@aztec/constants": "0.87.0",
|
|
71
|
+
"@aztec/foundation": "0.87.0",
|
|
72
|
+
"@aztec/noir-noirc_abi": "0.87.0",
|
|
73
|
+
"@aztec/noir-protocol-circuits-types": "0.87.0",
|
|
74
|
+
"@aztec/noir-types": "0.87.0",
|
|
75
|
+
"@aztec/simulator": "0.87.0",
|
|
76
|
+
"@aztec/stdlib": "0.87.0",
|
|
77
|
+
"@aztec/telemetry-client": "0.87.0",
|
|
78
|
+
"@aztec/world-state": "0.87.0",
|
|
79
79
|
"commander": "^12.1.0",
|
|
80
80
|
"pako": "^2.1.0",
|
|
81
81
|
"source-map-support": "^0.5.21",
|
|
82
82
|
"tslib": "^2.4.0"
|
|
83
83
|
},
|
|
84
84
|
"devDependencies": {
|
|
85
|
-
"@aztec/ethereum": "0.
|
|
86
|
-
"@aztec/kv-store": "0.
|
|
87
|
-
"@aztec/noir-contracts.js": "0.
|
|
88
|
-
"@aztec/
|
|
85
|
+
"@aztec/ethereum": "0.87.0",
|
|
86
|
+
"@aztec/kv-store": "0.87.0",
|
|
87
|
+
"@aztec/noir-contracts.js": "0.87.0",
|
|
88
|
+
"@aztec/noir-test-contracts.js": "0.87.0",
|
|
89
|
+
"@aztec/protocol-contracts": "0.87.0",
|
|
89
90
|
"@jest/globals": "^29.5.0",
|
|
90
91
|
"@types/jest": "^29.5.0",
|
|
91
|
-
"@types/node": "^
|
|
92
|
+
"@types/node": "^22.15.17",
|
|
92
93
|
"@types/source-map-support": "^0.5.10",
|
|
93
94
|
"jest": "^29.5.0",
|
|
94
95
|
"jest-mock-extended": "^3.0.3",
|
|
95
96
|
"ts-node": "^10.9.1",
|
|
96
|
-
"typescript": "^5.
|
|
97
|
+
"typescript": "^5.3.3",
|
|
97
98
|
"viem": "2.23.7"
|
|
98
99
|
},
|
|
99
100
|
"files": [
|
|
@@ -103,6 +104,6 @@
|
|
|
103
104
|
],
|
|
104
105
|
"types": "./dest/index.d.ts",
|
|
105
106
|
"engines": {
|
|
106
|
-
"node": ">=
|
|
107
|
+
"node": ">=20.10"
|
|
107
108
|
}
|
|
108
109
|
}
|
|
@@ -3,10 +3,9 @@ import {
|
|
|
3
3
|
SimpleContractDataSource,
|
|
4
4
|
type TestEnqueuedCall,
|
|
5
5
|
} from '@aztec/simulator/public/fixtures';
|
|
6
|
-
import type
|
|
6
|
+
import { type AvmCircuitInputs, AvmCircuitPublicInputs } from '@aztec/stdlib/avm';
|
|
7
7
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
8
8
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
9
|
-
import { makeAvmCircuitInputs } from '@aztec/stdlib/testing';
|
|
10
9
|
import type { GlobalVariables } from '@aztec/stdlib/tx';
|
|
11
10
|
import { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
12
11
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
@@ -137,15 +136,12 @@ export class AvmProvingTesterV2 extends PublicTxSimulationTester {
|
|
|
137
136
|
return proofRes as BBSuccess;
|
|
138
137
|
}
|
|
139
138
|
|
|
140
|
-
async verifyV2(proofRes: BBSuccess): Promise<BBResult> {
|
|
141
|
-
// TODO: Placeholder for now. They get ignored in C++.
|
|
142
|
-
const inputs = await makeAvmCircuitInputs();
|
|
143
|
-
|
|
139
|
+
async verifyV2(proofRes: BBSuccess, publicInputs: AvmCircuitPublicInputs): Promise<BBResult> {
|
|
144
140
|
return await verifyAvmProofV2(
|
|
145
141
|
BB_PATH,
|
|
146
142
|
this.bbWorkingDirectory,
|
|
147
143
|
proofRes.proofPath!,
|
|
148
|
-
|
|
144
|
+
publicInputs,
|
|
149
145
|
proofRes.vkPath!,
|
|
150
146
|
this.logger,
|
|
151
147
|
);
|
|
@@ -166,7 +162,7 @@ export class AvmProvingTesterV2 extends PublicTxSimulationTester {
|
|
|
166
162
|
const provingRes = await this.proveV2(avmCircuitInputs);
|
|
167
163
|
expect(provingRes.status).toEqual(BB_RESULT.SUCCESS);
|
|
168
164
|
|
|
169
|
-
const verificationRes = await this.verifyV2(provingRes as BBSuccess);
|
|
165
|
+
const verificationRes = await this.verifyV2(provingRes as BBSuccess, avmCircuitInputs.publicInputs);
|
|
170
166
|
expect(verificationRes.status).toBe(BB_RESULT.SUCCESS);
|
|
171
167
|
}
|
|
172
168
|
}
|
package/src/bb/execute.ts
CHANGED
|
@@ -126,7 +126,7 @@ export async function executeBbClientIvcProof(
|
|
|
126
126
|
// Check that the working directory exists
|
|
127
127
|
try {
|
|
128
128
|
await fs.access(workingDirectory);
|
|
129
|
-
} catch
|
|
129
|
+
} catch {
|
|
130
130
|
return { status: BB_RESULT.FAILURE, reason: `Working directory ${workingDirectory} does not exist` };
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -217,7 +217,7 @@ export async function generateProof(
|
|
|
217
217
|
// Check that the working directory exists
|
|
218
218
|
try {
|
|
219
219
|
await fs.access(workingDirectory);
|
|
220
|
-
} catch
|
|
220
|
+
} catch {
|
|
221
221
|
return { status: BB_RESULT.FAILURE, reason: `Working directory ${workingDirectory} does not exist` };
|
|
222
222
|
}
|
|
223
223
|
|
|
@@ -295,7 +295,7 @@ export async function generateTubeProof(
|
|
|
295
295
|
// Check that the working directory exists
|
|
296
296
|
try {
|
|
297
297
|
await fs.access(workingDirectory);
|
|
298
|
-
} catch
|
|
298
|
+
} catch {
|
|
299
299
|
return { status: BB_RESULT.FAILURE, reason: `Working directory ${workingDirectory} does not exist` };
|
|
300
300
|
}
|
|
301
301
|
|
|
@@ -366,7 +366,7 @@ export async function generateAvmProofV2(
|
|
|
366
366
|
// Check that the working directory exists
|
|
367
367
|
try {
|
|
368
368
|
await fs.access(workingDirectory);
|
|
369
|
-
} catch
|
|
369
|
+
} catch {
|
|
370
370
|
return { status: BB_RESULT.FAILURE, reason: `Working directory ${workingDirectory} does not exist` };
|
|
371
371
|
}
|
|
372
372
|
|
|
@@ -446,7 +446,7 @@ export async function generateAvmProof(
|
|
|
446
446
|
// Check that the working directory exists
|
|
447
447
|
try {
|
|
448
448
|
await fs.access(workingDirectory);
|
|
449
|
-
} catch
|
|
449
|
+
} catch {
|
|
450
450
|
return { status: BB_RESULT.FAILURE, reason: `Working directory ${workingDirectory} does not exist` };
|
|
451
451
|
}
|
|
452
452
|
|
|
@@ -609,7 +609,7 @@ export async function verifyClientIvcProof(
|
|
|
609
609
|
}
|
|
610
610
|
|
|
611
611
|
try {
|
|
612
|
-
const args = ['--scheme', 'client_ivc', '-p', proofPath, '-k', keyPath];
|
|
612
|
+
const args = ['--scheme', 'client_ivc', '-p', proofPath, '-k', keyPath, '-v'];
|
|
613
613
|
const timer = new Timer();
|
|
614
614
|
const command = 'verify';
|
|
615
615
|
const result = await executeBB(pathToBB, command, args, log);
|
|
@@ -765,7 +765,7 @@ export async function computeGateCountForCircuit(
|
|
|
765
765
|
// Check that the working directory exists
|
|
766
766
|
try {
|
|
767
767
|
await fs.access(workingDirectory);
|
|
768
|
-
} catch
|
|
768
|
+
} catch {
|
|
769
769
|
return { status: BB_RESULT.FAILURE, reason: `Working directory ${workingDirectory} does not exist` };
|
|
770
770
|
}
|
|
771
771
|
|
|
@@ -857,7 +857,7 @@ async function fsCache<T>(
|
|
|
857
857
|
|
|
858
858
|
try {
|
|
859
859
|
await fs.writeFile(cacheFilePath, expectedCacheKey);
|
|
860
|
-
} catch
|
|
860
|
+
} catch {
|
|
861
861
|
logger(`Couldn't write cache data to ${cacheFilePath}. Skipping cache...`);
|
|
862
862
|
// ignore
|
|
863
863
|
}
|
|
@@ -196,9 +196,8 @@ export abstract class BBPrivateKernelProver implements PrivateKernelProver {
|
|
|
196
196
|
convertOutputs: (outputs: WitnessMap, abi: Abi) => O,
|
|
197
197
|
): Promise<PrivateKernelSimulateOutput<O>> {
|
|
198
198
|
this.log.debug(`Generating witness for ${circuitType}`);
|
|
199
|
-
const compiledCircuit: NoirCompiledCircuitWithName =
|
|
200
|
-
circuitType
|
|
201
|
-
);
|
|
199
|
+
const compiledCircuit: NoirCompiledCircuitWithName =
|
|
200
|
+
await this.artifactProvider.getClientCircuitArtifactByName(circuitType);
|
|
202
201
|
|
|
203
202
|
const witnessMap = convertInputs(inputs, compiledCircuit.abi);
|
|
204
203
|
const outputWitness = await this.simulationProvider.executeProtocolCircuit(
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
IPA_CLAIM_LENGTH,
|
|
2
|
+
IPA_CLAIM_SIZE,
|
|
4
3
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
5
4
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
5
|
+
PAIRING_POINTS_SIZE,
|
|
6
6
|
} from '@aztec/constants';
|
|
7
7
|
import { Fr } from '@aztec/foundation/fields';
|
|
8
8
|
import type { Logger } from '@aztec/foundation/log';
|
|
@@ -60,13 +60,13 @@ export async function readProofAsFields<PROOF_LENGTH extends number>(
|
|
|
60
60
|
|
|
61
61
|
const json = JSON.parse(proofString);
|
|
62
62
|
|
|
63
|
-
let numPublicInputs = vkData.numPublicInputs -
|
|
63
|
+
let numPublicInputs = vkData.numPublicInputs - PAIRING_POINTS_SIZE;
|
|
64
64
|
assert(
|
|
65
65
|
proofLength == NESTED_RECURSIVE_PROOF_LENGTH || proofLength == NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
66
66
|
`Proof length must be one of the expected proof lengths, received ${proofLength}`,
|
|
67
67
|
);
|
|
68
68
|
if (proofLength == NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH) {
|
|
69
|
-
numPublicInputs -=
|
|
69
|
+
numPublicInputs -= IPA_CLAIM_SIZE;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
assert(json.length == proofLength, `Proof length mismatch: ${json.length} != ${proofLength}`);
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
/* eslint-disable require-await */
|
|
2
1
|
import {
|
|
3
|
-
AGGREGATION_OBJECT_LENGTH,
|
|
4
2
|
AVM_PROOF_LENGTH_IN_FIELDS,
|
|
5
3
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
6
4
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
5
|
+
PAIRING_POINTS_SIZE,
|
|
7
6
|
RECURSIVE_PROOF_LENGTH,
|
|
8
7
|
TUBE_PROOF_LENGTH,
|
|
9
8
|
} from '@aztec/constants';
|
|
@@ -108,7 +107,10 @@ export interface BBProverConfig extends BBConfig, ACVMConfig {
|
|
|
108
107
|
export class BBNativeRollupProver implements ServerCircuitProver {
|
|
109
108
|
private instrumentation: ProverInstrumentation;
|
|
110
109
|
|
|
111
|
-
constructor(
|
|
110
|
+
constructor(
|
|
111
|
+
private config: BBProverConfig,
|
|
112
|
+
telemetry: TelemetryClient,
|
|
113
|
+
) {
|
|
112
114
|
this.instrumentation = new ProverInstrumentation(telemetry, 'BBNativeRollupProver');
|
|
113
115
|
}
|
|
114
116
|
|
|
@@ -384,7 +386,7 @@ export class BBNativeRollupProver implements ServerCircuitProver {
|
|
|
384
386
|
|
|
385
387
|
await this.verifyProof('RootRollupArtifact', proof);
|
|
386
388
|
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/13188): Remove this hack.
|
|
387
|
-
recursiveProof.binaryProof.numPublicInputs +=
|
|
389
|
+
recursiveProof.binaryProof.numPublicInputs += PAIRING_POINTS_SIZE;
|
|
388
390
|
return makePublicInputsAndRecursiveProof(circuitOutput, recursiveProof, verificationKey);
|
|
389
391
|
}
|
|
390
392
|
|
|
@@ -12,7 +12,14 @@ import { promises as fs } from 'fs';
|
|
|
12
12
|
import * as path from 'path';
|
|
13
13
|
import { fileURLToPath } from 'url';
|
|
14
14
|
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
BB_RESULT,
|
|
17
|
+
PROOF_FILENAME,
|
|
18
|
+
PUBLIC_INPUTS_FILENAME,
|
|
19
|
+
VK_FILENAME,
|
|
20
|
+
verifyClientIvcProof,
|
|
21
|
+
verifyProof,
|
|
22
|
+
} from '../bb/execute.js';
|
|
16
23
|
import type { BBConfig } from '../config.js';
|
|
17
24
|
import { getUltraHonkFlavorForCircuit } from '../honk.js';
|
|
18
25
|
import { writeClientIVCProofToOutputDirectory } from '../prover/proof_utils.js';
|
|
@@ -25,7 +32,10 @@ export const PRIVATE_TAIL_CIVC_VK = path.join(__dirname, '../../artifacts/privat
|
|
|
25
32
|
export const PUBLIC_TAIL_CIVC_VK = path.join(__dirname, '../../artifacts/public-civc-vk');
|
|
26
33
|
|
|
27
34
|
export class BBCircuitVerifier implements ClientProtocolCircuitVerifier {
|
|
28
|
-
private constructor(
|
|
35
|
+
private constructor(
|
|
36
|
+
private config: BBConfig,
|
|
37
|
+
private logger: Logger,
|
|
38
|
+
) {}
|
|
29
39
|
|
|
30
40
|
public static async new(config: BBConfig, logger = createLogger('bb-prover:verifier')) {
|
|
31
41
|
await fs.mkdir(config.bbWorkingDirectory, { recursive: true });
|
|
@@ -42,13 +52,16 @@ export class BBCircuitVerifier implements ClientProtocolCircuitVerifier {
|
|
|
42
52
|
|
|
43
53
|
public async verifyProofForCircuit(circuit: ServerProtocolArtifact, proof: Proof) {
|
|
44
54
|
const operation = async (bbWorkingDirectory: string) => {
|
|
55
|
+
const publicInputsFileName = path.join(bbWorkingDirectory, PUBLIC_INPUTS_FILENAME);
|
|
45
56
|
const proofFileName = path.join(bbWorkingDirectory, PROOF_FILENAME);
|
|
46
57
|
const verificationKeyPath = path.join(bbWorkingDirectory, VK_FILENAME);
|
|
47
58
|
const verificationKey = this.getVerificationKeyData(circuit);
|
|
48
59
|
|
|
49
60
|
this.logger.debug(`${circuit} Verifying with key: ${verificationKey.keyAsFields.hash.toString()}`);
|
|
50
61
|
|
|
51
|
-
|
|
62
|
+
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/13189): Put this proof parsing logic in the proof class.
|
|
63
|
+
await fs.writeFile(publicInputsFileName, proof.buffer.slice(0, proof.numPublicInputs * 32));
|
|
64
|
+
await fs.writeFile(proofFileName, proof.buffer.slice(proof.numPublicInputs * 32));
|
|
52
65
|
await fs.writeFile(verificationKeyPath, verificationKey.keyAsBytes);
|
|
53
66
|
|
|
54
67
|
const result = await verifyProof(
|
|
@@ -100,7 +113,7 @@ export class BBCircuitVerifier implements ClientProtocolCircuitVerifier {
|
|
|
100
113
|
);
|
|
101
114
|
|
|
102
115
|
if (result.status === BB_RESULT.FAILURE) {
|
|
103
|
-
const errorMessage = `Failed to verify ${circuit} proof!`;
|
|
116
|
+
const errorMessage = `Failed to verify ${circuit} proof for ${expectedCircuit}!`;
|
|
104
117
|
throw new Error(errorMessage);
|
|
105
118
|
}
|
|
106
119
|
|