@aztec/prover-client 0.0.0-test.0 → 0.0.1-commit.21caa21
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 +108 -0
- package/dest/config.d.ts +7 -7
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +11 -1
- package/dest/index.d.ts +1 -1
- package/dest/light/lightweight_checkpoint_builder.d.ts +28 -0
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
- package/dest/light/lightweight_checkpoint_builder.js +107 -0
- package/dest/mocks/fixtures.d.ts +8 -8
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +32 -14
- package/dest/mocks/test_context.d.ts +40 -31
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +134 -86
- 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 +168 -188
- package/dest/orchestrator/block-proving-state.d.ts +68 -47
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +281 -176
- package/dest/orchestrator/checkpoint-proving-state.d.ts +62 -0
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/checkpoint-proving-state.js +208 -0
- package/dest/orchestrator/epoch-proving-state.d.ts +40 -26
- 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 +35 -32
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +389 -239
- package/dest/orchestrator/orchestrator_metrics.d.ts +3 -1
- package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator_metrics.js +9 -0
- package/dest/orchestrator/tx-proving-state.d.ts +13 -11
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +23 -40
- package/dest/prover-client/factory.d.ts +1 -1
- package/dest/prover-client/index.d.ts +1 -1
- package/dest/prover-client/prover-client.d.ts +4 -4
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +5 -4
- package/dest/prover-client/server-epoch-prover.d.ts +15 -11
- 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 +23 -16
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +67 -41
- package/dest/proving_broker/config.d.ts +18 -9
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +22 -5
- 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 +2 -1
- 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 +4 -4
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +83 -47
- package/dest/proving_broker/proving_agent_instrumentation.d.ts +1 -1
- package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +1 -1
- 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 +36 -23
- 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 +3 -2
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +12 -10
- 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_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 +89 -61
- 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 +32 -31
- package/src/block-factory/index.ts +1 -0
- package/src/block-factory/light.ts +137 -0
- package/src/config.ts +24 -8
- package/src/light/lightweight_checkpoint_builder.ts +142 -0
- package/src/mocks/fixtures.ts +42 -37
- package/src/mocks/test_context.ts +207 -115
- package/src/orchestrator/block-building-helpers.ts +256 -333
- package/src/orchestrator/block-proving-state.ts +323 -230
- package/src/orchestrator/checkpoint-proving-state.ts +301 -0
- package/src/orchestrator/epoch-proving-state.ts +187 -112
- package/src/orchestrator/orchestrator.ts +592 -299
- package/src/orchestrator/orchestrator_metrics.ts +20 -1
- package/src/orchestrator/tx-proving-state.ts +50 -64
- package/src/prover-client/prover-client.ts +16 -14
- package/src/prover-client/server-epoch-prover.ts +39 -21
- package/src/proving_broker/broker_prover_facade.ts +214 -126
- package/src/proving_broker/config.ts +24 -6
- package/src/proving_broker/factory.ts +2 -1
- package/src/proving_broker/fixtures.ts +7 -2
- 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 +89 -47
- package/src/proving_broker/proving_broker.ts +53 -33
- package/src/proving_broker/proving_broker_database/memory.ts +3 -2
- package/src/proving_broker/proving_broker_database/persisted.ts +14 -12
- package/src/proving_broker/proving_broker_database.ts +2 -1
- package/src/proving_broker/proving_job_controller.ts +94 -82
- package/src/proving_broker/rpc.ts +1 -6
- package/src/test/mock_proof_store.ts +14 -0
- package/src/test/mock_prover.ts +164 -60
- 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/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/dest/{block_builder → block-factory}/index.js +0 -0
|
@@ -1,11 +1,12 @@
|
|
|
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';
|
|
7
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
8
8
|
import { sha256 } from '@aztec/foundation/crypto';
|
|
9
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
9
10
|
import { createLogger } from '@aztec/foundation/log';
|
|
10
11
|
import { type PromiseWithResolvers, RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
11
12
|
import { truncate } from '@aztec/foundation/string';
|
|
@@ -22,21 +23,29 @@ import {
|
|
|
22
23
|
type ServerCircuitProver,
|
|
23
24
|
makeProvingJobId,
|
|
24
25
|
} from '@aztec/stdlib/interfaces/server';
|
|
25
|
-
import type {
|
|
26
|
+
import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
26
27
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
27
28
|
import type {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
29
|
+
BlockMergeRollupPrivateInputs,
|
|
30
|
+
BlockRollupPublicInputs,
|
|
31
|
+
BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
32
|
+
BlockRootFirstRollupPrivateInputs,
|
|
33
|
+
BlockRootRollupPrivateInputs,
|
|
34
|
+
BlockRootSingleTxFirstRollupPrivateInputs,
|
|
35
|
+
BlockRootSingleTxRollupPrivateInputs,
|
|
36
|
+
CheckpointMergeRollupPrivateInputs,
|
|
37
|
+
CheckpointPaddingRollupPrivateInputs,
|
|
38
|
+
CheckpointRollupPublicInputs,
|
|
39
|
+
CheckpointRootRollupPrivateInputs,
|
|
40
|
+
CheckpointRootSingleBlockRollupPrivateInputs,
|
|
41
|
+
PrivateTxBaseRollupPrivateInputs,
|
|
42
|
+
PublicChonkVerifierPrivateInputs,
|
|
43
|
+
PublicChonkVerifierPublicInputs,
|
|
44
|
+
PublicTxBaseRollupPrivateInputs,
|
|
45
|
+
RootRollupPrivateInputs,
|
|
37
46
|
RootRollupPublicInputs,
|
|
38
|
-
|
|
39
|
-
|
|
47
|
+
TxMergeRollupPrivateInputs,
|
|
48
|
+
TxRollupPublicInputs,
|
|
40
49
|
} from '@aztec/stdlib/rollup';
|
|
41
50
|
|
|
42
51
|
import { InlineProofStore, type ProofStore } from './proof_store/index.js';
|
|
@@ -93,7 +102,15 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
93
102
|
|
|
94
103
|
// Create a promise for this job id, regardless of whether it was enqueued at the broker
|
|
95
104
|
// The running promise will monitor for the job to be completed and resolve it either way
|
|
105
|
+
// We install an error handler to prevent unhandled rejections in the process before the
|
|
106
|
+
// job promise is awaited by the caller (see #13166)
|
|
96
107
|
const promise = promiseWithResolvers<ProvingJobResultsMap[T]>();
|
|
108
|
+
promise.promise.catch(err =>
|
|
109
|
+
this.log.error(`Job errored with '${err.message ?? err}' id=${id} type=${ProvingRequestType[type]}`, {
|
|
110
|
+
provingJobId: id,
|
|
111
|
+
provingJobType: ProvingRequestType[type],
|
|
112
|
+
}),
|
|
113
|
+
);
|
|
97
114
|
const abortFn = () => {
|
|
98
115
|
signal?.removeEventListener('abort', abortFn);
|
|
99
116
|
void this.broker.cancelProvingJob(id).catch(err => this.log.warn(`Error cancelling job id=${id}`, err));
|
|
@@ -114,7 +131,7 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
114
131
|
id: ProvingJobId,
|
|
115
132
|
type: T,
|
|
116
133
|
inputs: ProvingJobInputsMap[T],
|
|
117
|
-
epochNumber =
|
|
134
|
+
epochNumber = EpochNumber.ZERO,
|
|
118
135
|
signal?: AbortSignal,
|
|
119
136
|
): Promise<ProvingJobResultsMap[T]> {
|
|
120
137
|
const { job: job, isEnqueued } = this.getOrCreateProvingJob(id, type, signal);
|
|
@@ -125,27 +142,26 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
125
142
|
try {
|
|
126
143
|
const inputsUri = await this.proofStore.saveProofInput(id, type, inputs);
|
|
127
144
|
job.inputsUri = inputsUri;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
145
|
+
|
|
146
|
+
// Send the job to the broker
|
|
147
|
+
const jobStatus = await this.broker.enqueueProvingJob({ id, type, inputsUri, epochNumber });
|
|
148
|
+
|
|
149
|
+
const jobLogText = `id=${id} type=${ProvingRequestType[type]} epochNumber=${epochNumber}`;
|
|
150
|
+
const jobLogData = {
|
|
151
|
+
provingJobId: id,
|
|
152
|
+
provingJobType: ProvingRequestType[type],
|
|
132
153
|
epochNumber,
|
|
133
|
-
|
|
154
|
+
inputsUri: truncate(inputsUri),
|
|
155
|
+
status: jobStatus.status,
|
|
156
|
+
numOutstandingJobs: this.jobs.size,
|
|
157
|
+
};
|
|
134
158
|
|
|
135
159
|
// If we are here then the job was successfully accepted by the broker
|
|
136
160
|
// the returned status is for before any action was performed
|
|
137
161
|
if (jobStatus.status === 'fulfilled' || jobStatus.status === 'rejected') {
|
|
138
162
|
// Job was already completed by the broker
|
|
139
163
|
// 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
|
-
);
|
|
164
|
+
this.log.verbose(`Job already completed when sent to broker ${jobLogText}`, jobLogData);
|
|
149
165
|
|
|
150
166
|
// Job was not enqueued. It must be completed already, add to our set of already completed jobs
|
|
151
167
|
this.jobsToRetrieve.add(id);
|
|
@@ -155,27 +171,10 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
155
171
|
|
|
156
172
|
// Job added for the first time
|
|
157
173
|
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
|
-
);
|
|
174
|
+
this.log.verbose(`Job enqueued with broker ${jobLogText}`, jobLogData);
|
|
168
175
|
} else {
|
|
169
176
|
// 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
|
-
);
|
|
177
|
+
this.log.verbose(`Job already in queue or in progress when sent to broker ${jobLogText}`, jobLogData);
|
|
179
178
|
}
|
|
180
179
|
}
|
|
181
180
|
} catch (err) {
|
|
@@ -399,42 +398,148 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
399
398
|
|
|
400
399
|
getAvmProof(
|
|
401
400
|
inputs: AvmCircuitInputs,
|
|
401
|
+
skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: remove this argument
|
|
402
402
|
signal?: AbortSignal,
|
|
403
|
-
epochNumber?:
|
|
404
|
-
): Promise<ProofAndVerificationKey<typeof
|
|
403
|
+
epochNumber?: EpochNumber,
|
|
404
|
+
): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>> {
|
|
405
|
+
this.log.info(`getAvmProof() called with skipPublicInputsValidation: ${skipPublicInputsValidation}`);
|
|
406
|
+
|
|
405
407
|
return this.enqueueJob(
|
|
406
408
|
this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber),
|
|
407
409
|
ProvingRequestType.PUBLIC_VM,
|
|
408
410
|
inputs,
|
|
409
411
|
epochNumber,
|
|
410
412
|
signal,
|
|
411
|
-
)
|
|
413
|
+
).then(result => {
|
|
414
|
+
// TODO(#14234)[Unconditional PIs validation]: Remove ".then()".
|
|
415
|
+
// Override the default value of skipPublicInputsValidation potentially set in BBNativeRollupProver.getAvmProof().
|
|
416
|
+
result.proof.proof[0] = skipPublicInputsValidation ? new Fr(1) : new Fr(0);
|
|
417
|
+
return result;
|
|
418
|
+
});
|
|
412
419
|
}
|
|
413
420
|
|
|
414
421
|
getBaseParityProof(
|
|
415
|
-
inputs:
|
|
422
|
+
inputs: ParityBasePrivateInputs,
|
|
416
423
|
signal?: AbortSignal,
|
|
417
|
-
epochNumber?:
|
|
424
|
+
epochNumber?: EpochNumber,
|
|
418
425
|
): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
|
|
419
426
|
return this.enqueueJob(
|
|
420
|
-
this.generateId(ProvingRequestType.
|
|
421
|
-
ProvingRequestType.
|
|
427
|
+
this.generateId(ProvingRequestType.PARITY_BASE, inputs, epochNumber),
|
|
428
|
+
ProvingRequestType.PARITY_BASE,
|
|
422
429
|
inputs,
|
|
423
430
|
epochNumber,
|
|
424
431
|
signal,
|
|
425
432
|
);
|
|
426
433
|
}
|
|
427
434
|
|
|
428
|
-
|
|
429
|
-
input:
|
|
435
|
+
getTxMergeRollupProof(
|
|
436
|
+
input: TxMergeRollupPrivateInputs,
|
|
430
437
|
signal?: AbortSignal,
|
|
431
|
-
epochNumber?:
|
|
438
|
+
epochNumber?: EpochNumber,
|
|
439
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
440
|
+
return this.enqueueJob(
|
|
441
|
+
this.generateId(ProvingRequestType.TX_MERGE_ROLLUP, input, epochNumber),
|
|
442
|
+
ProvingRequestType.TX_MERGE_ROLLUP,
|
|
443
|
+
input,
|
|
444
|
+
epochNumber,
|
|
445
|
+
signal,
|
|
446
|
+
);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
getPublicChonkVerifierProof(
|
|
450
|
+
inputs: PublicChonkVerifierPrivateInputs,
|
|
451
|
+
signal?: AbortSignal,
|
|
452
|
+
epochNumber?: EpochNumber,
|
|
432
453
|
): Promise<
|
|
433
|
-
PublicInputsAndRecursiveProof<
|
|
454
|
+
PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
434
455
|
> {
|
|
435
456
|
return this.enqueueJob(
|
|
436
|
-
this.generateId(ProvingRequestType.
|
|
437
|
-
ProvingRequestType.
|
|
457
|
+
this.generateId(ProvingRequestType.PUBLIC_CHONK_VERIFIER, inputs, epochNumber),
|
|
458
|
+
ProvingRequestType.PUBLIC_CHONK_VERIFIER,
|
|
459
|
+
inputs,
|
|
460
|
+
epochNumber,
|
|
461
|
+
signal,
|
|
462
|
+
);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
getPrivateTxBaseRollupProof(
|
|
466
|
+
baseRollupInput: PrivateTxBaseRollupPrivateInputs,
|
|
467
|
+
signal?: AbortSignal,
|
|
468
|
+
epochNumber?: EpochNumber,
|
|
469
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
470
|
+
return this.enqueueJob(
|
|
471
|
+
this.generateId(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, baseRollupInput, epochNumber),
|
|
472
|
+
ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
|
|
473
|
+
baseRollupInput,
|
|
474
|
+
epochNumber,
|
|
475
|
+
signal,
|
|
476
|
+
);
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
getPublicTxBaseRollupProof(
|
|
480
|
+
inputs: PublicTxBaseRollupPrivateInputs,
|
|
481
|
+
signal?: AbortSignal,
|
|
482
|
+
epochNumber?: EpochNumber,
|
|
483
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
484
|
+
return this.enqueueJob(
|
|
485
|
+
this.generateId(ProvingRequestType.PUBLIC_TX_BASE_ROLLUP, inputs, epochNumber),
|
|
486
|
+
ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
|
|
487
|
+
inputs,
|
|
488
|
+
epochNumber,
|
|
489
|
+
signal,
|
|
490
|
+
);
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
getRootParityProof(
|
|
494
|
+
inputs: ParityRootPrivateInputs,
|
|
495
|
+
signal?: AbortSignal,
|
|
496
|
+
epochNumber?: EpochNumber,
|
|
497
|
+
): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
|
|
498
|
+
return this.enqueueJob(
|
|
499
|
+
this.generateId(ProvingRequestType.PARITY_ROOT, inputs, epochNumber),
|
|
500
|
+
ProvingRequestType.PARITY_ROOT,
|
|
501
|
+
inputs,
|
|
502
|
+
epochNumber,
|
|
503
|
+
signal,
|
|
504
|
+
);
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
getBlockRootFirstRollupProof(
|
|
508
|
+
input: BlockRootFirstRollupPrivateInputs,
|
|
509
|
+
signal?: AbortSignal,
|
|
510
|
+
epochNumber?: EpochNumber,
|
|
511
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
512
|
+
return this.enqueueJob(
|
|
513
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, input, epochNumber),
|
|
514
|
+
ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP,
|
|
515
|
+
input,
|
|
516
|
+
epochNumber,
|
|
517
|
+
signal,
|
|
518
|
+
);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
getBlockRootSingleTxFirstRollupProof(
|
|
522
|
+
input: BlockRootSingleTxFirstRollupPrivateInputs,
|
|
523
|
+
signal?: AbortSignal,
|
|
524
|
+
epochNumber?: EpochNumber,
|
|
525
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
526
|
+
return this.enqueueJob(
|
|
527
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, input, epochNumber),
|
|
528
|
+
ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
|
|
529
|
+
input,
|
|
530
|
+
epochNumber,
|
|
531
|
+
signal,
|
|
532
|
+
);
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
getBlockRootEmptyTxFirstRollupProof(
|
|
536
|
+
input: BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
537
|
+
signal?: AbortSignal,
|
|
538
|
+
epochNumber?: EpochNumber,
|
|
539
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
540
|
+
return this.enqueueJob(
|
|
541
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, input, epochNumber),
|
|
542
|
+
ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
|
|
438
543
|
input,
|
|
439
544
|
epochNumber,
|
|
440
545
|
signal,
|
|
@@ -442,12 +547,10 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
442
547
|
}
|
|
443
548
|
|
|
444
549
|
getBlockRootRollupProof(
|
|
445
|
-
input:
|
|
550
|
+
input: BlockRootRollupPrivateInputs,
|
|
446
551
|
signal?: AbortSignal,
|
|
447
|
-
epochNumber?:
|
|
448
|
-
): Promise<
|
|
449
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
450
|
-
> {
|
|
552
|
+
epochNumber?: EpochNumber,
|
|
553
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
451
554
|
return this.enqueueJob(
|
|
452
555
|
this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
|
|
453
556
|
ProvingRequestType.BLOCK_ROOT_ROLLUP,
|
|
@@ -457,103 +560,102 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
457
560
|
);
|
|
458
561
|
}
|
|
459
562
|
|
|
460
|
-
|
|
461
|
-
input:
|
|
563
|
+
getBlockRootSingleTxRollupProof(
|
|
564
|
+
input: BlockRootSingleTxRollupPrivateInputs,
|
|
462
565
|
signal?: AbortSignal,
|
|
463
|
-
epochNumber?:
|
|
464
|
-
): Promise<
|
|
465
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
466
|
-
> {
|
|
566
|
+
epochNumber?: EpochNumber,
|
|
567
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
467
568
|
return this.enqueueJob(
|
|
468
|
-
this.generateId(ProvingRequestType.
|
|
469
|
-
ProvingRequestType.
|
|
569
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, input, epochNumber),
|
|
570
|
+
ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
|
|
470
571
|
input,
|
|
471
572
|
epochNumber,
|
|
472
573
|
signal,
|
|
473
574
|
);
|
|
474
575
|
}
|
|
475
576
|
|
|
476
|
-
|
|
477
|
-
input:
|
|
577
|
+
getBlockMergeRollupProof(
|
|
578
|
+
input: BlockMergeRollupPrivateInputs,
|
|
478
579
|
signal?: AbortSignal,
|
|
479
|
-
epochNumber?:
|
|
480
|
-
): Promise<
|
|
481
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
482
|
-
> {
|
|
580
|
+
epochNumber?: EpochNumber,
|
|
581
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
483
582
|
return this.enqueueJob(
|
|
484
|
-
this.generateId(ProvingRequestType.
|
|
485
|
-
ProvingRequestType.
|
|
583
|
+
this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
|
|
584
|
+
ProvingRequestType.BLOCK_MERGE_ROLLUP,
|
|
486
585
|
input,
|
|
487
586
|
epochNumber,
|
|
488
587
|
signal,
|
|
489
588
|
);
|
|
490
589
|
}
|
|
491
590
|
|
|
492
|
-
|
|
493
|
-
input:
|
|
591
|
+
getCheckpointRootRollupProof(
|
|
592
|
+
input: CheckpointRootRollupPrivateInputs,
|
|
494
593
|
signal?: AbortSignal,
|
|
495
|
-
epochNumber?:
|
|
594
|
+
epochNumber?: EpochNumber,
|
|
496
595
|
): Promise<
|
|
497
|
-
PublicInputsAndRecursiveProof<
|
|
596
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
498
597
|
> {
|
|
499
598
|
return this.enqueueJob(
|
|
500
|
-
this.generateId(ProvingRequestType.
|
|
501
|
-
ProvingRequestType.
|
|
599
|
+
this.generateId(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, input, epochNumber),
|
|
600
|
+
ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
|
|
502
601
|
input,
|
|
503
602
|
epochNumber,
|
|
504
603
|
signal,
|
|
505
604
|
);
|
|
506
605
|
}
|
|
507
|
-
|
|
508
|
-
|
|
606
|
+
|
|
607
|
+
getCheckpointRootSingleBlockRollupProof(
|
|
608
|
+
input: CheckpointRootSingleBlockRollupPrivateInputs,
|
|
509
609
|
signal?: AbortSignal,
|
|
510
|
-
epochNumber?:
|
|
610
|
+
epochNumber?: EpochNumber,
|
|
511
611
|
): Promise<
|
|
512
|
-
PublicInputsAndRecursiveProof<
|
|
612
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
513
613
|
> {
|
|
514
614
|
return this.enqueueJob(
|
|
515
|
-
this.generateId(ProvingRequestType.
|
|
516
|
-
ProvingRequestType.
|
|
517
|
-
|
|
615
|
+
this.generateId(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, input, epochNumber),
|
|
616
|
+
ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
|
|
617
|
+
input,
|
|
518
618
|
epochNumber,
|
|
519
619
|
signal,
|
|
520
620
|
);
|
|
521
621
|
}
|
|
522
622
|
|
|
523
|
-
|
|
524
|
-
|
|
623
|
+
getCheckpointPaddingRollupProof(
|
|
624
|
+
input: CheckpointPaddingRollupPrivateInputs,
|
|
525
625
|
signal?: AbortSignal,
|
|
526
|
-
epochNumber?:
|
|
626
|
+
epochNumber?: EpochNumber,
|
|
527
627
|
): Promise<
|
|
528
|
-
PublicInputsAndRecursiveProof<
|
|
628
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
529
629
|
> {
|
|
530
630
|
return this.enqueueJob(
|
|
531
|
-
this.generateId(ProvingRequestType.
|
|
532
|
-
ProvingRequestType.
|
|
533
|
-
|
|
631
|
+
this.generateId(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, input, epochNumber),
|
|
632
|
+
ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
|
|
633
|
+
input,
|
|
534
634
|
epochNumber,
|
|
535
635
|
signal,
|
|
536
636
|
);
|
|
537
637
|
}
|
|
538
638
|
|
|
539
|
-
|
|
540
|
-
|
|
639
|
+
getCheckpointMergeRollupProof(
|
|
640
|
+
input: CheckpointMergeRollupPrivateInputs,
|
|
541
641
|
signal?: AbortSignal,
|
|
542
|
-
epochNumber?:
|
|
543
|
-
): Promise<
|
|
642
|
+
epochNumber?: EpochNumber,
|
|
643
|
+
): Promise<
|
|
644
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
645
|
+
> {
|
|
544
646
|
return this.enqueueJob(
|
|
545
|
-
this.generateId(ProvingRequestType.
|
|
546
|
-
ProvingRequestType.
|
|
547
|
-
|
|
647
|
+
this.generateId(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, input, epochNumber),
|
|
648
|
+
ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
|
|
649
|
+
input,
|
|
548
650
|
epochNumber,
|
|
549
651
|
signal,
|
|
550
652
|
);
|
|
551
653
|
}
|
|
552
654
|
|
|
553
655
|
getRootRollupProof(
|
|
554
|
-
input:
|
|
656
|
+
input: RootRollupPrivateInputs,
|
|
555
657
|
signal?: AbortSignal,
|
|
556
|
-
epochNumber?:
|
|
658
|
+
epochNumber?: EpochNumber,
|
|
557
659
|
): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
|
|
558
660
|
return this.enqueueJob(
|
|
559
661
|
this.generateId(ProvingRequestType.ROOT_ROLLUP, input, epochNumber),
|
|
@@ -564,21 +666,7 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
564
666
|
);
|
|
565
667
|
}
|
|
566
668
|
|
|
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) {
|
|
669
|
+
private generateId(type: ProvingRequestType, inputs: { toBuffer(): Buffer }, epochNumber = EpochNumber.ZERO) {
|
|
582
670
|
const inputsHash = sha256(inputs.toBuffer());
|
|
583
671
|
return makeProvingJobId(epochNumber, type, inputsHash.toString('hex'));
|
|
584
672
|
}
|
|
@@ -5,7 +5,9 @@ import {
|
|
|
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 { EpochNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { randomBytes } from '@aztec/foundation/crypto';
|
|
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);
|