@aztec/prover-client 0.0.1-commit.2ed92850 → 0.0.1-commit.3469e52
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 +4 -4
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
- package/dest/light/lightweight_checkpoint_builder.js +2 -2
- package/dest/orchestrator/block-building-helpers.js +1 -1
- package/dest/orchestrator/orchestrator.d.ts +3 -6
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +11 -26
- package/dest/prover-client/prover-client.d.ts +1 -1
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +1 -1
- package/dest/proving_broker/config.d.ts +1 -5
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +1 -7
- package/package.json +15 -15
- package/src/light/lightweight_checkpoint_builder.ts +5 -5
- package/src/orchestrator/block-building-helpers.ts +1 -1
- package/src/orchestrator/orchestrator.ts +11 -24
- package/src/prover-client/prover-client.ts +1 -7
- package/src/proving_broker/config.ts +0 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
-
import {
|
|
3
|
+
import { L2BlockNew } from '@aztec/stdlib/block';
|
|
4
4
|
import { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
5
5
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
6
6
|
import { type CheckpointGlobalVariables, type GlobalVariables, type ProcessedTx, StateReference } from '@aztec/stdlib/tx';
|
|
@@ -29,7 +29,7 @@ export declare class LightweightCheckpointBuilder {
|
|
|
29
29
|
* Unlike startNewCheckpoint, this does NOT append l1ToL2Messages to the tree since they
|
|
30
30
|
* were already added when the blocks were originally built.
|
|
31
31
|
*/
|
|
32
|
-
static resumeCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], db: MerkleTreeWriteOperations, existingBlocks:
|
|
32
|
+
static resumeCheckpoint(checkpointNumber: CheckpointNumber, constants: CheckpointGlobalVariables, l1ToL2Messages: Fr[], previousCheckpointOutHashes: Fr[], db: MerkleTreeWriteOperations, existingBlocks: L2BlockNew[]): Promise<LightweightCheckpointBuilder>;
|
|
33
33
|
/**
|
|
34
34
|
* Adds a new block to the checkpoint. The tx effects must have already been inserted into the db if
|
|
35
35
|
* this is called after tx processing, if that's not the case, then set `insertTxsEffects` to true.
|
|
@@ -37,8 +37,8 @@ export declare class LightweightCheckpointBuilder {
|
|
|
37
37
|
addBlock(globalVariables: GlobalVariables, txs: ProcessedTx[], opts?: {
|
|
38
38
|
insertTxsEffects?: boolean;
|
|
39
39
|
expectedEndState?: StateReference;
|
|
40
|
-
}): Promise<
|
|
40
|
+
}): Promise<L2BlockNew>;
|
|
41
41
|
completeCheckpoint(): Promise<Checkpoint>;
|
|
42
42
|
clone(): LightweightCheckpointBuilder;
|
|
43
43
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHR3ZWlnaHRfY2hlY2twb2ludF9idWlsZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGlnaHQvbGlnaHR3ZWlnaHRfY2hlY2twb2ludF9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBRS9GLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFRakYsT0FBTyxFQUNMLEtBQUsseUJBQXlCLEVBQzlCLEtBQUssZUFBZSxFQUNwQixLQUFLLFdBQVcsRUFDaEIsY0FBYyxFQUNmLE1BQU0sa0JBQWtCLENBQUM7QUFRMUI7Ozs7O0dBS0c7QUFDSCxxQkFBYSw0QkFBNEI7YUFTckIsZ0JBQWdCLEVBQUUsZ0JBQWdCO2FBQ2xDLFNBQVMsRUFBRSx5QkFBeUI7YUFDcEMsY0FBYyxFQUFFLEVBQUUsRUFBRTtJQUNwQyxPQUFPLENBQUMsUUFBUSxDQUFDLDJCQUEyQjthQUM1QixFQUFFLEVBQUUseUJBQXlCO0lBWi9DLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFrRDtJQUV6RSxPQUFPLENBQUMsWUFBWSxDQUFnQztJQUNwRCxPQUFPLENBQUMsVUFBVSxDQUFhO0lBQy9CLE9BQU8sQ0FBQyxNQUFNLENBQW9CO0lBQ2xDLE9BQU8sQ0FBQyxVQUFVLENBQVk7SUFFOUIsWUFDa0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLFNBQVMsRUFBRSx5QkFBeUIsRUFDcEMsY0FBYyxFQUFFLEVBQUUsRUFBRSxFQUNuQiwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsRUFDbEMsRUFBRSxFQUFFLHlCQUF5QixFQUk5QztJQUVELE9BQWEsa0JBQWtCLENBQzdCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxTQUFTLEVBQUUseUJBQXlCLEVBQ3BDLGNBQWMsRUFBRSxFQUFFLEVBQUUsRUFDcEIsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLEVBQ2pDLEVBQUUsRUFBRSx5QkFBeUIsR0FDNUIsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBY3ZDO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFhLGdCQUFnQixDQUMzQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsU0FBUyxFQUFFLHlCQUF5QixFQUNwQyxjQUFjLEVBQUUsRUFBRSxFQUFFLEVBQ3BCLDJCQUEyQixFQUFFLEVBQUUsRUFBRSxFQUNqQyxFQUFFLEVBQUUseUJBQXlCLEVBQzdCLGNBQWMsRUFBRSxVQUFVLEVBQUUsR0FDM0IsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBNkN2QztJQUVEOzs7T0FHRztJQUNVLFFBQVEsQ0FDbkIsZUFBZSxFQUFFLGVBQWUsRUFDaEMsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUNsQixJQUFJLEdBQUU7UUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUFDLGdCQUFnQixDQUFDLEVBQUUsY0FBYyxDQUFBO0tBQU8sR0FDM0UsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQWlFckI7SUFFSyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBOEM5QztJQUVELEtBQUssaUNBYUo7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightweight_checkpoint_builder.d.ts","sourceRoot":"","sources":["../../src/light/lightweight_checkpoint_builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAyB,MAAM,iCAAiC,CAAC;AAE/F,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"lightweight_checkpoint_builder.d.ts","sourceRoot":"","sources":["../../src/light/lightweight_checkpoint_builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAyB,MAAM,iCAAiC,CAAC;AAE/F,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAQjF,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAQ1B;;;;;GAKG;AACH,qBAAa,4BAA4B;aASrB,gBAAgB,EAAE,gBAAgB;aAClC,SAAS,EAAE,yBAAyB;aACpC,cAAc,EAAE,EAAE,EAAE;IACpC,OAAO,CAAC,QAAQ,CAAC,2BAA2B;aAC5B,EAAE,EAAE,yBAAyB;IAZ/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkD;IAEzE,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAY;IAE9B,YACkB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,yBAAyB,EACpC,cAAc,EAAE,EAAE,EAAE,EACnB,2BAA2B,EAAE,EAAE,EAAE,EAClC,EAAE,EAAE,yBAAyB,EAI9C;IAED,OAAa,kBAAkB,CAC7B,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,yBAAyB,EACpC,cAAc,EAAE,EAAE,EAAE,EACpB,2BAA2B,EAAE,EAAE,EAAE,EACjC,EAAE,EAAE,yBAAyB,GAC5B,OAAO,CAAC,4BAA4B,CAAC,CAcvC;IAED;;;;;OAKG;IACH,OAAa,gBAAgB,CAC3B,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,yBAAyB,EACpC,cAAc,EAAE,EAAE,EAAE,EACpB,2BAA2B,EAAE,EAAE,EAAE,EACjC,EAAE,EAAE,yBAAyB,EAC7B,cAAc,EAAE,UAAU,EAAE,GAC3B,OAAO,CAAC,4BAA4B,CAAC,CA6CvC;IAED;;;OAGG;IACU,QAAQ,CACnB,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,WAAW,EAAE,EAClB,IAAI,GAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,cAAc,CAAA;KAAO,GAC3E,OAAO,CAAC,UAAU,CAAC,CAiErB;IAEK,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC,CA8C9C;IAED,KAAK,iCAaJ;CACF"}
|
|
@@ -4,7 +4,7 @@ import { IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
|
|
|
4
4
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
5
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import { createLogger } from '@aztec/foundation/log';
|
|
7
|
-
import {
|
|
7
|
+
import { L2BlockNew } from '@aztec/stdlib/block';
|
|
8
8
|
import { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
9
9
|
import { accumulateCheckpointOutHashes, computeCheckpointOutHash, computeInHashFromL1ToL2Messages } from '@aztec/stdlib/messaging';
|
|
10
10
|
import { CheckpointHeader, computeBlockHeadersHash } from '@aztec/stdlib/rollup';
|
|
@@ -120,7 +120,7 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffects } from '.
|
|
|
120
120
|
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db);
|
|
121
121
|
this.lastArchives.push(newArchive);
|
|
122
122
|
const indexWithinCheckpoint = IndexWithinCheckpoint(this.blocks.length);
|
|
123
|
-
const block = new
|
|
123
|
+
const block = new L2BlockNew(newArchive, header, body, this.checkpointNumber, indexWithinCheckpoint);
|
|
124
124
|
this.blocks.push(block);
|
|
125
125
|
await this.spongeBlob.absorb(blockBlobFields);
|
|
126
126
|
this.blobFields.push(...blockBlobFields);
|
|
@@ -25,7 +25,7 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderH
|
|
|
25
25
|
// Get the note hash subtree root sibling path for insertion.
|
|
26
26
|
const noteHashSubtreeRootSiblingPath = assertLength(await getSubtreeSiblingPath(MerkleTreeId.NOTE_HASH_TREE, NOTE_HASH_SUBTREE_HEIGHT, db), NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH);
|
|
27
27
|
const { nullifierInsertionResult, publicDataInsertionResult } = await insertSideEffects(tx, db);
|
|
28
|
-
const blockHash =
|
|
28
|
+
const blockHash = await tx.data.constants.anchorBlockHeader.hash();
|
|
29
29
|
const anchorBlockArchiveSiblingPath = (await getMembershipWitnessFor(blockHash, MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT, db)).siblingPath;
|
|
30
30
|
const contractClassLogsFields = makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, (i)=>tx.txEffect.contractClassLogs[i]?.fields || ContractClassLogFields.empty());
|
|
31
31
|
if (tx.avmProvingRequest) {
|
|
@@ -26,13 +26,12 @@ export declare class ProvingOrchestrator implements EpochProver {
|
|
|
26
26
|
private dbProvider;
|
|
27
27
|
private prover;
|
|
28
28
|
private readonly proverId;
|
|
29
|
-
private readonly cancelJobsOnStop;
|
|
30
29
|
private provingState;
|
|
31
30
|
private pendingProvingJobs;
|
|
32
31
|
private provingPromise;
|
|
33
32
|
private metrics;
|
|
34
33
|
private dbs;
|
|
35
|
-
constructor(dbProvider: ReadonlyWorldStateAccess & ForkMerkleTreeOperations, prover: ServerCircuitProver, proverId: EthAddress,
|
|
34
|
+
constructor(dbProvider: ReadonlyWorldStateAccess & ForkMerkleTreeOperations, prover: ServerCircuitProver, proverId: EthAddress, telemetryClient?: TelemetryClient);
|
|
36
35
|
get tracer(): Tracer;
|
|
37
36
|
getProverId(): EthAddress;
|
|
38
37
|
getNumActiveForks(): number;
|
|
@@ -72,9 +71,7 @@ export declare class ProvingOrchestrator implements EpochProver {
|
|
|
72
71
|
setBlockCompleted(blockNumber: BlockNumber, expectedHeader?: BlockHeader): Promise<BlockHeader>;
|
|
73
72
|
protected verifyBuiltBlockAgainstSyncedState(provingState: BlockProvingState): Promise<void>;
|
|
74
73
|
/**
|
|
75
|
-
* Cancel any further proving
|
|
76
|
-
* If cancelJobsOnStop is true, aborts all pending jobs with the broker (which marks them as 'Aborted').
|
|
77
|
-
* If cancelJobsOnStop is false (default), jobs remain in the broker queue and can be reused on restart/reorg.
|
|
74
|
+
* Cancel any further proving
|
|
78
75
|
*/
|
|
79
76
|
cancel(): void;
|
|
80
77
|
/**
|
|
@@ -123,4 +120,4 @@ export declare class ProvingOrchestrator implements EpochProver {
|
|
|
123
120
|
private enqueueVM;
|
|
124
121
|
private checkAndEnqueueBaseRollup;
|
|
125
122
|
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JjaGVzdHJhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL29yY2hlc3RyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFjLE1BQU0sdUJBQXVCLENBQUM7QUFRN0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFRcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUNWLFdBQVcsRUFDWCx3QkFBd0IsRUFHeEIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNwQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFNTCxzQkFBc0IsRUFLdEIsc0JBQXNCLEVBQ3ZCLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBRUwsS0FBSyxlQUFlLEVBQ3BCLEtBQUssTUFBTSxFQUlaLE1BQU0seUJBQXlCLENBQUM7QUFlakMsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVFsRTs7Ozs7Ozs7O0dBU0c7QUFFSDs7R0FFRztBQUNILHFCQUFhLG1CQUFvQixZQUFXLFdBQVc7SUFVbkQsT0FBTyxDQUFDLFVBQVU7SUFDbEIsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFYM0IsT0FBTyxDQUFDLFlBQVksQ0FBNEM7SUFDaEUsT0FBTyxDQUFDLGtCQUFrQixDQUF5QjtJQUVuRCxPQUFPLENBQUMsY0FBYyxDQUFpRDtJQUN2RSxPQUFPLENBQUMsT0FBTyxDQUE2QjtJQUU1QyxPQUFPLENBQUMsR0FBRyxDQUEwRDtJQUVyRSxZQUNVLFVBQVUsRUFBRSx3QkFBd0IsR0FBRyx3QkFBd0IsRUFDL0QsTUFBTSxFQUFFLG1CQUFtQixFQUNsQixRQUFRLEVBQUUsVUFBVSxFQUNyQyxlQUFlLEdBQUUsZUFBc0MsRUFHeEQ7SUFFRCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBRW5CO0lBRU0sV0FBVyxJQUFJLFVBQVUsQ0FFL0I7SUFFTSxpQkFBaUIsV0FFdkI7SUFFTSxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUczQjtJQUVNLGFBQWEsQ0FDbEIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsbUJBQW1CLEVBQUUsTUFBTSxFQUMzQiwyQkFBMkIsRUFBRSwyQkFBMkIsUUFvQnpEO0lBRUQ7Ozs7Ozs7T0FPRztJQUNVLGtCQUFrQixDQUM3QixlQUFlLEVBQUUsTUFBTSxFQUN2QixTQUFTLEVBQUUsc0JBQXNCLEVBQ2pDLGNBQWMsRUFBRSxFQUFFLEVBQUUsRUFDcEIsY0FBYyxFQUFFLE1BQU0sRUFDdEIscUNBQXFDLEVBQUUsV0FBVyxpQkF3Q25EO0lBRUQ7Ozs7OztPQU1HO0lBSVUsYUFBYSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkEyRDFGO0lBRUQ7OztPQUdHO0lBSVUsTUFBTSxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBd0ZyRDtJQUVEOzs7T0FHRztJQUVJLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsaUJBc0IxQztJQUVEOzs7T0FHRztJQUlVLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0E0QzNHO0lBR0QsVUFBZ0Isa0NBQWtDLENBQUMsWUFBWSxFQUFFLGlCQUFpQixpQkFnRGpGO0lBRUQ7O09BRUc7SUFDSSxNQUFNLFNBTVo7SUFFRDs7T0FFRztJQUNVLGFBQWEsSUFBSSxPQUFPLENBQUM7UUFDcEMsWUFBWSxFQUFFLHNCQUFzQixDQUFDO1FBQ3JDLEtBQUssRUFBRSxLQUFLLENBQUM7UUFDYixpQkFBaUIsRUFBRSxXQUFXLENBQUM7S0FDaEMsQ0FBQyxDQW9CRDtZQUVhLGFBQWE7SUFlM0I7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsZUFBZTtZQXdEVCx1QkFBdUI7WUFtQ3ZCLHVCQUF1QjtJQWtDckMsT0FBTyxDQUFDLGlCQUFpQjtJQXFEekIsT0FBTyxDQUFDLHlCQUF5QjtJQStCakMsT0FBTyxDQUFDLHNCQUFzQjtJQWlDOUIsT0FBTyxDQUFDLGtCQUFrQjtJQStCMUIsT0FBTyxDQUFDLHNCQUFzQjtJQTREOUIsT0FBTyxDQUFDLHdCQUF3QjtJQWtDaEMsT0FBTyxDQUFDLGdDQUFnQztJQVV4QyxPQUFPLENBQUMsd0JBQXdCO0lBZ0NoQyxPQUFPLENBQUMsdUJBQXVCO0lBNkIvQixPQUFPLENBQUMsMkJBQTJCO0lBNERuQyxPQUFPLENBQUMsNEJBQTRCO0lBK0JwQyxPQUFPLENBQUMsbUJBQW1CO0lBa0MzQixPQUFPLENBQUMsaUJBQWlCO0lBNEJ6QixPQUFPLENBQUMsOEJBQThCO0lBYXRDLE9BQU8sQ0FBQyw4QkFBOEI7SUFTdEMsT0FBTyxDQUFDLG1DQUFtQztJQWEzQyxPQUFPLENBQUMsbUNBQW1DO0lBUTNDLE9BQU8sQ0FBQyx3Q0FBd0M7SUFhaEQsT0FBTyxDQUFDLHlCQUF5QjtJQVNqQzs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxTQUFTO0lBMkJqQixPQUFPLENBQUMseUJBQXlCO0NBV2xDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAc,MAAM,uBAAuB,CAAC;AAQ7F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAQpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EACV,WAAW,EACX,wBAAwB,EAGxB,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAML,sBAAsB,EAKtB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,MAAM,EAIZ,MAAM,yBAAyB,CAAC;AAejC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -414,7 +414,6 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
414
414
|
dbProvider;
|
|
415
415
|
prover;
|
|
416
416
|
proverId;
|
|
417
|
-
cancelJobsOnStop;
|
|
418
417
|
static{
|
|
419
418
|
({ e: [_initProto] } = _apply_decs_2203_r(this, [
|
|
420
419
|
[
|
|
@@ -450,11 +449,10 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
450
449
|
metrics;
|
|
451
450
|
// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
|
|
452
451
|
dbs;
|
|
453
|
-
constructor(dbProvider, prover, proverId,
|
|
452
|
+
constructor(dbProvider, prover, proverId, telemetryClient = getTelemetryClient()){
|
|
454
453
|
this.dbProvider = dbProvider;
|
|
455
454
|
this.prover = prover;
|
|
456
455
|
this.proverId = proverId;
|
|
457
|
-
this.cancelJobsOnStop = cancelJobsOnStop;
|
|
458
456
|
this.provingState = (_initProto(this), undefined);
|
|
459
457
|
this.pendingProvingJobs = [];
|
|
460
458
|
this.provingPromise = undefined;
|
|
@@ -505,10 +503,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
505
503
|
const lastBlockNumber = headerOfLastBlockInPreviousCheckpoint.globalVariables.blockNumber;
|
|
506
504
|
const db = await this.dbProvider.fork(lastBlockNumber);
|
|
507
505
|
const firstBlockNumber = BlockNumber(lastBlockNumber + 1);
|
|
508
|
-
this.dbs.set(firstBlockNumber,
|
|
509
|
-
fork: db,
|
|
510
|
-
cleanupPromise: undefined
|
|
511
|
-
});
|
|
506
|
+
this.dbs.set(firstBlockNumber, db);
|
|
512
507
|
// Get archive sibling path before any block in this checkpoint lands.
|
|
513
508
|
const lastArchiveSiblingPath = await getLastSiblingPath(MerkleTreeId.ARCHIVE, db);
|
|
514
509
|
// Insert all the l1 to l2 messages into the db. And get the states before and after the insertion.
|
|
@@ -538,12 +533,9 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
538
533
|
if (!this.dbs.has(blockNumber)) {
|
|
539
534
|
// Fork world state at the end of the immediately previous block
|
|
540
535
|
const db = await this.dbProvider.fork(BlockNumber(blockNumber - 1));
|
|
541
|
-
this.dbs.set(blockNumber,
|
|
542
|
-
fork: db,
|
|
543
|
-
cleanupPromise: undefined
|
|
544
|
-
});
|
|
536
|
+
this.dbs.set(blockNumber, db);
|
|
545
537
|
}
|
|
546
|
-
const db = this.dbs.get(blockNumber)
|
|
538
|
+
const db = this.dbs.get(blockNumber);
|
|
547
539
|
// Get archive snapshot and sibling path before any txs in this block lands.
|
|
548
540
|
const lastArchiveTreeSnapshot = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
|
|
549
541
|
const lastArchiveSiblingPath = await getRootTreeSiblingPath(MerkleTreeId.ARCHIVE, db);
|
|
@@ -593,7 +585,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
593
585
|
throw new Error(`Block ${blockNumber} has been initialized with transactions.`);
|
|
594
586
|
}
|
|
595
587
|
logger.info(`Adding ${txs.length} transactions to block ${blockNumber}`);
|
|
596
|
-
const db = this.dbs.get(blockNumber)
|
|
588
|
+
const db = this.dbs.get(blockNumber);
|
|
597
589
|
const lastArchive = provingState.lastArchiveTreeSnapshot;
|
|
598
590
|
const newL1ToL2MessageTreeSnapshot = provingState.newL1ToL2MessageTreeSnapshot;
|
|
599
591
|
const spongeBlobState = provingState.getStartSpongeBlob().clone();
|
|
@@ -683,7 +675,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
683
675
|
throw new Error('Block header mismatch');
|
|
684
676
|
}
|
|
685
677
|
// Get db for this block
|
|
686
|
-
const db = this.dbs.get(provingState.blockNumber)
|
|
678
|
+
const db = this.dbs.get(provingState.blockNumber);
|
|
687
679
|
// Update the archive tree, so we're ready to start processing the next block:
|
|
688
680
|
logger.verbose(`Updating archive tree with block ${provingState.blockNumber} header ${(await header.hash()).toString()}`);
|
|
689
681
|
await db.updateArchive(header);
|
|
@@ -710,7 +702,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
710
702
|
}
|
|
711
703
|
// Get db for this block
|
|
712
704
|
const blockNumber = provingState.blockNumber;
|
|
713
|
-
const db = this.dbs.get(blockNumber)
|
|
705
|
+
const db = this.dbs.get(blockNumber);
|
|
714
706
|
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
|
|
715
707
|
const syncedArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.dbProvider.getSnapshot(blockNumber));
|
|
716
708
|
if (!syncedArchive.equals(newArchive)) {
|
|
@@ -731,14 +723,10 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
731
723
|
void this.cleanupDBFork(blockNumber);
|
|
732
724
|
}
|
|
733
725
|
/**
|
|
734
|
-
* Cancel any further proving
|
|
735
|
-
* If cancelJobsOnStop is true, aborts all pending jobs with the broker (which marks them as 'Aborted').
|
|
736
|
-
* If cancelJobsOnStop is false (default), jobs remain in the broker queue and can be reused on restart/reorg.
|
|
726
|
+
* Cancel any further proving
|
|
737
727
|
*/ cancel() {
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
controller.abort();
|
|
741
|
-
}
|
|
728
|
+
for (const controller of this.pendingProvingJobs){
|
|
729
|
+
controller.abort();
|
|
742
730
|
}
|
|
743
731
|
this.provingState?.cancel();
|
|
744
732
|
}
|
|
@@ -767,10 +755,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
767
755
|
return;
|
|
768
756
|
}
|
|
769
757
|
try {
|
|
770
|
-
|
|
771
|
-
fork.cleanupPromise = fork.fork.close();
|
|
772
|
-
}
|
|
773
|
-
await fork.cleanupPromise;
|
|
758
|
+
await fork.close();
|
|
774
759
|
this.dbs.delete(blockNumber);
|
|
775
760
|
} catch (err) {
|
|
776
761
|
logger.error(`Error closing db for block ${blockNumber}`, err);
|
|
@@ -39,4 +39,4 @@ export declare class ProverClient implements EpochProverManager {
|
|
|
39
39
|
private stopAgents;
|
|
40
40
|
}
|
|
41
41
|
export declare function buildServerCircuitProver(config: ActualProverConfig & ACVMConfig & BBConfig, telemetry: TelemetryClient): Promise<ServerCircuitProver>;
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLWNsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1jbGllbnQvcHJvdmVyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUUsS0FBSyxRQUFRLEVBQTJDLE1BQU0sa0JBQWtCLENBQUM7QUFFM0csT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHaEUsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNoQixLQUFLLGtCQUFrQixFQUN2QixLQUFLLHdCQUF3QixFQUM3QixLQUFLLGdCQUFnQixFQUNyQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLHdCQUF3QixFQUM3QixLQUFLLG1CQUFtQixFQUV6QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU92RCxzSEFBc0g7QUFDdEgscUJBQWEsWUFBYSxZQUFXLGtCQUFrQjtJQVFuRCxPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxrQkFBa0I7SUFDMUIsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsR0FBRztJQVpiLE9BQU8sQ0FBQyxPQUFPLENBQVM7SUFDeEIsT0FBTyxDQUFDLE1BQU0sQ0FBc0I7SUFFcEMsT0FBTyxDQUFDLFVBQVUsQ0FBYTtJQUMvQixPQUFPLENBQUMsZ0JBQWdCLENBQXlCO0lBRWpELE9BQU8sZUFVTjtJQUVNLGlCQUFpQixJQUFJLFdBQVcsQ0FJdEM7SUFFTSxXQUFXLElBQUksVUFBVSxDQUUvQjtJQUVLLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBWTNFO0lBRUQ7O09BRUc7SUFDVSxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU9sQztJQUVEOztPQUVHO0lBQ1UsSUFBSSxrQkFPaEI7SUFFRDs7Ozs7T0FLRztJQUNILE9BQW9CLEdBQUcsQ0FDckIsTUFBTSxFQUFFLGtCQUFrQixFQUMxQixVQUFVLEVBQUUsd0JBQXdCLEdBQUcsd0JBQXdCLEVBQy9ELE1BQU0sRUFBRSxnQkFBZ0IsRUFDeEIsU0FBUyxHQUFFLGVBQXNDLHlCQUtsRDtJQUVNLG1CQUFtQixJQUFJLGtCQUFrQixDQU0vQztZQUVhLG9CQUFvQjtZQW1CcEIsVUFBVTtDQUd6QjtBQUVELHdCQUFnQix3QkFBd0IsQ0FDdEMsTUFBTSxFQUFFLGtCQUFrQixHQUFHLFVBQVUsR0FBRyxRQUFRLEVBQ2xELFNBQVMsRUFBRSxlQUFlLEdBQ3pCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQVU5QiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-client.d.ts","sourceRoot":"","sources":["../../src/prover-client/prover-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAA2C,MAAM,kBAAkB,CAAC;AAE3G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAEvB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EAEzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOvD,sHAAsH;AACtH,qBAAa,YAAa,YAAW,kBAAkB;IAQnD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IAZb,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,eAUN;IAEM,iBAAiB,IAAI,WAAW,
|
|
1
|
+
{"version":3,"file":"prover-client.d.ts","sourceRoot":"","sources":["../../src/prover-client/prover-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAA2C,MAAM,kBAAkB,CAAC;AAE3G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAEvB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EAEzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOvD,sHAAsH;AACtH,qBAAa,YAAa,YAAW,kBAAkB;IAQnD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IAZb,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,eAUN;IAEM,iBAAiB,IAAI,WAAW,CAItC;IAEM,WAAW,IAAI,UAAU,CAE/B;IAEK,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3E;IAED;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAOlC;IAED;;OAEG;IACU,IAAI,kBAOhB;IAED;;;;;OAKG;IACH,OAAoB,GAAG,CACrB,MAAM,EAAE,kBAAkB,EAC1B,UAAU,EAAE,wBAAwB,GAAG,wBAAwB,EAC/D,MAAM,EAAE,gBAAgB,EACxB,SAAS,GAAE,eAAsC,yBAKlD;IAEM,mBAAmB,IAAI,kBAAkB,CAM/C;YAEa,oBAAoB;YAmBpB,UAAU;CAGzB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,kBAAkB,GAAG,UAAU,GAAG,QAAQ,EAClD,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAU9B"}
|
|
@@ -34,7 +34,7 @@ import { ServerEpochProver } from './server-epoch-prover.js';
|
|
|
34
34
|
}
|
|
35
35
|
createEpochProver() {
|
|
36
36
|
const facade = new BrokerCircuitProverFacade(this.orchestratorClient, this.proofStore, this.failedProofStore);
|
|
37
|
-
const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.config.proverId, this.
|
|
37
|
+
const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.config.proverId, this.telemetry);
|
|
38
38
|
return new ServerEpochProver(facade, orchestrator);
|
|
39
39
|
}
|
|
40
40
|
getProverId() {
|
|
@@ -66,8 +66,6 @@ export declare const ProverAgentConfig: z.ZodObject<{
|
|
|
66
66
|
proverTestDelayFactor: z.ZodNumber;
|
|
67
67
|
/** The delay (ms) to inject during fake proof verification */
|
|
68
68
|
proverTestVerificationDelayMs: z.ZodOptional<z.ZodNumber>;
|
|
69
|
-
/** Whether to abort pending proving jobs when the orchestrator is cancelled */
|
|
70
|
-
cancelJobsOnStop: z.ZodBoolean;
|
|
71
69
|
}, "strip", z.ZodTypeAny, {
|
|
72
70
|
proverAgentCount: number;
|
|
73
71
|
proverAgentProofTypes: ProvingRequestType[];
|
|
@@ -78,7 +76,6 @@ export declare const ProverAgentConfig: z.ZodObject<{
|
|
|
78
76
|
proverTestDelayMs: number;
|
|
79
77
|
proverTestDelayFactor: number;
|
|
80
78
|
proverTestVerificationDelayMs?: number | undefined;
|
|
81
|
-
cancelJobsOnStop: boolean;
|
|
82
79
|
}, {
|
|
83
80
|
proverAgentCount: number;
|
|
84
81
|
proverAgentProofTypes: ProvingRequestType[];
|
|
@@ -89,8 +86,7 @@ export declare const ProverAgentConfig: z.ZodObject<{
|
|
|
89
86
|
proverTestDelayMs: number;
|
|
90
87
|
proverTestDelayFactor: number;
|
|
91
88
|
proverTestVerificationDelayMs?: number | undefined;
|
|
92
|
-
cancelJobsOnStop: boolean;
|
|
93
89
|
}>;
|
|
94
90
|
export type ProverAgentConfig = z.infer<typeof ProverAgentConfig>;
|
|
95
91
|
export declare const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig>;
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBMEIsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RixPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTFELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsZUFBTyxNQUFNLGtCQUFrQjtJQUM3QixxRkFBcUY7O0lBRXJGLHVIQUF1SDs7SUFFdkgsNkZBQTZGOztJQUU3Riw4RUFBOEU7O0lBRTlFLHFDQUFxQzs7SUFFckMsNkZBQTZGOztJQUU3RiwrRUFBK0U7O0lBRS9FLDRDQUE0Qzs7SUFFNUMsdURBQXVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBRXZELENBQUM7QUFFSCxNQUFNLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLGtCQUFrQixDQUFDLEdBQ2pFLElBQUksQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLEdBQUcsZUFBZSxDQUFDLEdBQzdELGNBQWMsR0FDZCxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRXJDLGVBQU8sTUFBTSwwQkFBMEIsRUFBRSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0F1QzdFLENBQUM7QUFFRixlQUFPLE1BQU0seUJBQXlCLEVBQUUsa0JBQWlFLENBQUM7QUFFMUcsZUFBTyxNQUFNLGlCQUFpQjtJQUM1QiwyQ0FBMkM7O0lBRTNDLHdEQUF3RDs7SUFFeEQsZ0RBQWdEOztJQUVoRCwrQ0FBK0M7O0lBRS9DLHVDQUF1Qzs7SUFFdkMsZ0RBQWdEOztJQUVoRCwyREFBMkQ7O0lBRTNELDhFQUE4RTs7SUFFOUUsOERBQThEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBRTlELENBQUM7QUFFSCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLGlCQUFpQixDQUFDLENBQUM7QUFFbEUsZUFBTyxNQUFNLHlCQUF5QixFQUFFLGtCQUFrQixDQUFDLGlCQUFpQixDQWlEM0UsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/proving_broker/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;IAC7B,qFAAqF;;IAErF,uHAAuH;;IAEvH,6FAA6F;;IAE7F,8EAA8E;;IAE9E,qCAAqC;;IAErC,6FAA6F;;IAE7F,+EAA+E;;IAE/E,4CAA4C;;IAE5C,uDAAuD;;;;;;;;;;;;;;;;;;;;;;EAEvD,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACjE,IAAI,CAAC,eAAe,EAAE,oBAAoB,GAAG,eAAe,CAAC,GAC7D,cAAc,GACd,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAErC,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CAuC7E,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAiE,CAAC;AAE1G,eAAO,MAAM,iBAAiB;IAC5B,2CAA2C;;IAE3C,wDAAwD;;IAExD,gDAAgD;;IAEhD,+CAA+C;;IAE/C,uCAAuC;;IAEvC,gDAAgD;;IAEhD,2DAA2D;;IAE3D,8EAA8E;;IAE9E,8DAA8D
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/proving_broker/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;IAC7B,qFAAqF;;IAErF,uHAAuH;;IAEvH,6FAA6F;;IAE7F,8EAA8E;;IAE9E,qCAAqC;;IAErC,6FAA6F;;IAE7F,+EAA+E;;IAE/E,4CAA4C;;IAE5C,uDAAuD;;;;;;;;;;;;;;;;;;;;;;EAEvD,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACjE,IAAI,CAAC,eAAe,EAAE,oBAAoB,GAAG,eAAe,CAAC,GAC7D,cAAc,GACd,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAErC,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CAuC7E,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAiE,CAAC;AAE1G,eAAO,MAAM,iBAAiB;IAC5B,2CAA2C;;IAE3C,wDAAwD;;IAExD,gDAAgD;;IAEhD,+CAA+C;;IAE/C,uCAAuC;;IAEvC,gDAAgD;;IAEhD,2DAA2D;;IAE3D,8EAA8E;;IAE9E,8DAA8D;;;;;;;;;;;;;;;;;;;;;;EAE9D,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CAiD3E,CAAC"}
|
|
@@ -71,8 +71,7 @@ export const ProverAgentConfig = z.object({
|
|
|
71
71
|
]),
|
|
72
72
|
/** If using fixed delay, the time each operation takes. */ proverTestDelayMs: z.number(),
|
|
73
73
|
/** If using realistic delays, what percentage of realistic times to apply. */ proverTestDelayFactor: z.number(),
|
|
74
|
-
/** The delay (ms) to inject during fake proof verification */ proverTestVerificationDelayMs: z.number().optional()
|
|
75
|
-
/** Whether to abort pending proving jobs when the orchestrator is cancelled */ cancelJobsOnStop: z.boolean()
|
|
74
|
+
/** The delay (ms) to inject during fake proof verification */ proverTestVerificationDelayMs: z.number().optional()
|
|
76
75
|
});
|
|
77
76
|
export const proverAgentConfigMappings = {
|
|
78
77
|
proverAgentCount: {
|
|
@@ -118,10 +117,5 @@ export const proverAgentConfigMappings = {
|
|
|
118
117
|
env: 'PROVER_TEST_VERIFICATION_DELAY_MS',
|
|
119
118
|
description: 'The delay (ms) to inject during fake proof verification',
|
|
120
119
|
...numberConfigHelper(10)
|
|
121
|
-
},
|
|
122
|
-
cancelJobsOnStop: {
|
|
123
|
-
env: 'PROVER_CANCEL_JOBS_ON_STOP',
|
|
124
|
-
description: 'Whether to abort pending proving jobs when the orchestrator is cancelled. ' + 'When false (default), jobs remain in the broker queue and can be reused on restart/reorg.',
|
|
125
|
-
...booleanConfigHelper(false)
|
|
126
120
|
}
|
|
127
121
|
};
|
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.3469e52",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -68,19 +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.
|
|
71
|
+
"@aztec/bb-prover": "0.0.1-commit.3469e52",
|
|
72
|
+
"@aztec/blob-lib": "0.0.1-commit.3469e52",
|
|
73
|
+
"@aztec/constants": "0.0.1-commit.3469e52",
|
|
74
|
+
"@aztec/ethereum": "0.0.1-commit.3469e52",
|
|
75
|
+
"@aztec/foundation": "0.0.1-commit.3469e52",
|
|
76
|
+
"@aztec/kv-store": "0.0.1-commit.3469e52",
|
|
77
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.3469e52",
|
|
78
|
+
"@aztec/noir-types": "0.0.1-commit.3469e52",
|
|
79
|
+
"@aztec/protocol-contracts": "0.0.1-commit.3469e52",
|
|
80
|
+
"@aztec/simulator": "0.0.1-commit.3469e52",
|
|
81
|
+
"@aztec/stdlib": "0.0.1-commit.3469e52",
|
|
82
|
+
"@aztec/telemetry-client": "0.0.1-commit.3469e52",
|
|
83
|
+
"@aztec/world-state": "0.0.1-commit.3469e52",
|
|
84
84
|
"@google-cloud/storage": "^7.15.0",
|
|
85
85
|
"@iarna/toml": "^2.2.5",
|
|
86
86
|
"commander": "^12.1.0",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"zod": "^3.23.8"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
93
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.3469e52",
|
|
94
94
|
"@jest/globals": "^30.0.0",
|
|
95
95
|
"@types/jest": "^30.0.0",
|
|
96
96
|
"@types/node": "^22.15.17",
|
|
@@ -4,7 +4,7 @@ import { type CheckpointNumber, IndexWithinCheckpoint } from '@aztec/foundation/
|
|
|
4
4
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
5
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import { createLogger } from '@aztec/foundation/log';
|
|
7
|
-
import {
|
|
7
|
+
import { L2BlockNew } from '@aztec/stdlib/block';
|
|
8
8
|
import { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
9
9
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
10
10
|
import {
|
|
@@ -38,7 +38,7 @@ export class LightweightCheckpointBuilder {
|
|
|
38
38
|
|
|
39
39
|
private lastArchives: AppendOnlyTreeSnapshot[] = [];
|
|
40
40
|
private spongeBlob: SpongeBlob;
|
|
41
|
-
private blocks:
|
|
41
|
+
private blocks: L2BlockNew[] = [];
|
|
42
42
|
private blobFields: Fr[] = [];
|
|
43
43
|
|
|
44
44
|
constructor(
|
|
@@ -86,7 +86,7 @@ export class LightweightCheckpointBuilder {
|
|
|
86
86
|
l1ToL2Messages: Fr[],
|
|
87
87
|
previousCheckpointOutHashes: Fr[],
|
|
88
88
|
db: MerkleTreeWriteOperations,
|
|
89
|
-
existingBlocks:
|
|
89
|
+
existingBlocks: L2BlockNew[],
|
|
90
90
|
): Promise<LightweightCheckpointBuilder> {
|
|
91
91
|
const builder = new LightweightCheckpointBuilder(
|
|
92
92
|
checkpointNumber,
|
|
@@ -142,7 +142,7 @@ export class LightweightCheckpointBuilder {
|
|
|
142
142
|
globalVariables: GlobalVariables,
|
|
143
143
|
txs: ProcessedTx[],
|
|
144
144
|
opts: { insertTxsEffects?: boolean; expectedEndState?: StateReference } = {},
|
|
145
|
-
): Promise<
|
|
145
|
+
): Promise<L2BlockNew> {
|
|
146
146
|
const isFirstBlock = this.blocks.length === 0;
|
|
147
147
|
|
|
148
148
|
// Empty blocks are only allowed as the first block in a checkpoint
|
|
@@ -192,7 +192,7 @@ export class LightweightCheckpointBuilder {
|
|
|
192
192
|
this.lastArchives.push(newArchive);
|
|
193
193
|
|
|
194
194
|
const indexWithinCheckpoint = IndexWithinCheckpoint(this.blocks.length);
|
|
195
|
-
const block = new
|
|
195
|
+
const block = new L2BlockNew(newArchive, header, body, this.checkpointNumber, indexWithinCheckpoint);
|
|
196
196
|
this.blocks.push(block);
|
|
197
197
|
|
|
198
198
|
await this.spongeBlob.absorb(blockBlobFields);
|
|
@@ -97,7 +97,7 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
|
97
97
|
|
|
98
98
|
const { nullifierInsertionResult, publicDataInsertionResult } = await insertSideEffects(tx, db);
|
|
99
99
|
|
|
100
|
-
const blockHash =
|
|
100
|
+
const blockHash = await tx.data.constants.anchorBlockHeader.hash();
|
|
101
101
|
const anchorBlockArchiveSiblingPath = (
|
|
102
102
|
await getMembershipWitnessFor(blockHash, MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT, db)
|
|
103
103
|
).siblingPath;
|
|
@@ -73,11 +73,6 @@ import { TxProvingState } from './tx-proving-state.js';
|
|
|
73
73
|
|
|
74
74
|
const logger = createLogger('prover-client:orchestrator');
|
|
75
75
|
|
|
76
|
-
type WorldStateFork = {
|
|
77
|
-
fork: MerkleTreeWriteOperations;
|
|
78
|
-
cleanupPromise: Promise<void> | undefined;
|
|
79
|
-
};
|
|
80
|
-
|
|
81
76
|
/**
|
|
82
77
|
* Implements an event driven proving scheduler to build the recursive proof tree. The idea being:
|
|
83
78
|
* 1. Transactions are provided to the scheduler post simulation.
|
|
@@ -99,13 +94,12 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
99
94
|
private provingPromise: Promise<ProvingResult> | undefined = undefined;
|
|
100
95
|
private metrics: ProvingOrchestratorMetrics;
|
|
101
96
|
// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
|
|
102
|
-
private dbs: Map<BlockNumber,
|
|
97
|
+
private dbs: Map<BlockNumber, MerkleTreeWriteOperations> = new Map();
|
|
103
98
|
|
|
104
99
|
constructor(
|
|
105
100
|
private dbProvider: ReadonlyWorldStateAccess & ForkMerkleTreeOperations,
|
|
106
101
|
private prover: ServerCircuitProver,
|
|
107
102
|
private readonly proverId: EthAddress,
|
|
108
|
-
private readonly cancelJobsOnStop: boolean = false,
|
|
109
103
|
telemetryClient: TelemetryClient = getTelemetryClient(),
|
|
110
104
|
) {
|
|
111
105
|
this.metrics = new ProvingOrchestratorMetrics(telemetryClient, 'ProvingOrchestrator');
|
|
@@ -181,7 +175,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
181
175
|
const db = await this.dbProvider.fork(lastBlockNumber);
|
|
182
176
|
|
|
183
177
|
const firstBlockNumber = BlockNumber(lastBlockNumber + 1);
|
|
184
|
-
this.dbs.set(firstBlockNumber,
|
|
178
|
+
this.dbs.set(firstBlockNumber, db);
|
|
185
179
|
|
|
186
180
|
// Get archive sibling path before any block in this checkpoint lands.
|
|
187
181
|
const lastArchiveSiblingPath = await getLastSiblingPath(MerkleTreeId.ARCHIVE, db);
|
|
@@ -239,9 +233,9 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
239
233
|
if (!this.dbs.has(blockNumber)) {
|
|
240
234
|
// Fork world state at the end of the immediately previous block
|
|
241
235
|
const db = await this.dbProvider.fork(BlockNumber(blockNumber - 1));
|
|
242
|
-
this.dbs.set(blockNumber,
|
|
236
|
+
this.dbs.set(blockNumber, db);
|
|
243
237
|
}
|
|
244
|
-
const db = this.dbs.get(blockNumber)
|
|
238
|
+
const db = this.dbs.get(blockNumber)!;
|
|
245
239
|
|
|
246
240
|
// Get archive snapshot and sibling path before any txs in this block lands.
|
|
247
241
|
const lastArchiveTreeSnapshot = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
|
|
@@ -316,7 +310,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
316
310
|
|
|
317
311
|
logger.info(`Adding ${txs.length} transactions to block ${blockNumber}`);
|
|
318
312
|
|
|
319
|
-
const db = this.dbs.get(blockNumber)
|
|
313
|
+
const db = this.dbs.get(blockNumber)!;
|
|
320
314
|
const lastArchive = provingState.lastArchiveTreeSnapshot;
|
|
321
315
|
const newL1ToL2MessageTreeSnapshot = provingState.newL1ToL2MessageTreeSnapshot;
|
|
322
316
|
const spongeBlobState = provingState.getStartSpongeBlob().clone();
|
|
@@ -445,7 +439,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
445
439
|
}
|
|
446
440
|
|
|
447
441
|
// Get db for this block
|
|
448
|
-
const db = this.dbs.get(provingState.blockNumber)
|
|
442
|
+
const db = this.dbs.get(provingState.blockNumber)!;
|
|
449
443
|
|
|
450
444
|
// Update the archive tree, so we're ready to start processing the next block:
|
|
451
445
|
logger.verbose(
|
|
@@ -481,7 +475,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
481
475
|
|
|
482
476
|
// Get db for this block
|
|
483
477
|
const blockNumber = provingState.blockNumber;
|
|
484
|
-
const db = this.dbs.get(blockNumber)
|
|
478
|
+
const db = this.dbs.get(blockNumber)!;
|
|
485
479
|
|
|
486
480
|
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
|
|
487
481
|
const syncedArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.dbProvider.getSnapshot(blockNumber));
|
|
@@ -510,15 +504,11 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
510
504
|
}
|
|
511
505
|
|
|
512
506
|
/**
|
|
513
|
-
* Cancel any further proving
|
|
514
|
-
* If cancelJobsOnStop is true, aborts all pending jobs with the broker (which marks them as 'Aborted').
|
|
515
|
-
* If cancelJobsOnStop is false (default), jobs remain in the broker queue and can be reused on restart/reorg.
|
|
507
|
+
* Cancel any further proving
|
|
516
508
|
*/
|
|
517
509
|
public cancel() {
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
controller.abort();
|
|
521
|
-
}
|
|
510
|
+
for (const controller of this.pendingProvingJobs) {
|
|
511
|
+
controller.abort();
|
|
522
512
|
}
|
|
523
513
|
|
|
524
514
|
this.provingState?.cancel();
|
|
@@ -561,10 +551,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
561
551
|
}
|
|
562
552
|
|
|
563
553
|
try {
|
|
564
|
-
|
|
565
|
-
fork.cleanupPromise = fork.fork.close();
|
|
566
|
-
}
|
|
567
|
-
await fork.cleanupPromise;
|
|
554
|
+
await fork.close();
|
|
568
555
|
this.dbs.delete(blockNumber);
|
|
569
556
|
} catch (err) {
|
|
570
557
|
logger.error(`Error closing db for block ${blockNumber}`, err);
|
|
@@ -46,13 +46,7 @@ export class ProverClient implements EpochProverManager {
|
|
|
46
46
|
|
|
47
47
|
public createEpochProver(): EpochProver {
|
|
48
48
|
const facade = new BrokerCircuitProverFacade(this.orchestratorClient, this.proofStore, this.failedProofStore);
|
|
49
|
-
const orchestrator = new ProvingOrchestrator(
|
|
50
|
-
this.worldState,
|
|
51
|
-
facade,
|
|
52
|
-
this.config.proverId,
|
|
53
|
-
this.config.cancelJobsOnStop,
|
|
54
|
-
this.telemetry,
|
|
55
|
-
);
|
|
49
|
+
const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.config.proverId, this.telemetry);
|
|
56
50
|
return new ServerEpochProver(facade, orchestrator);
|
|
57
51
|
}
|
|
58
52
|
|
|
@@ -100,8 +100,6 @@ export const ProverAgentConfig = z.object({
|
|
|
100
100
|
proverTestDelayFactor: z.number(),
|
|
101
101
|
/** The delay (ms) to inject during fake proof verification */
|
|
102
102
|
proverTestVerificationDelayMs: z.number().optional(),
|
|
103
|
-
/** Whether to abort pending proving jobs when the orchestrator is cancelled */
|
|
104
|
-
cancelJobsOnStop: z.boolean(),
|
|
105
103
|
});
|
|
106
104
|
|
|
107
105
|
export type ProverAgentConfig = z.infer<typeof ProverAgentConfig>;
|
|
@@ -155,11 +153,4 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
|
|
|
155
153
|
description: 'The delay (ms) to inject during fake proof verification',
|
|
156
154
|
...numberConfigHelper(10),
|
|
157
155
|
},
|
|
158
|
-
cancelJobsOnStop: {
|
|
159
|
-
env: 'PROVER_CANCEL_JOBS_ON_STOP',
|
|
160
|
-
description:
|
|
161
|
-
'Whether to abort pending proving jobs when the orchestrator is cancelled. ' +
|
|
162
|
-
'When false (default), jobs remain in the broker queue and can be reused on restart/reorg.',
|
|
163
|
-
...booleanConfigHelper(false),
|
|
164
|
-
},
|
|
165
156
|
};
|