@aztec/prover-client 0.0.0-test.0 → 0.0.1-fake-c83136db25
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 +94 -0
- package/dest/config.d.ts +6 -6
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +11 -1
- package/dest/mocks/fixtures.d.ts +7 -4
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +32 -4
- package/dest/mocks/test_context.d.ts +43 -15
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +110 -48
- package/dest/orchestrator/block-building-helpers.d.ts +37 -28
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +156 -150
- package/dest/orchestrator/block-proving-state.d.ts +62 -46
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +223 -179
- 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 +211 -0
- package/dest/orchestrator/epoch-proving-state.d.ts +37 -24
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +143 -73
- package/dest/orchestrator/orchestrator.d.ts +34 -31
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +392 -234
- package/dest/orchestrator/orchestrator_metrics.d.ts +2 -0
- 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 +12 -10
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +30 -38
- package/dest/prover-client/prover-client.d.ts +3 -3
- 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 +13 -10
- 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 +22 -15
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +64 -39
- package/dest/proving_broker/config.d.ts +9 -4
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +15 -4
- package/dest/proving_broker/factory.d.ts +1 -1
- package/dest/proving_broker/factory.d.ts.map +1 -1
- package/dest/proving_broker/factory.js +5 -1
- package/dest/proving_broker/fixtures.js +1 -1
- package/dest/proving_broker/proof_store/factory.js +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 +1 -0
- 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/proving_agent.d.ts +3 -3
- 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_broker.d.ts +11 -2
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +34 -22
- package/dest/proving_broker/proving_broker_database/memory.js +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +9 -8
- package/dest/proving_broker/proving_job_controller.d.ts +7 -8
- 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 +3 -5
- 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 -16
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +38 -20
- package/package.json +29 -29
- package/src/block-factory/index.ts +1 -0
- package/src/block-factory/light.ts +140 -0
- package/src/config.ts +24 -8
- package/src/mocks/fixtures.ts +43 -15
- package/src/mocks/test_context.ts +201 -75
- package/src/orchestrator/block-building-helpers.ts +247 -243
- package/src/orchestrator/block-proving-state.ts +247 -231
- package/src/orchestrator/checkpoint-proving-state.ts +299 -0
- package/src/orchestrator/epoch-proving-state.ts +187 -111
- package/src/orchestrator/orchestrator.ts +590 -289
- package/src/orchestrator/orchestrator_metrics.ts +20 -1
- package/src/orchestrator/tx-proving-state.ts +60 -61
- package/src/prover-client/prover-client.ts +16 -14
- package/src/prover-client/server-epoch-prover.ts +40 -21
- package/src/proving_broker/broker_prover_facade.ts +200 -113
- package/src/proving_broker/config.ts +17 -6
- package/src/proving_broker/factory.ts +2 -1
- package/src/proving_broker/fixtures.ts +1 -1
- 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 +51 -32
- package/src/proving_broker/proving_broker_database/memory.ts +1 -1
- package/src/proving_broker/proving_broker_database/persisted.ts +9 -8
- 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 +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,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
7
|
import { sha256 } from '@aztec/foundation/crypto';
|
|
8
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
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));
|
|
@@ -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) {
|
|
@@ -399,180 +397,269 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
399
397
|
|
|
400
398
|
getAvmProof(
|
|
401
399
|
inputs: AvmCircuitInputs,
|
|
400
|
+
skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: remove this argument
|
|
402
401
|
signal?: AbortSignal,
|
|
403
402
|
epochNumber?: number,
|
|
404
|
-
): Promise<ProofAndVerificationKey<typeof
|
|
403
|
+
): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>> {
|
|
404
|
+
this.log.info(`getAvmProof() called with skipPublicInputsValidation: ${skipPublicInputsValidation}`);
|
|
405
|
+
|
|
405
406
|
return this.enqueueJob(
|
|
406
407
|
this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber),
|
|
407
408
|
ProvingRequestType.PUBLIC_VM,
|
|
408
409
|
inputs,
|
|
409
410
|
epochNumber,
|
|
410
411
|
signal,
|
|
411
|
-
)
|
|
412
|
+
).then(result => {
|
|
413
|
+
// TODO(#14234)[Unconditional PIs validation]: Remove ".then()".
|
|
414
|
+
// Override the default value of skipPublicInputsValidation potentially set in BBNativeRollupProver.getAvmProof().
|
|
415
|
+
result.proof.proof[0] = skipPublicInputsValidation ? new Fr(1) : new Fr(0);
|
|
416
|
+
return result;
|
|
417
|
+
});
|
|
412
418
|
}
|
|
413
419
|
|
|
414
420
|
getBaseParityProof(
|
|
415
|
-
inputs:
|
|
421
|
+
inputs: ParityBasePrivateInputs,
|
|
416
422
|
signal?: AbortSignal,
|
|
417
423
|
epochNumber?: number,
|
|
418
424
|
): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
|
|
419
425
|
return this.enqueueJob(
|
|
420
|
-
this.generateId(ProvingRequestType.
|
|
421
|
-
ProvingRequestType.
|
|
426
|
+
this.generateId(ProvingRequestType.PARITY_BASE, inputs, epochNumber),
|
|
427
|
+
ProvingRequestType.PARITY_BASE,
|
|
422
428
|
inputs,
|
|
423
429
|
epochNumber,
|
|
424
430
|
signal,
|
|
425
431
|
);
|
|
426
432
|
}
|
|
427
433
|
|
|
428
|
-
|
|
429
|
-
input:
|
|
434
|
+
getTxMergeRollupProof(
|
|
435
|
+
input: TxMergeRollupPrivateInputs,
|
|
430
436
|
signal?: AbortSignal,
|
|
431
437
|
epochNumber?: number,
|
|
432
|
-
): Promise<
|
|
433
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
434
|
-
> {
|
|
438
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
435
439
|
return this.enqueueJob(
|
|
436
|
-
this.generateId(ProvingRequestType.
|
|
437
|
-
ProvingRequestType.
|
|
440
|
+
this.generateId(ProvingRequestType.TX_MERGE_ROLLUP, input, epochNumber),
|
|
441
|
+
ProvingRequestType.TX_MERGE_ROLLUP,
|
|
438
442
|
input,
|
|
439
443
|
epochNumber,
|
|
440
444
|
signal,
|
|
441
445
|
);
|
|
442
446
|
}
|
|
443
447
|
|
|
444
|
-
|
|
445
|
-
|
|
448
|
+
getPublicChonkVerifierProof(
|
|
449
|
+
inputs: PublicChonkVerifierPrivateInputs,
|
|
446
450
|
signal?: AbortSignal,
|
|
447
451
|
epochNumber?: number,
|
|
448
452
|
): Promise<
|
|
449
|
-
PublicInputsAndRecursiveProof<
|
|
453
|
+
PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
450
454
|
> {
|
|
451
455
|
return this.enqueueJob(
|
|
452
|
-
this.generateId(ProvingRequestType.
|
|
453
|
-
ProvingRequestType.
|
|
456
|
+
this.generateId(ProvingRequestType.PUBLIC_CHONK_VERIFIER, inputs, epochNumber),
|
|
457
|
+
ProvingRequestType.PUBLIC_CHONK_VERIFIER,
|
|
458
|
+
inputs,
|
|
459
|
+
epochNumber,
|
|
460
|
+
signal,
|
|
461
|
+
);
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
getPrivateTxBaseRollupProof(
|
|
465
|
+
baseRollupInput: PrivateTxBaseRollupPrivateInputs,
|
|
466
|
+
signal?: AbortSignal,
|
|
467
|
+
epochNumber?: number,
|
|
468
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
469
|
+
return this.enqueueJob(
|
|
470
|
+
this.generateId(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, baseRollupInput, epochNumber),
|
|
471
|
+
ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
|
|
472
|
+
baseRollupInput,
|
|
473
|
+
epochNumber,
|
|
474
|
+
signal,
|
|
475
|
+
);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
getPublicTxBaseRollupProof(
|
|
479
|
+
inputs: PublicTxBaseRollupPrivateInputs,
|
|
480
|
+
signal?: AbortSignal,
|
|
481
|
+
epochNumber?: number,
|
|
482
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
483
|
+
return this.enqueueJob(
|
|
484
|
+
this.generateId(ProvingRequestType.PUBLIC_TX_BASE_ROLLUP, inputs, epochNumber),
|
|
485
|
+
ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
|
|
486
|
+
inputs,
|
|
487
|
+
epochNumber,
|
|
488
|
+
signal,
|
|
489
|
+
);
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
getRootParityProof(
|
|
493
|
+
inputs: ParityRootPrivateInputs,
|
|
494
|
+
signal?: AbortSignal,
|
|
495
|
+
epochNumber?: number,
|
|
496
|
+
): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
|
|
497
|
+
return this.enqueueJob(
|
|
498
|
+
this.generateId(ProvingRequestType.PARITY_ROOT, inputs, epochNumber),
|
|
499
|
+
ProvingRequestType.PARITY_ROOT,
|
|
500
|
+
inputs,
|
|
501
|
+
epochNumber,
|
|
502
|
+
signal,
|
|
503
|
+
);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
getBlockRootFirstRollupProof(
|
|
507
|
+
input: BlockRootFirstRollupPrivateInputs,
|
|
508
|
+
signal?: AbortSignal,
|
|
509
|
+
epochNumber?: number,
|
|
510
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
511
|
+
return this.enqueueJob(
|
|
512
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, input, epochNumber),
|
|
513
|
+
ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP,
|
|
454
514
|
input,
|
|
455
515
|
epochNumber,
|
|
456
516
|
signal,
|
|
457
517
|
);
|
|
458
518
|
}
|
|
459
519
|
|
|
460
|
-
|
|
461
|
-
input:
|
|
520
|
+
getBlockRootSingleTxFirstRollupProof(
|
|
521
|
+
input: BlockRootSingleTxFirstRollupPrivateInputs,
|
|
462
522
|
signal?: AbortSignal,
|
|
463
523
|
epochNumber?: number,
|
|
464
|
-
): Promise<
|
|
465
|
-
|
|
466
|
-
|
|
524
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
525
|
+
return this.enqueueJob(
|
|
526
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, input, epochNumber),
|
|
527
|
+
ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
|
|
528
|
+
input,
|
|
529
|
+
epochNumber,
|
|
530
|
+
signal,
|
|
531
|
+
);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
getBlockRootEmptyTxFirstRollupProof(
|
|
535
|
+
input: BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
536
|
+
signal?: AbortSignal,
|
|
537
|
+
epochNumber?: number,
|
|
538
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
539
|
+
return this.enqueueJob(
|
|
540
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, input, epochNumber),
|
|
541
|
+
ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
|
|
542
|
+
input,
|
|
543
|
+
epochNumber,
|
|
544
|
+
signal,
|
|
545
|
+
);
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
getBlockRootRollupProof(
|
|
549
|
+
input: BlockRootRollupPrivateInputs,
|
|
550
|
+
signal?: AbortSignal,
|
|
551
|
+
epochNumber?: number,
|
|
552
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
467
553
|
return this.enqueueJob(
|
|
468
554
|
this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
|
|
469
|
-
ProvingRequestType.
|
|
555
|
+
ProvingRequestType.BLOCK_ROOT_ROLLUP,
|
|
470
556
|
input,
|
|
471
557
|
epochNumber,
|
|
472
558
|
signal,
|
|
473
559
|
);
|
|
474
560
|
}
|
|
475
561
|
|
|
476
|
-
|
|
477
|
-
input:
|
|
562
|
+
getBlockRootSingleTxRollupProof(
|
|
563
|
+
input: BlockRootSingleTxRollupPrivateInputs,
|
|
478
564
|
signal?: AbortSignal,
|
|
479
565
|
epochNumber?: number,
|
|
480
|
-
): Promise<
|
|
481
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
482
|
-
> {
|
|
566
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
483
567
|
return this.enqueueJob(
|
|
484
|
-
this.generateId(ProvingRequestType.
|
|
485
|
-
ProvingRequestType.
|
|
568
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, input, epochNumber),
|
|
569
|
+
ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
|
|
486
570
|
input,
|
|
487
571
|
epochNumber,
|
|
488
572
|
signal,
|
|
489
573
|
);
|
|
490
574
|
}
|
|
491
575
|
|
|
492
|
-
|
|
493
|
-
input:
|
|
576
|
+
getBlockMergeRollupProof(
|
|
577
|
+
input: BlockMergeRollupPrivateInputs,
|
|
494
578
|
signal?: AbortSignal,
|
|
495
579
|
epochNumber?: number,
|
|
496
|
-
): Promise<
|
|
497
|
-
PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
498
|
-
> {
|
|
580
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
499
581
|
return this.enqueueJob(
|
|
500
|
-
this.generateId(ProvingRequestType.
|
|
501
|
-
ProvingRequestType.
|
|
582
|
+
this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
|
|
583
|
+
ProvingRequestType.BLOCK_MERGE_ROLLUP,
|
|
502
584
|
input,
|
|
503
585
|
epochNumber,
|
|
504
586
|
signal,
|
|
505
587
|
);
|
|
506
588
|
}
|
|
507
|
-
|
|
508
|
-
|
|
589
|
+
|
|
590
|
+
getCheckpointRootRollupProof(
|
|
591
|
+
input: CheckpointRootRollupPrivateInputs,
|
|
509
592
|
signal?: AbortSignal,
|
|
510
593
|
epochNumber?: number,
|
|
511
594
|
): Promise<
|
|
512
|
-
PublicInputsAndRecursiveProof<
|
|
595
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
513
596
|
> {
|
|
514
597
|
return this.enqueueJob(
|
|
515
|
-
this.generateId(ProvingRequestType.
|
|
516
|
-
ProvingRequestType.
|
|
517
|
-
|
|
598
|
+
this.generateId(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, input, epochNumber),
|
|
599
|
+
ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
|
|
600
|
+
input,
|
|
518
601
|
epochNumber,
|
|
519
602
|
signal,
|
|
520
603
|
);
|
|
521
604
|
}
|
|
522
605
|
|
|
523
|
-
|
|
524
|
-
|
|
606
|
+
getCheckpointRootSingleBlockRollupProof(
|
|
607
|
+
input: CheckpointRootSingleBlockRollupPrivateInputs,
|
|
525
608
|
signal?: AbortSignal,
|
|
526
609
|
epochNumber?: number,
|
|
527
610
|
): Promise<
|
|
528
|
-
PublicInputsAndRecursiveProof<
|
|
611
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
529
612
|
> {
|
|
530
613
|
return this.enqueueJob(
|
|
531
|
-
this.generateId(ProvingRequestType.
|
|
532
|
-
ProvingRequestType.
|
|
533
|
-
|
|
614
|
+
this.generateId(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, input, epochNumber),
|
|
615
|
+
ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
|
|
616
|
+
input,
|
|
534
617
|
epochNumber,
|
|
535
618
|
signal,
|
|
536
619
|
);
|
|
537
620
|
}
|
|
538
621
|
|
|
539
|
-
|
|
540
|
-
|
|
622
|
+
getCheckpointPaddingRollupProof(
|
|
623
|
+
input: CheckpointPaddingRollupPrivateInputs,
|
|
541
624
|
signal?: AbortSignal,
|
|
542
625
|
epochNumber?: number,
|
|
543
|
-
): Promise<
|
|
626
|
+
): Promise<
|
|
627
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
628
|
+
> {
|
|
544
629
|
return this.enqueueJob(
|
|
545
|
-
this.generateId(ProvingRequestType.
|
|
546
|
-
ProvingRequestType.
|
|
547
|
-
|
|
630
|
+
this.generateId(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, input, epochNumber),
|
|
631
|
+
ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
|
|
632
|
+
input,
|
|
548
633
|
epochNumber,
|
|
549
634
|
signal,
|
|
550
635
|
);
|
|
551
636
|
}
|
|
552
637
|
|
|
553
|
-
|
|
554
|
-
input:
|
|
638
|
+
getCheckpointMergeRollupProof(
|
|
639
|
+
input: CheckpointMergeRollupPrivateInputs,
|
|
555
640
|
signal?: AbortSignal,
|
|
556
641
|
epochNumber?: number,
|
|
557
|
-
): Promise<
|
|
642
|
+
): Promise<
|
|
643
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
644
|
+
> {
|
|
558
645
|
return this.enqueueJob(
|
|
559
|
-
this.generateId(ProvingRequestType.
|
|
560
|
-
ProvingRequestType.
|
|
646
|
+
this.generateId(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, input, epochNumber),
|
|
647
|
+
ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
|
|
561
648
|
input,
|
|
562
649
|
epochNumber,
|
|
563
650
|
signal,
|
|
564
651
|
);
|
|
565
652
|
}
|
|
566
653
|
|
|
567
|
-
|
|
568
|
-
|
|
654
|
+
getRootRollupProof(
|
|
655
|
+
input: RootRollupPrivateInputs,
|
|
569
656
|
signal?: AbortSignal,
|
|
570
657
|
epochNumber?: number,
|
|
571
|
-
): Promise<
|
|
658
|
+
): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
|
|
572
659
|
return this.enqueueJob(
|
|
573
|
-
this.generateId(ProvingRequestType.
|
|
574
|
-
ProvingRequestType.
|
|
575
|
-
|
|
660
|
+
this.generateId(ProvingRequestType.ROOT_ROLLUP, input, epochNumber),
|
|
661
|
+
ProvingRequestType.ROOT_ROLLUP,
|
|
662
|
+
input,
|
|
576
663
|
epochNumber,
|
|
577
664
|
signal,
|
|
578
665
|
);
|
|
@@ -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);
|
|
@@ -100,7 +111,7 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
|
|
|
100
111
|
proverAgentPollIntervalMs: {
|
|
101
112
|
env: 'PROVER_AGENT_POLL_INTERVAL_MS',
|
|
102
113
|
description: 'The interval agents poll for jobs at',
|
|
103
|
-
...numberConfigHelper(
|
|
114
|
+
...numberConfigHelper(1000),
|
|
104
115
|
},
|
|
105
116
|
proverAgentProofTypes: {
|
|
106
117
|
env: 'PROVER_AGENT_PROOF_TYPES',
|
|
@@ -118,7 +129,7 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
|
|
|
118
129
|
realProofs: {
|
|
119
130
|
env: 'PROVER_REAL_PROOFS',
|
|
120
131
|
description: 'Whether to construct real proofs',
|
|
121
|
-
...booleanConfigHelper(
|
|
132
|
+
...booleanConfigHelper(true),
|
|
122
133
|
},
|
|
123
134
|
proverTestDelayType: {
|
|
124
135
|
env: 'PROVER_TEST_DELAY_TYPE',
|
|
@@ -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);
|
|
@@ -3,7 +3,7 @@ import { type ProofUri, type ProvingJobId, makeProvingJobId } from '@aztec/stdli
|
|
|
3
3
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
4
4
|
|
|
5
5
|
export function makeRandomProvingJobId(epochNumber?: number): ProvingJobId {
|
|
6
|
-
return makeProvingJobId(epochNumber ?? 1, ProvingRequestType.
|
|
6
|
+
return makeProvingJobId(epochNumber ?? 1, ProvingRequestType.PARITY_BASE, randomBytes(8).toString('hex'));
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
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);
|