@aztec/bb-prover 4.0.0-nightly.20250907 → 4.0.0-nightly.20260108
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 +7 -6
- package/dest/avm_proving_tests/avm_proving_tester.d.ts.map +1 -1
- package/dest/avm_proving_tests/avm_proving_tester.js +33 -13
- package/dest/bb/cli.d.ts +1 -1
- package/dest/bb/execute.d.ts +5 -13
- package/dest/bb/execute.d.ts.map +1 -1
- package/dest/bb/execute.js +30 -92
- package/dest/bb/index.d.ts +1 -1
- package/dest/config.d.ts +1 -1
- package/dest/honk.d.ts +2 -2
- package/dest/honk.js +2 -2
- package/dest/index.d.ts +1 -1
- package/dest/instrumentation.d.ts +3 -3
- package/dest/instrumentation.d.ts.map +1 -1
- package/dest/prover/client/bb_private_kernel_prover.d.ts +12 -6
- package/dest/prover/client/bb_private_kernel_prover.d.ts.map +1 -1
- package/dest/prover/client/bb_private_kernel_prover.js +36 -7
- package/dest/prover/client/bundle.d.ts +6 -0
- package/dest/prover/client/bundle.d.ts.map +1 -0
- package/dest/prover/client/bundle.js +7 -0
- package/dest/prover/client/lazy.d.ts +6 -0
- package/dest/prover/client/lazy.d.ts.map +1 -0
- package/dest/prover/client/lazy.js +7 -0
- package/dest/prover/index.d.ts +1 -1
- package/dest/prover/proof_utils.d.ts +9 -9
- package/dest/prover/proof_utils.d.ts.map +1 -1
- package/dest/prover/proof_utils.js +42 -25
- package/dest/prover/server/bb_prover.d.ts +23 -43
- package/dest/prover/server/bb_prover.d.ts.map +1 -1
- package/dest/prover/server/bb_prover.js +464 -165
- 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 +37 -25
- 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 +21 -31
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/test/test_circuit_prover.js +503 -81
- package/dest/test/test_verifier.d.ts +3 -1
- package/dest/test/test_verifier.d.ts.map +1 -1
- package/dest/test/test_verifier.js +15 -0
- package/dest/verification_key/verification_key_data.d.ts +1 -1
- package/dest/verification_key/verification_key_data.js +1 -1
- package/dest/verifier/bb_verifier.d.ts +3 -5
- package/dest/verifier/bb_verifier.d.ts.map +1 -1
- package/dest/verifier/bb_verifier.js +24 -26
- package/dest/verifier/index.d.ts +2 -2
- package/dest/verifier/index.d.ts.map +1 -1
- package/dest/verifier/index.js +1 -1
- package/dest/verifier/queued_chonk_verifier.d.ts +15 -0
- package/dest/verifier/queued_chonk_verifier.d.ts.map +1 -0
- package/dest/verifier/{queued_ivc_verifier.js → queued_chonk_verifier.js} +3 -3
- package/package.json +23 -23
- package/src/avm_proving_tests/avm_proving_tester.ts +43 -19
- package/src/bb/execute.ts +20 -90
- package/src/honk.ts +1 -1
- package/src/instrumentation.ts +2 -2
- package/src/prover/client/bb_private_kernel_prover.ts +49 -10
- package/src/prover/client/bundle.ts +10 -0
- package/src/prover/client/lazy.ts +10 -0
- package/src/prover/proof_utils.ts +53 -31
- package/src/prover/server/bb_prover.ts +231 -293
- package/src/test/delay_values.ts +38 -24
- package/src/test/index.ts +1 -0
- package/src/test/test_circuit_prover.ts +219 -142
- package/src/test/test_verifier.ts +8 -0
- package/src/verification_key/verification_key_data.ts +1 -1
- package/src/verifier/bb_verifier.ts +34 -33
- package/src/verifier/index.ts +1 -1
- package/src/verifier/{queued_ivc_verifier.ts → queued_chonk_verifier.ts} +3 -3
- package/dest/prover/client/native/bb_native_private_kernel_prover.d.ts +0 -23
- package/dest/prover/client/native/bb_native_private_kernel_prover.d.ts.map +0 -1
- package/dest/prover/client/native/bb_native_private_kernel_prover.js +0 -66
- package/dest/prover/client/wasm/bb_wasm_private_kernel_prover.d.ts +0 -15
- package/dest/prover/client/wasm/bb_wasm_private_kernel_prover.d.ts.map +0 -1
- package/dest/prover/client/wasm/bb_wasm_private_kernel_prover.js +0 -48
- package/dest/prover/client/wasm/bundle.d.ts +0 -6
- package/dest/prover/client/wasm/bundle.d.ts.map +0 -1
- package/dest/prover/client/wasm/bundle.js +0 -8
- package/dest/prover/client/wasm/lazy.d.ts +0 -6
- package/dest/prover/client/wasm/lazy.d.ts.map +0 -1
- package/dest/prover/client/wasm/lazy.js +0 -8
- package/dest/stats.d.ts +0 -4
- package/dest/stats.d.ts.map +0 -1
- package/dest/stats.js +0 -45
- package/dest/verifier/queued_ivc_verifier.d.ts +0 -15
- package/dest/verifier/queued_ivc_verifier.d.ts.map +0 -1
- package/src/prover/client/native/bb_native_private_kernel_prover.ts +0 -105
- package/src/prover/client/wasm/bb_wasm_private_kernel_prover.ts +0 -60
- package/src/prover/client/wasm/bundle.ts +0 -11
- package/src/prover/client/wasm/lazy.ts +0 -11
- package/src/stats.ts +0 -47
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { PublicTxSimulationTester, SimpleContractDataSource, type TestEnqueuedCall, type TestExecutorMetrics, type TestPrivateInsertions } from '@aztec/simulator/public/fixtures';
|
|
2
2
|
import type { PublicTxResult } from '@aztec/simulator/server';
|
|
3
|
-
import {
|
|
3
|
+
import { AvmCircuitInputs, AvmCircuitPublicInputs } from '@aztec/stdlib/avm';
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
5
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
6
6
|
import type { GlobalVariables } from '@aztec/stdlib/tx';
|
|
7
|
+
import { NativeWorldStateService } from '@aztec/world-state';
|
|
7
8
|
import { type BBResult, type BBSuccess } from '../bb/execute.js';
|
|
8
9
|
export declare class AvmProvingTester extends PublicTxSimulationTester {
|
|
9
|
-
private bbWorkingDirectory;
|
|
10
10
|
private checkCircuitOnly;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
private bbWorkingDirectory;
|
|
12
|
+
constructor(checkCircuitOnly: boolean, contractDataSource: SimpleContractDataSource, merkleTrees: MerkleTreeWriteOperations, globals?: GlobalVariables, metrics?: TestExecutorMetrics);
|
|
13
|
+
static new(worldStateService: NativeWorldStateService, checkCircuitOnly?: boolean, globals?: GlobalVariables, metrics?: TestExecutorMetrics): Promise<AvmProvingTester>;
|
|
13
14
|
prove(avmCircuitInputs: AvmCircuitInputs, txLabel?: string): Promise<BBResult>;
|
|
14
15
|
verify(proofRes: BBSuccess, publicInputs: AvmCircuitPublicInputs): Promise<BBResult>;
|
|
15
16
|
proveVerify(avmCircuitInputs: AvmCircuitInputs, txLabel?: string): Promise<void>;
|
|
16
|
-
simProveVerify(sender: AztecAddress, setupCalls: TestEnqueuedCall[], appCalls: TestEnqueuedCall[], teardownCall: TestEnqueuedCall | undefined, expectRevert: boolean | undefined, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, txLabel?: string): Promise<PublicTxResult>;
|
|
17
|
+
simProveVerify(sender: AztecAddress, setupCalls: TestEnqueuedCall[], appCalls: TestEnqueuedCall[], teardownCall: TestEnqueuedCall | undefined, expectRevert: boolean | undefined, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, txLabel?: string, disableRevertCheck?: boolean): Promise<PublicTxResult>;
|
|
17
18
|
executeTxWithLabel(txLabel: string, sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions): Promise<PublicTxResult>;
|
|
18
19
|
simProveVerifyAppLogic(appCall: TestEnqueuedCall, expectRevert?: boolean, txLabel?: string): Promise<void>;
|
|
19
20
|
}
|
|
20
|
-
//# sourceMappingURL=
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3Byb3ZpbmdfdGVzdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtX3Byb3ZpbmdfdGVzdHMvYXZtX3Byb3ZpbmdfdGVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssbUJBQW1CLEVBQ3hCLEtBQUsscUJBQXFCLEVBQzNCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUF5QixNQUFNLG1CQUFtQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBTTdELE9BQU8sRUFDTCxLQUFLLFFBQVEsRUFDYixLQUFLLFNBQVMsRUFLZixNQUFNLGtCQUFrQixDQUFDO0FBeUUxQixxQkFBYSxnQkFBaUIsU0FBUSx3QkFBd0I7SUFJMUQsT0FBTyxDQUFDLGdCQUFnQjtJQUgxQixPQUFPLENBQUMsa0JBQWtCLENBQWM7SUFFeEMsWUFDVSxnQkFBZ0IsRUFBRSxPQUFPLEVBQ2pDLGtCQUFrQixFQUFFLHdCQUF3QixFQUM1QyxXQUFXLEVBQUUseUJBQXlCLEVBQ3RDLE9BQU8sQ0FBQyxFQUFFLGVBQWUsRUFDekIsT0FBTyxDQUFDLEVBQUUsbUJBQW1CLEVBSTlCO0lBRUQsT0FBYSxHQUFHLENBQ2QsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQzFDLGdCQUFnQixHQUFFLE9BQWUsRUFDakMsT0FBTyxDQUFDLEVBQUUsZUFBZSxFQUN6QixPQUFPLENBQUMsRUFBRSxtQkFBbUIsNkJBSzlCO0lBRUssS0FBSyxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE9BQU8sR0FBRSxNQUFzQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0E2RGxHO0lBRUssTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FlekY7SUFFWSxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxHQUFFLE1BQXNCLGlCQU0zRjtJQUVZLGNBQWMsQ0FDekIsTUFBTSxFQUFFLFlBQVksRUFDcEIsVUFBVSxFQUFFLGdCQUFnQixFQUFFLEVBQzlCLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxFQUM1QixZQUFZLEVBQUUsZ0JBQWdCLEdBQUcsU0FBUyxFQUMxQyxZQUFZLEVBQUUsT0FBTyxHQUFHLFNBQVMsRUFDakMsUUFBUSxlQUFTLEVBQ2pCLGlCQUFpQixDQUFDLEVBQUUscUJBQXFCLEVBQ3pDLE9BQU8sR0FBRSxNQUFzQixFQUMvQixrQkFBa0IsR0FBRSxPQUFlLEdBQ2xDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0EwQnpCO0lBRXFCLGtCQUFrQixDQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUNmLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLFVBQVUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLEVBQy9CLFFBQVEsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLEVBQzdCLFlBQVksQ0FBQyxFQUFFLGdCQUFnQixFQUMvQixRQUFRLENBQUMsRUFBRSxZQUFZLEVBQ3ZCLGlCQUFpQixDQUFDLEVBQUUscUJBQXFCLDJCQWExQztJQUVZLHNCQUFzQixDQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQ3pCLFlBQVksQ0FBQyxFQUFFLE9BQU8sRUFDdEIsT0FBTyxHQUFFLE1BQXNCLGlCQVloQztDQUNGIn0=
|
|
@@ -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,
|
|
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,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAM7D,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,SAAS,EAKf,MAAM,kBAAkB,CAAC;AAyE1B,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,CAezF;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,GAClC,OAAO,CAAC,cAAc,CAAC,CA0BzB;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,2BAa1C;IAEY,sBAAsB,CACjC,OAAO,EAAE,gBAAgB,EACzB,YAAY,CAAC,EAAE,OAAO,EACtB,OAAO,GAAE,MAAsB,iBAYhC;CACF"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Timer } from '@aztec/foundation/timer';
|
|
2
2
|
import { PublicTxSimulationTester, SimpleContractDataSource } from '@aztec/simulator/public/fixtures';
|
|
3
|
+
import { AvmCircuitInputs, PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
3
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
-
import { NativeWorldStateService } from '@aztec/world-state';
|
|
5
5
|
import fs from 'node:fs/promises';
|
|
6
6
|
import { tmpdir } from 'node:os';
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import { BB_RESULT, VK_FILENAME, generateAvmProof, verifyAvmProof } from '../bb/execute.js';
|
|
9
|
-
const BB_PATH = path.resolve('../../barretenberg/cpp/build/bin/bb');
|
|
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 {
|
|
12
12
|
logs = [];
|
|
@@ -58,19 +58,30 @@ class InterceptingLogger {
|
|
|
58
58
|
this.logger.error(msg, err, ...args);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
+
// Config with collectHints enabled for proving tests
|
|
62
|
+
const provingConfig = PublicSimulatorConfig.from({
|
|
63
|
+
skipFeeEnforcement: false,
|
|
64
|
+
collectCallMetadata: true,
|
|
65
|
+
collectDebugLogs: false,
|
|
66
|
+
collectHints: true,
|
|
67
|
+
collectPublicInputs: true,
|
|
68
|
+
collectStatistics: false
|
|
69
|
+
});
|
|
61
70
|
export class AvmProvingTester extends PublicTxSimulationTester {
|
|
62
|
-
bbWorkingDirectory;
|
|
63
71
|
checkCircuitOnly;
|
|
64
|
-
|
|
65
|
-
|
|
72
|
+
bbWorkingDirectory;
|
|
73
|
+
constructor(checkCircuitOnly, contractDataSource, merkleTrees, globals, metrics){
|
|
74
|
+
// simulator factory is undefined because for proving, we use the default C++ simulator
|
|
75
|
+
super(merkleTrees, contractDataSource, globals, metrics, /*simulatorFactory=*/ undefined, provingConfig), this.checkCircuitOnly = checkCircuitOnly, this.bbWorkingDirectory = '';
|
|
66
76
|
}
|
|
67
|
-
static async new(checkCircuitOnly = false, globals, metrics) {
|
|
68
|
-
const bbWorkingDirectory = await fs.mkdtemp(path.join(tmpdir(), 'bb-'));
|
|
77
|
+
static async new(worldStateService, checkCircuitOnly = false, globals, metrics) {
|
|
69
78
|
const contractDataSource = new SimpleContractDataSource();
|
|
70
|
-
const merkleTrees = await
|
|
71
|
-
return new AvmProvingTester(
|
|
79
|
+
const merkleTrees = await worldStateService.fork();
|
|
80
|
+
return new AvmProvingTester(checkCircuitOnly, contractDataSource, merkleTrees, globals, metrics);
|
|
72
81
|
}
|
|
73
82
|
async prove(avmCircuitInputs, txLabel = 'unlabeledTx') {
|
|
83
|
+
// We use a new working directory for each proof.
|
|
84
|
+
this.bbWorkingDirectory = await fs.mkdtemp(path.join(tmpdir(), 'bb-'));
|
|
74
85
|
const interceptingLogger = new InterceptingLogger(this.logger);
|
|
75
86
|
// Then we prove.
|
|
76
87
|
const proofRes = await generateAvmProof(BB_PATH, this.bbWorkingDirectory, avmCircuitInputs, interceptingLogger, this.checkCircuitOnly);
|
|
@@ -97,6 +108,10 @@ export class AvmProvingTester extends PublicTxSimulationTester {
|
|
|
97
108
|
times[match[1]] = parseInt(match[2]);
|
|
98
109
|
}
|
|
99
110
|
});
|
|
111
|
+
// Throw if logs did not contain any times.
|
|
112
|
+
if (Object.keys(times).length === 0) {
|
|
113
|
+
throw new Error('AVM stdout did not contain any proving times in the stats!');
|
|
114
|
+
}
|
|
100
115
|
// Hack to make labels match.
|
|
101
116
|
const txLabelWithCount = `${txLabel}/${this.txCount - 1}`;
|
|
102
117
|
// I need to cast because TS doesnt realize metrics is protected not private.
|
|
@@ -128,18 +143,23 @@ export class AvmProvingTester extends PublicTxSimulationTester {
|
|
|
128
143
|
const verificationRes = await this.verify(provingRes, avmCircuitInputs.publicInputs);
|
|
129
144
|
expect(verificationRes.status).toBe(BB_RESULT.SUCCESS);
|
|
130
145
|
}
|
|
131
|
-
async simProveVerify(sender, setupCalls, appCalls, teardownCall, expectRevert, feePayer = sender, privateInsertions, txLabel = 'unlabeledTx') {
|
|
146
|
+
async simProveVerify(sender, setupCalls, appCalls, teardownCall, expectRevert, feePayer = sender, privateInsertions, txLabel = 'unlabeledTx', disableRevertCheck = false) {
|
|
147
|
+
const simTimer = new Timer();
|
|
132
148
|
const simRes = await this.simulateTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, txLabel);
|
|
133
|
-
|
|
149
|
+
const simDuration = simTimer.ms();
|
|
150
|
+
this.logger.info(`Simulation took ${simDuration} ms for tx ${txLabel}`);
|
|
151
|
+
if (!disableRevertCheck) {
|
|
152
|
+
expect(simRes.revertCode.isOK()).toBe(expectRevert ? false : true);
|
|
153
|
+
}
|
|
134
154
|
const opString = this.checkCircuitOnly ? 'Check circuit' : 'Proving and verification';
|
|
135
|
-
const avmCircuitInputs = simRes.
|
|
155
|
+
const avmCircuitInputs = new AvmCircuitInputs(simRes.hints, simRes.publicInputs);
|
|
136
156
|
const timer = new Timer();
|
|
137
157
|
await this.proveVerify(avmCircuitInputs, txLabel);
|
|
138
158
|
this.logger.info(`${opString} took ${timer.ms()} ms for tx ${txLabel}`);
|
|
139
159
|
return simRes;
|
|
140
160
|
}
|
|
141
161
|
async executeTxWithLabel(txLabel, sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions) {
|
|
142
|
-
return await this.simProveVerify(sender, setupCalls ?? [], appCalls ?? [], teardownCall,
|
|
162
|
+
return await this.simProveVerify(sender, setupCalls ?? [], appCalls ?? [], teardownCall, undefined, feePayer, privateInsertions, txLabel, true);
|
|
143
163
|
}
|
|
144
164
|
async simProveVerifyAppLogic(appCall, expectRevert, txLabel = 'unlabeledTx') {
|
|
145
165
|
await this.simProveVerify(/*sender=*/ AztecAddress.fromNumber(42), /*setupCalls=*/ [], [
|
package/dest/bb/cli.d.ts
CHANGED
|
@@ -9,4 +9,4 @@ export declare const ProtocolCircuitArtifacts: Record<ProtocolArtifact, NoirComp
|
|
|
9
9
|
* @returns The CLI.
|
|
10
10
|
*/
|
|
11
11
|
export declare function getProgram(log: LogFn): Command;
|
|
12
|
-
//# sourceMappingURL=
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmIvY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR25ELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLGVBQU8sTUFBTSx3QkFBd0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLENBR2xGLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsd0JBQWdCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxHQUFHLE9BQU8sQ0FhOUMifQ==
|
package/dest/bb/execute.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ export declare const PROOF_FILENAME = "proof";
|
|
|
7
7
|
export declare const AVM_INPUTS_FILENAME = "avm_inputs.bin";
|
|
8
8
|
export declare const AVM_BYTECODE_FILENAME = "avm_bytecode.bin";
|
|
9
9
|
export declare const AVM_PUBLIC_INPUTS_FILENAME = "avm_public_inputs.bin";
|
|
10
|
-
export declare const CLIENT_IVC_PROOF_FILE_NAME = "proof";
|
|
11
10
|
export declare enum BB_RESULT {
|
|
12
11
|
SUCCESS = 0,
|
|
13
12
|
FAILURE = 1,
|
|
@@ -49,7 +48,7 @@ type BBExecResult = {
|
|
|
49
48
|
* @returns The completed partial witness outputted from the circuit
|
|
50
49
|
*/
|
|
51
50
|
export declare function executeBB(pathToBB: string, command: string, args: string[], logger: LogFn, concurrency?: number, timeout?: number, resultParser?: (code: number) => code is 0): Promise<BBExecResult>;
|
|
52
|
-
export declare function
|
|
51
|
+
export declare function executeBbChonkProof(pathToBB: string, workingDirectory: string, inputsPath: string, log: LogFn, writeVk?: boolean): Promise<BBFailure | BBSuccess>;
|
|
53
52
|
/**
|
|
54
53
|
* Used for generating proofs of noir circuits.
|
|
55
54
|
* It is assumed that the working directory is a temporary and/or random directory used solely for generating this proof.
|
|
@@ -61,14 +60,7 @@ export declare function executeBbClientIvcProof(pathToBB: string, workingDirecto
|
|
|
61
60
|
* @param log - A logging function
|
|
62
61
|
* @returns An object containing a result indication, the location of the proof and the duration taken
|
|
63
62
|
*/
|
|
64
|
-
export declare function generateProof(pathToBB: string, workingDirectory: string, circuitName: string, bytecode: Buffer, inputWitnessFile: string, flavor: UltraHonkFlavor, log: Logger): Promise<BBFailure | BBSuccess>;
|
|
65
|
-
/**
|
|
66
|
-
* Used for generating proofs of the tube circuit
|
|
67
|
-
* It is assumed that the working directory is a temporary and/or random directory used solely for generating this proof.
|
|
68
|
-
*
|
|
69
|
-
* @returns An object containing a result indication, the location of the proof and the duration taken
|
|
70
|
-
*/
|
|
71
|
-
export declare function generateTubeProof(pathToBB: string, workingDirectory: string, vkPath: string, log: LogFn): Promise<BBFailure | BBSuccess>;
|
|
63
|
+
export declare function generateProof(pathToBB: string, workingDirectory: string, circuitName: string, bytecode: Buffer, verificationKey: Buffer, inputWitnessFile: string, flavor: UltraHonkFlavor, log: Logger): Promise<BBFailure | BBSuccess>;
|
|
72
64
|
/**
|
|
73
65
|
* Used for generating AVM proofs.
|
|
74
66
|
* It is assumed that the working directory is a temporary and/or random directory used solely for generating this proof.
|
|
@@ -91,7 +83,7 @@ export declare function generateAvmProof(pathToBB: string, workingDirectory: str
|
|
|
91
83
|
export declare function verifyProof(pathToBB: string, proofFullPath: string, verificationKeyPath: string, ultraHonkFlavor: UltraHonkFlavor, log: Logger): Promise<BBFailure | BBSuccess>;
|
|
92
84
|
export declare function verifyAvmProof(pathToBB: string, workingDirectory: string, proofFullPath: string, publicInputs: AvmCircuitPublicInputs, verificationKeyPath: string, logger: Logger): Promise<BBFailure | BBSuccess>;
|
|
93
85
|
/**
|
|
94
|
-
* Verifies a
|
|
86
|
+
* Verifies a ChonkProof
|
|
95
87
|
* TODO(#7370) The verification keys should be supplied separately
|
|
96
88
|
* @param pathToBB - The full path to the bb binary
|
|
97
89
|
* @param targetPath - The path to the folder with the proof, accumulator, and verification keys
|
|
@@ -99,7 +91,7 @@ export declare function verifyAvmProof(pathToBB: string, workingDirectory: strin
|
|
|
99
91
|
* @param concurrency - The number of threads to use for the verification
|
|
100
92
|
* @returns An object containing a result indication and duration taken
|
|
101
93
|
*/
|
|
102
|
-
export declare function
|
|
94
|
+
export declare function verifyChonkProof(pathToBB: string, proofPath: string, keyPath: string, log: LogFn, concurrency?: number): Promise<BBFailure | BBSuccess>;
|
|
103
95
|
export declare function generateContractForVerificationKey(pathToBB: string, vkFilePath: string, contractPath: string, log: LogFn): Promise<BBFailure | BBSuccess>;
|
|
104
96
|
/**
|
|
105
97
|
* Compute bb gate count for a given circuit
|
|
@@ -112,4 +104,4 @@ export declare function generateContractForVerificationKey(pathToBB: string, vkF
|
|
|
112
104
|
*/
|
|
113
105
|
export declare function computeGateCountForCircuit(pathToBB: string, workingDirectory: string, circuitName: string, bytecode: Buffer, flavor: UltraHonkFlavor | 'mega_honk', log: LogFn): Promise<BBFailure | BBSuccess>;
|
|
114
106
|
export {};
|
|
115
|
-
//# sourceMappingURL=
|
|
107
|
+
//# 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;
|
|
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,15 +1,15 @@
|
|
|
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';
|
|
5
5
|
import { basename, dirname, join } from 'path';
|
|
6
|
+
import readline from 'readline';
|
|
6
7
|
export const VK_FILENAME = 'vk';
|
|
7
8
|
export const PUBLIC_INPUTS_FILENAME = 'public_inputs';
|
|
8
9
|
export const PROOF_FILENAME = 'proof';
|
|
9
10
|
export const AVM_INPUTS_FILENAME = 'avm_inputs.bin';
|
|
10
11
|
export const AVM_BYTECODE_FILENAME = 'avm_bytecode.bin';
|
|
11
12
|
export const AVM_PUBLIC_INPUTS_FILENAME = 'avm_public_inputs.bin';
|
|
12
|
-
export const CLIENT_IVC_PROOF_FILE_NAME = 'proof';
|
|
13
13
|
export var BB_RESULT = /*#__PURE__*/ function(BB_RESULT) {
|
|
14
14
|
BB_RESULT[BB_RESULT["SUCCESS"] = 0] = "SUCCESS";
|
|
15
15
|
BB_RESULT[BB_RESULT["FAILURE"] = 1] = "FAILURE";
|
|
@@ -42,6 +42,11 @@ export var BB_RESULT = /*#__PURE__*/ function(BB_RESULT) {
|
|
|
42
42
|
command,
|
|
43
43
|
...args
|
|
44
44
|
], {
|
|
45
|
+
stdio: [
|
|
46
|
+
'ignore',
|
|
47
|
+
'pipe',
|
|
48
|
+
'pipe'
|
|
49
|
+
],
|
|
45
50
|
env
|
|
46
51
|
});
|
|
47
52
|
let timeoutId;
|
|
@@ -58,14 +63,12 @@ export var BB_RESULT = /*#__PURE__*/ function(BB_RESULT) {
|
|
|
58
63
|
});
|
|
59
64
|
}, timeout);
|
|
60
65
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
logger(message);
|
|
68
|
-
});
|
|
66
|
+
readline.createInterface({
|
|
67
|
+
input: bb.stdout
|
|
68
|
+
}).on('line', logger);
|
|
69
|
+
readline.createInterface({
|
|
70
|
+
input: bb.stderr
|
|
71
|
+
}).on('line', logger);
|
|
69
72
|
bb.on('close', (exitCode, signal)=>{
|
|
70
73
|
if (timeoutId) {
|
|
71
74
|
clearTimeout(timeoutId);
|
|
@@ -90,7 +93,7 @@ export var BB_RESULT = /*#__PURE__*/ function(BB_RESULT) {
|
|
|
90
93
|
signal: undefined
|
|
91
94
|
}));
|
|
92
95
|
}
|
|
93
|
-
export async function
|
|
96
|
+
export async function executeBbChonkProof(pathToBB, workingDirectory, inputsPath, log, writeVk = false) {
|
|
94
97
|
// Check that the working directory exists
|
|
95
98
|
try {
|
|
96
99
|
await fs.access(workingDirectory);
|
|
@@ -123,7 +126,7 @@ export async function executeBbClientIvcProof(pathToBB, workingDirectory, inputs
|
|
|
123
126
|
inputsPath,
|
|
124
127
|
'-v',
|
|
125
128
|
'--scheme',
|
|
126
|
-
'
|
|
129
|
+
'chonk'
|
|
127
130
|
];
|
|
128
131
|
if (writeVk) {
|
|
129
132
|
args.push('--write_vk');
|
|
@@ -203,7 +206,7 @@ function getArgs(flavor) {
|
|
|
203
206
|
* @param inputWitnessFile - The circuit input witness
|
|
204
207
|
* @param log - A logging function
|
|
205
208
|
* @returns An object containing a result indication, the location of the proof and the duration taken
|
|
206
|
-
*/ export async function generateProof(pathToBB, workingDirectory, circuitName, bytecode, inputWitnessFile, flavor, log) {
|
|
209
|
+
*/ export async function generateProof(pathToBB, workingDirectory, circuitName, bytecode, verificationKey, inputWitnessFile, flavor, log) {
|
|
207
210
|
// Check that the working directory exists
|
|
208
211
|
try {
|
|
209
212
|
await fs.access(workingDirectory);
|
|
@@ -213,8 +216,9 @@ function getArgs(flavor) {
|
|
|
213
216
|
reason: `Working directory ${workingDirectory} does not exist`
|
|
214
217
|
};
|
|
215
218
|
}
|
|
216
|
-
// The bytecode is written to e.g. /workingDirectory/
|
|
219
|
+
// The bytecode is written to e.g. /workingDirectory/ParityBaseArtifact-bytecode
|
|
217
220
|
const bytecodePath = `${workingDirectory}/${circuitName}-bytecode`;
|
|
221
|
+
const vkPath = `${workingDirectory}/${circuitName}-vk`;
|
|
218
222
|
// The proof is written to e.g. /workingDirectory/ultra_honk/proof
|
|
219
223
|
const outputPath = `${workingDirectory}`;
|
|
220
224
|
const binaryPresent = await fs.access(pathToBB, fs.constants.R_OK).then((_)=>true).catch((_)=>false);
|
|
@@ -225,16 +229,19 @@ function getArgs(flavor) {
|
|
|
225
229
|
};
|
|
226
230
|
}
|
|
227
231
|
try {
|
|
228
|
-
// Write the bytecode to the working directory
|
|
229
|
-
await
|
|
230
|
-
|
|
232
|
+
// Write the bytecode and vk to the working directory
|
|
233
|
+
await Promise.all([
|
|
234
|
+
fs.writeFile(bytecodePath, bytecode),
|
|
235
|
+
fs.writeFile(vkPath, verificationKey)
|
|
236
|
+
]);
|
|
231
237
|
const args = getArgs(flavor).concat([
|
|
232
238
|
'--disable_zk',
|
|
233
|
-
'--write_vk',
|
|
234
239
|
'-o',
|
|
235
240
|
outputPath,
|
|
236
241
|
'-b',
|
|
237
242
|
bytecodePath,
|
|
243
|
+
'-k',
|
|
244
|
+
vkPath,
|
|
238
245
|
'-w',
|
|
239
246
|
inputWitnessFile,
|
|
240
247
|
'-v'
|
|
@@ -271,75 +278,6 @@ function getArgs(flavor) {
|
|
|
271
278
|
};
|
|
272
279
|
}
|
|
273
280
|
}
|
|
274
|
-
/**
|
|
275
|
-
* Used for generating proofs of the tube circuit
|
|
276
|
-
* It is assumed that the working directory is a temporary and/or random directory used solely for generating this proof.
|
|
277
|
-
*
|
|
278
|
-
* @returns An object containing a result indication, the location of the proof and the duration taken
|
|
279
|
-
*/ export async function generateTubeProof(pathToBB, workingDirectory, vkPath, log) {
|
|
280
|
-
// Check that the working directory exists
|
|
281
|
-
try {
|
|
282
|
-
await fs.access(workingDirectory);
|
|
283
|
-
} catch {
|
|
284
|
-
return {
|
|
285
|
-
status: 1,
|
|
286
|
-
reason: `Working directory ${workingDirectory} does not exist`
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
// Paths for the inputs
|
|
290
|
-
const proofPath = join(workingDirectory, CLIENT_IVC_PROOF_FILE_NAME);
|
|
291
|
-
// The proof is written to e.g. /workingDirectory/proof
|
|
292
|
-
const outputPath = workingDirectory;
|
|
293
|
-
const filePresent = async (file)=>await fs.access(file, fs.constants.R_OK).then((_)=>true).catch((_)=>false);
|
|
294
|
-
const binaryPresent = await filePresent(pathToBB);
|
|
295
|
-
if (!binaryPresent) {
|
|
296
|
-
return {
|
|
297
|
-
status: 1,
|
|
298
|
-
reason: `Failed to find bb binary at ${pathToBB}`
|
|
299
|
-
};
|
|
300
|
-
}
|
|
301
|
-
try {
|
|
302
|
-
if (!await filePresent(proofPath)) {
|
|
303
|
-
return {
|
|
304
|
-
status: 1,
|
|
305
|
-
reason: `Client IVC input files not present in ${workingDirectory}`
|
|
306
|
-
};
|
|
307
|
-
}
|
|
308
|
-
const args = [
|
|
309
|
-
'-o',
|
|
310
|
-
outputPath,
|
|
311
|
-
'-k',
|
|
312
|
-
vkPath,
|
|
313
|
-
'-v'
|
|
314
|
-
];
|
|
315
|
-
const timer = new Timer();
|
|
316
|
-
const logFunction = (message)=>{
|
|
317
|
-
log(`TubeCircuit (prove) BB out - ${message}`);
|
|
318
|
-
};
|
|
319
|
-
const result = await executeBB(pathToBB, 'prove_tube', args, logFunction);
|
|
320
|
-
const durationMs = timer.ms();
|
|
321
|
-
if (result.status == 0) {
|
|
322
|
-
return {
|
|
323
|
-
status: 0,
|
|
324
|
-
durationMs,
|
|
325
|
-
proofPath: outputPath,
|
|
326
|
-
pkPath: undefined,
|
|
327
|
-
vkDirectoryPath: outputPath
|
|
328
|
-
};
|
|
329
|
-
}
|
|
330
|
-
// Not a great error message here but it is difficult to decipher what comes from bb
|
|
331
|
-
return {
|
|
332
|
-
status: 1,
|
|
333
|
-
reason: `Failed to generate proof. Exit code ${result.exitCode}. Signal ${result.signal}.`,
|
|
334
|
-
retry: !!result.signal
|
|
335
|
-
};
|
|
336
|
-
} catch (error) {
|
|
337
|
-
return {
|
|
338
|
-
status: 1,
|
|
339
|
-
reason: `${error}`
|
|
340
|
-
};
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
281
|
/**
|
|
344
282
|
* Used for generating AVM proofs.
|
|
345
283
|
* It is assumed that the working directory is a temporary and/or random directory used solely for generating this proof.
|
|
@@ -450,14 +388,14 @@ export async function verifyAvmProof(pathToBB, workingDirectory, proofFullPath,
|
|
|
450
388
|
]);
|
|
451
389
|
}
|
|
452
390
|
/**
|
|
453
|
-
* Verifies a
|
|
391
|
+
* Verifies a ChonkProof
|
|
454
392
|
* TODO(#7370) The verification keys should be supplied separately
|
|
455
393
|
* @param pathToBB - The full path to the bb binary
|
|
456
394
|
* @param targetPath - The path to the folder with the proof, accumulator, and verification keys
|
|
457
395
|
* @param log - A logging function
|
|
458
396
|
* @param concurrency - The number of threads to use for the verification
|
|
459
397
|
* @returns An object containing a result indication and duration taken
|
|
460
|
-
*/ export async function
|
|
398
|
+
*/ export async function verifyChonkProof(pathToBB, proofPath, keyPath, log, concurrency = 1) {
|
|
461
399
|
const binaryPresent = await fs.access(pathToBB, fs.constants.R_OK).then((_)=>true).catch((_)=>false);
|
|
462
400
|
if (!binaryPresent) {
|
|
463
401
|
return {
|
|
@@ -468,7 +406,7 @@ export async function verifyAvmProof(pathToBB, workingDirectory, proofFullPath,
|
|
|
468
406
|
try {
|
|
469
407
|
const args = [
|
|
470
408
|
'--scheme',
|
|
471
|
-
'
|
|
409
|
+
'chonk',
|
|
472
410
|
'-p',
|
|
473
411
|
proofPath,
|
|
474
412
|
'-k',
|
|
@@ -649,7 +587,7 @@ export async function generateContractForVerificationKey(pathToBB, vkFilePath, c
|
|
|
649
587
|
reason: `Working directory ${workingDirectory} does not exist`
|
|
650
588
|
};
|
|
651
589
|
}
|
|
652
|
-
// The bytecode is written to e.g. /workingDirectory/
|
|
590
|
+
// The bytecode is written to e.g. /workingDirectory/ParityBaseArtifact-bytecode
|
|
653
591
|
const bytecodePath = `${workingDirectory}/${circuitName}-bytecode`;
|
|
654
592
|
const binaryPresent = await fs.access(pathToBB, fs.constants.R_OK).then((_)=>true).catch((_)=>false);
|
|
655
593
|
if (!binaryPresent) {
|
|
@@ -670,7 +608,7 @@ export async function generateContractForVerificationKey(pathToBB, vkFilePath, c
|
|
|
670
608
|
const timer = new Timer();
|
|
671
609
|
const result = await executeBB(pathToBB, 'gates', [
|
|
672
610
|
'--scheme',
|
|
673
|
-
flavor === 'mega_honk' ? '
|
|
611
|
+
flavor === 'mega_honk' ? 'chonk' : 'ultra_honk',
|
|
674
612
|
'-b',
|
|
675
613
|
bytecodePath,
|
|
676
614
|
'-v'
|
package/dest/bb/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env -S node --no-warnings
|
|
2
2
|
import 'source-map-support/register.js';
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsT0FBTyxnQ0FBZ0MsQ0FBQyJ9
|
package/dest/config.d.ts
CHANGED
|
@@ -12,4 +12,4 @@ export interface ACVMConfig {
|
|
|
12
12
|
/** The working directory to use for simulation/proving */
|
|
13
13
|
acvmWorkingDirectory: string;
|
|
14
14
|
}
|
|
15
|
-
//# sourceMappingURL=
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sV0FBVyxRQUFRO0lBQ3ZCLFlBQVksRUFBRSxNQUFNLENBQUM7SUFDckIsa0JBQWtCLEVBQUUsTUFBTSxDQUFDO0lBQzNCLDZEQUE2RDtJQUM3RCxhQUFhLEVBQUUsT0FBTyxDQUFDO0lBQ3ZCLHlCQUF5QixFQUFFLE1BQU0sQ0FBQztJQUNsQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7Q0FDMUI7QUFFRCxNQUFNLFdBQVcsVUFBVTtJQUN6QixrQ0FBa0M7SUFDbEMsY0FBYyxFQUFFLE1BQU0sQ0FBQztJQUN2QiwwREFBMEQ7SUFDMUQsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0NBQzlCIn0=
|
package/dest/honk.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/server';
|
|
2
2
|
export type UltraHonkFlavor = 'ultra_honk' | 'ultra_keccak_honk' | 'ultra_starknet_honk' | 'ultra_rollup_honk';
|
|
3
3
|
declare const UltraKeccakHonkCircuits: ["RootRollupArtifact"];
|
|
4
|
-
declare const UltraHonkCircuits: ["
|
|
4
|
+
declare const UltraHonkCircuits: ["ParityBaseArtifact", "ParityRootArtifact"];
|
|
5
5
|
export type UltraKeccakHonkServerProtocolArtifact = (typeof UltraKeccakHonkCircuits)[number];
|
|
6
6
|
export type UltraHonkServerProtocolArtifact = (typeof UltraHonkCircuits)[number];
|
|
7
7
|
export type UltraRollupHonkServerProtocolArtifact = Exclude<Exclude<ServerProtocolArtifact, UltraKeccakHonkServerProtocolArtifact>, UltraHonkServerProtocolArtifact>;
|
|
@@ -10,4 +10,4 @@ export declare function getUltraHonkFlavorForCircuit(artifact: UltraHonkServerPr
|
|
|
10
10
|
export declare function getUltraHonkFlavorForCircuit(artifact: UltraRollupHonkServerProtocolArtifact): 'ultra_rollup_honk';
|
|
11
11
|
export declare function getUltraHonkFlavorForCircuit(artifact: ServerProtocolArtifact): UltraHonkFlavor;
|
|
12
12
|
export {};
|
|
13
|
-
//# sourceMappingURL=
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9uay5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2hvbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUV6RixNQUFNLE1BQU0sZUFBZSxHQUFHLFlBQVksR0FBRyxtQkFBbUIsR0FBRyxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUUvRyxRQUFBLE1BQU0sdUJBQXVCLHdCQUFxRSxDQUFDO0FBQ25HLFFBQUEsTUFBTSxpQkFBaUIsOENBQTJGLENBQUM7QUFFbkgsTUFBTSxNQUFNLHFDQUFxQyxHQUFHLENBQUMsT0FBTyx1QkFBdUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdGLE1BQU0sTUFBTSwrQkFBK0IsR0FBRyxDQUFDLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqRixNQUFNLE1BQU0scUNBQXFDLEdBQUcsT0FBTyxDQUN6RCxPQUFPLENBQUMsc0JBQXNCLEVBQUUscUNBQXFDLENBQUMsRUFDdEUsK0JBQStCLENBQ2hDLENBQUM7QUFFRix3QkFBZ0IsNEJBQTRCLENBQUMsUUFBUSxFQUFFLHFDQUFxQyxHQUFHLG1CQUFtQixDQUFDO0FBQ25ILHdCQUFnQiw0QkFBNEIsQ0FBQyxRQUFRLEVBQUUsK0JBQStCLEdBQUcsWUFBWSxDQUFDO0FBQ3RHLHdCQUFnQiw0QkFBNEIsQ0FBQyxRQUFRLEVBQUUscUNBQXFDLEdBQUcsbUJBQW1CLENBQUM7QUFDbkgsd0JBQWdCLDRCQUE0QixDQUFDLFFBQVEsRUFBRSxzQkFBc0IsR0FBRyxlQUFlLENBQUMifQ==
|
package/dest/honk.js
CHANGED
|
@@ -2,8 +2,8 @@ const UltraKeccakHonkCircuits = [
|
|
|
2
2
|
'RootRollupArtifact'
|
|
3
3
|
];
|
|
4
4
|
const UltraHonkCircuits = [
|
|
5
|
-
'
|
|
6
|
-
'
|
|
5
|
+
'ParityBaseArtifact',
|
|
6
|
+
'ParityRootArtifact'
|
|
7
7
|
];
|
|
8
8
|
export function getUltraHonkFlavorForCircuit(artifact) {
|
|
9
9
|
// STARKNET: how to allow for the distinction between keccak/starknet? ultra_keccak_honk is returned in both cases
|
package/dest/index.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ export * from './bb/execute.js';
|
|
|
6
6
|
export * from './honk.js';
|
|
7
7
|
export * from './verification_key/verification_key_data.js';
|
|
8
8
|
export { type ClientProtocolCircuitVerifier } from '@aztec/stdlib/interfaces/server';
|
|
9
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsNkNBQTZDLENBQUM7QUFFNUQsT0FBTyxFQUFFLEtBQUssNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQyJ9
|
|
@@ -21,7 +21,7 @@ export declare class ProverInstrumentation {
|
|
|
21
21
|
* @param circuitName - The name of the circuit
|
|
22
22
|
* @param timerOrMS - The duration
|
|
23
23
|
*/
|
|
24
|
-
recordDuration(metric: 'simulationDuration' | 'witGenDuration' | 'provingDuration', circuitName: CircuitName
|
|
24
|
+
recordDuration(metric: 'simulationDuration' | 'witGenDuration' | 'provingDuration', circuitName: CircuitName, timerOrMS: Timer | number): void;
|
|
25
25
|
/**
|
|
26
26
|
* Records the duration of an AVM circuit operation.
|
|
27
27
|
* @param metric - The metric to record
|
|
@@ -35,7 +35,7 @@ export declare class ProverInstrumentation {
|
|
|
35
35
|
* @param circuitName - The name of the circuit
|
|
36
36
|
* @param size - The size
|
|
37
37
|
*/
|
|
38
|
-
recordSize(metric: 'witGenInputSize' | 'witGenOutputSize' | 'proofSize' | 'circuitSize' | 'circuitPublicInputCount', circuitName: CircuitName
|
|
38
|
+
recordSize(metric: 'witGenInputSize' | 'witGenOutputSize' | 'proofSize' | 'circuitSize' | 'circuitPublicInputCount', circuitName: CircuitName, size: number): void;
|
|
39
39
|
/**
|
|
40
40
|
* Records the size of an AVM circuit operation.
|
|
41
41
|
* @param metric - The metric to record
|
|
@@ -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=
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFLTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxNQUFNLEVBRVosTUFBTSx5QkFBeUIsQ0FBQztBQUVqQzs7R0FFRztBQUNILHFCQUFhLHFCQUFxQjtJQUNoQyxPQUFPLENBQUMsa0JBQWtCLENBQVk7SUFDdEMsT0FBTyxDQUFDLGNBQWMsQ0FBWTtJQUNsQyxPQUFPLENBQUMsZUFBZSxDQUFZO0lBRW5DLE9BQU8sQ0FBQyxlQUFlLENBQVE7SUFDL0IsT0FBTyxDQUFDLGdCQUFnQixDQUFRO0lBRWhDLE9BQU8sQ0FBQyxTQUFTLENBQVE7SUFDekIsT0FBTyxDQUFDLFdBQVcsQ0FBUTtJQUMzQixPQUFPLENBQUMsdUJBQXVCLENBQVE7SUFFdkMsU0FBZ0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUUvQixZQUFZLFNBQVMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFpRG5EO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQ1osTUFBTSxFQUFFLG9CQUFvQixHQUFHLGdCQUFnQixHQUFHLGlCQUFpQixFQUNuRSxXQUFXLEVBQUUsV0FBVyxFQUN4QixTQUFTLEVBQUUsS0FBSyxHQUFHLE1BQU0sUUFNMUI7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsR0FBRyxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxRQUtoSDtJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUNSLE1BQU0sRUFBRSxpQkFBaUIsR0FBRyxrQkFBa0IsR0FBRyxXQUFXLEdBQUcsYUFBYSxHQUFHLHlCQUF5QixFQUN4RyxXQUFXLEVBQUUsV0FBVyxFQUN4QixJQUFJLEVBQUUsTUFBTSxRQUtiO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhLENBQ1gsTUFBTSxFQUFFLGlCQUFpQixHQUFHLGtCQUFrQixHQUFHLFdBQVcsR0FBRyxhQUFhLEdBQUcseUJBQXlCLEVBQ3hHLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLElBQUksRUFBRSxNQUFNLFFBS2I7Q0FDRiJ9
|
|
@@ -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,EAEZ,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;
|
|
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,EAEZ,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,EAiDnD;IAED;;;;;OAKG;IACH,cAAc,CACZ,MAAM,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,iBAAiB,EACnE,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,KAAK,GAAG,MAAM,QAM1B;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"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { type BackendOptions } from '@aztec/bb.js';
|
|
2
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
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
|
-
import
|
|
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>>;
|
|
@@ -26,7 +32,7 @@ export declare abstract class BBPrivateKernelProver implements PrivateKernelProv
|
|
|
26
32
|
toBuffer: () => Buffer;
|
|
27
33
|
}, O extends PrivateKernelCircuitPublicInputs | PrivateKernelTailCircuitPublicInputs>(inputs: I, circuitType: ClientProtocolArtifact, convertInputs: (inputs: I, abi: Abi) => WitnessMap, convertOutputs: (outputs: WitnessMap, abi: Abi) => O): Promise<PrivateKernelSimulateOutput<O>>;
|
|
28
34
|
makeEmptyKernelSimulateOutput<PublicInputsType extends PrivateKernelTailCircuitPublicInputs | PrivateKernelCircuitPublicInputs>(publicInputs: PublicInputsType, circuitType: ClientProtocolArtifact): Promise<PrivateKernelSimulateOutput<PublicInputsType>>;
|
|
29
|
-
|
|
35
|
+
createChonkProof(executionSteps: PrivateExecutionStep[]): Promise<ChonkProofWithPublicInputs>;
|
|
30
36
|
computeGateCountForCircuit(_bytecode: Buffer, _circuitName: string): Promise<number>;
|
|
31
37
|
}
|
|
32
|
-
//# sourceMappingURL=
|
|
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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"}
|