@aztec/prover-client 0.0.0-test.1 → 0.0.1-commit.1142ef1
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/block-factory/index.d.ts +2 -0
- package/dest/block-factory/index.d.ts.map +1 -0
- package/dest/block-factory/light.d.ts +38 -0
- package/dest/block-factory/light.d.ts.map +1 -0
- package/dest/block-factory/light.js +106 -0
- 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 +43 -0
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
- package/dest/light/lightweight_checkpoint_builder.js +183 -0
- package/dest/mocks/fixtures.d.ts +8 -8
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +34 -16
- package/dest/mocks/test_context.d.ts +42 -32
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +144 -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 +63 -0
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/checkpoint-proving-state.js +210 -0
- package/dest/orchestrator/epoch-proving-state.d.ts +41 -27
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +143 -73
- package/dest/orchestrator/index.d.ts +1 -1
- package/dest/orchestrator/orchestrator.d.ts +37 -34
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +788 -277
- 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 +6 -5
- 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 +25 -17
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +59 -40
- package/dest/proving_broker/config.d.ts +19 -10
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +23 -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 +6 -11
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +84 -63
- 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 +11 -35
- package/dest/proving_broker/proving_job_controller.d.ts +9 -9
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +87 -60
- 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 +34 -31
- package/src/block-factory/index.ts +1 -0
- package/src/block-factory/light.ts +136 -0
- package/src/config.ts +25 -9
- package/src/light/index.ts +1 -0
- package/src/light/lightweight_checkpoint_builder.ts +249 -0
- package/src/mocks/fixtures.ts +44 -39
- package/src/mocks/test_context.ts +218 -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 +303 -0
- package/src/orchestrator/epoch-proving-state.ts +191 -113
- package/src/orchestrator/orchestrator.ts +587 -318
- 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 +20 -25
- package/src/prover-client/server-epoch-prover.ts +40 -22
- package/src/proving_broker/broker_prover_facade.ts +206 -128
- package/src/proving_broker/config.ts +25 -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 +90 -64
- 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 +10 -35
- package/src/proving_broker/proving_job_controller.ts +92 -81
- 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/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
- /package/dest/{block_builder → block-factory}/index.js +0 -0
|
@@ -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 {
|
|
7
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
8
|
+
import { sha256 } from '@aztec/foundation/crypto/sha256';
|
|
9
9
|
import { 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';
|
|
@@ -93,7 +100,15 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
93
100
|
|
|
94
101
|
// Create a promise for this job id, regardless of whether it was enqueued at the broker
|
|
95
102
|
// The running promise will monitor for the job to be completed and resolve it either way
|
|
103
|
+
// We install an error handler to prevent unhandled rejections in the process before the
|
|
104
|
+
// job promise is awaited by the caller (see #13166)
|
|
96
105
|
const promise = promiseWithResolvers<ProvingJobResultsMap[T]>();
|
|
106
|
+
promise.promise.catch(err =>
|
|
107
|
+
this.log.error(`Job errored with '${err.message ?? err}' id=${id} type=${ProvingRequestType[type]}`, {
|
|
108
|
+
provingJobId: id,
|
|
109
|
+
provingJobType: ProvingRequestType[type],
|
|
110
|
+
}),
|
|
111
|
+
);
|
|
97
112
|
const abortFn = () => {
|
|
98
113
|
signal?.removeEventListener('abort', abortFn);
|
|
99
114
|
void this.broker.cancelProvingJob(id).catch(err => this.log.warn(`Error cancelling job id=${id}`, err));
|
|
@@ -114,7 +129,7 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
114
129
|
id: ProvingJobId,
|
|
115
130
|
type: T,
|
|
116
131
|
inputs: ProvingJobInputsMap[T],
|
|
117
|
-
epochNumber =
|
|
132
|
+
epochNumber = EpochNumber.ZERO,
|
|
118
133
|
signal?: AbortSignal,
|
|
119
134
|
): Promise<ProvingJobResultsMap[T]> {
|
|
120
135
|
const { job: job, isEnqueued } = this.getOrCreateProvingJob(id, type, signal);
|
|
@@ -125,27 +140,26 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
125
140
|
try {
|
|
126
141
|
const inputsUri = await this.proofStore.saveProofInput(id, type, inputs);
|
|
127
142
|
job.inputsUri = inputsUri;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
143
|
+
|
|
144
|
+
// Send the job to the broker
|
|
145
|
+
const jobStatus = await this.broker.enqueueProvingJob({ id, type, inputsUri, epochNumber });
|
|
146
|
+
|
|
147
|
+
const jobLogText = `id=${id} type=${ProvingRequestType[type]} epochNumber=${epochNumber}`;
|
|
148
|
+
const jobLogData = {
|
|
149
|
+
provingJobId: id,
|
|
150
|
+
provingJobType: ProvingRequestType[type],
|
|
132
151
|
epochNumber,
|
|
133
|
-
|
|
152
|
+
inputsUri: truncate(inputsUri),
|
|
153
|
+
status: jobStatus.status,
|
|
154
|
+
numOutstandingJobs: this.jobs.size,
|
|
155
|
+
};
|
|
134
156
|
|
|
135
157
|
// If we are here then the job was successfully accepted by the broker
|
|
136
158
|
// the returned status is for before any action was performed
|
|
137
159
|
if (jobStatus.status === 'fulfilled' || jobStatus.status === 'rejected') {
|
|
138
160
|
// Job was already completed by the broker
|
|
139
161
|
// 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
|
-
);
|
|
162
|
+
this.log.verbose(`Job already completed when sent to broker ${jobLogText}`, jobLogData);
|
|
149
163
|
|
|
150
164
|
// Job was not enqueued. It must be completed already, add to our set of already completed jobs
|
|
151
165
|
this.jobsToRetrieve.add(id);
|
|
@@ -155,27 +169,10 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
155
169
|
|
|
156
170
|
// Job added for the first time
|
|
157
171
|
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
|
-
);
|
|
172
|
+
this.log.verbose(`Job enqueued with broker ${jobLogText}`, jobLogData);
|
|
168
173
|
} else {
|
|
169
174
|
// 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
|
-
);
|
|
175
|
+
this.log.verbose(`Job already in queue or in progress when sent to broker ${jobLogText}`, jobLogData);
|
|
179
176
|
}
|
|
180
177
|
}
|
|
181
178
|
} catch (err) {
|
|
@@ -400,8 +397,8 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
400
397
|
getAvmProof(
|
|
401
398
|
inputs: AvmCircuitInputs,
|
|
402
399
|
signal?: AbortSignal,
|
|
403
|
-
epochNumber?:
|
|
404
|
-
): Promise<
|
|
400
|
+
epochNumber?: EpochNumber,
|
|
401
|
+
): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>> {
|
|
405
402
|
return this.enqueueJob(
|
|
406
403
|
this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber),
|
|
407
404
|
ProvingRequestType.PUBLIC_VM,
|
|
@@ -412,29 +409,127 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
412
409
|
}
|
|
413
410
|
|
|
414
411
|
getBaseParityProof(
|
|
415
|
-
inputs:
|
|
412
|
+
inputs: ParityBasePrivateInputs,
|
|
416
413
|
signal?: AbortSignal,
|
|
417
|
-
epochNumber?:
|
|
414
|
+
epochNumber?: EpochNumber,
|
|
418
415
|
): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
|
|
419
416
|
return this.enqueueJob(
|
|
420
|
-
this.generateId(ProvingRequestType.
|
|
421
|
-
ProvingRequestType.
|
|
417
|
+
this.generateId(ProvingRequestType.PARITY_BASE, inputs, epochNumber),
|
|
418
|
+
ProvingRequestType.PARITY_BASE,
|
|
422
419
|
inputs,
|
|
423
420
|
epochNumber,
|
|
424
421
|
signal,
|
|
425
422
|
);
|
|
426
423
|
}
|
|
427
424
|
|
|
428
|
-
|
|
429
|
-
input:
|
|
425
|
+
getTxMergeRollupProof(
|
|
426
|
+
input: TxMergeRollupPrivateInputs,
|
|
430
427
|
signal?: AbortSignal,
|
|
431
|
-
epochNumber?:
|
|
428
|
+
epochNumber?: EpochNumber,
|
|
429
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
430
|
+
return this.enqueueJob(
|
|
431
|
+
this.generateId(ProvingRequestType.TX_MERGE_ROLLUP, input, epochNumber),
|
|
432
|
+
ProvingRequestType.TX_MERGE_ROLLUP,
|
|
433
|
+
input,
|
|
434
|
+
epochNumber,
|
|
435
|
+
signal,
|
|
436
|
+
);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
getPublicChonkVerifierProof(
|
|
440
|
+
inputs: PublicChonkVerifierPrivateInputs,
|
|
441
|
+
signal?: AbortSignal,
|
|
442
|
+
epochNumber?: EpochNumber,
|
|
432
443
|
): Promise<
|
|
433
|
-
PublicInputsAndRecursiveProof<
|
|
444
|
+
PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
434
445
|
> {
|
|
435
446
|
return this.enqueueJob(
|
|
436
|
-
this.generateId(ProvingRequestType.
|
|
437
|
-
ProvingRequestType.
|
|
447
|
+
this.generateId(ProvingRequestType.PUBLIC_CHONK_VERIFIER, inputs, epochNumber),
|
|
448
|
+
ProvingRequestType.PUBLIC_CHONK_VERIFIER,
|
|
449
|
+
inputs,
|
|
450
|
+
epochNumber,
|
|
451
|
+
signal,
|
|
452
|
+
);
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
getPrivateTxBaseRollupProof(
|
|
456
|
+
baseRollupInput: PrivateTxBaseRollupPrivateInputs,
|
|
457
|
+
signal?: AbortSignal,
|
|
458
|
+
epochNumber?: EpochNumber,
|
|
459
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
460
|
+
return this.enqueueJob(
|
|
461
|
+
this.generateId(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, baseRollupInput, epochNumber),
|
|
462
|
+
ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
|
|
463
|
+
baseRollupInput,
|
|
464
|
+
epochNumber,
|
|
465
|
+
signal,
|
|
466
|
+
);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
getPublicTxBaseRollupProof(
|
|
470
|
+
inputs: PublicTxBaseRollupPrivateInputs,
|
|
471
|
+
signal?: AbortSignal,
|
|
472
|
+
epochNumber?: EpochNumber,
|
|
473
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
474
|
+
return this.enqueueJob(
|
|
475
|
+
this.generateId(ProvingRequestType.PUBLIC_TX_BASE_ROLLUP, inputs, epochNumber),
|
|
476
|
+
ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
|
|
477
|
+
inputs,
|
|
478
|
+
epochNumber,
|
|
479
|
+
signal,
|
|
480
|
+
);
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
getRootParityProof(
|
|
484
|
+
inputs: ParityRootPrivateInputs,
|
|
485
|
+
signal?: AbortSignal,
|
|
486
|
+
epochNumber?: EpochNumber,
|
|
487
|
+
): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
|
|
488
|
+
return this.enqueueJob(
|
|
489
|
+
this.generateId(ProvingRequestType.PARITY_ROOT, inputs, epochNumber),
|
|
490
|
+
ProvingRequestType.PARITY_ROOT,
|
|
491
|
+
inputs,
|
|
492
|
+
epochNumber,
|
|
493
|
+
signal,
|
|
494
|
+
);
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
getBlockRootFirstRollupProof(
|
|
498
|
+
input: BlockRootFirstRollupPrivateInputs,
|
|
499
|
+
signal?: AbortSignal,
|
|
500
|
+
epochNumber?: EpochNumber,
|
|
501
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
502
|
+
return this.enqueueJob(
|
|
503
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, input, epochNumber),
|
|
504
|
+
ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP,
|
|
505
|
+
input,
|
|
506
|
+
epochNumber,
|
|
507
|
+
signal,
|
|
508
|
+
);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
getBlockRootSingleTxFirstRollupProof(
|
|
512
|
+
input: BlockRootSingleTxFirstRollupPrivateInputs,
|
|
513
|
+
signal?: AbortSignal,
|
|
514
|
+
epochNumber?: EpochNumber,
|
|
515
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
516
|
+
return this.enqueueJob(
|
|
517
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, input, epochNumber),
|
|
518
|
+
ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
|
|
519
|
+
input,
|
|
520
|
+
epochNumber,
|
|
521
|
+
signal,
|
|
522
|
+
);
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
getBlockRootEmptyTxFirstRollupProof(
|
|
526
|
+
input: BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
527
|
+
signal?: AbortSignal,
|
|
528
|
+
epochNumber?: EpochNumber,
|
|
529
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
530
|
+
return this.enqueueJob(
|
|
531
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, input, epochNumber),
|
|
532
|
+
ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
|
|
438
533
|
input,
|
|
439
534
|
epochNumber,
|
|
440
535
|
signal,
|
|
@@ -442,12 +537,10 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
442
537
|
}
|
|
443
538
|
|
|
444
539
|
getBlockRootRollupProof(
|
|
445
|
-
input:
|
|
540
|
+
input: BlockRootRollupPrivateInputs,
|
|
446
541
|
signal?: AbortSignal,
|
|
447
|
-
epochNumber?:
|
|
448
|
-
): Promise<
|
|
449
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
450
|
-
> {
|
|
542
|
+
epochNumber?: EpochNumber,
|
|
543
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
451
544
|
return this.enqueueJob(
|
|
452
545
|
this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
|
|
453
546
|
ProvingRequestType.BLOCK_ROOT_ROLLUP,
|
|
@@ -457,103 +550,102 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
457
550
|
);
|
|
458
551
|
}
|
|
459
552
|
|
|
460
|
-
|
|
461
|
-
input:
|
|
553
|
+
getBlockRootSingleTxRollupProof(
|
|
554
|
+
input: BlockRootSingleTxRollupPrivateInputs,
|
|
462
555
|
signal?: AbortSignal,
|
|
463
|
-
epochNumber?:
|
|
464
|
-
): Promise<
|
|
465
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
466
|
-
> {
|
|
556
|
+
epochNumber?: EpochNumber,
|
|
557
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
467
558
|
return this.enqueueJob(
|
|
468
|
-
this.generateId(ProvingRequestType.
|
|
469
|
-
ProvingRequestType.
|
|
559
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, input, epochNumber),
|
|
560
|
+
ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
|
|
470
561
|
input,
|
|
471
562
|
epochNumber,
|
|
472
563
|
signal,
|
|
473
564
|
);
|
|
474
565
|
}
|
|
475
566
|
|
|
476
|
-
|
|
477
|
-
input:
|
|
567
|
+
getBlockMergeRollupProof(
|
|
568
|
+
input: BlockMergeRollupPrivateInputs,
|
|
478
569
|
signal?: AbortSignal,
|
|
479
|
-
epochNumber?:
|
|
480
|
-
): Promise<
|
|
481
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
482
|
-
> {
|
|
570
|
+
epochNumber?: EpochNumber,
|
|
571
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
483
572
|
return this.enqueueJob(
|
|
484
|
-
this.generateId(ProvingRequestType.
|
|
485
|
-
ProvingRequestType.
|
|
573
|
+
this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
|
|
574
|
+
ProvingRequestType.BLOCK_MERGE_ROLLUP,
|
|
486
575
|
input,
|
|
487
576
|
epochNumber,
|
|
488
577
|
signal,
|
|
489
578
|
);
|
|
490
579
|
}
|
|
491
580
|
|
|
492
|
-
|
|
493
|
-
input:
|
|
581
|
+
getCheckpointRootRollupProof(
|
|
582
|
+
input: CheckpointRootRollupPrivateInputs,
|
|
494
583
|
signal?: AbortSignal,
|
|
495
|
-
epochNumber?:
|
|
584
|
+
epochNumber?: EpochNumber,
|
|
496
585
|
): Promise<
|
|
497
|
-
PublicInputsAndRecursiveProof<
|
|
586
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
498
587
|
> {
|
|
499
588
|
return this.enqueueJob(
|
|
500
|
-
this.generateId(ProvingRequestType.
|
|
501
|
-
ProvingRequestType.
|
|
589
|
+
this.generateId(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, input, epochNumber),
|
|
590
|
+
ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
|
|
502
591
|
input,
|
|
503
592
|
epochNumber,
|
|
504
593
|
signal,
|
|
505
594
|
);
|
|
506
595
|
}
|
|
507
|
-
|
|
508
|
-
|
|
596
|
+
|
|
597
|
+
getCheckpointRootSingleBlockRollupProof(
|
|
598
|
+
input: CheckpointRootSingleBlockRollupPrivateInputs,
|
|
509
599
|
signal?: AbortSignal,
|
|
510
|
-
epochNumber?:
|
|
600
|
+
epochNumber?: EpochNumber,
|
|
511
601
|
): Promise<
|
|
512
|
-
PublicInputsAndRecursiveProof<
|
|
602
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
513
603
|
> {
|
|
514
604
|
return this.enqueueJob(
|
|
515
|
-
this.generateId(ProvingRequestType.
|
|
516
|
-
ProvingRequestType.
|
|
517
|
-
|
|
605
|
+
this.generateId(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, input, epochNumber),
|
|
606
|
+
ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
|
|
607
|
+
input,
|
|
518
608
|
epochNumber,
|
|
519
609
|
signal,
|
|
520
610
|
);
|
|
521
611
|
}
|
|
522
612
|
|
|
523
|
-
|
|
524
|
-
|
|
613
|
+
getCheckpointPaddingRollupProof(
|
|
614
|
+
input: CheckpointPaddingRollupPrivateInputs,
|
|
525
615
|
signal?: AbortSignal,
|
|
526
|
-
epochNumber?:
|
|
616
|
+
epochNumber?: EpochNumber,
|
|
527
617
|
): Promise<
|
|
528
|
-
PublicInputsAndRecursiveProof<
|
|
618
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
529
619
|
> {
|
|
530
620
|
return this.enqueueJob(
|
|
531
|
-
this.generateId(ProvingRequestType.
|
|
532
|
-
ProvingRequestType.
|
|
533
|
-
|
|
621
|
+
this.generateId(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, input, epochNumber),
|
|
622
|
+
ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
|
|
623
|
+
input,
|
|
534
624
|
epochNumber,
|
|
535
625
|
signal,
|
|
536
626
|
);
|
|
537
627
|
}
|
|
538
628
|
|
|
539
|
-
|
|
540
|
-
|
|
629
|
+
getCheckpointMergeRollupProof(
|
|
630
|
+
input: CheckpointMergeRollupPrivateInputs,
|
|
541
631
|
signal?: AbortSignal,
|
|
542
|
-
epochNumber?:
|
|
543
|
-
): Promise<
|
|
632
|
+
epochNumber?: EpochNumber,
|
|
633
|
+
): Promise<
|
|
634
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
635
|
+
> {
|
|
544
636
|
return this.enqueueJob(
|
|
545
|
-
this.generateId(ProvingRequestType.
|
|
546
|
-
ProvingRequestType.
|
|
547
|
-
|
|
637
|
+
this.generateId(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, input, epochNumber),
|
|
638
|
+
ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
|
|
639
|
+
input,
|
|
548
640
|
epochNumber,
|
|
549
641
|
signal,
|
|
550
642
|
);
|
|
551
643
|
}
|
|
552
644
|
|
|
553
645
|
getRootRollupProof(
|
|
554
|
-
input:
|
|
646
|
+
input: RootRollupPrivateInputs,
|
|
555
647
|
signal?: AbortSignal,
|
|
556
|
-
epochNumber?:
|
|
648
|
+
epochNumber?: EpochNumber,
|
|
557
649
|
): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
|
|
558
650
|
return this.enqueueJob(
|
|
559
651
|
this.generateId(ProvingRequestType.ROOT_ROLLUP, input, epochNumber),
|
|
@@ -564,21 +656,7 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
564
656
|
);
|
|
565
657
|
}
|
|
566
658
|
|
|
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) {
|
|
659
|
+
private generateId(type: ProvingRequestType, inputs: { toBuffer(): Buffer }, epochNumber = EpochNumber.ZERO) {
|
|
582
660
|
const inputsHash = sha256(inputs.toBuffer());
|
|
583
661
|
return makeProvingJobId(epochNumber, type, inputsHash.toString('hex'));
|
|
584
662
|
}
|
|
@@ -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,8 @@ 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(),
|
|
90
103
|
});
|
|
91
104
|
|
|
92
105
|
export type ProverAgentConfig = z.infer<typeof ProverAgentConfig>;
|
|
@@ -100,7 +113,7 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
|
|
|
100
113
|
proverAgentPollIntervalMs: {
|
|
101
114
|
env: 'PROVER_AGENT_POLL_INTERVAL_MS',
|
|
102
115
|
description: 'The interval agents poll for jobs at',
|
|
103
|
-
...numberConfigHelper(
|
|
116
|
+
...numberConfigHelper(1000),
|
|
104
117
|
},
|
|
105
118
|
proverAgentProofTypes: {
|
|
106
119
|
env: 'PROVER_AGENT_PROOF_TYPES',
|
|
@@ -118,7 +131,7 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
|
|
|
118
131
|
realProofs: {
|
|
119
132
|
env: 'PROVER_REAL_PROOFS',
|
|
120
133
|
description: 'Whether to construct real proofs',
|
|
121
|
-
...booleanConfigHelper(
|
|
134
|
+
...booleanConfigHelper(true),
|
|
122
135
|
},
|
|
123
136
|
proverTestDelayType: {
|
|
124
137
|
env: 'PROVER_TEST_DELAY_TYPE',
|
|
@@ -135,4 +148,9 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
|
|
|
135
148
|
description: 'If using realistic delays, what percentage of realistic times to apply.',
|
|
136
149
|
...numberConfigHelper(1),
|
|
137
150
|
},
|
|
151
|
+
proverTestVerificationDelayMs: {
|
|
152
|
+
env: 'PROVER_TEST_VERIFICATION_DELAY_MS',
|
|
153
|
+
description: 'The delay (ms) to inject during fake proof verification',
|
|
154
|
+
...numberConfigHelper(10),
|
|
155
|
+
},
|
|
138
156
|
};
|
|
@@ -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
|
|
|
@@ -52,7 +52,7 @@ export class InlineProofStore implements ProofStore {
|
|
|
52
52
|
return (PREFIX + SEPARATOR + encoded) as ProofUri;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
private decode<T>(uri: ProofUri, schema: ZodFor<T>):
|
|
55
|
+
private decode<T>(uri: ProofUri, schema: ZodFor<T>): T {
|
|
56
56
|
const [prefix, data] = uri.split(SEPARATOR);
|
|
57
57
|
if (prefix !== PREFIX) {
|
|
58
58
|
throw new Error('Invalid proof input URI: ' + prefix);
|