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