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