@aztec/prover-client 0.0.0-test.1 → 0.0.1-commit.017a351
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 +8 -8
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +26 -2
- package/dest/index.d.ts +1 -1
- package/dest/light/index.d.ts +2 -0
- package/dest/light/index.d.ts.map +1 -0
- package/dest/light/index.js +1 -0
- package/dest/light/lightweight_checkpoint_builder.d.ts +52 -0
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
- package/dest/light/lightweight_checkpoint_builder.js +231 -0
- package/dest/mocks/fixtures.d.ts +8 -8
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +36 -17
- package/dest/mocks/test_context.d.ts +45 -32
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +162 -90
- package/dest/orchestrator/block-building-helpers.d.ts +36 -29
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +170 -189
- package/dest/orchestrator/block-proving-state.d.ts +73 -48
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +289 -177
- package/dest/orchestrator/checkpoint-proving-state.d.ts +83 -0
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/checkpoint-proving-state.js +252 -0
- 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/epoch-proving-state.d.ts +43 -28
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +179 -73
- 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 +59 -51
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +808 -385
- package/dest/orchestrator/orchestrator_metrics.d.ts +1 -1
- package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator_metrics.js +2 -6
- 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/orchestrator/tx-proving-state.d.ts +15 -12
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +27 -44
- package/dest/prover-client/factory.d.ts +3 -3
- package/dest/prover-client/factory.d.ts.map +1 -1
- package/dest/prover-client/index.d.ts +1 -1
- package/dest/prover-client/prover-client.d.ts +68 -9
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +68 -14
- package/dest/prover-client/server-epoch-prover.d.ts +16 -12
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
- package/dest/prover-client/server-epoch-prover.js +11 -11
- package/dest/proving_broker/broker_prover_facade.d.ts +28 -19
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +74 -61
- package/dest/proving_broker/config.d.ts +18 -61
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +43 -9
- package/dest/proving_broker/factory.d.ts +2 -2
- package/dest/proving_broker/factory.d.ts.map +1 -1
- package/dest/proving_broker/factory.js +5 -1
- package/dest/proving_broker/fixtures.d.ts +3 -2
- package/dest/proving_broker/fixtures.d.ts.map +1 -1
- package/dest/proving_broker/fixtures.js +3 -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/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 -1
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.js +1 -0
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
- package/dest/proving_broker/proving_agent.d.ts +8 -12
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +86 -65
- package/dest/proving_broker/proving_broker.d.ts +18 -6
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +108 -44
- package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/memory.js +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +5 -3
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +401 -11
- package/dest/proving_broker/proving_broker_database.d.ts +3 -2
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
- 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 +22 -35
- package/dest/proving_broker/proving_job_controller.d.ts +11 -10
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +92 -62
- package/dest/proving_broker/rpc.d.ts +9 -7
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +88 -27
- package/dest/test/mock_proof_store.d.ts +9 -0
- package/dest/test/mock_proof_store.d.ts.map +1 -0
- package/dest/test/mock_proof_store.js +10 -0
- package/dest/test/mock_prover.d.ts +23 -17
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +38 -20
- package/package.json +34 -33
- package/src/config.ts +41 -9
- package/src/light/index.ts +1 -0
- package/src/light/lightweight_checkpoint_builder.ts +320 -0
- package/src/mocks/fixtures.ts +46 -40
- package/src/mocks/test_context.ts +231 -120
- package/src/orchestrator/block-building-helpers.ts +258 -334
- package/src/orchestrator/block-proving-state.ts +334 -231
- package/src/orchestrator/checkpoint-proving-state.ts +362 -0
- package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +271 -0
- package/src/orchestrator/epoch-proving-context.ts +101 -0
- package/src/orchestrator/epoch-proving-state.ts +239 -111
- package/src/orchestrator/index.ts +8 -0
- package/src/orchestrator/orchestrator.ts +591 -451
- package/src/orchestrator/orchestrator_metrics.ts +2 -6
- 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/orchestrator/tx-proving-state.ts +48 -66
- package/src/prover-client/factory.ts +6 -2
- package/src/prover-client/prover-client.ts +173 -38
- package/src/prover-client/server-epoch-prover.ts +40 -22
- package/src/proving_broker/broker_prover_facade.ts +227 -149
- package/src/proving_broker/config.ts +49 -8
- package/src/proving_broker/factory.ts +2 -1
- package/src/proving_broker/fixtures.ts +8 -3
- package/src/proving_broker/index.ts +1 -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 -0
- package/src/proving_broker/proof_store/inline_proof_store.ts +1 -1
- package/src/proving_broker/proving_agent.ts +95 -66
- package/src/proving_broker/proving_broker.ts +121 -49
- package/src/proving_broker/proving_broker_database/memory.ts +3 -2
- package/src/proving_broker/proving_broker_database/persisted.ts +31 -15
- package/src/proving_broker/proving_broker_database.ts +2 -1
- package/src/proving_broker/proving_broker_instrumentation.ts +23 -35
- package/src/proving_broker/proving_job_controller.ts +100 -83
- package/src/proving_broker/rpc.ts +46 -25
- package/src/test/mock_proof_store.ts +14 -0
- package/src/test/mock_prover.ts +156 -64
- package/dest/bin/get-proof-inputs.d.ts +0 -2
- package/dest/bin/get-proof-inputs.d.ts.map +0 -1
- package/dest/bin/get-proof-inputs.js +0 -51
- package/dest/block_builder/index.d.ts +0 -6
- package/dest/block_builder/index.d.ts.map +0 -1
- package/dest/block_builder/index.js +0 -1
- package/dest/block_builder/light.d.ts +0 -33
- package/dest/block_builder/light.d.ts.map +0 -1
- package/dest/block_builder/light.js +0 -82
- 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 -51
- package/dest/proving_broker/proving_agent_instrumentation.d.ts +0 -8
- package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +0 -1
- package/dest/proving_broker/proving_agent_instrumentation.js +0 -16
- package/src/bin/get-proof-inputs.ts +0 -59
- package/src/block_builder/index.ts +0 -6
- package/src/block_builder/light.ts +0 -101
- package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -72
- package/src/proving_broker/proving_agent_instrumentation.ts +0 -21
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
|
|
2
|
+
AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
|
|
3
3
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
4
4
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
5
5
|
RECURSIVE_PROOF_LENGTH,
|
|
6
|
-
TUBE_PROOF_LENGTH,
|
|
7
6
|
} from '@aztec/constants';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
7
|
+
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
8
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
9
|
+
import { chunk } from '@aztec/foundation/collection';
|
|
10
|
+
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
10
11
|
import { type PromiseWithResolvers, RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
11
12
|
import { truncate } from '@aztec/foundation/string';
|
|
12
13
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
13
14
|
import {
|
|
14
|
-
type ProofAndVerificationKey,
|
|
15
15
|
type ProofUri,
|
|
16
16
|
type ProvingJobId,
|
|
17
17
|
type ProvingJobInputsMap,
|
|
@@ -22,23 +22,33 @@ import {
|
|
|
22
22
|
type ServerCircuitProver,
|
|
23
23
|
makeProvingJobId,
|
|
24
24
|
} from '@aztec/stdlib/interfaces/server';
|
|
25
|
-
import type {
|
|
26
|
-
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
25
|
+
import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
26
|
+
import { ProvingRequestType, RecursiveProof } from '@aztec/stdlib/proofs';
|
|
27
27
|
import type {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
28
|
+
BlockMergeRollupPrivateInputs,
|
|
29
|
+
BlockRollupPublicInputs,
|
|
30
|
+
BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
31
|
+
BlockRootFirstRollupPrivateInputs,
|
|
32
|
+
BlockRootRollupPrivateInputs,
|
|
33
|
+
BlockRootSingleTxFirstRollupPrivateInputs,
|
|
34
|
+
BlockRootSingleTxRollupPrivateInputs,
|
|
35
|
+
CheckpointMergeRollupPrivateInputs,
|
|
36
|
+
CheckpointPaddingRollupPrivateInputs,
|
|
37
|
+
CheckpointRollupPublicInputs,
|
|
38
|
+
CheckpointRootRollupPrivateInputs,
|
|
39
|
+
CheckpointRootSingleBlockRollupPrivateInputs,
|
|
40
|
+
PrivateTxBaseRollupPrivateInputs,
|
|
41
|
+
PublicChonkVerifierPrivateInputs,
|
|
42
|
+
PublicChonkVerifierPublicInputs,
|
|
43
|
+
PublicTxBaseRollupPrivateInputs,
|
|
44
|
+
RootRollupPrivateInputs,
|
|
37
45
|
RootRollupPublicInputs,
|
|
38
|
-
|
|
39
|
-
|
|
46
|
+
TxMergeRollupPrivateInputs,
|
|
47
|
+
TxRollupPublicInputs,
|
|
40
48
|
} from '@aztec/stdlib/rollup';
|
|
41
49
|
|
|
50
|
+
import { createHash } from 'node:crypto';
|
|
51
|
+
|
|
42
52
|
import { InlineProofStore, type ProofStore } from './proof_store/index.js';
|
|
43
53
|
|
|
44
54
|
// Perform a snapshot sync every 30 seconds
|
|
@@ -61,14 +71,17 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
61
71
|
private runningPromise?: RunningPromise;
|
|
62
72
|
private timeOfLastSnapshotSync = Date.now();
|
|
63
73
|
private jobsToRetrieve: Set<ProvingJobId> = new Set();
|
|
74
|
+
private log: Logger;
|
|
64
75
|
|
|
65
76
|
constructor(
|
|
66
77
|
private broker: ProvingJobProducer,
|
|
67
78
|
private proofStore: ProofStore = new InlineProofStore(),
|
|
68
79
|
private failedProofStore?: ProofStore,
|
|
69
80
|
private pollIntervalMs = 1000,
|
|
70
|
-
|
|
71
|
-
) {
|
|
81
|
+
bindings?: LoggerBindings,
|
|
82
|
+
) {
|
|
83
|
+
this.log = createLogger('prover-client:broker-circuit-prover-facade', bindings);
|
|
84
|
+
}
|
|
72
85
|
|
|
73
86
|
/**
|
|
74
87
|
* This is a critical section. This function can not be async since it writes
|
|
@@ -93,7 +106,15 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
93
106
|
|
|
94
107
|
// Create a promise for this job id, regardless of whether it was enqueued at the broker
|
|
95
108
|
// The running promise will monitor for the job to be completed and resolve it either way
|
|
109
|
+
// We install an error handler to prevent unhandled rejections in the process before the
|
|
110
|
+
// job promise is awaited by the caller (see #13166)
|
|
96
111
|
const promise = promiseWithResolvers<ProvingJobResultsMap[T]>();
|
|
112
|
+
promise.promise.catch(err =>
|
|
113
|
+
this.log.error(`Job errored with '${err.message ?? err}' id=${id} type=${ProvingRequestType[type]}`, {
|
|
114
|
+
provingJobId: id,
|
|
115
|
+
provingJobType: ProvingRequestType[type],
|
|
116
|
+
}),
|
|
117
|
+
);
|
|
97
118
|
const abortFn = () => {
|
|
98
119
|
signal?.removeEventListener('abort', abortFn);
|
|
99
120
|
void this.broker.cancelProvingJob(id).catch(err => this.log.warn(`Error cancelling job id=${id}`, err));
|
|
@@ -114,7 +135,7 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
114
135
|
id: ProvingJobId,
|
|
115
136
|
type: T,
|
|
116
137
|
inputs: ProvingJobInputsMap[T],
|
|
117
|
-
epochNumber =
|
|
138
|
+
epochNumber = EpochNumber.ZERO,
|
|
118
139
|
signal?: AbortSignal,
|
|
119
140
|
): Promise<ProvingJobResultsMap[T]> {
|
|
120
141
|
const { job: job, isEnqueued } = this.getOrCreateProvingJob(id, type, signal);
|
|
@@ -125,27 +146,26 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
125
146
|
try {
|
|
126
147
|
const inputsUri = await this.proofStore.saveProofInput(id, type, inputs);
|
|
127
148
|
job.inputsUri = inputsUri;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
149
|
+
|
|
150
|
+
// Send the job to the broker
|
|
151
|
+
const jobStatus = await this.broker.enqueueProvingJob({ id, type, inputsUri, epochNumber });
|
|
152
|
+
|
|
153
|
+
const jobLogText = `id=${id} type=${ProvingRequestType[type]} epochNumber=${epochNumber}`;
|
|
154
|
+
const jobLogData = {
|
|
155
|
+
provingJobId: id,
|
|
156
|
+
provingJobType: ProvingRequestType[type],
|
|
132
157
|
epochNumber,
|
|
133
|
-
|
|
158
|
+
inputsUri: truncate(inputsUri),
|
|
159
|
+
status: jobStatus.status,
|
|
160
|
+
numOutstandingJobs: this.jobs.size,
|
|
161
|
+
};
|
|
134
162
|
|
|
135
163
|
// If we are here then the job was successfully accepted by the broker
|
|
136
164
|
// the returned status is for before any action was performed
|
|
137
165
|
if (jobStatus.status === 'fulfilled' || jobStatus.status === 'rejected') {
|
|
138
166
|
// Job was already completed by the broker
|
|
139
167
|
// No need to notify the broker on aborted job
|
|
140
|
-
this.log.verbose(
|
|
141
|
-
`Job already completed when sent to broker id=${id} type=${ProvingRequestType[type]} epochNumber=${epochNumber}`,
|
|
142
|
-
{
|
|
143
|
-
provingJobId: id,
|
|
144
|
-
provingJobType: ProvingRequestType[type],
|
|
145
|
-
epochNumber,
|
|
146
|
-
inputsUri: truncate(inputsUri),
|
|
147
|
-
},
|
|
148
|
-
);
|
|
168
|
+
this.log.verbose(`Job already completed when sent to broker ${jobLogText}`, jobLogData);
|
|
149
169
|
|
|
150
170
|
// Job was not enqueued. It must be completed already, add to our set of already completed jobs
|
|
151
171
|
this.jobsToRetrieve.add(id);
|
|
@@ -155,27 +175,10 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
155
175
|
|
|
156
176
|
// Job added for the first time
|
|
157
177
|
if (jobStatus.status === 'not-found') {
|
|
158
|
-
this.log.verbose(
|
|
159
|
-
`Job enqueued with broker id=${id} type=${ProvingRequestType[type]} epochNumber=${epochNumber}`,
|
|
160
|
-
{
|
|
161
|
-
provingJobId: id,
|
|
162
|
-
provingJobType: ProvingRequestType[type],
|
|
163
|
-
epochNumber,
|
|
164
|
-
inputsUri: truncate(inputsUri),
|
|
165
|
-
numOutstandingJobs: this.jobs.size,
|
|
166
|
-
},
|
|
167
|
-
);
|
|
178
|
+
this.log.verbose(`Job enqueued with broker ${jobLogText}`, jobLogData);
|
|
168
179
|
} else {
|
|
169
180
|
// Job was previously sent to the broker but is not completed
|
|
170
|
-
this.log.verbose(
|
|
171
|
-
`Job already in queue or in progress when sent to broker id=${id} type=${ProvingRequestType[type]} epochNumber=${epochNumber}`,
|
|
172
|
-
{
|
|
173
|
-
provingJobId: id,
|
|
174
|
-
provingJobType: ProvingRequestType[type],
|
|
175
|
-
epochNumber,
|
|
176
|
-
inputsUri: truncate(inputsUri),
|
|
177
|
-
},
|
|
178
|
-
);
|
|
181
|
+
this.log.verbose(`Job already in queue or in progress when sent to broker ${jobLogText}`, jobLogData);
|
|
179
182
|
}
|
|
180
183
|
}
|
|
181
184
|
} catch (err) {
|
|
@@ -225,17 +228,11 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
225
228
|
// We collect all returned notifications and return them
|
|
226
229
|
const allCompleted = new Set<ProvingJobId>();
|
|
227
230
|
try {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
const
|
|
231
|
-
const completed = await this.broker.getCompletedJobs(slice);
|
|
231
|
+
const batches = ids.length > 0 ? chunk(ids, SNAPSHOT_SYNC_CHECK_MAX_REQUEST_SIZE) : [[]];
|
|
232
|
+
await asyncPool(1, batches, async batch => {
|
|
233
|
+
const completed = await this.broker.getCompletedJobs(batch);
|
|
232
234
|
completed.forEach(id => allCompleted.add(id));
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
if (numRequests === 0) {
|
|
236
|
-
const final = await this.broker.getCompletedJobs([]);
|
|
237
|
-
final.forEach(id => allCompleted.add(id));
|
|
238
|
-
}
|
|
235
|
+
});
|
|
239
236
|
} catch (err) {
|
|
240
237
|
this.log.error(`Error thrown when requesting completed job notifications from the broker`, err);
|
|
241
238
|
}
|
|
@@ -351,12 +348,8 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
351
348
|
.map(id => this.jobs.get(id)!)
|
|
352
349
|
.filter(x => x !== undefined);
|
|
353
350
|
const totalJobsToRetrieve = toBeRetrieved.length;
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
const slice = toBeRetrieved.splice(0, MAX_CONCURRENT_JOB_SETTLED_REQUESTS);
|
|
357
|
-
const results = await Promise.all(slice.map(job => processJob(job!)));
|
|
358
|
-
totalJobsRetrieved += results.filter(x => x).length;
|
|
359
|
-
}
|
|
351
|
+
const results = await asyncPool(MAX_CONCURRENT_JOB_SETTLED_REQUESTS, toBeRetrieved, job => processJob(job));
|
|
352
|
+
const totalJobsRetrieved = results.filter(x => x).length;
|
|
360
353
|
if (totalJobsToRetrieve > 0) {
|
|
361
354
|
this.log.verbose(
|
|
362
355
|
`Successfully retrieved ${totalJobsRetrieved} of ${totalJobsToRetrieve} jobs that should be ready, total ready jobs is now: ${this.jobsToRetrieve.size}`,
|
|
@@ -400,8 +393,8 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
400
393
|
getAvmProof(
|
|
401
394
|
inputs: AvmCircuitInputs,
|
|
402
395
|
signal?: AbortSignal,
|
|
403
|
-
epochNumber?:
|
|
404
|
-
): Promise<
|
|
396
|
+
epochNumber?: EpochNumber,
|
|
397
|
+
): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>> {
|
|
405
398
|
return this.enqueueJob(
|
|
406
399
|
this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber),
|
|
407
400
|
ProvingRequestType.PUBLIC_VM,
|
|
@@ -412,29 +405,127 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
412
405
|
}
|
|
413
406
|
|
|
414
407
|
getBaseParityProof(
|
|
415
|
-
inputs:
|
|
408
|
+
inputs: ParityBasePrivateInputs,
|
|
416
409
|
signal?: AbortSignal,
|
|
417
|
-
epochNumber?:
|
|
410
|
+
epochNumber?: EpochNumber,
|
|
418
411
|
): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
|
|
419
412
|
return this.enqueueJob(
|
|
420
|
-
this.generateId(ProvingRequestType.
|
|
421
|
-
ProvingRequestType.
|
|
413
|
+
this.generateId(ProvingRequestType.PARITY_BASE, inputs, epochNumber),
|
|
414
|
+
ProvingRequestType.PARITY_BASE,
|
|
422
415
|
inputs,
|
|
423
416
|
epochNumber,
|
|
424
417
|
signal,
|
|
425
418
|
);
|
|
426
419
|
}
|
|
427
420
|
|
|
428
|
-
|
|
429
|
-
input:
|
|
421
|
+
getTxMergeRollupProof(
|
|
422
|
+
input: TxMergeRollupPrivateInputs,
|
|
430
423
|
signal?: AbortSignal,
|
|
431
|
-
epochNumber?:
|
|
424
|
+
epochNumber?: EpochNumber,
|
|
425
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
426
|
+
return this.enqueueJob(
|
|
427
|
+
this.generateId(ProvingRequestType.TX_MERGE_ROLLUP, input, epochNumber),
|
|
428
|
+
ProvingRequestType.TX_MERGE_ROLLUP,
|
|
429
|
+
input,
|
|
430
|
+
epochNumber,
|
|
431
|
+
signal,
|
|
432
|
+
);
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
getPublicChonkVerifierProof(
|
|
436
|
+
inputs: PublicChonkVerifierPrivateInputs,
|
|
437
|
+
signal?: AbortSignal,
|
|
438
|
+
epochNumber?: EpochNumber,
|
|
432
439
|
): Promise<
|
|
433
|
-
PublicInputsAndRecursiveProof<
|
|
440
|
+
PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
434
441
|
> {
|
|
435
442
|
return this.enqueueJob(
|
|
436
|
-
this.generateId(ProvingRequestType.
|
|
437
|
-
ProvingRequestType.
|
|
443
|
+
this.generateId(ProvingRequestType.PUBLIC_CHONK_VERIFIER, inputs, epochNumber),
|
|
444
|
+
ProvingRequestType.PUBLIC_CHONK_VERIFIER,
|
|
445
|
+
inputs,
|
|
446
|
+
epochNumber,
|
|
447
|
+
signal,
|
|
448
|
+
);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
getPrivateTxBaseRollupProof(
|
|
452
|
+
baseRollupInput: PrivateTxBaseRollupPrivateInputs,
|
|
453
|
+
signal?: AbortSignal,
|
|
454
|
+
epochNumber?: EpochNumber,
|
|
455
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
456
|
+
return this.enqueueJob(
|
|
457
|
+
this.generateId(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, baseRollupInput, epochNumber),
|
|
458
|
+
ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
|
|
459
|
+
baseRollupInput,
|
|
460
|
+
epochNumber,
|
|
461
|
+
signal,
|
|
462
|
+
);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
getPublicTxBaseRollupProof(
|
|
466
|
+
inputs: PublicTxBaseRollupPrivateInputs,
|
|
467
|
+
signal?: AbortSignal,
|
|
468
|
+
epochNumber?: EpochNumber,
|
|
469
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
470
|
+
return this.enqueueJob(
|
|
471
|
+
this.generateId(ProvingRequestType.PUBLIC_TX_BASE_ROLLUP, inputs, epochNumber),
|
|
472
|
+
ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
|
|
473
|
+
inputs,
|
|
474
|
+
epochNumber,
|
|
475
|
+
signal,
|
|
476
|
+
);
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
getRootParityProof(
|
|
480
|
+
inputs: ParityRootPrivateInputs,
|
|
481
|
+
signal?: AbortSignal,
|
|
482
|
+
epochNumber?: EpochNumber,
|
|
483
|
+
): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
|
|
484
|
+
return this.enqueueJob(
|
|
485
|
+
this.generateId(ProvingRequestType.PARITY_ROOT, inputs, epochNumber),
|
|
486
|
+
ProvingRequestType.PARITY_ROOT,
|
|
487
|
+
inputs,
|
|
488
|
+
epochNumber,
|
|
489
|
+
signal,
|
|
490
|
+
);
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
getBlockRootFirstRollupProof(
|
|
494
|
+
input: BlockRootFirstRollupPrivateInputs,
|
|
495
|
+
signal?: AbortSignal,
|
|
496
|
+
epochNumber?: EpochNumber,
|
|
497
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
498
|
+
return this.enqueueJob(
|
|
499
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, input, epochNumber),
|
|
500
|
+
ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP,
|
|
501
|
+
input,
|
|
502
|
+
epochNumber,
|
|
503
|
+
signal,
|
|
504
|
+
);
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
getBlockRootSingleTxFirstRollupProof(
|
|
508
|
+
input: BlockRootSingleTxFirstRollupPrivateInputs,
|
|
509
|
+
signal?: AbortSignal,
|
|
510
|
+
epochNumber?: EpochNumber,
|
|
511
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
512
|
+
return this.enqueueJob(
|
|
513
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, input, epochNumber),
|
|
514
|
+
ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
|
|
515
|
+
input,
|
|
516
|
+
epochNumber,
|
|
517
|
+
signal,
|
|
518
|
+
);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
getBlockRootEmptyTxFirstRollupProof(
|
|
522
|
+
input: BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
523
|
+
signal?: AbortSignal,
|
|
524
|
+
epochNumber?: EpochNumber,
|
|
525
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
526
|
+
return this.enqueueJob(
|
|
527
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, input, epochNumber),
|
|
528
|
+
ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
|
|
438
529
|
input,
|
|
439
530
|
epochNumber,
|
|
440
531
|
signal,
|
|
@@ -442,12 +533,10 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
442
533
|
}
|
|
443
534
|
|
|
444
535
|
getBlockRootRollupProof(
|
|
445
|
-
input:
|
|
536
|
+
input: BlockRootRollupPrivateInputs,
|
|
446
537
|
signal?: AbortSignal,
|
|
447
|
-
epochNumber?:
|
|
448
|
-
): Promise<
|
|
449
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
450
|
-
> {
|
|
538
|
+
epochNumber?: EpochNumber,
|
|
539
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
451
540
|
return this.enqueueJob(
|
|
452
541
|
this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
|
|
453
542
|
ProvingRequestType.BLOCK_ROOT_ROLLUP,
|
|
@@ -457,103 +546,102 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
457
546
|
);
|
|
458
547
|
}
|
|
459
548
|
|
|
460
|
-
|
|
461
|
-
input:
|
|
549
|
+
getBlockRootSingleTxRollupProof(
|
|
550
|
+
input: BlockRootSingleTxRollupPrivateInputs,
|
|
462
551
|
signal?: AbortSignal,
|
|
463
|
-
epochNumber?:
|
|
464
|
-
): Promise<
|
|
465
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
466
|
-
> {
|
|
552
|
+
epochNumber?: EpochNumber,
|
|
553
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
467
554
|
return this.enqueueJob(
|
|
468
|
-
this.generateId(ProvingRequestType.
|
|
469
|
-
ProvingRequestType.
|
|
555
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, input, epochNumber),
|
|
556
|
+
ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
|
|
470
557
|
input,
|
|
471
558
|
epochNumber,
|
|
472
559
|
signal,
|
|
473
560
|
);
|
|
474
561
|
}
|
|
475
562
|
|
|
476
|
-
|
|
477
|
-
input:
|
|
563
|
+
getBlockMergeRollupProof(
|
|
564
|
+
input: BlockMergeRollupPrivateInputs,
|
|
478
565
|
signal?: AbortSignal,
|
|
479
|
-
epochNumber?:
|
|
480
|
-
): Promise<
|
|
481
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
482
|
-
> {
|
|
566
|
+
epochNumber?: EpochNumber,
|
|
567
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
483
568
|
return this.enqueueJob(
|
|
484
|
-
this.generateId(ProvingRequestType.
|
|
485
|
-
ProvingRequestType.
|
|
569
|
+
this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
|
|
570
|
+
ProvingRequestType.BLOCK_MERGE_ROLLUP,
|
|
486
571
|
input,
|
|
487
572
|
epochNumber,
|
|
488
573
|
signal,
|
|
489
574
|
);
|
|
490
575
|
}
|
|
491
576
|
|
|
492
|
-
|
|
493
|
-
input:
|
|
577
|
+
getCheckpointRootRollupProof(
|
|
578
|
+
input: CheckpointRootRollupPrivateInputs,
|
|
494
579
|
signal?: AbortSignal,
|
|
495
|
-
epochNumber?:
|
|
580
|
+
epochNumber?: EpochNumber,
|
|
496
581
|
): Promise<
|
|
497
|
-
PublicInputsAndRecursiveProof<
|
|
582
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
498
583
|
> {
|
|
499
584
|
return this.enqueueJob(
|
|
500
|
-
this.generateId(ProvingRequestType.
|
|
501
|
-
ProvingRequestType.
|
|
585
|
+
this.generateId(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, input, epochNumber),
|
|
586
|
+
ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
|
|
502
587
|
input,
|
|
503
588
|
epochNumber,
|
|
504
589
|
signal,
|
|
505
590
|
);
|
|
506
591
|
}
|
|
507
|
-
|
|
508
|
-
|
|
592
|
+
|
|
593
|
+
getCheckpointRootSingleBlockRollupProof(
|
|
594
|
+
input: CheckpointRootSingleBlockRollupPrivateInputs,
|
|
509
595
|
signal?: AbortSignal,
|
|
510
|
-
epochNumber?:
|
|
596
|
+
epochNumber?: EpochNumber,
|
|
511
597
|
): Promise<
|
|
512
|
-
PublicInputsAndRecursiveProof<
|
|
598
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
513
599
|
> {
|
|
514
600
|
return this.enqueueJob(
|
|
515
|
-
this.generateId(ProvingRequestType.
|
|
516
|
-
ProvingRequestType.
|
|
517
|
-
|
|
601
|
+
this.generateId(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, input, epochNumber),
|
|
602
|
+
ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
|
|
603
|
+
input,
|
|
518
604
|
epochNumber,
|
|
519
605
|
signal,
|
|
520
606
|
);
|
|
521
607
|
}
|
|
522
608
|
|
|
523
|
-
|
|
524
|
-
|
|
609
|
+
getCheckpointPaddingRollupProof(
|
|
610
|
+
input: CheckpointPaddingRollupPrivateInputs,
|
|
525
611
|
signal?: AbortSignal,
|
|
526
|
-
epochNumber?:
|
|
612
|
+
epochNumber?: EpochNumber,
|
|
527
613
|
): Promise<
|
|
528
|
-
PublicInputsAndRecursiveProof<
|
|
614
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
529
615
|
> {
|
|
530
616
|
return this.enqueueJob(
|
|
531
|
-
this.generateId(ProvingRequestType.
|
|
532
|
-
ProvingRequestType.
|
|
533
|
-
|
|
617
|
+
this.generateId(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, input, epochNumber),
|
|
618
|
+
ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
|
|
619
|
+
input,
|
|
534
620
|
epochNumber,
|
|
535
621
|
signal,
|
|
536
622
|
);
|
|
537
623
|
}
|
|
538
624
|
|
|
539
|
-
|
|
540
|
-
|
|
625
|
+
getCheckpointMergeRollupProof(
|
|
626
|
+
input: CheckpointMergeRollupPrivateInputs,
|
|
541
627
|
signal?: AbortSignal,
|
|
542
|
-
epochNumber?:
|
|
543
|
-
): Promise<
|
|
628
|
+
epochNumber?: EpochNumber,
|
|
629
|
+
): Promise<
|
|
630
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
631
|
+
> {
|
|
544
632
|
return this.enqueueJob(
|
|
545
|
-
this.generateId(ProvingRequestType.
|
|
546
|
-
ProvingRequestType.
|
|
547
|
-
|
|
633
|
+
this.generateId(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, input, epochNumber),
|
|
634
|
+
ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
|
|
635
|
+
input,
|
|
548
636
|
epochNumber,
|
|
549
637
|
signal,
|
|
550
638
|
);
|
|
551
639
|
}
|
|
552
640
|
|
|
553
641
|
getRootRollupProof(
|
|
554
|
-
input:
|
|
642
|
+
input: RootRollupPrivateInputs,
|
|
555
643
|
signal?: AbortSignal,
|
|
556
|
-
epochNumber?:
|
|
644
|
+
epochNumber?: EpochNumber,
|
|
557
645
|
): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
|
|
558
646
|
return this.enqueueJob(
|
|
559
647
|
this.generateId(ProvingRequestType.ROOT_ROLLUP, input, epochNumber),
|
|
@@ -564,22 +652,12 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
564
652
|
);
|
|
565
653
|
}
|
|
566
654
|
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
epochNumber
|
|
571
|
-
):
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
ProvingRequestType.TUBE_PROOF,
|
|
575
|
-
tubeInput,
|
|
576
|
-
epochNumber,
|
|
577
|
-
signal,
|
|
578
|
-
);
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
private generateId(type: ProvingRequestType, inputs: { toBuffer(): Buffer }, epochNumber = 0) {
|
|
582
|
-
const inputsHash = sha256(inputs.toBuffer());
|
|
583
|
-
return makeProvingJobId(epochNumber, type, inputsHash.toString('hex'));
|
|
655
|
+
private generateId(
|
|
656
|
+
type: ProvingRequestType,
|
|
657
|
+
inputs: { toBuffer(): Buffer },
|
|
658
|
+
epochNumber = EpochNumber.ZERO,
|
|
659
|
+
): ProvingJobId {
|
|
660
|
+
const inputsHash = createHash('sha256').update(inputs.toBuffer()).digest('hex');
|
|
661
|
+
return makeProvingJobId(epochNumber, type, inputsHash);
|
|
584
662
|
}
|
|
585
663
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { type L1ReaderConfig, l1ReaderConfigMappings } from '@aztec/ethereum';
|
|
1
|
+
import { type L1ReaderConfig, l1ReaderConfigMappings } from '@aztec/ethereum/l1-reader';
|
|
2
2
|
import {
|
|
3
3
|
type ConfigMappingsType,
|
|
4
4
|
booleanConfigHelper,
|
|
5
5
|
getDefaultConfig,
|
|
6
6
|
numberConfigHelper,
|
|
7
|
+
optionalNumberConfigHelper,
|
|
7
8
|
} from '@aztec/foundation/config';
|
|
8
|
-
import {
|
|
9
|
+
import { pickConfigMappings } from '@aztec/foundation/config';
|
|
10
|
+
import { type ChainConfig, chainConfigMappings } from '@aztec/stdlib/config';
|
|
11
|
+
import { type DataStoreConfig, dataConfigMappings } from '@aztec/stdlib/kv-store';
|
|
9
12
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
10
13
|
|
|
11
14
|
import { z } from 'zod';
|
|
@@ -20,18 +23,23 @@ export const ProverBrokerConfig = z.object({
|
|
|
20
23
|
/** If starting a prover broker locally, the directory to store broker data */
|
|
21
24
|
dataDirectory: z.string().optional(),
|
|
22
25
|
/** The size of the data store map */
|
|
23
|
-
|
|
26
|
+
dataStoreMapSizeKb: z.number().int().nonnegative(),
|
|
27
|
+
/** The size of the prover broker's database. Will override the dataStoreMapSizeKb if set. */
|
|
28
|
+
proverBrokerStoreMapSizeKb: z.number().int().nonnegative().optional(),
|
|
24
29
|
/** The prover broker may batch jobs together before writing to the database */
|
|
25
30
|
proverBrokerBatchSize: z.number().int().nonnegative(),
|
|
26
31
|
/** How often the job batches get flushed */
|
|
27
32
|
proverBrokerBatchIntervalMs: z.number().int().nonnegative(),
|
|
28
33
|
/** The maximum number of epochs to keep results for */
|
|
29
34
|
proverBrokerMaxEpochsToKeepResultsFor: z.number().int().nonnegative(),
|
|
35
|
+
/** Enable debug replay mode for replaying proving jobs from stored inputs */
|
|
36
|
+
proverBrokerDebugReplayEnabled: z.boolean(),
|
|
30
37
|
});
|
|
31
38
|
|
|
32
39
|
export type ProverBrokerConfig = z.infer<typeof ProverBrokerConfig> &
|
|
33
|
-
Pick<DataStoreConfig, '
|
|
34
|
-
L1ReaderConfig
|
|
40
|
+
Pick<DataStoreConfig, 'dataStoreMapSizeKb' | 'dataDirectory'> &
|
|
41
|
+
L1ReaderConfig &
|
|
42
|
+
Pick<ChainConfig, 'rollupVersion'>;
|
|
35
43
|
|
|
36
44
|
export const proverBrokerConfigMappings: ConfigMappingsType<ProverBrokerConfig> = {
|
|
37
45
|
proverBrokerJobTimeoutMs: {
|
|
@@ -64,8 +72,19 @@ export const proverBrokerConfigMappings: ConfigMappingsType<ProverBrokerConfig>
|
|
|
64
72
|
description: 'The maximum number of epochs to keep results for',
|
|
65
73
|
...numberConfigHelper(1),
|
|
66
74
|
},
|
|
67
|
-
|
|
75
|
+
proverBrokerStoreMapSizeKb: {
|
|
76
|
+
env: 'PROVER_BROKER_STORE_MAP_SIZE_KB',
|
|
77
|
+
...optionalNumberConfigHelper(),
|
|
78
|
+
description: "The size of the prover broker's database. Will override the dataStoreMapSizeKb if set.",
|
|
79
|
+
},
|
|
80
|
+
proverBrokerDebugReplayEnabled: {
|
|
81
|
+
env: 'PROVER_BROKER_DEBUG_REPLAY_ENABLED',
|
|
82
|
+
description: 'Enable debug replay mode for replaying proving jobs from stored inputs',
|
|
83
|
+
...booleanConfigHelper(false),
|
|
84
|
+
},
|
|
68
85
|
...dataConfigMappings,
|
|
86
|
+
...l1ReaderConfigMappings,
|
|
87
|
+
...pickConfigMappings(chainConfigMappings, ['rollupVersion']),
|
|
69
88
|
};
|
|
70
89
|
|
|
71
90
|
export const defaultProverBrokerConfig: ProverBrokerConfig = getDefaultConfig(proverBrokerConfigMappings);
|
|
@@ -87,6 +106,12 @@ export const ProverAgentConfig = z.object({
|
|
|
87
106
|
proverTestDelayMs: z.number(),
|
|
88
107
|
/** If using realistic delays, what percentage of realistic times to apply. */
|
|
89
108
|
proverTestDelayFactor: z.number(),
|
|
109
|
+
/** The delay (ms) to inject during fake proof verification */
|
|
110
|
+
proverTestVerificationDelayMs: z.number().optional(),
|
|
111
|
+
/** Whether to abort pending proving jobs when the orchestrator is cancelled */
|
|
112
|
+
cancelJobsOnStop: z.boolean(),
|
|
113
|
+
/** Where to store proving results. Must be accessible to both prover node and agents. If not set will inline-encode the parameters */
|
|
114
|
+
proofStore: z.string().optional(),
|
|
90
115
|
});
|
|
91
116
|
|
|
92
117
|
export type ProverAgentConfig = z.infer<typeof ProverAgentConfig>;
|
|
@@ -100,7 +125,7 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
|
|
|
100
125
|
proverAgentPollIntervalMs: {
|
|
101
126
|
env: 'PROVER_AGENT_POLL_INTERVAL_MS',
|
|
102
127
|
description: 'The interval agents poll for jobs at',
|
|
103
|
-
...numberConfigHelper(
|
|
128
|
+
...numberConfigHelper(1000),
|
|
104
129
|
},
|
|
105
130
|
proverAgentProofTypes: {
|
|
106
131
|
env: 'PROVER_AGENT_PROOF_TYPES',
|
|
@@ -118,7 +143,7 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
|
|
|
118
143
|
realProofs: {
|
|
119
144
|
env: 'PROVER_REAL_PROOFS',
|
|
120
145
|
description: 'Whether to construct real proofs',
|
|
121
|
-
...booleanConfigHelper(
|
|
146
|
+
...booleanConfigHelper(true),
|
|
122
147
|
},
|
|
123
148
|
proverTestDelayType: {
|
|
124
149
|
env: 'PROVER_TEST_DELAY_TYPE',
|
|
@@ -135,4 +160,20 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
|
|
|
135
160
|
description: 'If using realistic delays, what percentage of realistic times to apply.',
|
|
136
161
|
...numberConfigHelper(1),
|
|
137
162
|
},
|
|
163
|
+
proverTestVerificationDelayMs: {
|
|
164
|
+
env: 'PROVER_TEST_VERIFICATION_DELAY_MS',
|
|
165
|
+
description: 'The delay (ms) to inject during fake proof verification',
|
|
166
|
+
...numberConfigHelper(10),
|
|
167
|
+
},
|
|
168
|
+
cancelJobsOnStop: {
|
|
169
|
+
env: 'PROVER_CANCEL_JOBS_ON_STOP',
|
|
170
|
+
description:
|
|
171
|
+
'Whether to abort pending proving jobs when the orchestrator is cancelled. ' +
|
|
172
|
+
'When false (default), jobs remain in the broker queue and can be reused on restart/reorg.',
|
|
173
|
+
...booleanConfigHelper(false),
|
|
174
|
+
},
|
|
175
|
+
proofStore: {
|
|
176
|
+
env: 'PROVER_PROOF_STORE',
|
|
177
|
+
description: 'Optional proof input store for the prover',
|
|
178
|
+
},
|
|
138
179
|
};
|