@aztec/bb-prover 0.0.1-commit.5daedc8 → 0.0.1-commit.6201a7b05
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 +5 -4
- package/dest/avm_proving_tests/avm_proving_tester.d.ts.map +1 -1
- package/dest/avm_proving_tests/avm_proving_tester.js +26 -10
- package/dest/bb/execute.d.ts +7 -6
- package/dest/bb/execute.d.ts.map +1 -1
- package/dest/bb/execute.js +64 -76
- package/dest/config.d.ts +12 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/instrumentation.d.ts +1 -1
- package/dest/instrumentation.d.ts.map +1 -1
- package/dest/instrumentation.js +21 -43
- package/dest/prover/client/bb_private_kernel_prover.d.ts +9 -3
- package/dest/prover/client/bb_private_kernel_prover.d.ts.map +1 -1
- package/dest/prover/client/bb_private_kernel_prover.js +29 -7
- package/dest/prover/client/bundle.d.ts +3 -3
- package/dest/prover/client/bundle.d.ts.map +1 -1
- package/dest/prover/client/bundle.js +2 -3
- package/dest/prover/client/lazy.d.ts +3 -3
- package/dest/prover/client/lazy.d.ts.map +1 -1
- package/dest/prover/client/lazy.js +2 -3
- package/dest/prover/proof_utils.js +1 -1
- package/dest/prover/server/bb_prover.d.ts +6 -9
- package/dest/prover/server/bb_prover.d.ts.map +1 -1
- package/dest/prover/server/bb_prover.js +416 -43
- package/dest/test/delay_values.d.ts +1 -1
- package/dest/test/delay_values.d.ts.map +1 -1
- package/dest/test/delay_values.js +28 -26
- package/dest/test/index.d.ts +2 -1
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +1 -0
- package/dest/test/test_circuit_prover.d.ts +4 -4
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/test/test_circuit_prover.js +462 -59
- package/dest/verification_key/verification_key_data.d.ts +1 -8
- package/dest/verification_key/verification_key_data.d.ts.map +1 -1
- package/dest/verification_key/verification_key_data.js +1 -20
- package/dest/verifier/batch_chonk_verifier.d.ts +45 -0
- package/dest/verifier/batch_chonk_verifier.d.ts.map +1 -0
- package/dest/verifier/batch_chonk_verifier.js +232 -0
- package/dest/verifier/bb_verifier.d.ts +1 -1
- package/dest/verifier/bb_verifier.d.ts.map +1 -1
- package/dest/verifier/bb_verifier.js +1 -4
- package/dest/verifier/index.d.ts +2 -1
- package/dest/verifier/index.d.ts.map +1 -1
- package/dest/verifier/index.js +1 -0
- package/dest/verifier/queued_chonk_verifier.d.ts +2 -3
- package/dest/verifier/queued_chonk_verifier.d.ts.map +1 -1
- package/dest/verifier/queued_chonk_verifier.js +15 -45
- package/package.json +20 -19
- package/src/avm_proving_tests/avm_proving_tester.ts +31 -19
- package/src/bb/execute.ts +54 -60
- package/src/config.ts +11 -0
- package/src/instrumentation.ts +20 -43
- package/src/prover/client/bb_private_kernel_prover.ts +35 -9
- package/src/prover/client/bundle.ts +3 -4
- package/src/prover/client/lazy.ts +3 -4
- package/src/prover/proof_utils.ts +1 -1
- package/src/prover/server/bb_prover.ts +23 -38
- package/src/test/delay_values.ts +30 -26
- package/src/test/index.ts +1 -0
- package/src/test/test_circuit_prover.ts +10 -13
- package/src/verification_key/verification_key_data.ts +1 -26
- package/src/verifier/batch_chonk_verifier.ts +276 -0
- package/src/verifier/bb_verifier.ts +1 -5
- package/src/verifier/index.ts +1 -0
- package/src/verifier/queued_chonk_verifier.ts +15 -47
|
@@ -2,6 +2,7 @@ import { PublicTxSimulationTester, SimpleContractDataSource, type TestEnqueuedCa
|
|
|
2
2
|
import type { PublicTxResult } from '@aztec/simulator/server';
|
|
3
3
|
import { AvmCircuitInputs, AvmCircuitPublicInputs } from '@aztec/stdlib/avm';
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
|
+
import type { Gas } from '@aztec/stdlib/gas';
|
|
5
6
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
6
7
|
import type { GlobalVariables } from '@aztec/stdlib/tx';
|
|
7
8
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
@@ -14,8 +15,8 @@ export declare class AvmProvingTester extends PublicTxSimulationTester {
|
|
|
14
15
|
prove(avmCircuitInputs: AvmCircuitInputs, txLabel?: string): Promise<BBResult>;
|
|
15
16
|
verify(proofRes: BBSuccess, publicInputs: AvmCircuitPublicInputs): Promise<BBResult>;
|
|
16
17
|
proveVerify(avmCircuitInputs: AvmCircuitInputs, txLabel?: string): Promise<void>;
|
|
17
|
-
simProveVerify(sender: AztecAddress, setupCalls: TestEnqueuedCall[], appCalls: TestEnqueuedCall[], teardownCall: TestEnqueuedCall | undefined, expectRevert: boolean | undefined, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, txLabel?: string, disableRevertCheck?: boolean): Promise<PublicTxResult>;
|
|
18
|
-
executeTxWithLabel(txLabel: string, sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions): Promise<PublicTxResult>;
|
|
19
|
-
simProveVerifyAppLogic(appCall: TestEnqueuedCall, expectRevert?: boolean, txLabel?: string): Promise<void>;
|
|
18
|
+
simProveVerify(sender: AztecAddress, setupCalls: TestEnqueuedCall[], appCalls: TestEnqueuedCall[], teardownCall: TestEnqueuedCall | undefined, expectRevert: boolean | undefined, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, txLabel?: string, disableRevertCheck?: boolean, gasLimits?: Gas): Promise<PublicTxResult>;
|
|
19
|
+
executeTxWithLabel(txLabel: string, sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, gasLimits?: Gas): Promise<PublicTxResult>;
|
|
20
|
+
simProveVerifyAppLogic(appCall: TestEnqueuedCall, expectRevert?: boolean, txLabel?: string, gasLimits?: Gas): Promise<void>;
|
|
20
21
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3Byb3ZpbmdfdGVzdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtX3Byb3ZpbmdfdGVzdHMvYXZtX3Byb3ZpbmdfdGVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssbUJBQW1CLEVBQ3hCLEtBQUsscUJBQXFCLEVBQzNCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUF5QixNQUFNLG1CQUFtQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBTTdELE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLFNBQVMsRUFBK0MsTUFBTSxrQkFBa0IsQ0FBQztBQTZFOUcscUJBQWEsZ0JBQWlCLFNBQVEsd0JBQXdCO0lBSTFELE9BQU8sQ0FBQyxnQkFBZ0I7SUFIMUIsT0FBTyxDQUFDLGtCQUFrQixDQUFjO0lBRXhDLFlBQ1UsZ0JBQWdCLEVBQUUsT0FBTyxFQUNqQyxrQkFBa0IsRUFBRSx3QkFBd0IsRUFDNUMsV0FBVyxFQUFFLHlCQUF5QixFQUN0QyxPQUFPLENBQUMsRUFBRSxlQUFlLEVBQ3pCLE9BQU8sQ0FBQyxFQUFFLG1CQUFtQixFQUk5QjtJQUVELE9BQWEsR0FBRyxDQUNkLGlCQUFpQixFQUFFLHVCQUF1QixFQUMxQyxnQkFBZ0IsR0FBRSxPQUFlLEVBQ2pDLE9BQU8sQ0FBQyxFQUFFLGVBQWUsRUFDekIsT0FBTyxDQUFDLEVBQUUsbUJBQW1CLDZCQUs5QjtJQUVLLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEdBQUUsTUFBc0IsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBNkRsRztJQUVLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBUXpGO0lBRVksV0FBVyxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE9BQU8sR0FBRSxNQUFzQixpQkFNM0Y7SUFFWSxjQUFjLENBQ3pCLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxFQUM5QixRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsRUFDNUIsWUFBWSxFQUFFLGdCQUFnQixHQUFHLFNBQVMsRUFDMUMsWUFBWSxFQUFFLE9BQU8sR0FBRyxTQUFTLEVBQ2pDLFFBQVEsZUFBUyxFQUNqQixpQkFBaUIsQ0FBQyxFQUFFLHFCQUFxQixFQUN6QyxPQUFPLEdBQUUsTUFBc0IsRUFDL0Isa0JBQWtCLEdBQUUsT0FBZSxFQUNuQyxTQUFTLENBQUMsRUFBRSxHQUFHLEdBQ2QsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQTJCekI7SUFFcUIsa0JBQWtCLENBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQ2YsTUFBTSxFQUFFLFlBQVksRUFDcEIsVUFBVSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsRUFDL0IsUUFBUSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsRUFDN0IsWUFBWSxDQUFDLEVBQUUsZ0JBQWdCLEVBQy9CLFFBQVEsQ0FBQyxFQUFFLFlBQVksRUFDdkIsaUJBQWlCLENBQUMsRUFBRSxxQkFBcUIsRUFDekMsU0FBUyxDQUFDLEVBQUUsR0FBRywyQkFjaEI7SUFFWSxzQkFBc0IsQ0FDakMsT0FBTyxFQUFFLGdCQUFnQixFQUN6QixZQUFZLENBQUMsRUFBRSxPQUFPLEVBQ3RCLE9BQU8sR0FBRSxNQUFzQixFQUMvQixTQUFTLENBQUMsRUFBRSxHQUFHLGlCQWNoQjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avm_proving_tester.d.ts","sourceRoot":"","sources":["../../src/avm_proving_tests/avm_proving_tester.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"avm_proving_tester.d.ts","sourceRoot":"","sources":["../../src/avm_proving_tests/avm_proving_tester.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAyB,MAAM,mBAAmB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAM7D,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAA+C,MAAM,kBAAkB,CAAC;AA6E9G,qBAAa,gBAAiB,SAAQ,wBAAwB;IAI1D,OAAO,CAAC,gBAAgB;IAH1B,OAAO,CAAC,kBAAkB,CAAc;IAExC,YACU,gBAAgB,EAAE,OAAO,EACjC,kBAAkB,EAAE,wBAAwB,EAC5C,WAAW,EAAE,yBAAyB,EACtC,OAAO,CAAC,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,mBAAmB,EAI9B;IAED,OAAa,GAAG,CACd,iBAAiB,EAAE,uBAAuB,EAC1C,gBAAgB,GAAE,OAAe,EACjC,OAAO,CAAC,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,mBAAmB,6BAK9B;IAEK,KAAK,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6DlG;IAEK,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAQzF;IAEY,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,GAAE,MAAsB,iBAM3F;IAEY,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,EACjB,iBAAiB,CAAC,EAAE,qBAAqB,EACzC,OAAO,GAAE,MAAsB,EAC/B,kBAAkB,GAAE,OAAe,EACnC,SAAS,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,cAAc,CAAC,CA2BzB;IAEqB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,EACpB,UAAU,CAAC,EAAE,gBAAgB,EAAE,EAC/B,QAAQ,CAAC,EAAE,gBAAgB,EAAE,EAC7B,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,CAAC,EAAE,YAAY,EACvB,iBAAiB,CAAC,EAAE,qBAAqB,EACzC,SAAS,CAAC,EAAE,GAAG,2BAchB;IAEY,sBAAsB,CACjC,OAAO,EAAE,gBAAgB,EACzB,YAAY,CAAC,EAAE,OAAO,EACtB,OAAO,GAAE,MAAsB,EAC/B,SAAS,CAAC,EAAE,GAAG,iBAchB;CACF"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Timer } from '@aztec/foundation/timer';
|
|
2
2
|
import { PublicTxSimulationTester, SimpleContractDataSource } from '@aztec/simulator/public/fixtures';
|
|
3
|
-
import { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
3
|
+
import { AvmCircuitInputs, PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
5
|
import fs from 'node:fs/promises';
|
|
6
6
|
import { tmpdir } from 'node:os';
|
|
7
7
|
import path from 'path';
|
|
8
|
-
import { BB_RESULT,
|
|
8
|
+
import { BB_RESULT, generateAvmProof, verifyAvmProof } from '../bb/execute.js';
|
|
9
9
|
const BB_PATH = path.resolve('../../barretenberg/cpp/build/bin/bb-avm');
|
|
10
10
|
// An InterceptingLogger that records all log messages and forwards them to a wrapped logger.
|
|
11
11
|
class InterceptingLogger {
|
|
@@ -24,6 +24,9 @@ class InterceptingLogger {
|
|
|
24
24
|
createChild(_childModule) {
|
|
25
25
|
throw new Error('Not implemented');
|
|
26
26
|
}
|
|
27
|
+
getBindings() {
|
|
28
|
+
return this.logger.getBindings();
|
|
29
|
+
}
|
|
27
30
|
intercept(level, msg, ...args) {
|
|
28
31
|
this.logs.push(...msg.split('\n'));
|
|
29
32
|
// Forward to the wrapped logger
|
|
@@ -58,11 +61,21 @@ class InterceptingLogger {
|
|
|
58
61
|
this.logger.error(msg, err, ...args);
|
|
59
62
|
}
|
|
60
63
|
}
|
|
64
|
+
// Config with collectHints enabled for proving tests
|
|
65
|
+
const provingConfig = PublicSimulatorConfig.from({
|
|
66
|
+
skipFeeEnforcement: false,
|
|
67
|
+
collectCallMetadata: true,
|
|
68
|
+
collectDebugLogs: false,
|
|
69
|
+
collectHints: true,
|
|
70
|
+
collectPublicInputs: true,
|
|
71
|
+
collectStatistics: false
|
|
72
|
+
});
|
|
61
73
|
export class AvmProvingTester extends PublicTxSimulationTester {
|
|
62
74
|
checkCircuitOnly;
|
|
63
75
|
bbWorkingDirectory;
|
|
64
76
|
constructor(checkCircuitOnly, contractDataSource, merkleTrees, globals, metrics){
|
|
65
|
-
|
|
77
|
+
// simulator factory is undefined because for proving, we use the default C++ simulator
|
|
78
|
+
super(merkleTrees, contractDataSource, globals, metrics, /*simulatorFactory=*/ undefined, provingConfig), this.checkCircuitOnly = checkCircuitOnly, this.bbWorkingDirectory = '';
|
|
66
79
|
}
|
|
67
80
|
static async new(worldStateService, checkCircuitOnly = false, globals, metrics) {
|
|
68
81
|
const contractDataSource = new SimpleContractDataSource();
|
|
@@ -125,7 +138,7 @@ export class AvmProvingTester extends PublicTxSimulationTester {
|
|
|
125
138
|
// Check-circuit does not generate a proof to verify.
|
|
126
139
|
return proofRes;
|
|
127
140
|
}
|
|
128
|
-
return await verifyAvmProof(BB_PATH, this.bbWorkingDirectory, proofRes.proofPath, publicInputs,
|
|
141
|
+
return await verifyAvmProof(BB_PATH, this.bbWorkingDirectory, proofRes.proofPath, publicInputs, this.logger);
|
|
129
142
|
}
|
|
130
143
|
async proveVerify(avmCircuitInputs, txLabel = 'unlabeledTx') {
|
|
131
144
|
const provingRes = await this.prove(avmCircuitInputs, txLabel);
|
|
@@ -133,8 +146,11 @@ export class AvmProvingTester extends PublicTxSimulationTester {
|
|
|
133
146
|
const verificationRes = await this.verify(provingRes, avmCircuitInputs.publicInputs);
|
|
134
147
|
expect(verificationRes.status).toBe(BB_RESULT.SUCCESS);
|
|
135
148
|
}
|
|
136
|
-
async simProveVerify(sender, setupCalls, appCalls, teardownCall, expectRevert, feePayer = sender, privateInsertions, txLabel = 'unlabeledTx', disableRevertCheck = false) {
|
|
137
|
-
const
|
|
149
|
+
async simProveVerify(sender, setupCalls, appCalls, teardownCall, expectRevert, feePayer = sender, privateInsertions, txLabel = 'unlabeledTx', disableRevertCheck = false, gasLimits) {
|
|
150
|
+
const simTimer = new Timer();
|
|
151
|
+
const simRes = await this.simulateTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, txLabel, gasLimits);
|
|
152
|
+
const simDuration = simTimer.ms();
|
|
153
|
+
this.logger.info(`Simulation took ${simDuration} ms for tx ${txLabel}`);
|
|
138
154
|
if (!disableRevertCheck) {
|
|
139
155
|
expect(simRes.revertCode.isOK()).toBe(expectRevert ? false : true);
|
|
140
156
|
}
|
|
@@ -145,12 +161,12 @@ export class AvmProvingTester extends PublicTxSimulationTester {
|
|
|
145
161
|
this.logger.info(`${opString} took ${timer.ms()} ms for tx ${txLabel}`);
|
|
146
162
|
return simRes;
|
|
147
163
|
}
|
|
148
|
-
async executeTxWithLabel(txLabel, sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions) {
|
|
149
|
-
return await this.simProveVerify(sender, setupCalls ?? [], appCalls ?? [], teardownCall, undefined, feePayer, privateInsertions, txLabel, true);
|
|
164
|
+
async executeTxWithLabel(txLabel, sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, gasLimits) {
|
|
165
|
+
return await this.simProveVerify(sender, setupCalls ?? [], appCalls ?? [], teardownCall, undefined, feePayer, privateInsertions, txLabel, true, gasLimits);
|
|
150
166
|
}
|
|
151
|
-
async simProveVerifyAppLogic(appCall, expectRevert, txLabel = 'unlabeledTx') {
|
|
167
|
+
async simProveVerifyAppLogic(appCall, expectRevert, txLabel = 'unlabeledTx', gasLimits) {
|
|
152
168
|
await this.simProveVerify(/*sender=*/ AztecAddress.fromNumber(42), /*setupCalls=*/ [], [
|
|
153
169
|
appCall
|
|
154
|
-
], undefined, expectRevert, /*feePayer=*/ undefined, /*privateInsertions=*/ undefined, txLabel);
|
|
170
|
+
], undefined, expectRevert, /*feePayer=*/ undefined, /*privateInsertions=*/ undefined, txLabel, /*disableRevertCheck=*/ false, gasLimits);
|
|
155
171
|
}
|
|
156
172
|
}
|
package/dest/bb/execute.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ type BBExecResult = {
|
|
|
37
37
|
exitCode: number;
|
|
38
38
|
signal: string | undefined;
|
|
39
39
|
};
|
|
40
|
+
export declare const DEFAULT_BB_VERIFY_CONCURRENCY = 4;
|
|
40
41
|
/**
|
|
41
42
|
* Invokes the Barretenberg binary with the provided command and args
|
|
42
43
|
* @param pathToBB - The path to the BB binary
|
|
@@ -77,21 +78,21 @@ export declare function generateAvmProof(pathToBB: string, workingDirectory: str
|
|
|
77
78
|
* @param pathToBB - The full path to the bb binary
|
|
78
79
|
* @param proofFullPath - The full path to the proof to be verified
|
|
79
80
|
* @param verificationKeyPath - The full path to the circuit verification key
|
|
80
|
-
* @param
|
|
81
|
+
* @param logger - A logger
|
|
81
82
|
* @returns An object containing a result indication and duration taken
|
|
82
83
|
*/
|
|
83
|
-
export declare function verifyProof(pathToBB: string, proofFullPath: string, verificationKeyPath: string, ultraHonkFlavor: UltraHonkFlavor,
|
|
84
|
-
export declare function verifyAvmProof(pathToBB: string, workingDirectory: string, proofFullPath: string, publicInputs: AvmCircuitPublicInputs,
|
|
84
|
+
export declare function verifyProof(pathToBB: string, proofFullPath: string, verificationKeyPath: string, ultraHonkFlavor: UltraHonkFlavor, logger: Logger): Promise<BBFailure | BBSuccess>;
|
|
85
|
+
export declare function verifyAvmProof(pathToBB: string, workingDirectory: string, proofFullPath: string, publicInputs: AvmCircuitPublicInputs, logger: Logger): Promise<BBFailure | BBSuccess>;
|
|
85
86
|
/**
|
|
86
87
|
* Verifies a ChonkProof
|
|
87
88
|
* TODO(#7370) The verification keys should be supplied separately
|
|
88
89
|
* @param pathToBB - The full path to the bb binary
|
|
89
90
|
* @param targetPath - The path to the folder with the proof, accumulator, and verification keys
|
|
90
|
-
* @param
|
|
91
|
+
* @param logger - A logger
|
|
91
92
|
* @param concurrency - The number of threads to use for the verification
|
|
92
93
|
* @returns An object containing a result indication and duration taken
|
|
93
94
|
*/
|
|
94
|
-
export declare function verifyChonkProof(pathToBB: string, proofPath: string, keyPath: string,
|
|
95
|
+
export declare function verifyChonkProof(pathToBB: string, proofPath: string, keyPath: string, logger: Logger, concurrency?: number): Promise<BBFailure | BBSuccess>;
|
|
95
96
|
export declare function generateContractForVerificationKey(pathToBB: string, vkFilePath: string, contractPath: string, log: LogFn): Promise<BBFailure | BBSuccess>;
|
|
96
97
|
/**
|
|
97
98
|
* Compute bb gate count for a given circuit
|
|
@@ -104,4 +105,4 @@ export declare function generateContractForVerificationKey(pathToBB: string, vkF
|
|
|
104
105
|
*/
|
|
105
106
|
export declare function computeGateCountForCircuit(pathToBB: string, workingDirectory: string, circuitName: string, bytecode: Buffer, flavor: UltraHonkFlavor | 'mega_honk', log: LogFn): Promise<BBFailure | BBSuccess>;
|
|
106
107
|
export {};
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JiL2V4ZWN1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFPbEYsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWxELGVBQU8sTUFBTSxXQUFXLE9BQU8sQ0FBQztBQUNoQyxlQUFPLE1BQU0sc0JBQXNCLGtCQUFrQixDQUFDO0FBQ3RELGVBQU8sTUFBTSxjQUFjLFVBQVUsQ0FBQztBQUN0QyxlQUFPLE1BQU0sbUJBQW1CLG1CQUFtQixDQUFDO0FBQ3BELGVBQU8sTUFBTSxxQkFBcUIscUJBQXFCLENBQUM7QUFDeEQsZUFBTyxNQUFNLDBCQUEwQiwwQkFBMEIsQ0FBQztBQUVsRSxvQkFBWSxTQUFTO0lBQ25CLE9BQU8sSUFBQTtJQUNQLE9BQU8sSUFBQTtJQUNQLGVBQWUsSUFBQTtDQUNoQjtBQUVELE1BQU0sTUFBTSxTQUFTLEdBQUc7SUFDdEIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQztJQUN0RCxVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLG1DQUFtQztJQUNuQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDaEIsZ0RBQWdEO0lBQ2hELGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN6Qiw4QkFBOEI7SUFDOUIsU0FBUyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ25CLGlDQUFpQztJQUNqQyxZQUFZLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdEIsMENBQTBDO0lBQzFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUN0QixDQUFDO0FBRUYsTUFBTSxNQUFN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
|
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":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAOlF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,WAAW,OAAO,CAAC;AAChC,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AACxD,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE,oBAAY,SAAS;IACnB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,eAAe,IAAA;CAChB;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7C,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,KAAK,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,YAAY,8BAA+B,GAC1C,OAAO,CAAC,YAAY,CAAC,
|
|
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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { sha256 } from '@aztec/foundation/crypto';
|
|
1
|
+
import { sha256 } from '@aztec/foundation/crypto/sha256';
|
|
2
2
|
import { Timer } from '@aztec/foundation/timer';
|
|
3
3
|
import * as proc from 'child_process';
|
|
4
4
|
import { promises as fs } from 'fs';
|
|
@@ -16,6 +16,7 @@ export var BB_RESULT = /*#__PURE__*/ function(BB_RESULT) {
|
|
|
16
16
|
BB_RESULT[BB_RESULT["ALREADY_PRESENT"] = 2] = "ALREADY_PRESENT";
|
|
17
17
|
return BB_RESULT;
|
|
18
18
|
}({});
|
|
19
|
+
export const DEFAULT_BB_VERIFY_CONCURRENCY = 4;
|
|
19
20
|
/**
|
|
20
21
|
* Invokes the Barretenberg binary with the provided command and args
|
|
21
22
|
* @param pathToBB - The path to the BB binary
|
|
@@ -63,6 +64,15 @@ export var BB_RESULT = /*#__PURE__*/ function(BB_RESULT) {
|
|
|
63
64
|
});
|
|
64
65
|
}, timeout);
|
|
65
66
|
}
|
|
67
|
+
// Forward termination signals so bb doesn't survive as an orphan when the node parent exits.
|
|
68
|
+
const forwardSignal = (signal)=>{
|
|
69
|
+
if (bb.pid) {
|
|
70
|
+
bb.kill(signal);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
process.on('SIGINT', forwardSignal);
|
|
74
|
+
process.on('SIGTERM', forwardSignal);
|
|
75
|
+
process.on('SIGHUP', forwardSignal);
|
|
66
76
|
readline.createInterface({
|
|
67
77
|
input: bb.stdout
|
|
68
78
|
}).on('line', logger);
|
|
@@ -73,6 +83,9 @@ export var BB_RESULT = /*#__PURE__*/ function(BB_RESULT) {
|
|
|
73
83
|
if (timeoutId) {
|
|
74
84
|
clearTimeout(timeoutId);
|
|
75
85
|
}
|
|
86
|
+
process.off('SIGINT', forwardSignal);
|
|
87
|
+
process.off('SIGTERM', forwardSignal);
|
|
88
|
+
process.off('SIGHUP', forwardSignal);
|
|
76
89
|
if (resultParser(exitCode)) {
|
|
77
90
|
resolve({
|
|
78
91
|
status: 0,
|
|
@@ -344,7 +357,7 @@ function getArgs(flavor) {
|
|
|
344
357
|
durationMs: duration,
|
|
345
358
|
proofPath: join(outputPath, PROOF_FILENAME),
|
|
346
359
|
pkPath: undefined,
|
|
347
|
-
vkDirectoryPath:
|
|
360
|
+
vkDirectoryPath: undefined
|
|
348
361
|
};
|
|
349
362
|
}
|
|
350
363
|
// Not a great error message here but it is difficult to decipher what comes from bb
|
|
@@ -365,12 +378,31 @@ function getArgs(flavor) {
|
|
|
365
378
|
* @param pathToBB - The full path to the bb binary
|
|
366
379
|
* @param proofFullPath - The full path to the proof to be verified
|
|
367
380
|
* @param verificationKeyPath - The full path to the circuit verification key
|
|
368
|
-
* @param
|
|
381
|
+
* @param logger - A logger
|
|
369
382
|
* @returns An object containing a result indication and duration taken
|
|
370
|
-
*/ export async function verifyProof(pathToBB, proofFullPath, verificationKeyPath, ultraHonkFlavor,
|
|
371
|
-
|
|
383
|
+
*/ export async function verifyProof(pathToBB, proofFullPath, verificationKeyPath, ultraHonkFlavor, logger) {
|
|
384
|
+
// Specify the public inputs path in the case of UH verification.
|
|
385
|
+
// Take proofFullPath and remove the suffix past the / to get the directory.
|
|
386
|
+
const proofDir = proofFullPath.substring(0, proofFullPath.lastIndexOf('/'));
|
|
387
|
+
const publicInputsFullPath = join(proofDir, '/public_inputs');
|
|
388
|
+
logger.debug(`public inputs path: ${publicInputsFullPath}`);
|
|
389
|
+
const args = [
|
|
390
|
+
'-p',
|
|
391
|
+
proofFullPath,
|
|
392
|
+
'-k',
|
|
393
|
+
verificationKeyPath,
|
|
394
|
+
'-i',
|
|
395
|
+
publicInputsFullPath,
|
|
396
|
+
'--disable_zk',
|
|
397
|
+
...getArgs(ultraHonkFlavor)
|
|
398
|
+
];
|
|
399
|
+
let concurrency = DEFAULT_BB_VERIFY_CONCURRENCY;
|
|
400
|
+
if (process.env.VERIFY_HARDWARE_CONCURRENCY) {
|
|
401
|
+
concurrency = parseInt(process.env.VERIFY_HARDWARE_CONCURRENCY, 10);
|
|
402
|
+
}
|
|
403
|
+
return await verifyProofInternal(pathToBB, `verify`, args, logger, concurrency);
|
|
372
404
|
}
|
|
373
|
-
export async function verifyAvmProof(pathToBB, workingDirectory, proofFullPath, publicInputs,
|
|
405
|
+
export async function verifyAvmProof(pathToBB, workingDirectory, proofFullPath, publicInputs, logger) {
|
|
374
406
|
const inputsBuffer = publicInputs.serializeWithMessagePack();
|
|
375
407
|
// Write the inputs to the working directory.
|
|
376
408
|
const filePresent = async (file)=>await fs.access(file, fs.constants.R_OK).then((_)=>true).catch((_)=>false);
|
|
@@ -382,20 +414,23 @@ export async function verifyAvmProof(pathToBB, workingDirectory, proofFullPath,
|
|
|
382
414
|
reason: `Could not write avm inputs to ${avmInputsPath}`
|
|
383
415
|
};
|
|
384
416
|
}
|
|
385
|
-
|
|
417
|
+
const args = [
|
|
418
|
+
'-p',
|
|
419
|
+
proofFullPath,
|
|
386
420
|
'--avm-public-inputs',
|
|
387
421
|
avmInputsPath
|
|
388
|
-
]
|
|
422
|
+
];
|
|
423
|
+
return await verifyProofInternal(pathToBB, 'avm_verify', args, logger);
|
|
389
424
|
}
|
|
390
425
|
/**
|
|
391
426
|
* Verifies a ChonkProof
|
|
392
427
|
* TODO(#7370) The verification keys should be supplied separately
|
|
393
428
|
* @param pathToBB - The full path to the bb binary
|
|
394
429
|
* @param targetPath - The path to the folder with the proof, accumulator, and verification keys
|
|
395
|
-
* @param
|
|
430
|
+
* @param logger - A logger
|
|
396
431
|
* @param concurrency - The number of threads to use for the verification
|
|
397
432
|
* @returns An object containing a result indication and duration taken
|
|
398
|
-
*/ export async function verifyChonkProof(pathToBB, proofPath, keyPath,
|
|
433
|
+
*/ export async function verifyChonkProof(pathToBB, proofPath, keyPath, logger, concurrency = 1) {
|
|
399
434
|
const binaryPresent = await fs.access(pathToBB, fs.constants.R_OK).then((_)=>true).catch((_)=>false);
|
|
400
435
|
if (!binaryPresent) {
|
|
401
436
|
return {
|
|
@@ -403,48 +438,26 @@ export async function verifyAvmProof(pathToBB, workingDirectory, proofFullPath,
|
|
|
403
438
|
reason: `Failed to find bb binary at ${pathToBB}`
|
|
404
439
|
};
|
|
405
440
|
}
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
const timer = new Timer();
|
|
417
|
-
const command = 'verify';
|
|
418
|
-
const result = await executeBB(pathToBB, command, args, log, concurrency);
|
|
419
|
-
const duration = timer.ms();
|
|
420
|
-
if (result.status == 0) {
|
|
421
|
-
return {
|
|
422
|
-
status: 0,
|
|
423
|
-
durationMs: duration
|
|
424
|
-
};
|
|
425
|
-
}
|
|
426
|
-
// Not a great error message here but it is difficult to decipher what comes from bb
|
|
427
|
-
return {
|
|
428
|
-
status: 1,
|
|
429
|
-
reason: `Failed to verify proof. Exit code ${result.exitCode}. Signal ${result.signal}.`,
|
|
430
|
-
retry: !!result.signal
|
|
431
|
-
};
|
|
432
|
-
} catch (error) {
|
|
433
|
-
return {
|
|
434
|
-
status: 1,
|
|
435
|
-
reason: `${error}`
|
|
436
|
-
};
|
|
437
|
-
}
|
|
441
|
+
const args = [
|
|
442
|
+
'--scheme',
|
|
443
|
+
'chonk',
|
|
444
|
+
'-p',
|
|
445
|
+
proofPath,
|
|
446
|
+
'-k',
|
|
447
|
+
keyPath,
|
|
448
|
+
'-v'
|
|
449
|
+
];
|
|
450
|
+
return await verifyProofInternal(pathToBB, 'verify', args, logger, concurrency);
|
|
438
451
|
}
|
|
439
452
|
/**
|
|
440
453
|
* Used for verifying proofs with BB
|
|
441
454
|
* @param pathToBB - The full path to the bb binary
|
|
442
|
-
* @param proofFullPath - The full path to the proof to be verified
|
|
443
|
-
* @param verificationKeyPath - The full path to the circuit verification key
|
|
444
455
|
* @param command - The BB command to execute (verify/avm_verify)
|
|
445
|
-
* @param
|
|
456
|
+
* @param args - The arguments to pass to the command
|
|
457
|
+
* @param logger - A logger
|
|
458
|
+
* @param concurrency - The number of threads to use for the verification
|
|
446
459
|
* @returns An object containing a result indication and duration taken
|
|
447
|
-
*/ async function verifyProofInternal(pathToBB,
|
|
460
|
+
*/ async function verifyProofInternal(pathToBB, command, args, logger, concurrency) {
|
|
448
461
|
const binaryPresent = await fs.access(pathToBB, fs.constants.R_OK).then((_)=>true).catch((_)=>false);
|
|
449
462
|
if (!binaryPresent) {
|
|
450
463
|
return {
|
|
@@ -456,38 +469,13 @@ export async function verifyAvmProof(pathToBB, workingDirectory, proofFullPath,
|
|
|
456
469
|
logger.verbose(`bb-prover (verify) BB out - ${message}`);
|
|
457
470
|
};
|
|
458
471
|
try {
|
|
459
|
-
let args;
|
|
460
|
-
if (command == 'verify') {
|
|
461
|
-
// Specify the public inputs path in the case of UH verification.
|
|
462
|
-
// Take proofFullPath and remove the suffix past the / to get the directory.
|
|
463
|
-
const proofDir = proofFullPath.substring(0, proofFullPath.lastIndexOf('/'));
|
|
464
|
-
const publicInputsFullPath = join(proofDir, '/public_inputs');
|
|
465
|
-
logger.debug(`public inputs path: ${publicInputsFullPath}`);
|
|
466
|
-
args = [
|
|
467
|
-
'-p',
|
|
468
|
-
proofFullPath,
|
|
469
|
-
'-k',
|
|
470
|
-
verificationKeyPath,
|
|
471
|
-
'-i',
|
|
472
|
-
publicInputsFullPath,
|
|
473
|
-
'--disable_zk',
|
|
474
|
-
...extraArgs
|
|
475
|
-
];
|
|
476
|
-
} else {
|
|
477
|
-
args = [
|
|
478
|
-
'-p',
|
|
479
|
-
proofFullPath,
|
|
480
|
-
'-k',
|
|
481
|
-
verificationKeyPath,
|
|
482
|
-
...extraArgs
|
|
483
|
-
];
|
|
484
|
-
}
|
|
485
472
|
const loggingArg = logger.level === 'debug' || logger.level === 'trace' ? '-d' : logger.level === 'verbose' ? '-v' : '';
|
|
486
|
-
|
|
487
|
-
args
|
|
488
|
-
|
|
473
|
+
const finalArgs = loggingArg !== '' ? [
|
|
474
|
+
...args,
|
|
475
|
+
loggingArg
|
|
476
|
+
] : args;
|
|
489
477
|
const timer = new Timer();
|
|
490
|
-
const result = await executeBB(pathToBB, command,
|
|
478
|
+
const result = await executeBB(pathToBB, command, finalArgs, logFunction, concurrency);
|
|
491
479
|
const duration = timer.ms();
|
|
492
480
|
if (result.status == 0) {
|
|
493
481
|
return {
|
package/dest/config.d.ts
CHANGED
|
@@ -3,8 +3,19 @@ export interface BBConfig {
|
|
|
3
3
|
bbWorkingDirectory: string;
|
|
4
4
|
/** Whether to skip tmp dir cleanup for debugging purposes */
|
|
5
5
|
bbSkipCleanup: boolean;
|
|
6
|
+
/** Max concurrent verifications for the RPC verifier (QueuedIVCVerifier). */
|
|
6
7
|
numConcurrentIVCVerifiers: number;
|
|
8
|
+
/** Thread count for the RPC IVC verifier. */
|
|
7
9
|
bbIVCConcurrency: number;
|
|
10
|
+
/**
|
|
11
|
+
* Upper bound on proofs per batch for the peer chonk batch verifier.
|
|
12
|
+
* Proofs are verified immediately as they arrive — this only caps how many
|
|
13
|
+
* can accumulate while a batch is already being processed.
|
|
14
|
+
* Default 16: at 4 cores, a full batch of 16 verifies in ~245ms wall time.
|
|
15
|
+
*/
|
|
16
|
+
bbChonkVerifyMaxBatch: number;
|
|
17
|
+
/** Thread count for the peer batch verifier parallel reduce. Default 6 to leave cores for the rest of the node. */
|
|
18
|
+
bbChonkVerifyConcurrency: number;
|
|
8
19
|
}
|
|
9
20
|
export interface ACVMConfig {
|
|
10
21
|
/** The path to the ACVM binary */
|
|
@@ -12,4 +23,4 @@ export interface ACVMConfig {
|
|
|
12
23
|
/** The working directory to use for simulation/proving */
|
|
13
24
|
acvmWorkingDirectory: string;
|
|
14
25
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sV0FBVyxRQUFRO0lBQ3ZCLFlBQVksRUFBRSxNQUFNLENBQUM7SUFDckIsa0JBQWtCLEVBQUUsTUFBTSxDQUFDO0lBQzNCLDZEQUE2RDtJQUM3RCxhQUFhLEVBQUUsT0FBTyxDQUFDO0lBQ3ZCLDZFQUE2RTtJQUM3RSx5QkFBeUIsRUFBRSxNQUFNLENBQUM7SUFDbEMsNkNBQTZDO0lBQzdDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztJQUN6Qjs7Ozs7T0FLRztJQUNILHFCQUFxQixFQUFFLE1BQU0sQ0FBQztJQUM5QixtSEFBbUg7SUFDbkgsd0JBQXdCLEVBQUUsTUFBTSxDQUFDO0NBQ2xDO0FBRUQsTUFBTSxXQUFXLFVBQVU7SUFDekIsa0NBQWtDO0lBQ2xDLGNBQWMsRUFBRSxNQUFNLENBQUM7SUFDdkIsMERBQTBEO0lBQzFELG9CQUFvQixFQUFFLE1BQU0sQ0FBQztDQUM5QiJ9
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6DAA6D;IAC7D,aAAa,EAAE,OAAO,CAAC;IACvB,yBAAyB,EAAE,MAAM,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6DAA6D;IAC7D,aAAa,EAAE,OAAO,CAAC;IACvB,6EAA6E;IAC7E,yBAAyB,EAAE,MAAM,CAAC;IAClC,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mHAAmH;IACnH,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,kCAAkC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,oBAAoB,EAAE,MAAM,CAAC;CAC9B"}
|
|
@@ -44,4 +44,4 @@ export declare class ProverInstrumentation {
|
|
|
44
44
|
*/
|
|
45
45
|
recordAvmSize(metric: 'witGenInputSize' | 'witGenOutputSize' | 'proofSize' | 'circuitSize' | 'circuitPublicInputCount', appCircuitName: string, size: number): void;
|
|
46
46
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFLTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxNQUFNLEVBQ1osTUFBTSx5QkFBeUIsQ0FBQztBQUVqQzs7R0FFRztBQUNILHFCQUFhLHFCQUFxQjtJQUNoQyxPQUFPLENBQUMsa0JBQWtCLENBQVk7SUFDdEMsT0FBTyxDQUFDLGNBQWMsQ0FBWTtJQUNsQyxPQUFPLENBQUMsZUFBZSxDQUFZO0lBRW5DLE9BQU8sQ0FBQyxlQUFlLENBQVE7SUFDL0IsT0FBTyxDQUFDLGdCQUFnQixDQUFRO0lBRWhDLE9BQU8sQ0FBQyxTQUFTLENBQVE7SUFDekIsT0FBTyxDQUFDLFdBQVcsQ0FBUTtJQUMzQixPQUFPLENBQUMsdUJBQXVCLENBQVE7SUFFdkMsU0FBZ0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUUvQixZQUFZLFNBQVMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFtQm5EO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQ1osTUFBTSxFQUFFLG9CQUFvQixHQUFHLGdCQUFnQixHQUFHLGlCQUFpQixFQUNuRSxXQUFXLEVBQUUsV0FBVyxFQUN4QixTQUFTLEVBQUUsS0FBSyxHQUFHLE1BQU0sUUFjMUI7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsR0FBRyxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxRQUtoSDtJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUNSLE1BQU0sRUFBRSxpQkFBaUIsR0FBRyxrQkFBa0IsR0FBRyxXQUFXLEdBQUcsYUFBYSxHQUFHLHlCQUF5QixFQUN4RyxXQUFXLEVBQUUsV0FBVyxFQUN4QixJQUFJLEVBQUUsTUFBTSxRQUtiO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhLENBQ1gsTUFBTSxFQUFFLGlCQUFpQixHQUFHLGtCQUFrQixHQUFHLFdBQVcsR0FBRyxhQUFhLEdBQUcseUJBQXlCLEVBQ3hHLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLElBQUksRUFBRSxNQUFNLFFBS2I7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EACZ,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,eAAe,CAAY;IAEnC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,gBAAgB,CAAQ;IAEhC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,uBAAuB,CAAQ;IAEvC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YAAY,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAmBnD;IAED;;;;;OAKG;IACH,cAAc,CACZ,MAAM,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,iBAAiB,EACnE,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,KAAK,GAAG,MAAM,QAc1B;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAKhH;IAED;;;;;OAKG;IACH,UAAU,CACR,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,WAAW,GAAG,aAAa,GAAG,yBAAyB,EACxG,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,QAKb;IAED;;;;;OAKG;IACH,aAAa,CACX,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,WAAW,GAAG,aAAa,GAAG,yBAAyB,EACxG,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,QAKb;CACF"}
|
package/dest/instrumentation.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Attributes, Metrics
|
|
1
|
+
import { Attributes, Metrics } from '@aztec/telemetry-client';
|
|
2
2
|
/**
|
|
3
3
|
* Instrumentation class for Prover implementations.
|
|
4
4
|
*/ export class ProverInstrumentation {
|
|
@@ -14,44 +14,14 @@ import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
|
|
|
14
14
|
constructor(telemetry, name){
|
|
15
15
|
this.tracer = telemetry.getTracer(name);
|
|
16
16
|
const meter = telemetry.getMeter(name);
|
|
17
|
-
this.simulationDuration = meter.createHistogram(Metrics.CIRCUIT_SIMULATION_DURATION
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
valueType: ValueType.DOUBLE
|
|
26
|
-
});
|
|
27
|
-
this.provingDuration = meter.createHistogram(Metrics.CIRCUIT_PROVING_DURATION, {
|
|
28
|
-
unit: 's',
|
|
29
|
-
description: 'Records how long it takes to prove a circuit',
|
|
30
|
-
valueType: ValueType.DOUBLE
|
|
31
|
-
});
|
|
32
|
-
this.witGenInputSize = meter.createGauge(Metrics.CIRCUIT_WITNESS_GEN_INPUT_SIZE, {
|
|
33
|
-
unit: 'By',
|
|
34
|
-
description: 'Records the size of the input to the witness generation',
|
|
35
|
-
valueType: ValueType.INT
|
|
36
|
-
});
|
|
37
|
-
this.witGenOutputSize = meter.createGauge(Metrics.CIRCUIT_WITNESS_GEN_OUTPUT_SIZE, {
|
|
38
|
-
unit: 'By',
|
|
39
|
-
description: 'Records the size of the output of the witness generation',
|
|
40
|
-
valueType: ValueType.INT
|
|
41
|
-
});
|
|
42
|
-
this.proofSize = meter.createGauge(Metrics.CIRCUIT_PROVING_PROOF_SIZE, {
|
|
43
|
-
unit: 'By',
|
|
44
|
-
description: 'Records the size of the proof generated for a circuit',
|
|
45
|
-
valueType: ValueType.INT
|
|
46
|
-
});
|
|
47
|
-
this.circuitPublicInputCount = meter.createGauge(Metrics.CIRCUIT_PUBLIC_INPUTS_COUNT, {
|
|
48
|
-
description: 'Records the number of public inputs in a circuit',
|
|
49
|
-
valueType: ValueType.INT
|
|
50
|
-
});
|
|
51
|
-
this.circuitSize = meter.createGauge(Metrics.CIRCUIT_SIZE, {
|
|
52
|
-
description: 'Records the size of the circuit in gates',
|
|
53
|
-
valueType: ValueType.INT
|
|
54
|
-
});
|
|
17
|
+
this.simulationDuration = meter.createHistogram(Metrics.CIRCUIT_SIMULATION_DURATION);
|
|
18
|
+
this.witGenDuration = meter.createHistogram(Metrics.CIRCUIT_WITNESS_GEN_DURATION);
|
|
19
|
+
this.provingDuration = meter.createHistogram(Metrics.CIRCUIT_PROVING_DURATION);
|
|
20
|
+
this.witGenInputSize = meter.createGauge(Metrics.CIRCUIT_WITNESS_GEN_INPUT_SIZE);
|
|
21
|
+
this.witGenOutputSize = meter.createGauge(Metrics.CIRCUIT_WITNESS_GEN_OUTPUT_SIZE);
|
|
22
|
+
this.proofSize = meter.createGauge(Metrics.CIRCUIT_PROVING_PROOF_SIZE);
|
|
23
|
+
this.circuitPublicInputCount = meter.createGauge(Metrics.CIRCUIT_PUBLIC_INPUTS_COUNT);
|
|
24
|
+
this.circuitSize = meter.createGauge(Metrics.CIRCUIT_SIZE);
|
|
55
25
|
}
|
|
56
26
|
/**
|
|
57
27
|
* Records the duration of a circuit operation.
|
|
@@ -59,10 +29,18 @@ import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
|
|
|
59
29
|
* @param circuitName - The name of the circuit
|
|
60
30
|
* @param timerOrMS - The duration
|
|
61
31
|
*/ recordDuration(metric, circuitName, timerOrMS) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
32
|
+
// Simulation duration is stored in ms, while the others are stored in seconds
|
|
33
|
+
if (metric === 'simulationDuration') {
|
|
34
|
+
const ms = typeof timerOrMS === 'number' ? timerOrMS : timerOrMS.ms();
|
|
35
|
+
this[metric].record(Math.trunc(ms), {
|
|
36
|
+
[Attributes.PROTOCOL_CIRCUIT_NAME]: circuitName
|
|
37
|
+
});
|
|
38
|
+
} else {
|
|
39
|
+
const s = typeof timerOrMS === 'number' ? timerOrMS / 1000 : timerOrMS.s();
|
|
40
|
+
this[metric].record(s, {
|
|
41
|
+
[Attributes.PROTOCOL_CIRCUIT_NAME]: circuitName
|
|
42
|
+
});
|
|
43
|
+
}
|
|
66
44
|
}
|
|
67
45
|
/**
|
|
68
46
|
* Records the duration of an AVM circuit operation.
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
+
import { type BackendOptions } from '@aztec/bb.js';
|
|
2
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
1
3
|
import { type ArtifactProvider, type ClientProtocolArtifact } from '@aztec/noir-protocol-circuits-types/types';
|
|
2
4
|
import type { Abi, WitnessMap } from '@aztec/noir-types';
|
|
3
5
|
import type { CircuitSimulator } from '@aztec/simulator/client';
|
|
4
6
|
import type { PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
|
|
5
7
|
import type { HidingKernelToPublicPrivateInputs, HidingKernelToRollupPrivateInputs, PrivateExecutionStep, PrivateKernelCircuitPublicInputs, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelResetCircuitPrivateInputs, PrivateKernelSimulateOutput, PrivateKernelTailCircuitPrivateInputs, PrivateKernelTailCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
6
8
|
import { ChonkProofWithPublicInputs } from '@aztec/stdlib/proofs';
|
|
9
|
+
export type BBPrivateKernelProverOptions = Omit<BackendOptions, 'logger'> & {
|
|
10
|
+
logger?: Logger;
|
|
11
|
+
};
|
|
7
12
|
export declare abstract class BBPrivateKernelProver implements PrivateKernelProver {
|
|
8
13
|
protected artifactProvider: ArtifactProvider;
|
|
9
14
|
protected simulator: CircuitSimulator;
|
|
10
|
-
protected
|
|
11
|
-
|
|
15
|
+
protected options: BBPrivateKernelProverOptions;
|
|
16
|
+
private log;
|
|
17
|
+
constructor(artifactProvider: ArtifactProvider, simulator: CircuitSimulator, options?: BBPrivateKernelProverOptions);
|
|
12
18
|
generateInitOutput(inputs: PrivateKernelInitCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
|
|
13
19
|
simulateInit(inputs: PrivateKernelInitCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
|
|
14
20
|
generateInnerOutput(inputs: PrivateKernelInnerCircuitPrivateInputs): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>>;
|
|
@@ -29,4 +35,4 @@ export declare abstract class BBPrivateKernelProver implements PrivateKernelProv
|
|
|
29
35
|
createChonkProof(executionSteps: PrivateExecutionStep[]): Promise<ChonkProofWithPublicInputs>;
|
|
30
36
|
computeGateCountForCircuit(_bytecode: Buffer, _circuitName: string): Promise<number>;
|
|
31
37
|
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfcHJpdmF0ZV9rZXJuZWxfcHJvdmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmVyL2NsaWVudC9iYl9wcml2YXRlX2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixLQUFLLGNBQWMsRUFBZ0IsTUFBTSxjQUFjLENBQUM7QUFDckYsT0FBTyxFQUFpQixLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQW9CakYsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssc0JBQXNCLEVBRTVCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEtBQUssRUFDVixpQ0FBaUMsRUFDakMsaUNBQWlDLEVBQ2pDLG9CQUFvQixFQUNwQixnQ0FBZ0MsRUFDaEMscUNBQXFDLEVBQ3JDLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsMkJBQTJCLEVBQzNCLHFDQUFxQyxFQUNyQyxvQ0FBb0MsRUFDckMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUtsRSxNQUFNLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsR0FBRztJQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBQUM7QUFDaEcsOEJBQXNCLHFCQUFzQixZQUFXLG1CQUFtQjtJQUl0RSxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQzVDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdC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
|
|
@@ -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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"}
|