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