@aztec/prover-client 0.0.1-commit.54489865 → 0.0.1-commit.5914bae
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/light/lightweight_checkpoint_builder.d.ts +8 -4
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
- package/dest/light/lightweight_checkpoint_builder.js +23 -11
- package/dest/mocks/test_context.js +5 -2
- package/dest/orchestrator/block-building-helpers.d.ts +4 -4
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +2 -2
- package/dest/orchestrator/block-proving-state.d.ts +4 -1
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +7 -0
- package/dest/orchestrator/checkpoint-proving-state.d.ts +3 -3
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/checkpoint-proving-state.js +3 -3
- package/dest/orchestrator/epoch-proving-state.d.ts +3 -3
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +5 -3
- package/dest/orchestrator/orchestrator.d.ts +5 -3
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +64 -57
- package/dest/prover-client/prover-client.d.ts +4 -4
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +9 -7
- package/dest/proving_broker/broker_prover_facade.d.ts +1 -1
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +3 -3
- package/dest/proving_broker/config.d.ts +9 -1
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +13 -2
- package/dest/proving_broker/proof_store/factory.d.ts +2 -5
- package/dest/proving_broker/proof_store/factory.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/factory.js +7 -30
- package/dest/proving_broker/proof_store/file_store_proof_store.d.ts +18 -0
- package/dest/proving_broker/proof_store/file_store_proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/file_store_proof_store.js +60 -0
- package/dest/proving_broker/proof_store/index.d.ts +2 -2
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.js +1 -1
- package/dest/proving_broker/proving_broker.d.ts +7 -4
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +36 -4
- package/dest/proving_broker/proving_broker_instrumentation.d.ts +3 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.js +7 -0
- package/dest/proving_broker/rpc.d.ts +6 -2
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +24 -15
- package/dest/test/mock_prover.d.ts +4 -4
- package/package.json +15 -16
- package/src/light/lightweight_checkpoint_builder.ts +26 -5
- package/src/mocks/test_context.ts +2 -2
- package/src/orchestrator/block-building-helpers.ts +2 -2
- package/src/orchestrator/block-proving-state.ts +9 -0
- package/src/orchestrator/checkpoint-proving-state.ts +4 -4
- package/src/orchestrator/epoch-proving-state.ts +6 -4
- package/src/orchestrator/orchestrator.ts +72 -63
- package/src/prover-client/prover-client.ts +8 -9
- package/src/proving_broker/broker_prover_facade.ts +9 -4
- package/src/proving_broker/config.ts +13 -0
- package/src/proving_broker/proof_store/factory.ts +10 -32
- package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
- package/src/proving_broker/proof_store/index.ts +1 -1
- package/src/proving_broker/proving_broker.ts +37 -3
- package/src/proving_broker/proving_broker_instrumentation.ts +9 -0
- package/src/proving_broker/rpc.ts +26 -3
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -14
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.js +0 -52
- package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -76
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { FileStore } from '@aztec/stdlib/file-store';
|
|
2
|
+
import { type ProofUri, type ProvingJobId, type ProvingJobInputs, type ProvingJobInputsMap, ProvingJobResult, type ProvingJobResultsMap } from '@aztec/stdlib/interfaces/server';
|
|
3
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
4
|
+
import type { ProofStore } from './proof_store.js';
|
|
5
|
+
/**
|
|
6
|
+
* A proof store implementation backed by a generic FileStore.
|
|
7
|
+
* Supports any storage backend (GCS, S3, local filesystem) via the FileStore abstraction.
|
|
8
|
+
*/
|
|
9
|
+
export declare class FileStoreProofStore implements ProofStore {
|
|
10
|
+
private readonly fileStore;
|
|
11
|
+
constructor(fileStore: FileStore);
|
|
12
|
+
saveProofInput<T extends ProvingRequestType>(id: ProvingJobId, type: T, inputs: ProvingJobInputsMap[T]): Promise<ProofUri>;
|
|
13
|
+
saveProofOutput<T extends ProvingRequestType>(id: ProvingJobId, type: T, result: ProvingJobResultsMap[T]): Promise<ProofUri>;
|
|
14
|
+
getProofInput(uri: ProofUri): Promise<ProvingJobInputs>;
|
|
15
|
+
getProofOutput(uri: ProofUri): Promise<ProvingJobResult>;
|
|
16
|
+
private extractTypeFromUri;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZV9zdG9yZV9wcm9vZl9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3ZpbmdfYnJva2VyL3Byb29mX3N0b3JlL2ZpbGVfc3RvcmVfcHJvb2Zfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUNMLEtBQUssUUFBUSxFQUNiLEtBQUssWUFBWSxFQUNqQixLQUFLLGdCQUFnQixFQUNyQixLQUFLLG1CQUFtQixFQUN4QixnQkFBZ0IsRUFDaEIsS0FBSyxvQkFBb0IsRUFFMUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUtuRDs7O0dBR0c7QUFDSCxxQkFBYSxtQkFBb0IsWUFBVyxVQUFVO0lBQ3hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUF0QyxZQUE2QixTQUFTLEVBQUUsU0FBUyxFQUFJO0lBRS9DLGNBQWMsQ0FBQyxDQUFDLFNBQVMsa0JBQWtCLEVBQy9DLEVBQUUsRUFBRSxZQUFZLEVBQ2hCLElBQUksRUFBRSxDQUFDLEVBQ1AsTUFBTSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxHQUM3QixPQUFPLENBQUMsUUFBUSxDQUFDLENBSW5CO0lBRUssZUFBZSxDQUFDLENBQUMsU0FBUyxrQkFBa0IsRUFDaEQsRUFBRSxFQUFFLFlBQVksRUFDaEIsSUFBSSxFQUFFLENBQUMsRUFDUCxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQzlCLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FNbkI7SUFFSyxhQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FTNUQ7SUFFSyxjQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FPN0Q7SUFFRCxPQUFPLENBQUMsa0JBQWtCO0NBVTNCIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file_store_proof_store.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proof_store/file_store_proof_store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,KAAK,oBAAoB,EAE1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnD;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,UAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,SAAS,EAAI;IAE/C,cAAc,CAAC,CAAC,SAAS,kBAAkB,EAC/C,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAInB;IAEK,eAAe,CAAC,CAAC,SAAS,kBAAkB,EAChD,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAMnB;IAEK,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAS5D;IAEK,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAO7D;IAED,OAAO,CAAC,kBAAkB;CAU3B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
|
|
2
|
+
import { ProvingJobResult, getProvingJobInputClassFor } from '@aztec/stdlib/interfaces/server';
|
|
3
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
4
|
+
const INPUTS_PATH = 'inputs';
|
|
5
|
+
const OUTPUTS_PATH = 'outputs';
|
|
6
|
+
/**
|
|
7
|
+
* A proof store implementation backed by a generic FileStore.
|
|
8
|
+
* Supports any storage backend (GCS, S3, local filesystem) via the FileStore abstraction.
|
|
9
|
+
*/ export class FileStoreProofStore {
|
|
10
|
+
fileStore;
|
|
11
|
+
constructor(fileStore){
|
|
12
|
+
this.fileStore = fileStore;
|
|
13
|
+
}
|
|
14
|
+
async saveProofInput(id, type, inputs) {
|
|
15
|
+
const path = `${INPUTS_PATH}/${ProvingRequestType[type]}/${id}`;
|
|
16
|
+
const uri = await this.fileStore.save(path, inputs.toBuffer());
|
|
17
|
+
return uri;
|
|
18
|
+
}
|
|
19
|
+
async saveProofOutput(id, type, result) {
|
|
20
|
+
const jobResult = {
|
|
21
|
+
type,
|
|
22
|
+
result
|
|
23
|
+
};
|
|
24
|
+
const json = jsonStringify(jobResult);
|
|
25
|
+
const path = `${OUTPUTS_PATH}/${ProvingRequestType[type]}/${id}.json`;
|
|
26
|
+
const uri = await this.fileStore.save(path, Buffer.from(json, 'utf-8'));
|
|
27
|
+
return uri;
|
|
28
|
+
}
|
|
29
|
+
async getProofInput(uri) {
|
|
30
|
+
try {
|
|
31
|
+
const buffer = await this.fileStore.read(uri);
|
|
32
|
+
const type = this.extractTypeFromUri(uri);
|
|
33
|
+
const inputs = getProvingJobInputClassFor(type).fromBuffer(buffer);
|
|
34
|
+
return {
|
|
35
|
+
inputs,
|
|
36
|
+
type
|
|
37
|
+
};
|
|
38
|
+
} catch (err) {
|
|
39
|
+
throw new Error(`Error getting proof input at ${uri}: ${err}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async getProofOutput(uri) {
|
|
43
|
+
try {
|
|
44
|
+
const buffer = await this.fileStore.read(uri);
|
|
45
|
+
return jsonParseWithSchema(buffer.toString('utf-8'), ProvingJobResult);
|
|
46
|
+
} catch (err) {
|
|
47
|
+
throw new Error(`Error getting proof output at ${uri}: ${err}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
extractTypeFromUri(uri) {
|
|
51
|
+
const url = new URL(uri);
|
|
52
|
+
const pathParts = url.pathname.split('/').filter(Boolean);
|
|
53
|
+
const typeString = pathParts.at(-2);
|
|
54
|
+
const type = typeString ? ProvingRequestType[typeString] : undefined;
|
|
55
|
+
if (type === undefined) {
|
|
56
|
+
throw new Error(`Unrecognized proof type ${typeString} in URI ${uri}`);
|
|
57
|
+
}
|
|
58
|
+
return type;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './proof_store.js';
|
|
2
2
|
export * from './inline_proof_store.js';
|
|
3
3
|
export * from './factory.js';
|
|
4
|
-
export * from './
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
export * from './file_store_proof_store.js';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9wcm9vZl9zdG9yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyw2QkFBNkIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proof_store/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proof_store/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { type GetProvingJobResponse, type ProofUri, type ProvingJob, type ProvingJobBrokerDebug, type ProvingJobConsumer, type ProvingJobFilter, type ProvingJobId, type ProvingJobProducer, type ProvingJobStatus } from '@aztec/stdlib/interfaces/server';
|
|
2
3
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
3
4
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
4
5
|
import { type ProverBrokerConfig } from './config.js';
|
|
@@ -7,7 +8,7 @@ import type { ProvingBrokerDatabase } from './proving_broker_database.js';
|
|
|
7
8
|
* A broker that manages proof requests and distributes them to workers based on their priority.
|
|
8
9
|
* It takes a backend that is responsible for storing and retrieving proof requests and results.
|
|
9
10
|
*/
|
|
10
|
-
export declare class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Traceable {
|
|
11
|
+
export declare class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, ProvingJobBrokerDebug, Traceable {
|
|
11
12
|
#private;
|
|
12
13
|
private database;
|
|
13
14
|
private logger;
|
|
@@ -38,7 +39,8 @@ export declare class ProvingBroker implements ProvingJobProducer, ProvingJobCons
|
|
|
38
39
|
private epochHeight;
|
|
39
40
|
private maxEpochsToKeepResultsFor;
|
|
40
41
|
private started;
|
|
41
|
-
|
|
42
|
+
private debugReplayEnabled;
|
|
43
|
+
constructor(database: ProvingBrokerDatabase, { proverBrokerJobTimeoutMs, proverBrokerPollIntervalMs, proverBrokerJobMaxRetries, proverBrokerMaxEpochsToKeepResultsFor, proverBrokerDebugReplayEnabled }?: Required<Pick<ProverBrokerConfig, 'proverBrokerJobTimeoutMs' | 'proverBrokerPollIntervalMs' | 'proverBrokerJobMaxRetries' | 'proverBrokerMaxEpochsToKeepResultsFor' | 'proverBrokerDebugReplayEnabled'>>, client?: TelemetryClient, logger?: import("@aztec/foundation/log").Logger);
|
|
42
44
|
private measureQueueDepth;
|
|
43
45
|
private countActiveJobs;
|
|
44
46
|
start(): Promise<void>;
|
|
@@ -54,6 +56,7 @@ export declare class ProvingBroker implements ProvingJobProducer, ProvingJobCons
|
|
|
54
56
|
job: ProvingJob;
|
|
55
57
|
time: number;
|
|
56
58
|
} | undefined>;
|
|
59
|
+
replayProvingJob(jobId: ProvingJobId, type: ProvingRequestType, epochNumber: EpochNumber, inputsUri: ProofUri): Promise<ProvingJobStatus>;
|
|
57
60
|
private cleanUpProvingJobState;
|
|
58
61
|
private cleanupPass;
|
|
59
62
|
private cleanupStaleJobs;
|
|
@@ -70,4 +73,4 @@ export declare class ProvingBroker implements ProvingJobProducer, ProvingJobCons
|
|
|
70
73
|
* is to get picked up by agents
|
|
71
74
|
*/
|
|
72
75
|
export declare const PROOF_TYPES_IN_PRIORITY_ORDER: ProvingRequestType[];
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19icm9rZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9wcm92aW5nX2Jyb2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLOUQsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssUUFBUSxFQUNiLEtBQUssVUFBVSxFQUNmLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssWUFBWSxFQUNqQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLGdCQUFnQixFQUV0QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLE1BQU0sRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUloSCxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBNkIsTUFBTSxhQUFhLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVcxRTs7O0dBR0c7QUFDSCxxQkFBYSxhQUFjLFlBQVcsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsU0FBUzs7SUFpRjFHLE9BQU8sQ0FBQyxRQUFRO0lBa0JoQixPQUFPLENBQUMsTUFBTTtJQWxHaEIsT0FBTyxDQUFDLE1BQU0sQ0E2Qlo7SUFJRixPQUFPLENBQUMsU0FBUyxDQUF1QztJQUV4RCxPQUFPLENBQUMsWUFBWSxDQUFvRDtJQUd4RSxPQUFPLENBQUMsVUFBVSxDQUFrQztJQU1wRCxPQUFPLENBQUMsVUFBVSxDQUErQztJQUdqRSxPQUFPLENBQUMsT0FBTyxDQUFtQztJQUdsRCxPQUFPLENBQUMsUUFBUSxDQUEwRTtJ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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_broker.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proving_broker.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,7 +51,8 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
51
51
|
*/ epochHeight;
|
|
52
52
|
maxEpochsToKeepResultsFor;
|
|
53
53
|
started;
|
|
54
|
-
|
|
54
|
+
debugReplayEnabled;
|
|
55
|
+
constructor(database, { proverBrokerJobTimeoutMs, proverBrokerPollIntervalMs, proverBrokerJobMaxRetries, proverBrokerMaxEpochsToKeepResultsFor, proverBrokerDebugReplayEnabled } = defaultProverBrokerConfig, client = getTelemetryClient(), logger = createLogger('prover-client:proving-broker')){
|
|
55
56
|
this.database = database;
|
|
56
57
|
this.logger = logger;
|
|
57
58
|
this.queues = {
|
|
@@ -104,6 +105,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
104
105
|
this.jobTimeoutMs = proverBrokerJobTimeoutMs;
|
|
105
106
|
this.maxRetries = proverBrokerJobMaxRetries;
|
|
106
107
|
this.maxEpochsToKeepResultsFor = proverBrokerMaxEpochsToKeepResultsFor;
|
|
108
|
+
this.debugReplayEnabled = proverBrokerDebugReplayEnabled ?? false;
|
|
107
109
|
}
|
|
108
110
|
measureQueueDepth;
|
|
109
111
|
countActiveJobs;
|
|
@@ -163,6 +165,32 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
163
165
|
reportProvingJobProgress(id, startedAt, filter) {
|
|
164
166
|
return Promise.resolve(this.#reportProvingJobProgress(id, startedAt, filter));
|
|
165
167
|
}
|
|
168
|
+
async replayProvingJob(jobId, type, epochNumber, inputsUri) {
|
|
169
|
+
if (!this.debugReplayEnabled) {
|
|
170
|
+
throw new Error('Debug replay not enabled. Set PROVER_BROKER_DEBUG_REPLAY_ENABLED=true');
|
|
171
|
+
}
|
|
172
|
+
this.logger.info(`Replaying proving job`, {
|
|
173
|
+
provingJobId: jobId,
|
|
174
|
+
epochNumber,
|
|
175
|
+
inputsUri
|
|
176
|
+
});
|
|
177
|
+
// Clear existing state and enqueue
|
|
178
|
+
this.cleanUpProvingJobState([
|
|
179
|
+
jobId
|
|
180
|
+
]);
|
|
181
|
+
const job = {
|
|
182
|
+
id: jobId,
|
|
183
|
+
type,
|
|
184
|
+
epochNumber,
|
|
185
|
+
inputsUri
|
|
186
|
+
};
|
|
187
|
+
this.jobsCache.set(jobId, job);
|
|
188
|
+
await this.database.addProvingJob(job);
|
|
189
|
+
this.enqueueJobInternal(job);
|
|
190
|
+
return {
|
|
191
|
+
status: 'in-queue'
|
|
192
|
+
};
|
|
193
|
+
}
|
|
166
194
|
async #enqueueProvingJob(job) {
|
|
167
195
|
// We return the job status at the start of this call
|
|
168
196
|
const jobStatus = this.#getProvingJobStatus(job.id);
|
|
@@ -211,7 +239,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
211
239
|
this.logger.info(`Cancelling job id=${id}`, {
|
|
212
240
|
provingJobId: id
|
|
213
241
|
});
|
|
214
|
-
await this.#reportProvingJobError(id, 'Aborted', false);
|
|
242
|
+
await this.#reportProvingJobError(id, 'Aborted', false, undefined, true);
|
|
215
243
|
}
|
|
216
244
|
}
|
|
217
245
|
cleanUpProvingJobState(ids) {
|
|
@@ -285,7 +313,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
285
313
|
}
|
|
286
314
|
return undefined;
|
|
287
315
|
}
|
|
288
|
-
async #reportProvingJobError(id, err, retry = false, filter) {
|
|
316
|
+
async #reportProvingJobError(id, err, retry = false, filter, aborted = false) {
|
|
289
317
|
const info = this.inProgress.get(id);
|
|
290
318
|
const item = this.jobsCache.get(id);
|
|
291
319
|
const retries = this.retries.get(id) ?? 0;
|
|
@@ -332,7 +360,11 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
332
360
|
this.resultsCache.set(id, result);
|
|
333
361
|
this.promises.get(id).resolve(result);
|
|
334
362
|
this.completedJobNotifications.push(id);
|
|
335
|
-
|
|
363
|
+
if (aborted) {
|
|
364
|
+
this.instrumentation.incAbortedJobs(item.type);
|
|
365
|
+
} else {
|
|
366
|
+
this.instrumentation.incRejectedJobs(item.type);
|
|
367
|
+
}
|
|
336
368
|
if (info) {
|
|
337
369
|
const duration = this.msTimeSource() - info.startedAt;
|
|
338
370
|
this.instrumentation.recordJobDuration(item.type, duration);
|
|
@@ -7,6 +7,7 @@ export declare class ProvingBrokerInstrumentation {
|
|
|
7
7
|
private activeJobs;
|
|
8
8
|
private resolvedJobs;
|
|
9
9
|
private rejectedJobs;
|
|
10
|
+
private abortedJobs;
|
|
10
11
|
private timedOutJobs;
|
|
11
12
|
private cachedJobs;
|
|
12
13
|
private totalJobs;
|
|
@@ -18,6 +19,7 @@ export declare class ProvingBrokerInstrumentation {
|
|
|
18
19
|
monitorActiveJobs(fn: MonitorCallback): void;
|
|
19
20
|
incResolvedJobs(proofType: ProvingRequestType): void;
|
|
20
21
|
incRejectedJobs(proofType: ProvingRequestType): void;
|
|
22
|
+
incAbortedJobs(proofType: ProvingRequestType): void;
|
|
21
23
|
incRetriedJobs(proofType: ProvingRequestType): void;
|
|
22
24
|
incTimedOutJobs(proofType: ProvingRequestType): void;
|
|
23
25
|
incCachedJobs(proofType: ProvingRequestType): void;
|
|
@@ -26,4 +28,4 @@ export declare class ProvingBrokerInstrumentation {
|
|
|
26
28
|
recordJobDuration(proofType: ProvingRequestType, msOrTimer: Timer | number): void;
|
|
27
29
|
private observe;
|
|
28
30
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19icm9rZXJfaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcHJvdmluZ19icm9rZXJfaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFNTCxLQUFLLGVBQWUsRUFHckIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxNQUFNLE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBUyxFQUFFLGtCQUFrQixLQUFLLE1BQU0sQ0FBQztBQUV4RSxxQkFBYSw0QkFBNEI7SUFDdkMsT0FBTyxDQUFDLFNBQVMsQ0FBa0I7SUFDbkMsT0FBTyxDQUFDLFVBQVUsQ0FBa0I7SUFDcEMsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFDcEMsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFDcEMsT0FBTyxDQUFDLFdBQVcsQ0FBZ0I7SUFDbkMsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFDcEMsT0FBTyxDQUFDLFVBQVUsQ0FBZ0I7SUFDbEMsT0FBTyxDQUFDLFNBQVMsQ0FBZ0I7SUFDakMsT0FBTyxDQUFDLE9BQU8sQ0FBWTtJQUMzQixPQUFPLENBQUMsV0FBVyxDQUFZO0lBQy9CLE9BQU8sQ0FBQyxXQUFXLENBQWdCO0lBRW5DLFlBQVksTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLFNBQWtCLEVBMkIxRDtJQUVELGlCQUFpQixDQUFDLEVBQUUsRUFBRSxlQUFlLFFBRXBDO0lBRUQsaUJBQWlCLENBQUMsRUFBRSxFQUFFLGVBQWUsUUFFcEM7SUFFRCxlQUFlLENBQUMsU0FBUyxFQUFFLGtCQUFrQixRQUk1QztJQUVELGVBQWUsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLFFBSTVDO0lBRUQsY0FBYyxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsUUFJM0M7SUFFRCxjQUFjLENBQUMsU0FBUyxFQUFFLGtCQUFrQixRQUkzQztJQUVELGVBQWUsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLFFBSTVDO0lBRUQsYUFBYSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsUUFJMUM7SUFFRCxZQUFZLENBQUMsU0FBUyxFQUFFLGtCQUFrQixRQUl6QztJQUVELGFBQWEsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLEtBQUssR0FBRyxNQUFNLFFBS3JFO0lBRUQsaUJBQWlCLENBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxRQUt6RTtJQUVELE9BQU8sQ0FBQyxPQUFPO0NBV2hCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_broker_instrumentation.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker_instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAML,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,kBAAkB,KAAK,MAAM,CAAC;AAExE,qBAAa,4BAA4B;IACvC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,WAAW,CAAgB;IAEnC,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAkB,
|
|
1
|
+
{"version":3,"file":"proving_broker_instrumentation.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker_instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAML,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,kBAAkB,KAAK,MAAM,CAAC;AAExE,qBAAa,4BAA4B;IACvC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,WAAW,CAAgB;IAEnC,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAkB,EA2B1D;IAED,iBAAiB,CAAC,EAAE,EAAE,eAAe,QAEpC;IAED,iBAAiB,CAAC,EAAE,EAAE,eAAe,QAEpC;IAED,eAAe,CAAC,SAAS,EAAE,kBAAkB,QAI5C;IAED,eAAe,CAAC,SAAS,EAAE,kBAAkB,QAI5C;IAED,cAAc,CAAC,SAAS,EAAE,kBAAkB,QAI3C;IAED,cAAc,CAAC,SAAS,EAAE,kBAAkB,QAI3C;IAED,eAAe,CAAC,SAAS,EAAE,kBAAkB,QAI5C;IAED,aAAa,CAAC,SAAS,EAAE,kBAAkB,QAI1C;IAED,YAAY,CAAC,SAAS,EAAE,kBAAkB,QAIzC;IAED,aAAa,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAKrE;IAED,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAKzE;IAED,OAAO,CAAC,OAAO;CAWhB"}
|
|
@@ -5,6 +5,7 @@ export class ProvingBrokerInstrumentation {
|
|
|
5
5
|
activeJobs;
|
|
6
6
|
resolvedJobs;
|
|
7
7
|
rejectedJobs;
|
|
8
|
+
abortedJobs;
|
|
8
9
|
timedOutJobs;
|
|
9
10
|
cachedJobs;
|
|
10
11
|
totalJobs;
|
|
@@ -21,6 +22,7 @@ export class ProvingBrokerInstrumentation {
|
|
|
21
22
|
};
|
|
22
23
|
this.resolvedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_RESOLVED_JOBS, provingJobAttrs);
|
|
23
24
|
this.rejectedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_REJECTED_JOBS, provingJobAttrs);
|
|
25
|
+
this.abortedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_ABORTED_JOBS, provingJobAttrs);
|
|
24
26
|
this.retriedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_RETRIED_JOBS, provingJobAttrs);
|
|
25
27
|
this.timedOutJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_TIMED_OUT_JOBS, provingJobAttrs);
|
|
26
28
|
this.cachedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_CACHED_JOBS, provingJobAttrs);
|
|
@@ -44,6 +46,11 @@ export class ProvingBrokerInstrumentation {
|
|
|
44
46
|
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
45
47
|
});
|
|
46
48
|
}
|
|
49
|
+
incAbortedJobs(proofType) {
|
|
50
|
+
this.abortedJobs.add(1, {
|
|
51
|
+
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
52
|
+
});
|
|
53
|
+
}
|
|
47
54
|
incRetriedJobs(proofType) {
|
|
48
55
|
this.retriedJobs.add(1, {
|
|
49
56
|
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { type ProvingJobBroker, type ProvingJobConsumer, type ProvingJobProducer } from '@aztec/stdlib/interfaces/server';
|
|
1
|
+
import { type ProvingJobBroker, type ProvingJobBrokerDebug, type ProvingJobConsumer, type ProvingJobProducer } from '@aztec/stdlib/interfaces/server';
|
|
2
2
|
import { type ApiSchemaFor } from '@aztec/stdlib/schemas';
|
|
3
3
|
import { type ComponentsVersions } from '@aztec/stdlib/versioning';
|
|
4
|
+
/** Indefinite backoff for broker communication: 1, 1, 1, 2, 4, 4, 4, ... seconds. */
|
|
5
|
+
export declare function proverBrokerBackoff(): Generator<number, void, unknown>;
|
|
4
6
|
export declare const ProvingJobProducerSchema: ApiSchemaFor<ProvingJobProducer>;
|
|
5
7
|
export declare const ProvingJobConsumerSchema: ApiSchemaFor<ProvingJobConsumer>;
|
|
6
8
|
export declare const ProvingJobBrokerSchema: ApiSchemaFor<ProvingJobBroker>;
|
|
9
|
+
export declare const ProvingJobBrokerDebugSchema: ApiSchemaFor<ProvingJobBrokerDebug>;
|
|
10
|
+
export declare const ProvingJobBrokerSchemaWithDebug: ApiSchemaFor<ProvingJobBroker & ProvingJobBrokerDebug>;
|
|
7
11
|
export declare function createProvingJobBrokerClient(url: string, versions: Partial<ComponentsVersions>, fetch?: (host: string, body: unknown, extraHeaders?: Record<string, string> | undefined, noRetry?: boolean | undefined) => Promise<{
|
|
8
12
|
response: any;
|
|
9
13
|
headers: {
|
|
@@ -22,4 +26,4 @@ export declare function createProvingJobConsumerClient(url: string, versions: Pa
|
|
|
22
26
|
get: (header: string) => string | null | undefined;
|
|
23
27
|
};
|
|
24
28
|
}>): ProvingJobConsumer;
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFJTCxLQUFLLGdCQUFnQixFQUNyQixLQUFLLHFCQUFxQixFQUMxQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLGtCQUFrQixFQUV4QixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBWSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFnQyxNQUFNLDBCQUEwQixDQUFDO0FBS2pHLHFGQUFxRjtBQUNyRix3QkFBaUIsbUJBQW1CLHFDQU1uQztBQVdELGVBQU8sTUFBTSx3QkFBd0IsRUFBRSxZQUFZLENBQUMsa0JBQWtCLENBS3JFLENBQUM7QUFFRixlQUFPLE1BQU0sd0JBQXdCLEVBQUUsWUFBWSxDQUFDLGtCQUFrQixDQWNyRSxDQUFDO0FBRUYsZUFBTyxNQUFNLHNCQUFzQixFQUFFLFlBQVksQ0FBQyxnQkFBZ0IsQ0FHakUsQ0FBQztBQUVGLGVBQU8sTUFBTSwyQkFBMkIsRUFBRSxZQUFZLENBQUMscUJBQXFCLENBSzNFLENBQUM7QUFFRixlQUFPLE1BQU0sK0JBQStCLEVBQUUsWUFBWSxDQUFDLGdCQUFnQixHQUFHLHFCQUFxQixDQUdsRyxDQUFDO0FBRUYsd0JBQWdCLDRCQUE0QixDQUMxQyxHQUFHLEVBQUUsTUFBTSxFQUNYLFFBQVEsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFDckMsS0FBSzs7Ozs7RUFBOEMsR0FDbEQsZ0JBQWdCLENBTWxCO0FBRUQsd0JBQWdCLDhCQUE4QixDQUM1QyxHQUFHLEVBQUUsTUFBTSxFQUNYLFFBQVEsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFDckMsS0FBSzs7Ozs7RUFBOEMsR0FDbEQsa0JBQWtCLENBTXBCO0FBRUQsd0JBQWdCLDhCQUE4QixDQUM1QyxHQUFHLEVBQUUsTUFBTSxFQUNYLFFBQVEsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFDckMsS0FBSzs7Ozs7RUFBOEMsR0FDbEQsa0JBQWtCLENBTXBCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/proving_broker/rpc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/proving_broker/rpc.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EAExB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,YAAY,EAAY,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAgC,MAAM,0BAA0B,CAAC;AAKjG,qFAAqF;AACrF,wBAAiB,mBAAmB,qCAMnC;AAWD,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,kBAAkB,CAKrE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,kBAAkB,CAcrE,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAAY,CAAC,gBAAgB,CAGjE,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,YAAY,CAAC,qBAAqB,CAK3E,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,YAAY,CAAC,gBAAgB,GAAG,qBAAqB,CAGlG,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAA8C,GAClD,gBAAgB,CAMlB;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAA8C,GAClD,kBAAkB,CAMpB;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAA8C,GAClD,kBAAkB,CAMpB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EpochNumberSchema } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { createSafeJsonRpcClient } from '@aztec/foundation/json-rpc/client';
|
|
2
3
|
import { ProofUri, ProvingJob, ProvingJobId, ProvingJobStatus } from '@aztec/stdlib/interfaces/server';
|
|
3
4
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
@@ -5,6 +6,19 @@ import { optional } from '@aztec/stdlib/schemas';
|
|
|
5
6
|
import { getVersioningResponseHandler } from '@aztec/stdlib/versioning';
|
|
6
7
|
import { makeTracedFetch } from '@aztec/telemetry-client';
|
|
7
8
|
import { z } from 'zod';
|
|
9
|
+
/** Indefinite backoff for broker communication: 1, 1, 1, 2, 4, 4, 4, ... seconds. */ export function* proverBrokerBackoff() {
|
|
10
|
+
const v = [
|
|
11
|
+
1,
|
|
12
|
+
1,
|
|
13
|
+
1,
|
|
14
|
+
2,
|
|
15
|
+
4
|
|
16
|
+
];
|
|
17
|
+
let i = 0;
|
|
18
|
+
while(true){
|
|
19
|
+
yield v[Math.min(i++, v.length - 1)];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
8
22
|
const ProvingJobFilterSchema = z.object({
|
|
9
23
|
allowList: z.array(z.nativeEnum(ProvingRequestType))
|
|
10
24
|
});
|
|
@@ -28,33 +42,28 @@ export const ProvingJobBrokerSchema = {
|
|
|
28
42
|
...ProvingJobConsumerSchema,
|
|
29
43
|
...ProvingJobProducerSchema
|
|
30
44
|
};
|
|
31
|
-
export
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
45
|
+
export const ProvingJobBrokerDebugSchema = {
|
|
46
|
+
replayProvingJob: z.function().args(ProvingJobId, z.nativeEnum(ProvingRequestType), EpochNumberSchema, ProofUri).returns(ProvingJobStatus)
|
|
47
|
+
};
|
|
48
|
+
export const ProvingJobBrokerSchemaWithDebug = {
|
|
49
|
+
...ProvingJobBrokerSchema,
|
|
50
|
+
...ProvingJobBrokerDebugSchema
|
|
51
|
+
};
|
|
52
|
+
export function createProvingJobBrokerClient(url, versions, fetch = makeTracedFetch(proverBrokerBackoff, false)) {
|
|
36
53
|
return createSafeJsonRpcClient(url, ProvingJobBrokerSchema, {
|
|
37
54
|
namespaceMethods: 'proverBroker',
|
|
38
55
|
fetch,
|
|
39
56
|
onResponse: getVersioningResponseHandler(versions)
|
|
40
57
|
});
|
|
41
58
|
}
|
|
42
|
-
export function createProvingJobProducerClient(url, versions, fetch = makeTracedFetch(
|
|
43
|
-
1,
|
|
44
|
-
2,
|
|
45
|
-
3
|
|
46
|
-
], false)) {
|
|
59
|
+
export function createProvingJobProducerClient(url, versions, fetch = makeTracedFetch(proverBrokerBackoff, false)) {
|
|
47
60
|
return createSafeJsonRpcClient(url, ProvingJobProducerSchema, {
|
|
48
61
|
namespaceMethods: 'provingJobProducer',
|
|
49
62
|
fetch,
|
|
50
63
|
onResponse: getVersioningResponseHandler(versions)
|
|
51
64
|
});
|
|
52
65
|
}
|
|
53
|
-
export function createProvingJobConsumerClient(url, versions, fetch = makeTracedFetch(
|
|
54
|
-
1,
|
|
55
|
-
2,
|
|
56
|
-
3
|
|
57
|
-
], false)) {
|
|
66
|
+
export function createProvingJobConsumerClient(url, versions, fetch = makeTracedFetch(proverBrokerBackoff, false)) {
|
|
58
67
|
return createSafeJsonRpcClient(url, ProvingJobConsumerSchema, {
|
|
59
68
|
namespaceMethods: 'provingJobConsumer',
|
|
60
69
|
fetch,
|
|
@@ -19,9 +19,9 @@ export declare class TestBroker implements ProvingJobProducer {
|
|
|
19
19
|
}
|
|
20
20
|
export declare class MockProver implements ServerCircuitProver {
|
|
21
21
|
constructor();
|
|
22
|
-
getAvmProof(_inputs: AvmCircuitInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<import("@aztec/stdlib/proofs").RecursiveProof<
|
|
23
|
-
getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs,
|
|
24
|
-
getRootParityProof(_inputs: ParityRootPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs,
|
|
22
|
+
getAvmProof(_inputs: AvmCircuitInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<import("@aztec/stdlib/proofs").RecursiveProof<16400>>;
|
|
23
|
+
getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 449>>;
|
|
24
|
+
getRootParityProof(_inputs: ParityRootPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 449>>;
|
|
25
25
|
getPublicChonkVerifierProof(_inputs: PublicChonkVerifierPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
26
26
|
getPrivateTxBaseRollupProof(_baseRollupInput: PrivateTxBaseRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
27
27
|
getPublicTxBaseRollupProof(_inputs: PublicTxBaseRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
@@ -31,7 +31,7 @@ export declare class MockProver implements ServerCircuitProver {
|
|
|
31
31
|
getBlockRootEmptyTxFirstRollupProof(_input: BlockRootEmptyTxFirstRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
32
32
|
getBlockRootRollupProof(_input: BlockRootRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
33
33
|
getBlockRootSingleTxRollupProof(_input: BlockRootSingleTxRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
34
|
-
getBlockMergeRollupProof(_input: BlockMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs,
|
|
34
|
+
getBlockMergeRollupProof(_input: BlockMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, 519>>;
|
|
35
35
|
getCheckpointRootRollupProof(_input: CheckpointRootRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
36
36
|
getCheckpointRootSingleBlockRollupProof(_input: CheckpointRootSingleBlockRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
37
37
|
getCheckpointMergeRollupProof(_input: CheckpointMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-client",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.5914bae",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -68,20 +68,19 @@
|
|
|
68
68
|
]
|
|
69
69
|
},
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@aztec/bb-prover": "0.0.1-commit.
|
|
72
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
73
|
-
"@aztec/constants": "0.0.1-commit.
|
|
74
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
75
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
76
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
77
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
78
|
-
"@aztec/noir-types": "0.0.1-commit.
|
|
79
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
80
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
81
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
82
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
83
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
84
|
-
"@google-cloud/storage": "^7.15.0",
|
|
71
|
+
"@aztec/bb-prover": "0.0.1-commit.5914bae",
|
|
72
|
+
"@aztec/blob-lib": "0.0.1-commit.5914bae",
|
|
73
|
+
"@aztec/constants": "0.0.1-commit.5914bae",
|
|
74
|
+
"@aztec/ethereum": "0.0.1-commit.5914bae",
|
|
75
|
+
"@aztec/foundation": "0.0.1-commit.5914bae",
|
|
76
|
+
"@aztec/kv-store": "0.0.1-commit.5914bae",
|
|
77
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.5914bae",
|
|
78
|
+
"@aztec/noir-types": "0.0.1-commit.5914bae",
|
|
79
|
+
"@aztec/protocol-contracts": "0.0.1-commit.5914bae",
|
|
80
|
+
"@aztec/simulator": "0.0.1-commit.5914bae",
|
|
81
|
+
"@aztec/stdlib": "0.0.1-commit.5914bae",
|
|
82
|
+
"@aztec/telemetry-client": "0.0.1-commit.5914bae",
|
|
83
|
+
"@aztec/world-state": "0.0.1-commit.5914bae",
|
|
85
84
|
"@iarna/toml": "^2.2.5",
|
|
86
85
|
"commander": "^12.1.0",
|
|
87
86
|
"lodash.chunk": "^4.2.0",
|
|
@@ -90,7 +89,7 @@
|
|
|
90
89
|
"zod": "^3.23.8"
|
|
91
90
|
},
|
|
92
91
|
"devDependencies": {
|
|
93
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
92
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.5914bae",
|
|
94
93
|
"@jest/globals": "^30.0.0",
|
|
95
94
|
"@types/jest": "^30.0.0",
|
|
96
95
|
"@types/node": "^22.15.17",
|
|
@@ -44,6 +44,7 @@ export class LightweightCheckpointBuilder {
|
|
|
44
44
|
constructor(
|
|
45
45
|
public readonly checkpointNumber: CheckpointNumber,
|
|
46
46
|
public readonly constants: CheckpointGlobalVariables,
|
|
47
|
+
public feeAssetPriceModifier: bigint,
|
|
47
48
|
public readonly l1ToL2Messages: Fr[],
|
|
48
49
|
private readonly previousCheckpointOutHashes: Fr[],
|
|
49
50
|
public readonly db: MerkleTreeWriteOperations,
|
|
@@ -54,7 +55,7 @@ export class LightweightCheckpointBuilder {
|
|
|
54
55
|
instanceId: `checkpoint-${checkpointNumber}`,
|
|
55
56
|
});
|
|
56
57
|
this.spongeBlob = SpongeBlob.init();
|
|
57
|
-
this.logger.debug('Starting new checkpoint', { constants, l1ToL2Messages });
|
|
58
|
+
this.logger.debug('Starting new checkpoint', { constants, l1ToL2Messages, feeAssetPriceModifier });
|
|
58
59
|
}
|
|
59
60
|
|
|
60
61
|
static async startNewCheckpoint(
|
|
@@ -64,6 +65,7 @@ export class LightweightCheckpointBuilder {
|
|
|
64
65
|
previousCheckpointOutHashes: Fr[],
|
|
65
66
|
db: MerkleTreeWriteOperations,
|
|
66
67
|
bindings?: LoggerBindings,
|
|
68
|
+
feeAssetPriceModifier: bigint = 0n,
|
|
67
69
|
): Promise<LightweightCheckpointBuilder> {
|
|
68
70
|
// Insert l1-to-l2 messages into the tree.
|
|
69
71
|
await db.appendLeaves(
|
|
@@ -74,6 +76,7 @@ export class LightweightCheckpointBuilder {
|
|
|
74
76
|
return new LightweightCheckpointBuilder(
|
|
75
77
|
checkpointNumber,
|
|
76
78
|
constants,
|
|
79
|
+
feeAssetPriceModifier,
|
|
77
80
|
l1ToL2Messages,
|
|
78
81
|
previousCheckpointOutHashes,
|
|
79
82
|
db,
|
|
@@ -90,6 +93,7 @@ export class LightweightCheckpointBuilder {
|
|
|
90
93
|
static async resumeCheckpoint(
|
|
91
94
|
checkpointNumber: CheckpointNumber,
|
|
92
95
|
constants: CheckpointGlobalVariables,
|
|
96
|
+
feeAssetPriceModifier: bigint,
|
|
93
97
|
l1ToL2Messages: Fr[],
|
|
94
98
|
previousCheckpointOutHashes: Fr[],
|
|
95
99
|
db: MerkleTreeWriteOperations,
|
|
@@ -99,6 +103,7 @@ export class LightweightCheckpointBuilder {
|
|
|
99
103
|
const builder = new LightweightCheckpointBuilder(
|
|
100
104
|
checkpointNumber,
|
|
101
105
|
constants,
|
|
106
|
+
feeAssetPriceModifier,
|
|
102
107
|
l1ToL2Messages,
|
|
103
108
|
previousCheckpointOutHashes,
|
|
104
109
|
db,
|
|
@@ -143,6 +148,15 @@ export class LightweightCheckpointBuilder {
|
|
|
143
148
|
return builder;
|
|
144
149
|
}
|
|
145
150
|
|
|
151
|
+
/** Returns how many blocks have been added to this checkpoint so far */
|
|
152
|
+
public getBlockCount() {
|
|
153
|
+
return this.blocks.length;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
public getBlocks() {
|
|
157
|
+
return this.blocks;
|
|
158
|
+
}
|
|
159
|
+
|
|
146
160
|
/**
|
|
147
161
|
* Adds a new block to the checkpoint. The tx effects must have already been inserted into the db if
|
|
148
162
|
* this is called after tx processing, if that's not the case, then set `insertTxsEffects` to true.
|
|
@@ -200,6 +214,13 @@ export class LightweightCheckpointBuilder {
|
|
|
200
214
|
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db);
|
|
201
215
|
this.lastArchives.push(newArchive);
|
|
202
216
|
|
|
217
|
+
const expectedNextLeafIndex = Number(globalVariables.blockNumber) + 1;
|
|
218
|
+
if (newArchive.nextAvailableLeafIndex !== expectedNextLeafIndex) {
|
|
219
|
+
throw new Error(
|
|
220
|
+
`Archive tree next leaf index mismatch after building block ${globalVariables.blockNumber} (expected ${expectedNextLeafIndex} but got ${newArchive.nextAvailableLeafIndex})`,
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
|
|
203
224
|
const indexWithinCheckpoint = IndexWithinCheckpoint(this.blocks.length);
|
|
204
225
|
const block = new L2Block(newArchive, header, body, this.checkpointNumber, indexWithinCheckpoint);
|
|
205
226
|
this.blocks.push(block);
|
|
@@ -232,7 +253,7 @@ export class LightweightCheckpointBuilder {
|
|
|
232
253
|
|
|
233
254
|
const newArchive = this.lastArchives[this.lastArchives.length - 1];
|
|
234
255
|
|
|
235
|
-
const blobs = getBlobsPerL1Block(this.blobFields);
|
|
256
|
+
const blobs = await getBlobsPerL1Block(this.blobFields);
|
|
236
257
|
const blobsHash = computeBlobsHashFromBlobs(blobs);
|
|
237
258
|
|
|
238
259
|
const inHash = computeInHashFromL1ToL2Messages(this.l1ToL2Messages);
|
|
@@ -243,8 +264,7 @@ export class LightweightCheckpointBuilder {
|
|
|
243
264
|
);
|
|
244
265
|
const epochOutHash = accumulateCheckpointOutHashes([...this.previousCheckpointOutHashes, checkpointOutHash]);
|
|
245
266
|
|
|
246
|
-
//
|
|
247
|
-
// timestamp of a checkpoint is the timestamp of the last block in the checkpoint.
|
|
267
|
+
// All blocks in the checkpoint have the same timestamp
|
|
248
268
|
const timestamp = blocks[blocks.length - 1].timestamp;
|
|
249
269
|
|
|
250
270
|
const totalManaUsed = blocks.reduce((acc, block) => acc.add(block.header.totalManaUsed), Fr.ZERO);
|
|
@@ -263,13 +283,14 @@ export class LightweightCheckpointBuilder {
|
|
|
263
283
|
totalManaUsed,
|
|
264
284
|
});
|
|
265
285
|
|
|
266
|
-
return new Checkpoint(newArchive, header, blocks, this.checkpointNumber);
|
|
286
|
+
return new Checkpoint(newArchive, header, blocks, this.checkpointNumber, this.feeAssetPriceModifier);
|
|
267
287
|
}
|
|
268
288
|
|
|
269
289
|
clone() {
|
|
270
290
|
const clone = new LightweightCheckpointBuilder(
|
|
271
291
|
this.checkpointNumber,
|
|
272
292
|
this.constants,
|
|
293
|
+
this.feeAssetPriceModifier,
|
|
273
294
|
[...this.l1ToL2Messages],
|
|
274
295
|
[...this.previousCheckpointOutHashes],
|
|
275
296
|
this.db,
|