@aztec/prover-client 0.0.1-commit.b2a5d0dd1 → 0.0.1-commit.b3d3157a
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/config.d.ts +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +4 -0
- package/dest/light/lightweight_checkpoint_builder.d.ts +1 -1
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
- package/dest/light/lightweight_checkpoint_builder.js +12 -4
- package/dest/mocks/test_context.d.ts +3 -1
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +3 -1
- package/dest/orchestrator/block-building-helpers.d.ts +1 -1
- package/dest/orchestrator/checkpoint-proving-state.d.ts +8 -1
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/checkpoint-proving-state.js +10 -1
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts +107 -0
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts.map +1 -0
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.js +151 -0
- package/dest/orchestrator/epoch-proving-context.d.ts +51 -0
- package/dest/orchestrator/epoch-proving-context.d.ts.map +1 -0
- package/dest/orchestrator/epoch-proving-context.js +81 -0
- package/dest/orchestrator/index.d.ts +4 -1
- package/dest/orchestrator/index.d.ts.map +1 -1
- package/dest/orchestrator/index.js +3 -0
- package/dest/orchestrator/orchestrator.d.ts +14 -26
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +32 -169
- package/dest/orchestrator/proving-scheduler.d.ts +72 -0
- package/dest/orchestrator/proving-scheduler.d.ts.map +1 -0
- package/dest/orchestrator/proving-scheduler.js +117 -0
- package/dest/orchestrator/top-tree-orchestrator.d.ts +83 -0
- package/dest/orchestrator/top-tree-orchestrator.d.ts.map +1 -0
- package/dest/orchestrator/top-tree-orchestrator.js +182 -0
- package/dest/orchestrator/top-tree-proving-scheduler.d.ts +62 -0
- package/dest/orchestrator/top-tree-proving-scheduler.d.ts.map +1 -0
- package/dest/orchestrator/top-tree-proving-scheduler.js +73 -0
- package/dest/orchestrator/top-tree-proving-state.d.ts +61 -0
- package/dest/orchestrator/top-tree-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/top-tree-proving-state.js +185 -0
- package/dest/prover-client/prover-client.d.ts +61 -2
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +49 -1
- package/dest/proving_broker/config.d.ts +8 -72
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +2 -2
- package/dest/proving_broker/index.d.ts +2 -1
- package/dest/proving_broker/index.d.ts.map +1 -1
- package/dest/proving_broker/index.js +1 -0
- package/dest/proving_broker/proving_broker.d.ts +2 -2
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +5 -3
- package/dest/proving_broker/proving_broker_database/persisted.js +2 -2
- package/dest/proving_broker/rpc.d.ts +1 -1
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +64 -9
- package/package.json +17 -17
- package/src/config.ts +5 -0
- package/src/light/lightweight_checkpoint_builder.ts +14 -6
- package/src/mocks/test_context.ts +3 -1
- package/src/orchestrator/checkpoint-proving-state.ts +14 -1
- package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +271 -0
- package/src/orchestrator/epoch-proving-context.ts +101 -0
- package/src/orchestrator/index.ts +8 -0
- package/src/orchestrator/orchestrator.ts +46 -225
- package/src/orchestrator/proving-scheduler.ts +156 -0
- package/src/orchestrator/top-tree-orchestrator.ts +314 -0
- package/src/orchestrator/top-tree-proving-scheduler.ts +154 -0
- package/src/orchestrator/top-tree-proving-state.ts +220 -0
- package/src/prover-client/prover-client.ts +125 -1
- package/src/proving_broker/config.ts +2 -1
- package/src/proving_broker/index.ts +1 -0
- package/src/proving_broker/proving_broker.ts +5 -3
- package/src/proving_broker/proving_broker_database/persisted.ts +2 -2
- package/src/proving_broker/rpc.ts +24 -21
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
2
|
+
import { CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, RootRollupPrivateInputs } from '@aztec/stdlib/rollup';
|
|
3
|
+
import { toProofData } from './block-building-helpers.js';
|
|
4
|
+
var TOP_TREE_LIFECYCLE = /*#__PURE__*/ function(TOP_TREE_LIFECYCLE) {
|
|
5
|
+
TOP_TREE_LIFECYCLE[TOP_TREE_LIFECYCLE["CREATED"] = 0] = "CREATED";
|
|
6
|
+
TOP_TREE_LIFECYCLE[TOP_TREE_LIFECYCLE["RESOLVED"] = 1] = "RESOLVED";
|
|
7
|
+
TOP_TREE_LIFECYCLE[TOP_TREE_LIFECYCLE["REJECTED"] = 2] = "REJECTED";
|
|
8
|
+
return TOP_TREE_LIFECYCLE;
|
|
9
|
+
}(TOP_TREE_LIFECYCLE || {});
|
|
10
|
+
/**
|
|
11
|
+
* Lean top-tree-only state. Owns the merge tree of checkpoint root proofs, the
|
|
12
|
+
* single-checkpoint padding proof slot, the final root rollup proof, and the blob
|
|
13
|
+
* accumulator endpoints needed to finalise the epoch's batched blob proof.
|
|
14
|
+
*
|
|
15
|
+
* Constructed with `totalNumCheckpoints` and `finalBlobBatchingChallenges` upfront —
|
|
16
|
+
* by the time the top tree starts, all checkpoints are known and the challenges are
|
|
17
|
+
* derivable from their blob fields.
|
|
18
|
+
*/ export class TopTreeProvingState {
|
|
19
|
+
epochNumber;
|
|
20
|
+
totalNumCheckpoints;
|
|
21
|
+
finalBlobBatchingChallenges;
|
|
22
|
+
startBlobAccumulator;
|
|
23
|
+
completionCallback;
|
|
24
|
+
rejectionCallback;
|
|
25
|
+
checkpointProofs;
|
|
26
|
+
checkpointPaddingProof;
|
|
27
|
+
rootRollupProof;
|
|
28
|
+
endBlobAccumulator;
|
|
29
|
+
finalBatchedBlob;
|
|
30
|
+
lifecycle;
|
|
31
|
+
constructor(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges, startBlobAccumulator, completionCallback, rejectionCallback){
|
|
32
|
+
this.epochNumber = epochNumber;
|
|
33
|
+
this.totalNumCheckpoints = totalNumCheckpoints;
|
|
34
|
+
this.finalBlobBatchingChallenges = finalBlobBatchingChallenges;
|
|
35
|
+
this.startBlobAccumulator = startBlobAccumulator;
|
|
36
|
+
this.completionCallback = completionCallback;
|
|
37
|
+
this.rejectionCallback = rejectionCallback;
|
|
38
|
+
this.lifecycle = 0;
|
|
39
|
+
if (totalNumCheckpoints < 1) {
|
|
40
|
+
throw new Error(`TopTreeProvingState requires at least one checkpoint; got ${totalNumCheckpoints}.`);
|
|
41
|
+
}
|
|
42
|
+
this.checkpointProofs = new UnbalancedTreeStore(totalNumCheckpoints);
|
|
43
|
+
}
|
|
44
|
+
// --- checkpoint root rollup ---
|
|
45
|
+
setCheckpointRootRollupProof(checkpointIndex, provingOutput) {
|
|
46
|
+
return this.checkpointProofs.setLeaf(checkpointIndex, {
|
|
47
|
+
provingOutput
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
// --- checkpoint merge rollup ---
|
|
51
|
+
tryStartProvingCheckpointMerge(location) {
|
|
52
|
+
if (this.checkpointProofs.getNode(location)?.isProving) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
this.checkpointProofs.setNode(location, {
|
|
56
|
+
isProving: true
|
|
57
|
+
});
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
setCheckpointMergeRollupProof(location, provingOutput) {
|
|
61
|
+
this.checkpointProofs.setNode(location, {
|
|
62
|
+
provingOutput
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
isReadyForCheckpointMerge(location) {
|
|
66
|
+
return !!this.checkpointProofs.getSibling(location)?.provingOutput;
|
|
67
|
+
}
|
|
68
|
+
getParentLocation(location) {
|
|
69
|
+
return this.checkpointProofs.getParentLocation(location);
|
|
70
|
+
}
|
|
71
|
+
getCheckpointMergeRollupInputs(mergeLocation) {
|
|
72
|
+
const [left, right] = this.checkpointProofs.getChildren(mergeLocation).map((c)=>c?.provingOutput);
|
|
73
|
+
if (!left || !right) {
|
|
74
|
+
throw new Error('At least one child is not ready for the checkpoint merge rollup.');
|
|
75
|
+
}
|
|
76
|
+
return new CheckpointMergeRollupPrivateInputs([
|
|
77
|
+
toProofData(left),
|
|
78
|
+
toProofData(right)
|
|
79
|
+
]);
|
|
80
|
+
}
|
|
81
|
+
// --- padding (single-checkpoint case) ---
|
|
82
|
+
tryStartProvingPaddingCheckpoint() {
|
|
83
|
+
if (this.checkpointPaddingProof?.isProving) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
this.checkpointPaddingProof = {
|
|
87
|
+
isProving: true
|
|
88
|
+
};
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
setCheckpointPaddingProof(provingOutput) {
|
|
92
|
+
this.checkpointPaddingProof = {
|
|
93
|
+
provingOutput
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
getPaddingCheckpointInputs() {
|
|
97
|
+
return new CheckpointPaddingRollupPrivateInputs();
|
|
98
|
+
}
|
|
99
|
+
// --- root rollup ---
|
|
100
|
+
tryStartProvingRootRollup() {
|
|
101
|
+
if (this.rootRollupProof?.isProving) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
this.rootRollupProof = {
|
|
105
|
+
isProving: true
|
|
106
|
+
};
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
setRootRollupProof(provingOutput) {
|
|
110
|
+
this.rootRollupProof = {
|
|
111
|
+
provingOutput
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
isReadyForRootRollup() {
|
|
115
|
+
const childProofs = this.#getChildProofsForRoot();
|
|
116
|
+
return childProofs.every((p)=>!!p);
|
|
117
|
+
}
|
|
118
|
+
getRootRollupInputs() {
|
|
119
|
+
const [left, right] = this.#getChildProofsForRoot();
|
|
120
|
+
if (!left || !right) {
|
|
121
|
+
throw new Error('At least one child is not ready for the root rollup.');
|
|
122
|
+
}
|
|
123
|
+
return RootRollupPrivateInputs.from({
|
|
124
|
+
previousRollups: [
|
|
125
|
+
toProofData(left),
|
|
126
|
+
toProofData(right)
|
|
127
|
+
]
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
// --- blob accumulator finalisation ---
|
|
131
|
+
/**
|
|
132
|
+
* Sets the end-of-epoch blob accumulator, computed by the top-tree orchestrator
|
|
133
|
+
* from the surviving checkpoints' blob fields. Required before `finalizeBatchedBlob`.
|
|
134
|
+
*/ setEndBlobAccumulator(accumulator) {
|
|
135
|
+
this.endBlobAccumulator = accumulator;
|
|
136
|
+
}
|
|
137
|
+
async finalizeBatchedBlob() {
|
|
138
|
+
if (!this.endBlobAccumulator) {
|
|
139
|
+
throw new Error('End blob accumulator not set; call setEndBlobAccumulator before finalize.');
|
|
140
|
+
}
|
|
141
|
+
this.finalBatchedBlob = await this.endBlobAccumulator.finalize(true);
|
|
142
|
+
}
|
|
143
|
+
getEpochProofResult() {
|
|
144
|
+
const provingOutput = this.rootRollupProof?.provingOutput;
|
|
145
|
+
if (!provingOutput || !this.finalBatchedBlob) {
|
|
146
|
+
throw new Error('Top-tree proof not ready; root rollup or batched blob missing.');
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
proof: provingOutput.proof.binaryProof,
|
|
150
|
+
publicInputs: provingOutput.inputs,
|
|
151
|
+
batchedBlobInputs: this.finalBatchedBlob
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
// --- lifecycle ---
|
|
155
|
+
verifyState() {
|
|
156
|
+
return this.lifecycle === 0;
|
|
157
|
+
}
|
|
158
|
+
resolve() {
|
|
159
|
+
if (!this.verifyState()) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
this.lifecycle = 1;
|
|
163
|
+
this.completionCallback();
|
|
164
|
+
}
|
|
165
|
+
reject(reason) {
|
|
166
|
+
if (!this.verifyState()) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
this.lifecycle = 2;
|
|
170
|
+
this.rejectionCallback(reason);
|
|
171
|
+
}
|
|
172
|
+
cancel() {
|
|
173
|
+
this.reject('Top-tree proving cancelled');
|
|
174
|
+
}
|
|
175
|
+
#getChildProofsForRoot() {
|
|
176
|
+
const rootLocation = {
|
|
177
|
+
level: 0,
|
|
178
|
+
index: 0
|
|
179
|
+
};
|
|
180
|
+
return this.totalNumCheckpoints === 1 ? [
|
|
181
|
+
this.checkpointProofs.getNode(rootLocation)?.provingOutput,
|
|
182
|
+
this.checkpointPaddingProof?.provingOutput
|
|
183
|
+
] : this.checkpointProofs.getChildren(rootLocation).map((c)=>c?.provingOutput);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
@@ -1,10 +1,44 @@
|
|
|
1
1
|
import { type ACVMConfig, type BBConfig } from '@aztec/bb-prover';
|
|
2
|
+
import type { EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
4
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
5
|
import { type ActualProverConfig, type EpochProver, type EpochProverManager, type ForkMerkleTreeOperations, type ProvingJobBroker, type ProvingJobConsumer, type ReadonlyWorldStateAccess, type ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
6
|
+
import type { CheckpointConstantData } from '@aztec/stdlib/rollup';
|
|
7
|
+
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
4
8
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
5
9
|
import type { ProverClientConfig } from '../config.js';
|
|
10
|
+
import { CheckpointSubTreeOrchestrator } from '../orchestrator/checkpoint-sub-tree-orchestrator.js';
|
|
11
|
+
import { EpochProvingContext } from '../orchestrator/epoch-proving-context.js';
|
|
12
|
+
import { TopTreeOrchestrator } from '../orchestrator/top-tree-orchestrator.js';
|
|
13
|
+
/**
|
|
14
|
+
* The factory surface that `EpochProvingJob` (in `prover-node`) depends on. Implemented
|
|
15
|
+
* by `ProverClient`. Defined here rather than in stdlib because the return types
|
|
16
|
+
* (`CheckpointSubTreeOrchestrator`, `TopTreeOrchestrator`) are concrete classes from
|
|
17
|
+
* this package.
|
|
18
|
+
*
|
|
19
|
+
* A single `BrokerCircuitProverFacade` is owned by `ProverClient` and shared across
|
|
20
|
+
* every orchestrator (every sub-tree and every top-tree across every concurrent epoch
|
|
21
|
+
* job). The broker delivers each completed-job notification exactly once (drained on
|
|
22
|
+
* the first `getCompletedJobs` poll), so multiple facades polling the same broker
|
|
23
|
+
* race and lose notifications
|
|
24
|
+
*
|
|
25
|
+
* The facade's job map cleans up entries on resolve/reject, and the prover-node
|
|
26
|
+
* keeps `ProverClient` alive for its whole lifetime
|
|
27
|
+
*/
|
|
28
|
+
export interface EpochProverFactory {
|
|
29
|
+
getProverId(): EthAddress;
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a per-epoch shared context for the caching of e.g. chonk verifier results
|
|
32
|
+
*/
|
|
33
|
+
createEpochProvingContext(epochNumber: EpochNumber): EpochProvingContext;
|
|
34
|
+
/**
|
|
35
|
+
* Constructs and starts a `CheckpointSubTreeOrchestrator` for a single checkpoint.
|
|
36
|
+
*/
|
|
37
|
+
createCheckpointSubTreeOrchestrator(epochContext: EpochProvingContext, checkpointConstants: CheckpointConstantData, l1ToL2Messages: Fr[], totalNumBlocks: number, headerOfLastBlockInPreviousCheckpoint: BlockHeader): Promise<CheckpointSubTreeOrchestrator>;
|
|
38
|
+
createTopTreeOrchestrator(): TopTreeOrchestrator;
|
|
39
|
+
}
|
|
6
40
|
/** Manages proving of epochs by orchestrating the proving of individual blocks relying on a pool of prover agents. */
|
|
7
|
-
export declare class ProverClient implements EpochProverManager {
|
|
41
|
+
export declare class ProverClient implements EpochProverManager, EpochProverFactory {
|
|
8
42
|
private config;
|
|
9
43
|
private worldState;
|
|
10
44
|
private orchestratorClient;
|
|
@@ -15,8 +49,33 @@ export declare class ProverClient implements EpochProverManager {
|
|
|
15
49
|
private log;
|
|
16
50
|
private running;
|
|
17
51
|
private agents;
|
|
52
|
+
/**
|
|
53
|
+
* The single broker facade shared by every orchestrator created from this client.
|
|
54
|
+
* Constructed lazily on `start()` and torn down on `stop()` — see the comment on
|
|
55
|
+
* `EpochProverFactory` for why a single shared facade is required.
|
|
56
|
+
*/
|
|
57
|
+
private facade;
|
|
18
58
|
private constructor();
|
|
59
|
+
/**
|
|
60
|
+
* Lazy-init the shared facade. The broker delivers each completed-job notification
|
|
61
|
+
* exactly once (drained on the first `getCompletedJobs` poll), so we cannot start
|
|
62
|
+
* a shared facade alongside the per-call facades that `createEpochProver` builds —
|
|
63
|
+
* they would race for notifications and one side would silently drop them. Starting
|
|
64
|
+
* the shared facade only on first use of one of the new factory methods keeps the
|
|
65
|
+
* legacy `createEpochProver` path race-free.
|
|
66
|
+
*/
|
|
67
|
+
private getFacade;
|
|
68
|
+
/**
|
|
69
|
+
* Legacy single-class epoch prover. Each call constructs its own
|
|
70
|
+
* `BrokerCircuitProverFacade`; the new factory methods (`createCheckpointSubTreeOrchestrator`,
|
|
71
|
+
* `createTopTreeOrchestrator`, `createEpochProvingContext`) share a single facade
|
|
72
|
+
* owned by `ProverClient`. Both APIs coexist while the prover-node migrates onto
|
|
73
|
+
* the new pair.
|
|
74
|
+
*/
|
|
19
75
|
createEpochProver(): EpochProver;
|
|
76
|
+
createEpochProvingContext(epochNumber: EpochNumber): EpochProvingContext;
|
|
77
|
+
createCheckpointSubTreeOrchestrator(epochContext: EpochProvingContext, checkpointConstants: CheckpointConstantData, l1ToL2Messages: Fr[], totalNumBlocks: number, headerOfLastBlockInPreviousCheckpoint: BlockHeader): Promise<CheckpointSubTreeOrchestrator>;
|
|
78
|
+
createTopTreeOrchestrator(): TopTreeOrchestrator;
|
|
20
79
|
getProverId(): EthAddress;
|
|
21
80
|
updateProverConfig(config: Partial<ProverClientConfig>): Promise<void>;
|
|
22
81
|
/**
|
|
@@ -39,4 +98,4 @@ export declare class ProverClient implements EpochProverManager {
|
|
|
39
98
|
private stopAgents;
|
|
40
99
|
}
|
|
41
100
|
export declare function buildServerCircuitProver(config: Omit<ActualProverConfig, 'enqueueConcurrency'> & ACVMConfig & BBConfig, telemetry: TelemetryClient): Promise<ServerCircuitProver>;
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLWNsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1jbGllbnQvcHJvdmVyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUUsS0FBSyxRQUFRLEVBQTJDLE1BQU0sa0JBQWtCLENBQUM7QUFDM0csT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbkUsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHaEUsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNoQixLQUFLLGtCQUFrQixFQUN2QixLQUFLLHdCQUF3QixFQUM3QixLQUFLLGdCQUFnQixFQUNyQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLHdCQUF3QixFQUM3QixLQUFLLG1CQUFtQixFQUV6QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBRW5GLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBTS9FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxXQUFXLGtCQUFrQjtJQUNqQyxXQUFXLElBQUksVUFBVSxDQUFDO0lBQzFCOztPQUVHO0lBQ0gseUJBQXlCLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQztJQUN6RTs7T0FFRztJQUNILG1DQUFtQyxDQUNqQyxZQUFZLEVBQUUsbUJBQW1CLEVBQ2pDLG1CQUFtQixFQUFFLHNCQUFzQixFQUMzQyxjQUFjLEVBQUUsRUFBRSxFQUFFLEVBQ3BCLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLHFDQUFxQyxFQUFFLFdBQVcsR0FDakQsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDMUMseUJBQXlCLElBQUksbUJBQW1CLENBQUM7Q0FDbEQ7QUFFRCxzSEFBc0g7QUFDdEgscUJBQWEsWUFBYSxZQUFXLGtCQUFrQixFQUFFLGtCQUFrQjtJQVd2RSxPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxrQkFBa0I7SUFDMUIsT0FBTyxDQUFDLFVBQVU7SUFDbEIsT0FBTyxDQUFDLGdCQUFnQjtJQUN4QixPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ3BCLE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxHQUFHO0lBakJiLE9BQU8sQ0FBQyxPQUFPLENBQVM7SUFDeEIsT0FBTyxDQUFDLE1BQU0sQ0FBc0I7SUFDcEM7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxNQUFNLENBQXdDO0lBRXRELE9BQU8sZUFTSDtJQUVKOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsU0FBUztJQWlCakI7Ozs7OztPQU1HO0lBQ0ksaUJBQWlCLElBQUksV0FBVyxDQW1CdEM7SUFFTSx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLG1CQUFtQixDQUU5RTtJQUVNLG1DQUFtQyxDQUN4QyxZQUFZLEVBQUUsbUJBQW1CLEVBQ2pDLG1CQUFtQixFQUFFLHNCQUFzQixFQUMzQyxjQUFjLEVBQUUsRUFBRSxFQUFFLEVBQ3BCLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLHFDQUFxQyxFQUFFLFdBQVcsR0FDakQsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBZXhDO0lBRU0seUJBQXlCLElBQUksbUJBQW1CLENBUXREO0lBRU0sV0FBVyxJQUFJLFVBQVUsQ0FFL0I7SUFFSyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVkzRTtJQUVEOztPQUVHO0lBQ1UsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FPbEM7SUFFRDs7T0FFRztJQUNVLElBQUksa0JBZWhCO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFvQixHQUFHLENBQ3JCLE1BQU0sRUFBRSxrQkFBa0IsRUFDMUIsVUFBVSxFQUFFLHdCQUF3QixHQUFHLHdCQUF3QixFQUMvRCxNQUFNLEVBQUUsZ0JBQWdCLEVBQ3hCLFNBQVMsR0FBRSxlQUFzQyx5QkFPbEQ7SUFFTSxtQkFBbUIsSUFBSSxrQkFBa0IsQ0FNL0M7WUFFYSxvQkFBb0I7WUFxQnBCLFVBQVU7Q0FHekI7QUFFRCx3QkFBZ0Isd0JBQXdCLENBQ3RDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsR0FBRyxVQUFVLEdBQUcsUUFBUSxFQUM5RSxTQUFTLEVBQUUsZUFBZSxHQUN6QixPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FXOUIifQ==
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"prover-client.d.ts","sourceRoot":"","sources":["../../src/prover-client/prover-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,10 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
4
4
|
import { NativeACVMSimulator } from '@aztec/simulator/server';
|
|
5
5
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
6
6
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
7
|
+
import { CheckpointSubTreeOrchestrator } from '../orchestrator/checkpoint-sub-tree-orchestrator.js';
|
|
8
|
+
import { EpochProvingContext } from '../orchestrator/epoch-proving-context.js';
|
|
7
9
|
import { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
|
|
10
|
+
import { TopTreeOrchestrator } from '../orchestrator/top-tree-orchestrator.js';
|
|
8
11
|
import { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
|
|
9
12
|
import { InlineProofStore, createProofStore } from '../proving_broker/proof_store/index.js';
|
|
10
13
|
import { ProvingAgent } from '../proving_broker/proving_agent.js';
|
|
@@ -20,6 +23,11 @@ import { ServerEpochProver } from './server-epoch-prover.js';
|
|
|
20
23
|
log;
|
|
21
24
|
running;
|
|
22
25
|
agents;
|
|
26
|
+
/**
|
|
27
|
+
* The single broker facade shared by every orchestrator created from this client.
|
|
28
|
+
* Constructed lazily on `start()` and torn down on `stop()` — see the comment on
|
|
29
|
+
* `EpochProverFactory` for why a single shared facade is required.
|
|
30
|
+
*/ facade;
|
|
23
31
|
constructor(config, worldState, orchestratorClient, proofStore, failedProofStore, agentClient, telemetry = getTelemetryClient(), log = createLogger('prover-client:tx-prover')){
|
|
24
32
|
this.config = config;
|
|
25
33
|
this.worldState = worldState;
|
|
@@ -32,12 +40,44 @@ import { ServerEpochProver } from './server-epoch-prover.js';
|
|
|
32
40
|
this.running = false;
|
|
33
41
|
this.agents = [];
|
|
34
42
|
}
|
|
35
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Lazy-init the shared facade. The broker delivers each completed-job notification
|
|
45
|
+
* exactly once (drained on the first `getCompletedJobs` poll), so we cannot start
|
|
46
|
+
* a shared facade alongside the per-call facades that `createEpochProver` builds —
|
|
47
|
+
* they would race for notifications and one side would silently drop them. Starting
|
|
48
|
+
* the shared facade only on first use of one of the new factory methods keeps the
|
|
49
|
+
* legacy `createEpochProver` path race-free.
|
|
50
|
+
*/ getFacade() {
|
|
51
|
+
if (!this.running) {
|
|
52
|
+
throw new Error('ProverClient is not running; call start() before constructing orchestrators.');
|
|
53
|
+
}
|
|
54
|
+
if (!this.facade) {
|
|
55
|
+
this.facade = new BrokerCircuitProverFacade(this.orchestratorClient, this.proofStore, this.failedProofStore, undefined, this.log.getBindings());
|
|
56
|
+
this.facade.start();
|
|
57
|
+
}
|
|
58
|
+
return this.facade;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Legacy single-class epoch prover. Each call constructs its own
|
|
62
|
+
* `BrokerCircuitProverFacade`; the new factory methods (`createCheckpointSubTreeOrchestrator`,
|
|
63
|
+
* `createTopTreeOrchestrator`, `createEpochProvingContext`) share a single facade
|
|
64
|
+
* owned by `ProverClient`. Both APIs coexist while the prover-node migrates onto
|
|
65
|
+
* the new pair.
|
|
66
|
+
*/ createEpochProver() {
|
|
36
67
|
const bindings = this.log.getBindings();
|
|
37
68
|
const facade = new BrokerCircuitProverFacade(this.orchestratorClient, this.proofStore, this.failedProofStore, undefined, bindings);
|
|
38
69
|
const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.config.proverId, this.config.cancelJobsOnStop, this.config.enqueueConcurrency, this.telemetry, bindings);
|
|
39
70
|
return new ServerEpochProver(facade, orchestrator);
|
|
40
71
|
}
|
|
72
|
+
createEpochProvingContext(epochNumber) {
|
|
73
|
+
return new EpochProvingContext(this.getFacade(), epochNumber, this.log.getBindings());
|
|
74
|
+
}
|
|
75
|
+
createCheckpointSubTreeOrchestrator(epochContext, checkpointConstants, l1ToL2Messages, totalNumBlocks, headerOfLastBlockInPreviousCheckpoint) {
|
|
76
|
+
return CheckpointSubTreeOrchestrator.start(this.worldState, this.getFacade(), this.config.proverId, epochContext, this.config.cancelJobsOnStop, this.config.enqueueConcurrency, checkpointConstants, l1ToL2Messages, totalNumBlocks, headerOfLastBlockInPreviousCheckpoint, this.telemetry, this.log.getBindings());
|
|
77
|
+
}
|
|
78
|
+
createTopTreeOrchestrator() {
|
|
79
|
+
return new TopTreeOrchestrator(this.getFacade(), this.config.proverId, this.config.enqueueConcurrency, this.telemetry, this.log.getBindings());
|
|
80
|
+
}
|
|
41
81
|
getProverId() {
|
|
42
82
|
return this.config.proverId;
|
|
43
83
|
}
|
|
@@ -69,6 +109,14 @@ import { ServerEpochProver } from './server-epoch-prover.js';
|
|
|
69
109
|
}
|
|
70
110
|
this.running = false;
|
|
71
111
|
await this.stopAgents();
|
|
112
|
+
if (this.facade) {
|
|
113
|
+
try {
|
|
114
|
+
await this.facade.stop();
|
|
115
|
+
} catch (err) {
|
|
116
|
+
this.log.error('Error stopping shared broker facade', err);
|
|
117
|
+
}
|
|
118
|
+
this.facade = undefined;
|
|
119
|
+
}
|
|
72
120
|
await tryStop(this.orchestratorClient);
|
|
73
121
|
}
|
|
74
122
|
/**
|
|
@@ -5,100 +5,36 @@ import { type DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
|
5
5
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
export declare const ProverBrokerConfig: z.ZodObject<{
|
|
8
|
-
/** If starting a prover broker locally, the max number of retries per proving job */
|
|
9
8
|
proverBrokerJobMaxRetries: z.ZodNumber;
|
|
10
|
-
/** If starting a prover broker locally, the time after which a job times out and gets assigned to a different agent */
|
|
11
9
|
proverBrokerJobTimeoutMs: z.ZodNumber;
|
|
12
|
-
/** If starting a prover broker locally, the interval the broker checks for timed out jobs */
|
|
13
10
|
proverBrokerPollIntervalMs: z.ZodNumber;
|
|
14
|
-
/** If starting a prover broker locally, the directory to store broker data */
|
|
15
11
|
dataDirectory: z.ZodOptional<z.ZodString>;
|
|
16
|
-
/** The size of the data store map */
|
|
17
12
|
dataStoreMapSizeKb: z.ZodNumber;
|
|
18
|
-
/** The size of the prover broker's database. Will override the dataStoreMapSizeKb if set. */
|
|
19
13
|
proverBrokerStoreMapSizeKb: z.ZodOptional<z.ZodNumber>;
|
|
20
|
-
/** The prover broker may batch jobs together before writing to the database */
|
|
21
14
|
proverBrokerBatchSize: z.ZodNumber;
|
|
22
|
-
/** How often the job batches get flushed */
|
|
23
15
|
proverBrokerBatchIntervalMs: z.ZodNumber;
|
|
24
|
-
/** The maximum number of epochs to keep results for */
|
|
25
16
|
proverBrokerMaxEpochsToKeepResultsFor: z.ZodNumber;
|
|
26
|
-
/** Enable debug replay mode for replaying proving jobs from stored inputs */
|
|
27
17
|
proverBrokerDebugReplayEnabled: z.ZodBoolean;
|
|
28
|
-
},
|
|
29
|
-
proverBrokerJobMaxRetries: number;
|
|
30
|
-
proverBrokerJobTimeoutMs: number;
|
|
31
|
-
proverBrokerPollIntervalMs: number;
|
|
32
|
-
dataDirectory?: string | undefined;
|
|
33
|
-
dataStoreMapSizeKb: number;
|
|
34
|
-
proverBrokerStoreMapSizeKb?: number | undefined;
|
|
35
|
-
proverBrokerBatchSize: number;
|
|
36
|
-
proverBrokerBatchIntervalMs: number;
|
|
37
|
-
proverBrokerMaxEpochsToKeepResultsFor: number;
|
|
38
|
-
proverBrokerDebugReplayEnabled: boolean;
|
|
39
|
-
}, {
|
|
40
|
-
proverBrokerJobMaxRetries: number;
|
|
41
|
-
proverBrokerJobTimeoutMs: number;
|
|
42
|
-
proverBrokerPollIntervalMs: number;
|
|
43
|
-
dataDirectory?: string | undefined;
|
|
44
|
-
dataStoreMapSizeKb: number;
|
|
45
|
-
proverBrokerStoreMapSizeKb?: number | undefined;
|
|
46
|
-
proverBrokerBatchSize: number;
|
|
47
|
-
proverBrokerBatchIntervalMs: number;
|
|
48
|
-
proverBrokerMaxEpochsToKeepResultsFor: number;
|
|
49
|
-
proverBrokerDebugReplayEnabled: boolean;
|
|
50
|
-
}>;
|
|
18
|
+
}, z.core.$strip>;
|
|
51
19
|
export type ProverBrokerConfig = z.infer<typeof ProverBrokerConfig> & Pick<DataStoreConfig, 'dataStoreMapSizeKb' | 'dataDirectory'> & L1ReaderConfig & Pick<ChainConfig, 'rollupVersion'>;
|
|
52
20
|
export declare const proverBrokerConfigMappings: ConfigMappingsType<ProverBrokerConfig>;
|
|
53
21
|
export declare const defaultProverBrokerConfig: ProverBrokerConfig;
|
|
54
22
|
export declare const ProverAgentConfig: z.ZodObject<{
|
|
55
|
-
/** The number of prover agents to start */
|
|
56
23
|
proverAgentCount: z.ZodNumber;
|
|
57
|
-
|
|
58
|
-
proverAgentProofTypes: z.ZodArray<z.ZodNativeEnum<typeof ProvingRequestType>, "many">;
|
|
59
|
-
/** How often the prover agents poll for jobs */
|
|
24
|
+
proverAgentProofTypes: z.ZodArray<z.ZodEnum<typeof ProvingRequestType>>;
|
|
60
25
|
proverAgentPollIntervalMs: z.ZodNumber;
|
|
61
|
-
/** The URL where this agent takes jobs from */
|
|
62
26
|
proverBrokerUrl: z.ZodOptional<z.ZodString>;
|
|
63
|
-
/** Whether to construct real proofs */
|
|
64
27
|
realProofs: z.ZodBoolean;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
28
|
+
proverTestDelayType: z.ZodEnum<{
|
|
29
|
+
fixed: "fixed";
|
|
30
|
+
realistic: "realistic";
|
|
31
|
+
}>;
|
|
68
32
|
proverTestDelayMs: z.ZodNumber;
|
|
69
|
-
/** If using realistic delays, what percentage of realistic times to apply. */
|
|
70
33
|
proverTestDelayFactor: z.ZodNumber;
|
|
71
|
-
/** The delay (ms) to inject during fake proof verification */
|
|
72
34
|
proverTestVerificationDelayMs: z.ZodOptional<z.ZodNumber>;
|
|
73
|
-
/** Whether to abort pending proving jobs when the orchestrator is cancelled */
|
|
74
35
|
cancelJobsOnStop: z.ZodBoolean;
|
|
75
|
-
/** Where to store proving results. Must be accessible to both prover node and agents. If not set will inline-encode the parameters */
|
|
76
36
|
proofStore: z.ZodOptional<z.ZodString>;
|
|
77
|
-
},
|
|
78
|
-
proverAgentCount: number;
|
|
79
|
-
proverAgentProofTypes: ProvingRequestType[];
|
|
80
|
-
proverAgentPollIntervalMs: number;
|
|
81
|
-
proverBrokerUrl?: string | undefined;
|
|
82
|
-
realProofs: boolean;
|
|
83
|
-
proverTestDelayType: "fixed" | "realistic";
|
|
84
|
-
proverTestDelayMs: number;
|
|
85
|
-
proverTestDelayFactor: number;
|
|
86
|
-
proverTestVerificationDelayMs?: number | undefined;
|
|
87
|
-
cancelJobsOnStop: boolean;
|
|
88
|
-
proofStore?: string | undefined;
|
|
89
|
-
}, {
|
|
90
|
-
proverAgentCount: number;
|
|
91
|
-
proverAgentProofTypes: ProvingRequestType[];
|
|
92
|
-
proverAgentPollIntervalMs: number;
|
|
93
|
-
proverBrokerUrl?: string | undefined;
|
|
94
|
-
realProofs: boolean;
|
|
95
|
-
proverTestDelayType: "fixed" | "realistic";
|
|
96
|
-
proverTestDelayMs: number;
|
|
97
|
-
proverTestDelayFactor: number;
|
|
98
|
-
proverTestVerificationDelayMs?: number | undefined;
|
|
99
|
-
cancelJobsOnStop: boolean;
|
|
100
|
-
proofStore?: string | undefined;
|
|
101
|
-
}>;
|
|
37
|
+
}, z.core.$strip>;
|
|
102
38
|
export type ProverAgentConfig = z.infer<typeof ProverAgentConfig>;
|
|
103
39
|
export declare const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig>;
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBMEIsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RixPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFLeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQXVCLE1BQU0sc0JBQXNCLENBQUM7QUFDN0UsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTFELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsZUFBTyxNQUFNLGtCQUFrQjs7Ozs7Ozs7Ozs7aUJBcUI3QixDQUFDO0FBRUgsTUFBTSxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxrQkFBa0IsQ0FBQyxHQUNqRSxJQUFJLENBQUMsZUFBZSxFQUFFLG9CQUFvQixHQUFHLGVBQWUsQ0FBQyxHQUM3RCxjQUFjLEdBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUVyQyxlQUFPLE1BQU0sMEJBQTBCLEVBQUUsa0JBQWtCLENBQUMsa0JBQWtCLENBNEM3RSxDQUFDO0FBRUYsZUFBTyxNQUFNLHlCQUF5QixFQUFFLGtCQUFpRSxDQUFDO0FBRTFHLGVBQU8sTUFBTSxpQkFBaUI7Ozs7Ozs7Ozs7Ozs7OztpQkF1QjVCLENBQUM7QUFFSCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLGlCQUFpQixDQUFDLENBQUM7QUFFbEUsZUFBTyxNQUFNLHlCQUF5QixFQUFFLGtCQUFrQixDQUFDLGlCQUFpQixDQTREM0UsQ0FBQyJ9
|
|
@@ -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,
|
|
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,EAKxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAqB7B,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,CA4C7E,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAiE,CAAC;AAE1G,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;iBAuB5B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CA4D3E,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { l1ReaderConfigMappings } from '@aztec/ethereum/l1-reader';
|
|
2
|
-
import { booleanConfigHelper, getDefaultConfig, numberConfigHelper } from '@aztec/foundation/config';
|
|
2
|
+
import { booleanConfigHelper, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper } from '@aztec/foundation/config';
|
|
3
3
|
import { pickConfigMappings } from '@aztec/foundation/config';
|
|
4
4
|
import { chainConfigMappings } from '@aztec/stdlib/config';
|
|
5
5
|
import { dataConfigMappings } from '@aztec/stdlib/kv-store';
|
|
@@ -50,7 +50,7 @@ export const proverBrokerConfigMappings = {
|
|
|
50
50
|
},
|
|
51
51
|
proverBrokerStoreMapSizeKb: {
|
|
52
52
|
env: 'PROVER_BROKER_STORE_MAP_SIZE_KB',
|
|
53
|
-
|
|
53
|
+
...optionalNumberConfigHelper(),
|
|
54
54
|
description: "The size of the prover broker's database. Will override the dataStoreMapSizeKb if set."
|
|
55
55
|
},
|
|
56
56
|
proverBrokerDebugReplayEnabled: {
|
|
@@ -7,4 +7,5 @@ export * from './proving_broker_database/persisted.js';
|
|
|
7
7
|
export * from './proof_store/index.js';
|
|
8
8
|
export * from './factory.js';
|
|
9
9
|
export * from './config.js';
|
|
10
|
-
|
|
10
|
+
export { BrokerCircuitProverFacade } from './broker_prover_facade.js';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGFBQWEsQ0FBQztBQUM1QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proving_broker/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proving_broker/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -59,7 +59,7 @@ export declare class ProvingBroker implements ProvingJobProducer, ProvingJobCons
|
|
|
59
59
|
replayProvingJob(jobId: ProvingJobId, type: ProvingRequestType, epochNumber: EpochNumber, inputsUri: ProofUri): Promise<ProvingJobStatus>;
|
|
60
60
|
private cleanUpProvingJobState;
|
|
61
61
|
private cleanupPass;
|
|
62
|
-
private
|
|
62
|
+
private cleanupJobsOlderThanEpoch;
|
|
63
63
|
private reEnqueueExpiredJobs;
|
|
64
64
|
private enqueueJobInternal;
|
|
65
65
|
private isJobStale;
|
|
@@ -73,4 +73,4 @@ export declare class ProvingBroker implements ProvingJobProducer, ProvingJobCons
|
|
|
73
73
|
* is to get picked up by agents
|
|
74
74
|
*/
|
|
75
75
|
export declare const PROOF_TYPES_IN_PRIORITY_ORDER: ProvingRequestType[];
|
|
76
|
-
//# 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":"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
|
|
1
|
+
{"version":3,"file":"proving_broker.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker.ts"],"names":[],"mappings":"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"}
|
|
@@ -243,6 +243,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
cleanUpProvingJobState(ids) {
|
|
246
|
+
const idsToClean = new Set(ids);
|
|
246
247
|
for (const id of ids){
|
|
247
248
|
this.jobsCache.delete(id);
|
|
248
249
|
const deferred = this.promises.get(id);
|
|
@@ -258,6 +259,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
258
259
|
this.retries.delete(id);
|
|
259
260
|
this.enqueuedAt.delete(id);
|
|
260
261
|
}
|
|
262
|
+
this.completedJobNotifications = this.completedJobNotifications.filter((id)=>!idsToClean.has(id));
|
|
261
263
|
}
|
|
262
264
|
#getProvingJobStatus(id) {
|
|
263
265
|
const result = this.resultsCache.get(id);
|
|
@@ -486,20 +488,20 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
486
488
|
return this.#getProvingJob(filter);
|
|
487
489
|
}
|
|
488
490
|
async cleanupPass() {
|
|
489
|
-
this.cleanupStaleJobs();
|
|
490
491
|
this.reEnqueueExpiredJobs();
|
|
491
492
|
const oldestEpochToKeep = this.oldestEpochToKeep();
|
|
492
493
|
if (oldestEpochToKeep > 0) {
|
|
494
|
+
this.cleanupJobsOlderThanEpoch(EpochNumber(oldestEpochToKeep));
|
|
493
495
|
await this.database.deleteAllProvingJobsOlderThanEpoch(EpochNumber(oldestEpochToKeep));
|
|
494
496
|
this.logger.trace(`Deleted all epochs older than ${oldestEpochToKeep}`);
|
|
495
497
|
}
|
|
496
498
|
}
|
|
497
|
-
|
|
499
|
+
cleanupJobsOlderThanEpoch(epochNumber) {
|
|
498
500
|
const jobIds = Array.from(this.jobsCache.keys());
|
|
499
501
|
const jobsToClean = [];
|
|
500
502
|
for (const id of jobIds){
|
|
501
503
|
const job = this.jobsCache.get(id);
|
|
502
|
-
if (
|
|
504
|
+
if (job.epochNumber < epochNumber) {
|
|
503
505
|
jobsToClean.push(id);
|
|
504
506
|
}
|
|
505
507
|
}
|
|
@@ -499,7 +499,7 @@ export class KVBrokerDatabase {
|
|
|
499
499
|
continue;
|
|
500
500
|
}
|
|
501
501
|
logger.info(`Loading broker database for epoch ${epochNumber} from ${fullDirectory} with map size ${config.dataStoreMapSizeKb}KB`);
|
|
502
|
-
const db = await openVersionedStoreAt(fullDirectory, SingleEpochDatabase.SCHEMA_VERSION, config.
|
|
502
|
+
const db = await openVersionedStoreAt(fullDirectory, SingleEpochDatabase.SCHEMA_VERSION, config.rollupAddress, config.dataStoreMapSizeKb);
|
|
503
503
|
const epochDb = new SingleEpochDatabase(db);
|
|
504
504
|
epochs.set(epochNumber, epochDb);
|
|
505
505
|
}
|
|
@@ -563,7 +563,7 @@ export class KVBrokerDatabase {
|
|
|
563
563
|
recursive: true
|
|
564
564
|
});
|
|
565
565
|
this.logger.info(`Creating broker database for epoch ${epochNumber} at ${newEpochDirectory} with map size ${this.config.dataStoreMapSizeKb}`);
|
|
566
|
-
const db = await openVersionedStoreAt(newEpochDirectory, SingleEpochDatabase.SCHEMA_VERSION, this.config.
|
|
566
|
+
const db = await openVersionedStoreAt(newEpochDirectory, SingleEpochDatabase.SCHEMA_VERSION, this.config.rollupAddress, this.config.dataStoreMapSizeKb);
|
|
567
567
|
epochDb = new SingleEpochDatabase(db);
|
|
568
568
|
this.epochs.set(epochNumber, epochDb);
|
|
569
569
|
}
|