@aztec/bb-prover 0.0.0-test.0 → 0.0.1-commit.0208eb9
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 +14 -18
- package/dest/avm_proving_tests/avm_proving_tester.d.ts.map +1 -1
- package/dest/avm_proving_tests/avm_proving_tester.js +146 -79
- package/dest/bb/cli.d.ts +1 -1
- package/dest/bb/execute.d.ts +17 -50
- package/dest/bb/execute.d.ts.map +1 -1
- package/dest/bb/execute.js +145 -278
- package/dest/bb/index.d.ts +1 -1
- package/dest/config.d.ts +3 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/honk.d.ts +3 -3
- package/dest/honk.d.ts.map +1 -1
- package/dest/honk.js +3 -2
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/instrumentation.d.ts +3 -3
- package/dest/instrumentation.d.ts.map +1 -1
- package/dest/instrumentation.js +11 -43
- package/dest/prover/client/bb_private_kernel_prover.d.ts +38 -0
- package/dest/prover/client/bb_private_kernel_prover.d.ts.map +1 -0
- package/dest/prover/{bb_private_kernel_prover.js → client/bb_private_kernel_prover.js} +53 -21
- 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 +3 -4
- package/dest/prover/index.d.ts.map +1 -1
- package/dest/prover/index.js +2 -3
- package/dest/prover/proof_utils.d.ts +19 -0
- package/dest/prover/proof_utils.d.ts.map +1 -0
- package/dest/prover/proof_utils.js +72 -0
- package/dest/prover/server/bb_prover.d.ts +97 -0
- package/dest/prover/server/bb_prover.d.ts.map +1 -0
- package/dest/prover/server/bb_prover.js +712 -0
- 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 -23
- 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 +27 -36
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/test/test_circuit_prover.js +517 -88
- package/dest/test/test_verifier.d.ts +6 -3
- package/dest/test/test_verifier.d.ts.map +1 -1
- package/dest/test/test_verifier.js +23 -1
- package/dest/verification_key/verification_key_data.d.ts +1 -2
- package/dest/verification_key/verification_key_data.d.ts.map +1 -1
- package/dest/verification_key/verification_key_data.js +9 -34
- package/dest/verifier/bb_verifier.d.ts +6 -5
- package/dest/verifier/bb_verifier.d.ts.map +1 -1
- package/dest/verifier/bb_verifier.js +45 -27
- 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 +15 -0
- package/dest/verifier/queued_chonk_verifier.d.ts.map +1 -0
- package/dest/verifier/queued_chonk_verifier.js +101 -0
- package/package.json +35 -33
- package/src/avm_proving_tests/avm_proving_tester.ts +223 -113
- package/src/bb/execute.ts +116 -291
- package/src/config.ts +2 -0
- package/src/honk.ts +3 -2
- package/src/index.ts +1 -0
- package/src/instrumentation.ts +10 -43
- package/src/prover/{bb_private_kernel_prover.ts → client/bb_private_kernel_prover.ts} +94 -33
- package/src/prover/client/bundle.ts +10 -0
- package/src/prover/client/lazy.ts +10 -0
- package/src/prover/index.ts +2 -3
- package/src/prover/proof_utils.ts +115 -0
- package/src/prover/server/bb_prover.ts +718 -0
- package/src/test/delay_values.ts +38 -22
- package/src/test/index.ts +1 -0
- package/src/test/test_circuit_prover.ts +264 -154
- package/src/test/test_verifier.ts +15 -3
- package/src/verification_key/verification_key_data.ts +11 -31
- package/src/verifier/bb_verifier.ts +62 -35
- package/src/verifier/index.ts +1 -0
- package/src/verifier/queued_chonk_verifier.ts +109 -0
- package/dest/prover/bb_native_private_kernel_prover.d.ts +0 -25
- package/dest/prover/bb_native_private_kernel_prover.d.ts.map +0 -1
- package/dest/prover/bb_native_private_kernel_prover.js +0 -69
- package/dest/prover/bb_private_kernel_prover.d.ts +0 -32
- package/dest/prover/bb_private_kernel_prover.d.ts.map +0 -1
- package/dest/prover/bb_prover.d.ts +0 -120
- package/dest/prover/bb_prover.d.ts.map +0 -1
- package/dest/prover/bb_prover.js +0 -423
- package/dest/prover/client_ivc_proof_utils.d.ts +0 -25
- package/dest/prover/client_ivc_proof_utils.d.ts.map +0 -1
- package/dest/prover/client_ivc_proof_utils.js +0 -43
- package/dest/stats.d.ts +0 -5
- package/dest/stats.d.ts.map +0 -1
- package/dest/stats.js +0 -62
- package/dest/wasm/bb_wasm_private_kernel_prover.d.ts +0 -17
- package/dest/wasm/bb_wasm_private_kernel_prover.d.ts.map +0 -1
- package/dest/wasm/bb_wasm_private_kernel_prover.js +0 -46
- package/dest/wasm/bundle.d.ts +0 -6
- package/dest/wasm/bundle.d.ts.map +0 -1
- package/dest/wasm/bundle.js +0 -8
- package/dest/wasm/lazy.d.ts +0 -6
- package/dest/wasm/lazy.d.ts.map +0 -1
- package/dest/wasm/lazy.js +0 -8
- package/src/prover/bb_native_private_kernel_prover.ts +0 -119
- package/src/prover/bb_prover.ts +0 -781
- package/src/prover/client_ivc_proof_utils.ts +0 -42
- package/src/stats.ts +0 -64
- package/src/wasm/bb_wasm_private_kernel_prover.ts +0 -55
- package/src/wasm/bundle.ts +0 -11
- package/src/wasm/lazy.ts +0 -11
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import type { ClientProtocolCircuitVerifier } from '@aztec/stdlib/interfaces/server';
|
|
1
|
+
import type { ClientProtocolCircuitVerifier, IVCProofVerificationResult } from '@aztec/stdlib/interfaces/server';
|
|
2
2
|
import type { Tx } from '@aztec/stdlib/tx';
|
|
3
3
|
export declare class TestCircuitVerifier implements ClientProtocolCircuitVerifier {
|
|
4
|
-
|
|
4
|
+
private verificationDelayMs?;
|
|
5
|
+
constructor(verificationDelayMs?: number | undefined);
|
|
6
|
+
verifyProof(_tx: Tx): Promise<IVCProofVerificationResult>;
|
|
7
|
+
stop(): Promise<void>;
|
|
5
8
|
}
|
|
6
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF92ZXJpZmllci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvdGVzdF92ZXJpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pILE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTNDLHFCQUFhLG1CQUFvQixZQUFXLDZCQUE2QjtJQUMzRCxPQUFPLENBQUMsbUJBQW1CLENBQUM7SUFBeEMsWUFBb0IsbUJBQW1CLENBQUMsb0JBQVEsRUFBSTtJQUNwRCxXQUFXLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FTeEQ7SUFFTSxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUUzQjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_verifier.d.ts","sourceRoot":"","sources":["../../src/test/test_verifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"test_verifier.d.ts","sourceRoot":"","sources":["../../src/test/test_verifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AACjH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAE3C,qBAAa,mBAAoB,YAAW,6BAA6B;IAC3D,OAAO,CAAC,mBAAmB,CAAC;IAAxC,YAAoB,mBAAmB,CAAC,oBAAQ,EAAI;IACpD,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CASxD;IAEM,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;CACF"}
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
export class TestCircuitVerifier {
|
|
2
|
+
verificationDelayMs;
|
|
3
|
+
constructor(verificationDelayMs){
|
|
4
|
+
this.verificationDelayMs = verificationDelayMs;
|
|
5
|
+
}
|
|
2
6
|
verifyProof(_tx) {
|
|
3
|
-
|
|
7
|
+
if (this.verificationDelayMs !== undefined && this.verificationDelayMs > 0) {
|
|
8
|
+
return new Promise((resolve)=>{
|
|
9
|
+
setTimeout(()=>{
|
|
10
|
+
resolve({
|
|
11
|
+
valid: true,
|
|
12
|
+
durationMs: this.verificationDelayMs,
|
|
13
|
+
totalDurationMs: this.verificationDelayMs
|
|
14
|
+
});
|
|
15
|
+
}, this.verificationDelayMs);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return Promise.resolve({
|
|
19
|
+
valid: true,
|
|
20
|
+
durationMs: 0,
|
|
21
|
+
totalDurationMs: 0
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
stop() {
|
|
25
|
+
return Promise.resolve();
|
|
4
26
|
}
|
|
5
27
|
}
|
|
@@ -5,5 +5,4 @@ import { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
|
5
5
|
* @returns The verification key data
|
|
6
6
|
*/
|
|
7
7
|
export declare function extractVkData(vkDirectoryPath: string): Promise<VerificationKeyData>;
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=verification_key_data.d.ts.map
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uX2tleV9kYXRhLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVyaWZpY2F0aW9uX2tleS92ZXJpZmljYXRpb25fa2V5X2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUEyQixtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBT2pGOzs7O0dBSUc7QUFDSCx3QkFBc0IsYUFBYSxDQUFDLGVBQWUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBVXpGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification_key_data.d.ts","sourceRoot":"","sources":["../../src/verification_key/verification_key_data.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verification_key_data.d.ts","sourceRoot":"","sources":["../../src/verification_key/verification_key_data.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAOjF;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAUzF"}
|
|
@@ -1,44 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { hashVK } from '@aztec/stdlib/hash';
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { BufferReader } from '@aztec/foundation/serialize';
|
|
4
3
|
import { VerificationKeyAsFields, VerificationKeyData } from '@aztec/stdlib/vks';
|
|
5
|
-
import { strict as assert } from 'assert';
|
|
6
4
|
import { promises as fs } from 'fs';
|
|
7
5
|
import * as path from 'path';
|
|
8
|
-
import {
|
|
6
|
+
import { VK_FILENAME } from '../bb/execute.js';
|
|
9
7
|
/**
|
|
10
8
|
* Reads the verification key data stored at the specified location and parses into a VerificationKeyData
|
|
11
9
|
* @param vkDirectoryPath - The directory containing the verification key data files
|
|
12
10
|
* @returns The verification key data
|
|
13
11
|
*/ export async function extractVkData(vkDirectoryPath) {
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const fieldsJson = JSON.parse(rawFields);
|
|
21
|
-
const fields = fieldsJson.map(Fr.fromHexString);
|
|
22
|
-
// The hash is not included in the BB response
|
|
23
|
-
const vkHash = await hashVK(fields);
|
|
24
|
-
const vkAsFields = new VerificationKeyAsFields(fields, vkHash);
|
|
12
|
+
const rawBinary = await fs.readFile(path.join(vkDirectoryPath, VK_FILENAME));
|
|
13
|
+
// Convert binary to field elements (32 bytes per field)
|
|
14
|
+
const numFields = rawBinary.length / Fr.SIZE_IN_BYTES;
|
|
15
|
+
const reader = BufferReader.asReader(rawBinary);
|
|
16
|
+
const fields = reader.readArray(numFields, Fr);
|
|
17
|
+
const vkAsFields = await VerificationKeyAsFields.fromKey(fields);
|
|
25
18
|
return new VerificationKeyData(vkAsFields, rawBinary);
|
|
26
19
|
}
|
|
27
|
-
// TODO: This was adapted from the above function. A refactor might be needed.
|
|
28
|
-
export async function extractAvmVkData(vkDirectoryPath) {
|
|
29
|
-
const [rawFields, rawBinary] = await Promise.all([
|
|
30
|
-
fs.readFile(path.join(vkDirectoryPath, VK_FIELDS_FILENAME), {
|
|
31
|
-
encoding: 'utf-8'
|
|
32
|
-
}),
|
|
33
|
-
fs.readFile(path.join(vkDirectoryPath, VK_FILENAME))
|
|
34
|
-
]);
|
|
35
|
-
const fieldsJson = JSON.parse(rawFields);
|
|
36
|
-
const fields = fieldsJson.map(Fr.fromHexString);
|
|
37
|
-
// The first item is the hash, this is not part of the actual VK
|
|
38
|
-
// TODO: is the above actually the case?
|
|
39
|
-
const vkHash = fields[0];
|
|
40
|
-
assert(fields.length === AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, 'Invalid AVM verification key length');
|
|
41
|
-
const vkAsFields = new VerificationKeyAsFields(fields, vkHash);
|
|
42
|
-
const vk = new VerificationKeyData(vkAsFields, rawBinary);
|
|
43
|
-
return vk;
|
|
44
|
-
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Logger } from '@aztec/foundation/log';
|
|
2
|
-
import type
|
|
3
|
-
import type { ClientProtocolCircuitVerifier } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
import { type ProtocolArtifact, type ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/types';
|
|
3
|
+
import type { ClientProtocolCircuitVerifier, IVCProofVerificationResult } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
import type { Proof } from '@aztec/stdlib/proofs';
|
|
5
5
|
import { Tx } from '@aztec/stdlib/tx';
|
|
6
6
|
import type { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
@@ -9,9 +9,10 @@ export declare class BBCircuitVerifier implements ClientProtocolCircuitVerifier
|
|
|
9
9
|
private config;
|
|
10
10
|
private logger;
|
|
11
11
|
private constructor();
|
|
12
|
+
stop(): Promise<void>;
|
|
12
13
|
static new(config: BBConfig, logger?: Logger): Promise<BBCircuitVerifier>;
|
|
13
|
-
getVerificationKeyData(
|
|
14
|
+
getVerificationKeyData(circuit: ProtocolArtifact): VerificationKeyData;
|
|
14
15
|
verifyProofForCircuit(circuit: ServerProtocolArtifact, proof: Proof): Promise<void>;
|
|
15
|
-
verifyProof(tx: Tx): Promise<
|
|
16
|
+
verifyProof(tx: Tx): Promise<IVCProofVerificationResult>;
|
|
16
17
|
}
|
|
17
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJfdmVyaWZpZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci9iYl92ZXJpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHbEUsT0FBTyxFQUVMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssc0JBQXNCLEVBRTVCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqSCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWE3RCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJN0MscUJBQWEsaUJBQWtCLFlBQVcsNkJBQTZCO0lBRW5FLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLE1BQU07SUFGaEIsT0FBTyxlQUdIO0lBRUcsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFM0I7SUFFRCxPQUFvQixHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQXFDLDhCQU1wRjtJQUVNLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FNNUU7SUFFWSxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLEtBQUssaUJBbUMvRTtJQUVZLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQTZDcEU7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bb_verifier.d.ts","sourceRoot":"","sources":["../../src/verifier/bb_verifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"bb_verifier.d.ts","sourceRoot":"","sources":["../../src/verifier/bb_verifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAE5B,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AACjH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAa7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAI7C,qBAAa,iBAAkB,YAAW,6BAA6B;IAEnE,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IAFhB,OAAO,eAGH;IAEG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAED,OAAoB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAqC,8BAMpF;IAEM,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,mBAAmB,CAM5E;IAEY,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK,iBAmC/E;IAEY,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CA6CpE;CACF"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { runInDirectory } from '@aztec/foundation/fs';
|
|
2
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { Timer } from '@aztec/foundation/timer';
|
|
4
|
+
import { ProtocolCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks';
|
|
5
|
+
import { mapProtocolArtifactNameToCircuitName } from '@aztec/noir-protocol-circuits-types/types';
|
|
5
6
|
import { promises as fs } from 'fs';
|
|
6
7
|
import * as path from 'path';
|
|
7
|
-
import { BB_RESULT, PROOF_FILENAME, VK_FILENAME,
|
|
8
|
+
import { BB_RESULT, PROOF_FILENAME, PUBLIC_INPUTS_FILENAME, VK_FILENAME, verifyChonkProof, verifyProof } from '../bb/execute.js';
|
|
8
9
|
import { getUltraHonkFlavorForCircuit } from '../honk.js';
|
|
9
|
-
import {
|
|
10
|
-
import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
|
|
10
|
+
import { writeChonkProofToPath } from '../prover/proof_utils.js';
|
|
11
11
|
export class BBCircuitVerifier {
|
|
12
12
|
config;
|
|
13
13
|
logger;
|
|
@@ -15,26 +15,35 @@ export class BBCircuitVerifier {
|
|
|
15
15
|
this.config = config;
|
|
16
16
|
this.logger = logger;
|
|
17
17
|
}
|
|
18
|
+
stop() {
|
|
19
|
+
return Promise.resolve();
|
|
20
|
+
}
|
|
18
21
|
static async new(config, logger = createLogger('bb-prover:verifier')) {
|
|
22
|
+
if (!config.bbWorkingDirectory) {
|
|
23
|
+
throw new Error(`Barretenberg working directory (BB_WORKING_DIRECTORY) is not set`);
|
|
24
|
+
}
|
|
19
25
|
await fs.mkdir(config.bbWorkingDirectory, {
|
|
20
26
|
recursive: true
|
|
21
27
|
});
|
|
22
28
|
return new BBCircuitVerifier(config, logger);
|
|
23
29
|
}
|
|
24
|
-
getVerificationKeyData(
|
|
25
|
-
const vk =
|
|
30
|
+
getVerificationKeyData(circuit) {
|
|
31
|
+
const vk = ProtocolCircuitVks[circuit];
|
|
26
32
|
if (vk === undefined) {
|
|
27
|
-
throw new Error(
|
|
33
|
+
throw new Error(`Could not find VK for artifact ${circuit}`);
|
|
28
34
|
}
|
|
29
35
|
return vk;
|
|
30
36
|
}
|
|
31
37
|
async verifyProofForCircuit(circuit, proof) {
|
|
32
38
|
const operation = async (bbWorkingDirectory)=>{
|
|
39
|
+
const publicInputsFileName = path.join(bbWorkingDirectory, PUBLIC_INPUTS_FILENAME);
|
|
33
40
|
const proofFileName = path.join(bbWorkingDirectory, PROOF_FILENAME);
|
|
34
41
|
const verificationKeyPath = path.join(bbWorkingDirectory, VK_FILENAME);
|
|
35
42
|
const verificationKey = this.getVerificationKeyData(circuit);
|
|
36
43
|
this.logger.debug(`${circuit} Verifying with key: ${verificationKey.keyAsFields.hash.toString()}`);
|
|
37
|
-
|
|
44
|
+
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/13189): Put this proof parsing logic in the proof class.
|
|
45
|
+
await fs.writeFile(publicInputsFileName, proof.buffer.slice(0, proof.numPublicInputs * 32));
|
|
46
|
+
await fs.writeFile(proofFileName, proof.buffer.slice(proof.numPublicInputs * 32));
|
|
38
47
|
await fs.writeFile(verificationKeyPath, verificationKey.keyAsBytes);
|
|
39
48
|
const result = await verifyProof(this.config.bbBinaryPath, proofFileName, verificationKeyPath, getUltraHonkFlavorForCircuit(circuit), this.logger);
|
|
40
49
|
if (result.status === BB_RESULT.FAILURE) {
|
|
@@ -51,36 +60,45 @@ export class BBCircuitVerifier {
|
|
|
51
60
|
await runInDirectory(this.config.bbWorkingDirectory, operation, this.config.bbSkipCleanup, this.logger);
|
|
52
61
|
}
|
|
53
62
|
async verifyProof(tx) {
|
|
63
|
+
const proofType = 'Chonk';
|
|
54
64
|
try {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
// we have all the verification keys available.
|
|
59
|
-
const expectedCircuit = tx.data.forPublic ? 'PrivateKernelTailToPublicArtifact' : 'PrivateKernelTailArtifact';
|
|
60
|
-
const circuit = 'ClientIVC';
|
|
65
|
+
const totalTimer = new Timer();
|
|
66
|
+
let verificationDuration = 0;
|
|
67
|
+
const circuit = tx.data.forPublic ? 'HidingKernelToPublic' : 'HidingKernelToRollup';
|
|
61
68
|
// Block below is almost copy-pasted from verifyProofForCircuit
|
|
62
69
|
const operation = async (bbWorkingDirectory)=>{
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
const proofPath = path.join(bbWorkingDirectory, PROOF_FILENAME);
|
|
71
|
+
await writeChonkProofToPath(tx.chonkProof.attachPublicInputs(tx.data.publicInputs().toFields()), proofPath);
|
|
72
|
+
const verificationKeyPath = path.join(bbWorkingDirectory, VK_FILENAME);
|
|
73
|
+
const verificationKey = this.getVerificationKeyData(circuit);
|
|
74
|
+
await fs.writeFile(verificationKeyPath, verificationKey.keyAsBytes);
|
|
75
|
+
const timer = new Timer();
|
|
76
|
+
const result = await verifyChonkProof(this.config.bbBinaryPath, proofPath, verificationKeyPath, this.logger, this.config.bbIVCConcurrency);
|
|
77
|
+
verificationDuration = timer.ms();
|
|
68
78
|
if (result.status === BB_RESULT.FAILURE) {
|
|
69
|
-
const errorMessage = `Failed to verify ${
|
|
79
|
+
const errorMessage = `Failed to verify ${proofType} proof for ${circuit}!`;
|
|
70
80
|
throw new Error(errorMessage);
|
|
71
81
|
}
|
|
72
|
-
this.logger.debug(`${
|
|
73
|
-
circuitName: mapProtocolArtifactNameToCircuitName(
|
|
82
|
+
this.logger.debug(`${proofType} verification successful`, {
|
|
83
|
+
circuitName: mapProtocolArtifactNameToCircuitName(circuit),
|
|
74
84
|
duration: result.durationMs,
|
|
75
85
|
eventName: 'circuit-verification',
|
|
76
|
-
proofType: '
|
|
86
|
+
proofType: 'chonk'
|
|
77
87
|
});
|
|
78
88
|
};
|
|
79
89
|
await runInDirectory(this.config.bbWorkingDirectory, operation, this.config.bbSkipCleanup, this.logger);
|
|
80
|
-
return
|
|
90
|
+
return {
|
|
91
|
+
valid: true,
|
|
92
|
+
durationMs: verificationDuration,
|
|
93
|
+
totalDurationMs: totalTimer.ms()
|
|
94
|
+
};
|
|
81
95
|
} catch (err) {
|
|
82
|
-
this.logger.warn(`Failed to verify
|
|
83
|
-
return
|
|
96
|
+
this.logger.warn(`Failed to verify ${proofType} proof for tx ${tx.getTxHash().toString()}: ${String(err)}`);
|
|
97
|
+
return {
|
|
98
|
+
valid: false,
|
|
99
|
+
durationMs: 0,
|
|
100
|
+
totalDurationMs: 0
|
|
101
|
+
};
|
|
84
102
|
}
|
|
85
103
|
}
|
|
86
104
|
}
|
package/dest/verifier/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export * from './bb_verifier.js';
|
|
2
|
-
|
|
2
|
+
export * from './queued_chonk_verifier.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsNEJBQTRCLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verifier/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verifier/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
|
package/dest/verifier/index.js
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ClientProtocolCircuitVerifier, IVCProofVerificationResult } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
import type { Tx } from '@aztec/stdlib/tx';
|
|
3
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
+
import type { BBConfig } from '../config.js';
|
|
5
|
+
export declare class QueuedIVCVerifier implements ClientProtocolCircuitVerifier {
|
|
6
|
+
private verifier;
|
|
7
|
+
private telemetry;
|
|
8
|
+
private logger;
|
|
9
|
+
private queue;
|
|
10
|
+
private metrics;
|
|
11
|
+
constructor(config: BBConfig, verifier: ClientProtocolCircuitVerifier, telemetry?: TelemetryClient, logger?: import("@aztec/foundation/log").Logger);
|
|
12
|
+
verifyProof(tx: Tx): Promise<IVCProofVerificationResult>;
|
|
13
|
+
stop(): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWVkX2Nob25rX3ZlcmlmaWVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVyaWZpZXIvcXVldWVkX2Nob25rX3ZlcmlmaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakgsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQU1MLEtBQUssZUFBZSxFQUlyQixNQUFNLHlCQUF5QixDQUFDO0FBSWpDLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQWlFN0MscUJBQWEsaUJBQWtCLFlBQVcsNkJBQTZCO0lBTW5FLE9BQU8sQ0FBQyxRQUFRO0lBQ2hCLE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxNQUFNO0lBUGhCLE9BQU8sQ0FBQyxLQUFLLENBQWM7SUFDM0IsT0FBTyxDQUFDLE9BQU8sQ0FBcUI7SUFFcEMsWUFDRSxNQUFNLEVBQUUsUUFBUSxFQUNSLFFBQVEsRUFBRSw2QkFBNkIsRUFDdkMsU0FBUyxHQUFFLGVBQXNDLEVBQ2pELE1BQU0seUNBQWtELEVBTWpFO0lBRVksV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBSXBFO0lBRUQsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFcEI7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queued_chonk_verifier.d.ts","sourceRoot":"","sources":["../../src/verifier/queued_chonk_verifier.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AACjH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAML,KAAK,eAAe,EAIrB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAiE7C,qBAAa,iBAAkB,YAAW,6BAA6B;IAMnE,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IAPhB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAqB;IAEpC,YACE,MAAM,EAAE,QAAQ,EACR,QAAQ,EAAE,6BAA6B,EACvC,SAAS,GAAE,eAAsC,EACjD,MAAM,yCAAkD,EAMjE;IAEY,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAIpE;IAED,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpB;CACF"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { SerialQueue } from '@aztec/foundation/queue';
|
|
3
|
+
import { Attributes, Metrics, createUpDownCounterWithDefault, getTelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
+
import { createHistogram } from 'node:perf_hooks';
|
|
5
|
+
class IVCVerifierMetrics {
|
|
6
|
+
ivcVerificationHistogram;
|
|
7
|
+
ivcTotalVerificationHistogram;
|
|
8
|
+
ivcFailureCount;
|
|
9
|
+
localHistogramOk = createHistogram({
|
|
10
|
+
min: 1,
|
|
11
|
+
max: 5 * 60 * 1000
|
|
12
|
+
});
|
|
13
|
+
localHistogramFails = createHistogram({
|
|
14
|
+
min: 1,
|
|
15
|
+
max: 5 * 60 * 1000
|
|
16
|
+
});
|
|
17
|
+
aggDurationMetrics;
|
|
18
|
+
constructor(client, name = 'QueuedIVCVerifier'){
|
|
19
|
+
const meter = client.getMeter(name);
|
|
20
|
+
this.ivcVerificationHistogram = meter.createHistogram(Metrics.IVC_VERIFIER_TIME);
|
|
21
|
+
this.ivcTotalVerificationHistogram = meter.createHistogram(Metrics.IVC_VERIFIER_TOTAL_TIME);
|
|
22
|
+
this.ivcFailureCount = createUpDownCounterWithDefault(meter, Metrics.IVC_VERIFIER_FAILURE_COUNT);
|
|
23
|
+
this.aggDurationMetrics = {
|
|
24
|
+
avg: meter.createObservableGauge(Metrics.IVC_VERIFIER_AGG_DURATION_AVG),
|
|
25
|
+
max: meter.createObservableGauge(Metrics.IVC_VERIFIER_AGG_DURATION_MAX),
|
|
26
|
+
min: meter.createObservableGauge(Metrics.IVC_VERIFIER_AGG_DURATION_MIN),
|
|
27
|
+
p50: meter.createObservableGauge(Metrics.IVC_VERIFIER_AGG_DURATION_P50),
|
|
28
|
+
p90: meter.createObservableGauge(Metrics.IVC_VERIFIER_AGG_DURATION_P90)
|
|
29
|
+
};
|
|
30
|
+
meter.addBatchObservableCallback(this.aggregate, Object.values(this.aggDurationMetrics));
|
|
31
|
+
}
|
|
32
|
+
recordIVCVerification(result) {
|
|
33
|
+
this.ivcVerificationHistogram.record(Math.ceil(result.durationMs), {
|
|
34
|
+
[Attributes.OK]: result.valid
|
|
35
|
+
});
|
|
36
|
+
this.ivcTotalVerificationHistogram.record(Math.ceil(result.totalDurationMs), {
|
|
37
|
+
[Attributes.OK]: result.valid
|
|
38
|
+
});
|
|
39
|
+
if (!result.valid) {
|
|
40
|
+
this.ivcFailureCount.add(1);
|
|
41
|
+
this.localHistogramFails.record(Math.max(Math.ceil(result.durationMs), 1));
|
|
42
|
+
} else {
|
|
43
|
+
this.localHistogramOk.record(Math.max(Math.ceil(result.durationMs), 1));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
aggregate = (res)=>{
|
|
47
|
+
for (const [histogram, ok] of [
|
|
48
|
+
[
|
|
49
|
+
this.localHistogramOk,
|
|
50
|
+
true
|
|
51
|
+
],
|
|
52
|
+
[
|
|
53
|
+
this.localHistogramFails,
|
|
54
|
+
false
|
|
55
|
+
]
|
|
56
|
+
]){
|
|
57
|
+
if (histogram.count === 0) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
res.observe(this.aggDurationMetrics.avg, histogram.mean, {
|
|
61
|
+
[Attributes.OK]: ok
|
|
62
|
+
});
|
|
63
|
+
res.observe(this.aggDurationMetrics.max, histogram.max, {
|
|
64
|
+
[Attributes.OK]: ok
|
|
65
|
+
});
|
|
66
|
+
res.observe(this.aggDurationMetrics.min, histogram.min, {
|
|
67
|
+
[Attributes.OK]: ok
|
|
68
|
+
});
|
|
69
|
+
res.observe(this.aggDurationMetrics.p50, histogram.percentile(50), {
|
|
70
|
+
[Attributes.OK]: ok
|
|
71
|
+
});
|
|
72
|
+
res.observe(this.aggDurationMetrics.p90, histogram.percentile(90), {
|
|
73
|
+
[Attributes.OK]: ok
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export class QueuedIVCVerifier {
|
|
79
|
+
verifier;
|
|
80
|
+
telemetry;
|
|
81
|
+
logger;
|
|
82
|
+
queue;
|
|
83
|
+
metrics;
|
|
84
|
+
constructor(config, verifier, telemetry = getTelemetryClient(), logger = createLogger('bb-prover:queued_chonk_verifier')){
|
|
85
|
+
this.verifier = verifier;
|
|
86
|
+
this.telemetry = telemetry;
|
|
87
|
+
this.logger = logger;
|
|
88
|
+
this.metrics = new IVCVerifierMetrics(this.telemetry, 'QueuedIVCVerifier');
|
|
89
|
+
this.queue = new SerialQueue();
|
|
90
|
+
this.logger.info(`Starting QueuedIVCVerifier with ${config.numConcurrentIVCVerifiers} concurrent verifiers`);
|
|
91
|
+
this.queue.start(config.numConcurrentIVCVerifiers);
|
|
92
|
+
}
|
|
93
|
+
async verifyProof(tx) {
|
|
94
|
+
const result = await this.queue.put(()=>this.verifier.verifyProof(tx));
|
|
95
|
+
this.metrics.recordIVCVerification(result);
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
stop() {
|
|
99
|
+
return this.queue.end();
|
|
100
|
+
}
|
|
101
|
+
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/bb-prover",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.1-commit.0208eb9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
7
|
-
"./
|
|
8
|
-
"./
|
|
9
|
-
"./
|
|
7
|
+
"./client/bundle": "./dest/prover/client/bundle.js",
|
|
8
|
+
"./client/lazy": "./dest/prover/client/lazy.js",
|
|
9
|
+
"./client": "./dest/prover/client/bb_private_kernel_prover.js",
|
|
10
10
|
"./verifier": "./dest/verifier/index.js",
|
|
11
11
|
"./test": "./dest/test/index.js",
|
|
12
12
|
"./config": "./dest/config.js"
|
|
@@ -25,11 +25,9 @@
|
|
|
25
25
|
"../package.common.json"
|
|
26
26
|
],
|
|
27
27
|
"scripts": {
|
|
28
|
-
"build": "yarn clean && tsc
|
|
29
|
-
"build:dev": "tsc
|
|
28
|
+
"build": "yarn clean && ../scripts/tsc.sh",
|
|
29
|
+
"build:dev": "../scripts/tsc.sh --watch",
|
|
30
30
|
"clean": "rm -rf ./dest .tsbuildinfo",
|
|
31
|
-
"formatting": "run -T prettier --check ./src && run -T eslint ./src",
|
|
32
|
-
"formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
|
|
33
31
|
"bb": "node --no-warnings ./dest/bb/index.js",
|
|
34
32
|
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
|
|
35
33
|
},
|
|
@@ -64,40 +62,44 @@
|
|
|
64
62
|
"testTimeout": 120000,
|
|
65
63
|
"setupFiles": [
|
|
66
64
|
"../../foundation/src/jest/setup.mjs"
|
|
65
|
+
],
|
|
66
|
+
"testEnvironment": "../../foundation/src/jest/env.mjs",
|
|
67
|
+
"setupFilesAfterEnv": [
|
|
68
|
+
"../../foundation/src/jest/setupAfterEnv.mjs"
|
|
67
69
|
]
|
|
68
70
|
},
|
|
69
71
|
"dependencies": {
|
|
70
|
-
"@aztec/bb.js": "0.0.
|
|
71
|
-
"@aztec/constants": "0.0.
|
|
72
|
-
"@aztec/foundation": "0.0.
|
|
73
|
-
"@aztec/noir-
|
|
74
|
-
"@aztec/
|
|
75
|
-
"@aztec/
|
|
76
|
-
"@aztec/
|
|
77
|
-
"@aztec/
|
|
78
|
-
"@
|
|
72
|
+
"@aztec/bb.js": "0.0.1-commit.0208eb9",
|
|
73
|
+
"@aztec/constants": "0.0.1-commit.0208eb9",
|
|
74
|
+
"@aztec/foundation": "0.0.1-commit.0208eb9",
|
|
75
|
+
"@aztec/noir-noirc_abi": "0.0.1-commit.0208eb9",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.0208eb9",
|
|
77
|
+
"@aztec/noir-types": "0.0.1-commit.0208eb9",
|
|
78
|
+
"@aztec/simulator": "0.0.1-commit.0208eb9",
|
|
79
|
+
"@aztec/stdlib": "0.0.1-commit.0208eb9",
|
|
80
|
+
"@aztec/telemetry-client": "0.0.1-commit.0208eb9",
|
|
81
|
+
"@aztec/world-state": "0.0.1-commit.0208eb9",
|
|
79
82
|
"commander": "^12.1.0",
|
|
80
83
|
"pako": "^2.1.0",
|
|
81
84
|
"source-map-support": "^0.5.21",
|
|
82
|
-
"tslib": "^2.4.0"
|
|
83
|
-
"@aztec/noir-noirc_abi": "0.0.0-test.0",
|
|
84
|
-
"@aztec/noir-types": "0.0.0-test.0"
|
|
85
|
+
"tslib": "^2.4.0"
|
|
85
86
|
},
|
|
86
87
|
"devDependencies": {
|
|
87
|
-
"@aztec/ethereum": "0.0.
|
|
88
|
-
"@aztec/kv-store": "0.0.
|
|
89
|
-
"@aztec/noir-contracts.js": "0.0.
|
|
90
|
-
"@aztec/
|
|
91
|
-
"@
|
|
92
|
-
"@
|
|
93
|
-
"@types/
|
|
94
|
-
"@types/node": "^
|
|
88
|
+
"@aztec/ethereum": "0.0.1-commit.0208eb9",
|
|
89
|
+
"@aztec/kv-store": "0.0.1-commit.0208eb9",
|
|
90
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.0208eb9",
|
|
91
|
+
"@aztec/noir-test-contracts.js": "0.0.1-commit.0208eb9",
|
|
92
|
+
"@aztec/protocol-contracts": "0.0.1-commit.0208eb9",
|
|
93
|
+
"@jest/globals": "^30.0.0",
|
|
94
|
+
"@types/jest": "^30.0.0",
|
|
95
|
+
"@types/node": "^22.15.17",
|
|
95
96
|
"@types/source-map-support": "^0.5.10",
|
|
96
|
-
"
|
|
97
|
-
"jest
|
|
97
|
+
"@typescript/native-preview": "7.0.0-dev.20260113.1",
|
|
98
|
+
"jest": "^30.0.0",
|
|
99
|
+
"jest-mock-extended": "^4.0.0",
|
|
98
100
|
"ts-node": "^10.9.1",
|
|
99
|
-
"typescript": "^5.
|
|
100
|
-
"viem": "2.
|
|
101
|
+
"typescript": "^5.3.3",
|
|
102
|
+
"viem": "npm:@aztec/viem@2.38.2"
|
|
101
103
|
},
|
|
102
104
|
"files": [
|
|
103
105
|
"dest",
|
|
@@ -106,6 +108,6 @@
|
|
|
106
108
|
],
|
|
107
109
|
"types": "./dest/index.d.ts",
|
|
108
110
|
"engines": {
|
|
109
|
-
"node": ">=
|
|
111
|
+
"node": ">=20.10"
|
|
110
112
|
}
|
|
111
113
|
}
|