@aztec/bb-prover 5.2.0-nightly.20260813 → 5.2.0-nightly.20260814
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/verifier/batch_chonk_verifier.d.ts +2 -1
- package/dest/verifier/batch_chonk_verifier.d.ts.map +1 -1
- package/dest/verifier/batch_chonk_verifier.js +5 -0
- package/dest/verifier/queued_chonk_verifier.d.ts +13 -1
- package/dest/verifier/queued_chonk_verifier.d.ts.map +1 -1
- package/dest/verifier/queued_chonk_verifier.js +1 -1
- package/package.json +16 -16
- package/src/verifier/batch_chonk_verifier.ts +5 -0
- package/src/verifier/queued_chonk_verifier.ts +2 -1
|
@@ -23,6 +23,7 @@ export declare class BatchChonkVerifier implements ClientProtocolCircuitVerifier
|
|
|
23
23
|
private sendQueue;
|
|
24
24
|
private fifoReader;
|
|
25
25
|
private logger;
|
|
26
|
+
private metrics;
|
|
26
27
|
/** Maps artifact name to VK index in the batch verifier. */
|
|
27
28
|
private vkIndexMap;
|
|
28
29
|
/** Bound cleanup handler for process exit signals. */
|
|
@@ -42,4 +43,4 @@ export declare class BatchChonkVerifier implements ClientProtocolCircuitVerifier
|
|
|
42
43
|
private registerExitCleanup;
|
|
43
44
|
private deregisterExitCleanup;
|
|
44
45
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hfY2hvbmtfdmVyaWZpZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci9iYXRjaF9jaG9ua192ZXJpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pILE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBVzNDLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQXNCN0M7Ozs7Ozs7OztHQVNHO0FBQ0gscUJBQWEsa0JBQW1CLFlBQVcsNkJBQTZCO0lBZXBFLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFNBQVM7SUFDakIsT0FBTyxDQUFDLFNBQVM7SUFDakIsT0FBTyxDQUFDLEtBQUs7SUFqQmYsT0FBTyxDQUFDLEVBQUUsQ0FBZ0I7SUFDMUIsT0FBTyxDQUFDLFFBQVEsQ0FBUztJQUN6QixPQUFPLENBQUMsYUFBYSxDQUFLO0lBQzFCLE9BQU8sQ0FBQyxlQUFlLENBQXFDO0lBQzVELE9BQU8sQ0FBQyxTQUFTLENBQWM7SUFDL0IsT0FBTyxDQUFDLFVBQVUsQ0FBa0I7SUFDcEMsT0FBTyxDQUFDLE1BQU0sQ0FBa0Q7SUFDaEUsT0FBTyxDQUFDLE9BQU8sQ0FBcUI7SUFDcEMsNERBQTREO0lBQzVELE9BQU8sQ0FBQyxVQUFVLENBQTZCO0lBQy9DLHNEQUFzRDtJQUN0RCxPQUFPLENBQUMsV0FBVyxDQUE2QjtJQUVoRCxPQUFPLGVBV047SUFFRCw0RUFBNEU7SUFDNUUsT0FBYSxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBZWhHO0lBRUQsMkVBQTJFO0lBQzNFLE9BQWEsYUFBYSxDQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSwwQkFBMEIsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDLEVBQzVGLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFDakIsU0FBUyxFQUFFLE1BQU0sR0FDaEIsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBTzdCO1lBRWEsS0FBSztJQXVCWixXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FTOUQ7SUFFRCx5RkFBeUY7SUFDbEYsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQXlCbkc7SUFFWSxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQThCakM7SUFFRCxPQUFPLENBQUMsZUFBZTtJQTJCdkIsT0FBTyxDQUFDLFlBQVk7SUE0QnBCLE9BQU8sQ0FBQyxtQkFBbUI7SUFjM0IsT0FBTyxDQUFDLHFCQUFxQjtDQVE5QiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch_chonk_verifier.d.ts","sourceRoot":"","sources":["../../src/verifier/batch_chonk_verifier.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AACjH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"batch_chonk_verifier.d.ts","sourceRoot":"","sources":["../../src/verifier/batch_chonk_verifier.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AACjH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAW3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAsB7C;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,YAAW,6BAA6B;IAepE,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK;IAjBf,OAAO,CAAC,EAAE,CAAgB;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAAkD;IAChE,OAAO,CAAC,OAAO,CAAqB;IACpC,4DAA4D;IAC5D,OAAO,CAAC,UAAU,CAA6B;IAC/C,sDAAsD;IACtD,OAAO,CAAC,WAAW,CAA6B;IAEhD,OAAO,eAWN;IAED,4EAA4E;IAC5E,OAAa,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAehG;IAED,2EAA2E;IAC3E,OAAa,aAAa,CACxB,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,0BAA0B,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,EAC5F,GAAG,EAAE,UAAU,EAAE,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAO7B;YAEa,KAAK;IAuBZ,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAS9D;IAED,yFAAyF;IAClF,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAyBnG;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA8BjC;IAED,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,qBAAqB;CAQ9B"}
|
|
@@ -4,6 +4,7 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
4
4
|
import { SerialQueue } from '@aztec/foundation/queue';
|
|
5
5
|
import { Timer } from '@aztec/foundation/timer';
|
|
6
6
|
import { ProtocolCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks';
|
|
7
|
+
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
7
8
|
import { Unpackr } from 'msgpackr';
|
|
8
9
|
import { execFile } from 'node:child_process';
|
|
9
10
|
import { unlinkSync } from 'node:fs';
|
|
@@ -11,6 +12,7 @@ import { unlink } from 'node:fs/promises';
|
|
|
11
12
|
import * as os from 'node:os';
|
|
12
13
|
import * as path from 'node:path';
|
|
13
14
|
import { promisify } from 'node:util';
|
|
15
|
+
import { IVCVerifierMetrics } from './queued_chonk_verifier.js';
|
|
14
16
|
const execFileAsync = promisify(execFile);
|
|
15
17
|
/** Maps client protocol artifacts used for chonk verification to VK indices. */ const CHONK_VK_ARTIFACTS = [
|
|
16
18
|
'HidingKernelToRollup',
|
|
@@ -37,6 +39,7 @@ const execFileAsync = promisify(execFile);
|
|
|
37
39
|
sendQueue;
|
|
38
40
|
fifoReader;
|
|
39
41
|
logger;
|
|
42
|
+
metrics;
|
|
40
43
|
/** Maps artifact name to VK index in the batch verifier. */ vkIndexMap;
|
|
41
44
|
/** Bound cleanup handler for process exit signals. */ exitCleanup;
|
|
42
45
|
constructor(config, vkBuffers, batchSize, label){
|
|
@@ -53,6 +56,7 @@ const execFileAsync = promisify(execFile);
|
|
|
53
56
|
this.fifoReader = new FifoFrameReader();
|
|
54
57
|
this.sendQueue = new SerialQueue();
|
|
55
58
|
this.sendQueue.start(1);
|
|
59
|
+
this.metrics = new IVCVerifierMetrics(getTelemetryClient(), `BatchChonkVerifier-${label}`);
|
|
56
60
|
}
|
|
57
61
|
/** Create and start a BatchChonkVerifier using the protocol circuit VKs. */ static async new(config, batchSize, label) {
|
|
58
62
|
const vkBuffers = [];
|
|
@@ -198,6 +202,7 @@ const execFileAsync = promisify(execFile);
|
|
|
198
202
|
durationMs,
|
|
199
203
|
totalDurationMs
|
|
200
204
|
};
|
|
205
|
+
this.metrics.recordIVCVerification(ivcResult);
|
|
201
206
|
if (!valid) {
|
|
202
207
|
this.logger.warn(`Proof verification failed for request_id=${result.request_id}: ${result.error_message}`);
|
|
203
208
|
} else {
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import type { ClientProtocolCircuitVerifier, IVCProofVerificationResult } from '@aztec/stdlib/interfaces/server';
|
|
2
2
|
import type { Tx } from '@aztec/stdlib/tx';
|
|
3
3
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
+
/** Records verification timing and failure metrics for an IVC (chonk) proof verifier. */
|
|
5
|
+
export declare class IVCVerifierMetrics {
|
|
6
|
+
private ivcVerificationHistogram;
|
|
7
|
+
private ivcTotalVerificationHistogram;
|
|
8
|
+
private ivcFailureCount;
|
|
9
|
+
private localHistogramOk;
|
|
10
|
+
private localHistogramFails;
|
|
11
|
+
private aggDurationMetrics;
|
|
12
|
+
constructor(client: TelemetryClient, name?: string);
|
|
13
|
+
recordIVCVerification(result: IVCProofVerificationResult): void;
|
|
14
|
+
private aggregate;
|
|
15
|
+
}
|
|
4
16
|
export declare class QueuedIVCVerifier implements ClientProtocolCircuitVerifier {
|
|
5
17
|
private verifier;
|
|
6
18
|
private telemetry;
|
|
@@ -11,4 +23,4 @@ export declare class QueuedIVCVerifier implements ClientProtocolCircuitVerifier
|
|
|
11
23
|
verifyProof(tx: Tx): Promise<IVCProofVerificationResult>;
|
|
12
24
|
stop(): Promise<void>;
|
|
13
25
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWVkX2Nob25rX3ZlcmlmaWVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVyaWZpZXIvcXVldWVkX2Nob25rX3ZlcmlmaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakgsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQU1MLEtBQUssZUFBZSxFQUlyQixNQUFNLHlCQUF5QixDQUFDO0FBSWpDLHlGQUF5RjtBQUN6RixxQkFBYSxrQkFBa0I7SUFDN0IsT0FBTyxDQUFDLHdCQUF3QixDQUFZO0lBQzVDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBWTtJQUNqRCxPQUFPLENBQUMsZUFBZSxDQUFnQjtJQUN2QyxPQUFPLENBQUMsZ0JBQWdCLENBR3JCO0lBQ0gsT0FBTyxDQUFDLG1CQUFtQixDQUd4QjtJQUVILE9BQU8sQ0FBQyxrQkFBa0IsQ0FBaUU7SUFFM0YsWUFBWSxNQUFNLEVBQUUsZUFBZSxFQUFFLElBQUksU0FBc0IsRUFrQjlEO0lBRUQscUJBQXFCLENBQUMsTUFBTSxFQUFFLDBCQUEwQixRQVN2RDtJQUVELE9BQU8sQ0FBQyxTQUFTLENBY2Y7Q0FDSDtBQUVELHFCQUFhLGlCQUFrQixZQUFXLDZCQUE2QjtJQUtuRSxPQUFPLENBQUMsUUFBUTtJQUVoQixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsTUFBTTtJQVBoQixPQUFPLENBQUMsS0FBSyxDQUFjO0lBQzNCLE9BQU8sQ0FBQyxPQUFPLENBQXFCO0lBRXBDLFlBQ1UsUUFBUSxFQUFFLDZCQUE2QixFQUMvQyxXQUFXLEVBQUUsTUFBTSxFQUNYLFNBQVMsR0FBRSxlQUFzQyxFQUNqRCxNQUFNLHlDQUFrRCxFQU1qRTtJQUVZLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUlwRTtJQUVLLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRzFCO0NBQ0YifQ==
|
|
@@ -1 +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;
|
|
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,yFAAyF;AACzF,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,wBAAwB,CAAY;IAC5C,OAAO,CAAC,6BAA6B,CAAY;IACjD,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,gBAAgB,CAGrB;IACH,OAAO,CAAC,mBAAmB,CAGxB;IAEH,OAAO,CAAC,kBAAkB,CAAiE;IAE3F,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAsB,EAkB9D;IAED,qBAAqB,CAAC,MAAM,EAAE,0BAA0B,QASvD;IAED,OAAO,CAAC,SAAS,CAcf;CACH;AAED,qBAAa,iBAAkB,YAAW,6BAA6B;IAKnE,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IAPhB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAqB;IAEpC,YACU,QAAQ,EAAE,6BAA6B,EAC/C,WAAW,EAAE,MAAM,EACX,SAAS,GAAE,eAAsC,EACjD,MAAM,yCAAkD,EAMjE;IAEY,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAIpE;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1B;CACF"}
|
|
@@ -2,7 +2,7 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
2
2
|
import { SerialQueue } from '@aztec/foundation/queue';
|
|
3
3
|
import { Attributes, Metrics, createUpDownCounterWithDefault, getTelemetryClient } from '@aztec/telemetry-client';
|
|
4
4
|
import { createHistogram } from 'node:perf_hooks';
|
|
5
|
-
class IVCVerifierMetrics {
|
|
5
|
+
/** Records verification timing and failure metrics for an IVC (chonk) proof verifier. */ export class IVCVerifierMetrics {
|
|
6
6
|
ivcVerificationHistogram;
|
|
7
7
|
ivcTotalVerificationHistogram;
|
|
8
8
|
ivcFailureCount;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/bb-prover",
|
|
3
|
-
"version": "5.2.0-nightly.
|
|
3
|
+
"version": "5.2.0-nightly.20260814",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -70,16 +70,16 @@
|
|
|
70
70
|
]
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@aztec/bb.js": "5.2.0-nightly.
|
|
74
|
-
"@aztec/constants": "5.2.0-nightly.
|
|
75
|
-
"@aztec/foundation": "5.2.0-nightly.
|
|
76
|
-
"@aztec/noir-noirc_abi": "5.2.0-nightly.
|
|
77
|
-
"@aztec/noir-protocol-circuits-types": "5.2.0-nightly.
|
|
78
|
-
"@aztec/noir-types": "5.2.0-nightly.
|
|
79
|
-
"@aztec/simulator": "5.2.0-nightly.
|
|
80
|
-
"@aztec/stdlib": "5.2.0-nightly.
|
|
81
|
-
"@aztec/telemetry-client": "5.2.0-nightly.
|
|
82
|
-
"@aztec/world-state": "5.2.0-nightly.
|
|
73
|
+
"@aztec/bb.js": "5.2.0-nightly.20260814",
|
|
74
|
+
"@aztec/constants": "5.2.0-nightly.20260814",
|
|
75
|
+
"@aztec/foundation": "5.2.0-nightly.20260814",
|
|
76
|
+
"@aztec/noir-noirc_abi": "5.2.0-nightly.20260814",
|
|
77
|
+
"@aztec/noir-protocol-circuits-types": "5.2.0-nightly.20260814",
|
|
78
|
+
"@aztec/noir-types": "5.2.0-nightly.20260814",
|
|
79
|
+
"@aztec/simulator": "5.2.0-nightly.20260814",
|
|
80
|
+
"@aztec/stdlib": "5.2.0-nightly.20260814",
|
|
81
|
+
"@aztec/telemetry-client": "5.2.0-nightly.20260814",
|
|
82
|
+
"@aztec/world-state": "5.2.0-nightly.20260814",
|
|
83
83
|
"commander": "^12.1.0",
|
|
84
84
|
"msgpackr": "^1.11.2",
|
|
85
85
|
"pako": "^2.1.0",
|
|
@@ -87,11 +87,11 @@
|
|
|
87
87
|
"tslib": "^2.4.0"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
|
-
"@aztec/ethereum": "5.2.0-nightly.
|
|
91
|
-
"@aztec/kv-store": "5.2.0-nightly.
|
|
92
|
-
"@aztec/noir-contracts.js": "5.2.0-nightly.
|
|
93
|
-
"@aztec/noir-test-contracts.js": "5.2.0-nightly.
|
|
94
|
-
"@aztec/protocol-contracts": "5.2.0-nightly.
|
|
90
|
+
"@aztec/ethereum": "5.2.0-nightly.20260814",
|
|
91
|
+
"@aztec/kv-store": "5.2.0-nightly.20260814",
|
|
92
|
+
"@aztec/noir-contracts.js": "5.2.0-nightly.20260814",
|
|
93
|
+
"@aztec/noir-test-contracts.js": "5.2.0-nightly.20260814",
|
|
94
|
+
"@aztec/protocol-contracts": "5.2.0-nightly.20260814",
|
|
95
95
|
"@jest/globals": "^30.0.0",
|
|
96
96
|
"@types/jest": "^30.0.0",
|
|
97
97
|
"@types/node": "^22.15.17",
|
|
@@ -6,6 +6,7 @@ import { Timer } from '@aztec/foundation/timer';
|
|
|
6
6
|
import { ProtocolCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks';
|
|
7
7
|
import type { ClientProtocolCircuitVerifier, IVCProofVerificationResult } from '@aztec/stdlib/interfaces/server';
|
|
8
8
|
import type { Tx } from '@aztec/stdlib/tx';
|
|
9
|
+
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
9
10
|
|
|
10
11
|
import { Unpackr } from 'msgpackr';
|
|
11
12
|
import { execFile } from 'node:child_process';
|
|
@@ -16,6 +17,7 @@ import * as path from 'node:path';
|
|
|
16
17
|
import { promisify } from 'node:util';
|
|
17
18
|
|
|
18
19
|
import type { BBConfig } from '../config.js';
|
|
20
|
+
import { IVCVerifierMetrics } from './queued_chonk_verifier.js';
|
|
19
21
|
|
|
20
22
|
const execFileAsync = promisify(execFile);
|
|
21
23
|
|
|
@@ -54,6 +56,7 @@ export class BatchChonkVerifier implements ClientProtocolCircuitVerifier {
|
|
|
54
56
|
private sendQueue: SerialQueue;
|
|
55
57
|
private fifoReader: FifoFrameReader;
|
|
56
58
|
private logger = createLogger('bb-prover:batch_chonk_verifier');
|
|
59
|
+
private metrics: IVCVerifierMetrics;
|
|
57
60
|
/** Maps artifact name to VK index in the batch verifier. */
|
|
58
61
|
private vkIndexMap = new Map<string, number>();
|
|
59
62
|
/** Bound cleanup handler for process exit signals. */
|
|
@@ -69,6 +72,7 @@ export class BatchChonkVerifier implements ClientProtocolCircuitVerifier {
|
|
|
69
72
|
this.fifoReader = new FifoFrameReader();
|
|
70
73
|
this.sendQueue = new SerialQueue();
|
|
71
74
|
this.sendQueue.start(1);
|
|
75
|
+
this.metrics = new IVCVerifierMetrics(getTelemetryClient(), `BatchChonkVerifier-${label}`);
|
|
72
76
|
}
|
|
73
77
|
|
|
74
78
|
/** Create and start a BatchChonkVerifier using the protocol circuit VKs. */
|
|
@@ -237,6 +241,7 @@ export class BatchChonkVerifier implements ClientProtocolCircuitVerifier {
|
|
|
237
241
|
const totalDurationMs = pending.totalTimer.ms();
|
|
238
242
|
|
|
239
243
|
const ivcResult: IVCProofVerificationResult = { valid, durationMs, totalDurationMs };
|
|
244
|
+
this.metrics.recordIVCVerification(ivcResult);
|
|
240
245
|
|
|
241
246
|
if (!valid) {
|
|
242
247
|
this.logger.warn(`Proof verification failed for request_id=${result.request_id}: ${result.error_message}`);
|
|
@@ -16,7 +16,8 @@ import {
|
|
|
16
16
|
|
|
17
17
|
import { createHistogram } from 'node:perf_hooks';
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
/** Records verification timing and failure metrics for an IVC (chonk) proof verifier. */
|
|
20
|
+
export class IVCVerifierMetrics {
|
|
20
21
|
private ivcVerificationHistogram: Histogram;
|
|
21
22
|
private ivcTotalVerificationHistogram: Histogram;
|
|
22
23
|
private ivcFailureCount: UpDownCounter;
|