@aztec/prover-client 4.0.0-nightly.20250907 → 4.0.0-nightly.20260108
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 +1 -1
- package/dest/block-factory/light.d.ts +5 -3
- package/dest/block-factory/light.d.ts.map +1 -1
- package/dest/block-factory/light.js +32 -11
- package/dest/config.d.ts +2 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +2 -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 +5 -5
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +33 -15
- package/dest/mocks/test_context.d.ts +38 -33
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +133 -82
- package/dest/orchestrator/block-building-helpers.d.ts +35 -35
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +151 -187
- package/dest/orchestrator/block-proving-state.d.ts +68 -55
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +273 -185
- 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 +38 -31
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +128 -84
- package/dest/orchestrator/index.d.ts +1 -1
- package/dest/orchestrator/orchestrator.d.ts +35 -34
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +777 -292
- package/dest/orchestrator/orchestrator_metrics.d.ts +1 -3
- package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator_metrics.js +0 -9
- 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 +23 -29
- package/dest/prover-client/factory.d.ts +3 -3
- package/dest/prover-client/factory.d.ts.map +1 -1
- package/dest/prover-client/index.d.ts +1 -1
- package/dest/prover-client/prover-client.d.ts +3 -3
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +1 -1
- package/dest/prover-client/server-epoch-prover.d.ts +13 -11
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
- package/dest/prover-client/server-epoch-prover.js +9 -9
- package/dest/proving_broker/broker_prover_facade.d.ts +23 -18
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +42 -33
- package/dest/proving_broker/config.d.ts +18 -14
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +12 -6
- package/dest/proving_broker/factory.d.ts +1 -1
- package/dest/proving_broker/factory.js +1 -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/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/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 +3 -8
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +1 -16
- package/dest/proving_broker/proving_broker.d.ts +2 -2
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +35 -29
- 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/persisted.d.ts +5 -3
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +397 -8
- 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 +3 -2
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +40 -21
- package/dest/proving_broker/rpc.d.ts +4 -4
- package/dest/test/mock_proof_store.d.ts +3 -3
- package/dest/test/mock_proof_store.d.ts.map +1 -1
- package/dest/test/mock_prover.d.ts +23 -19
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +36 -21
- package/package.json +21 -19
- package/src/block-factory/light.ts +40 -17
- package/src/config.ts +2 -2
- package/src/light/index.ts +1 -0
- package/src/light/lightweight_checkpoint_builder.ts +198 -0
- package/src/mocks/fixtures.ts +41 -36
- package/src/mocks/test_context.ts +196 -114
- package/src/orchestrator/block-building-helpers.ts +233 -313
- package/src/orchestrator/block-proving-state.ts +315 -247
- package/src/orchestrator/checkpoint-proving-state.ts +303 -0
- package/src/orchestrator/epoch-proving-state.ts +176 -129
- package/src/orchestrator/orchestrator.ts +558 -348
- package/src/orchestrator/orchestrator_metrics.ts +1 -20
- package/src/orchestrator/tx-proving-state.ts +47 -55
- package/src/prover-client/factory.ts +6 -2
- package/src/prover-client/prover-client.ts +4 -11
- package/src/prover-client/server-epoch-prover.ts +30 -21
- package/src/proving_broker/broker_prover_facade.ts +175 -112
- package/src/proving_broker/config.ts +14 -7
- package/src/proving_broker/factory.ts +1 -1
- package/src/proving_broker/fixtures.ts +8 -3
- package/src/proving_broker/proof_store/index.ts +1 -0
- package/src/proving_broker/proving_agent.ts +1 -17
- package/src/proving_broker/proving_broker.ts +42 -27
- package/src/proving_broker/proving_broker_database/memory.ts +2 -1
- package/src/proving_broker/proving_broker_database/persisted.ts +25 -10
- package/src/proving_broker/proving_broker_database.ts +2 -1
- package/src/proving_broker/proving_job_controller.ts +42 -22
- package/src/test/mock_prover.ts +143 -66
- 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/proving_broker/proving_agent_instrumentation.d.ts +0 -8
- package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +0 -1
- package/dest/proving_broker/proving_agent_instrumentation.js +0 -16
- package/src/bin/get-proof-inputs.ts +0 -59
- package/src/proving_broker/proving_agent_instrumentation.ts +0 -21
|
@@ -3,10 +3,9 @@ import type {
|
|
|
3
3
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
4
4
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
5
5
|
RECURSIVE_PROOF_LENGTH,
|
|
6
|
-
TUBE_PROOF_LENGTH,
|
|
7
6
|
} from '@aztec/constants';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
7
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
8
|
+
import { sha256 } from '@aztec/foundation/crypto/sha256';
|
|
10
9
|
import { createLogger } from '@aztec/foundation/log';
|
|
11
10
|
import { type PromiseWithResolvers, RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
12
11
|
import { truncate } from '@aztec/foundation/string';
|
|
@@ -23,22 +22,29 @@ import {
|
|
|
23
22
|
type ServerCircuitProver,
|
|
24
23
|
makeProvingJobId,
|
|
25
24
|
} from '@aztec/stdlib/interfaces/server';
|
|
26
|
-
import type {
|
|
25
|
+
import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
27
26
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
28
27
|
import type {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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,
|
|
39
45
|
RootRollupPublicInputs,
|
|
40
|
-
|
|
41
|
-
|
|
46
|
+
TxMergeRollupPrivateInputs,
|
|
47
|
+
TxRollupPublicInputs,
|
|
42
48
|
} from '@aztec/stdlib/rollup';
|
|
43
49
|
|
|
44
50
|
import { InlineProofStore, type ProofStore } from './proof_store/index.js';
|
|
@@ -124,7 +130,7 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
124
130
|
id: ProvingJobId,
|
|
125
131
|
type: T,
|
|
126
132
|
inputs: ProvingJobInputsMap[T],
|
|
127
|
-
epochNumber =
|
|
133
|
+
epochNumber = EpochNumber.ZERO,
|
|
128
134
|
signal?: AbortSignal,
|
|
129
135
|
): Promise<ProvingJobResultsMap[T]> {
|
|
130
136
|
const { job: job, isEnqueued } = this.getOrCreateProvingJob(id, type, signal);
|
|
@@ -391,210 +397,267 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
391
397
|
|
|
392
398
|
getAvmProof(
|
|
393
399
|
inputs: AvmCircuitInputs,
|
|
394
|
-
skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: remove this argument
|
|
395
400
|
signal?: AbortSignal,
|
|
396
|
-
epochNumber?:
|
|
401
|
+
epochNumber?: EpochNumber,
|
|
397
402
|
): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>> {
|
|
398
|
-
this.log.info(`getAvmProof() called with skipPublicInputsValidation: ${skipPublicInputsValidation}`);
|
|
399
|
-
|
|
400
403
|
return this.enqueueJob(
|
|
401
404
|
this.generateId(ProvingRequestType.PUBLIC_VM, inputs, epochNumber),
|
|
402
405
|
ProvingRequestType.PUBLIC_VM,
|
|
403
406
|
inputs,
|
|
404
407
|
epochNumber,
|
|
405
408
|
signal,
|
|
406
|
-
)
|
|
407
|
-
// TODO(#14234)[Unconditional PIs validation]: Remove ".then()".
|
|
408
|
-
// Override the default value of skipPublicInputsValidation potentially set in BBNativeRollupProver.getAvmProof().
|
|
409
|
-
result.proof.proof[0] = skipPublicInputsValidation ? new Fr(1) : new Fr(0);
|
|
410
|
-
return result;
|
|
411
|
-
});
|
|
409
|
+
);
|
|
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?:
|
|
432
|
-
): Promise<
|
|
433
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
434
|
-
> {
|
|
429
|
+
epochNumber?: EpochNumber,
|
|
430
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
435
431
|
return this.enqueueJob(
|
|
436
|
-
this.generateId(ProvingRequestType.
|
|
437
|
-
ProvingRequestType.
|
|
432
|
+
this.generateId(ProvingRequestType.TX_MERGE_ROLLUP, input, epochNumber),
|
|
433
|
+
ProvingRequestType.TX_MERGE_ROLLUP,
|
|
438
434
|
input,
|
|
439
435
|
epochNumber,
|
|
440
436
|
signal,
|
|
441
437
|
);
|
|
442
438
|
}
|
|
443
439
|
|
|
444
|
-
|
|
445
|
-
|
|
440
|
+
getPublicChonkVerifierProof(
|
|
441
|
+
inputs: PublicChonkVerifierPrivateInputs,
|
|
446
442
|
signal?: AbortSignal,
|
|
447
|
-
epochNumber?:
|
|
443
|
+
epochNumber?: EpochNumber,
|
|
448
444
|
): Promise<
|
|
449
|
-
PublicInputsAndRecursiveProof<
|
|
445
|
+
PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
450
446
|
> {
|
|
451
447
|
return this.enqueueJob(
|
|
452
|
-
this.generateId(ProvingRequestType.
|
|
453
|
-
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,
|
|
454
506
|
input,
|
|
455
507
|
epochNumber,
|
|
456
508
|
signal,
|
|
457
509
|
);
|
|
458
510
|
}
|
|
459
511
|
|
|
460
|
-
|
|
461
|
-
input:
|
|
512
|
+
getBlockRootSingleTxFirstRollupProof(
|
|
513
|
+
input: BlockRootSingleTxFirstRollupPrivateInputs,
|
|
462
514
|
signal?: AbortSignal,
|
|
463
|
-
epochNumber?:
|
|
464
|
-
): Promise<
|
|
465
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
466
|
-
> {
|
|
515
|
+
epochNumber?: EpochNumber,
|
|
516
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
467
517
|
return this.enqueueJob(
|
|
468
|
-
this.generateId(ProvingRequestType.
|
|
469
|
-
ProvingRequestType.
|
|
518
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, input, epochNumber),
|
|
519
|
+
ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
|
|
470
520
|
input,
|
|
471
521
|
epochNumber,
|
|
472
522
|
signal,
|
|
473
523
|
);
|
|
474
524
|
}
|
|
475
525
|
|
|
476
|
-
|
|
477
|
-
input:
|
|
526
|
+
getBlockRootEmptyTxFirstRollupProof(
|
|
527
|
+
input: BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
478
528
|
signal?: AbortSignal,
|
|
479
|
-
epochNumber?:
|
|
480
|
-
): Promise<
|
|
481
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
482
|
-
> {
|
|
529
|
+
epochNumber?: EpochNumber,
|
|
530
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
483
531
|
return this.enqueueJob(
|
|
484
|
-
this.generateId(ProvingRequestType.
|
|
485
|
-
ProvingRequestType.
|
|
532
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, input, epochNumber),
|
|
533
|
+
ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
|
|
486
534
|
input,
|
|
487
535
|
epochNumber,
|
|
488
536
|
signal,
|
|
489
537
|
);
|
|
490
538
|
}
|
|
491
539
|
|
|
492
|
-
|
|
493
|
-
input:
|
|
540
|
+
getBlockRootRollupProof(
|
|
541
|
+
input: BlockRootRollupPrivateInputs,
|
|
494
542
|
signal?: AbortSignal,
|
|
495
|
-
epochNumber?:
|
|
496
|
-
): Promise<
|
|
497
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
498
|
-
> {
|
|
543
|
+
epochNumber?: EpochNumber,
|
|
544
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
499
545
|
return this.enqueueJob(
|
|
500
|
-
this.generateId(ProvingRequestType.
|
|
501
|
-
ProvingRequestType.
|
|
546
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
|
|
547
|
+
ProvingRequestType.BLOCK_ROOT_ROLLUP,
|
|
502
548
|
input,
|
|
503
549
|
epochNumber,
|
|
504
550
|
signal,
|
|
505
551
|
);
|
|
506
552
|
}
|
|
507
553
|
|
|
508
|
-
|
|
509
|
-
input:
|
|
554
|
+
getBlockRootSingleTxRollupProof(
|
|
555
|
+
input: BlockRootSingleTxRollupPrivateInputs,
|
|
510
556
|
signal?: AbortSignal,
|
|
511
|
-
epochNumber?:
|
|
512
|
-
): Promise<
|
|
513
|
-
PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
514
|
-
> {
|
|
557
|
+
epochNumber?: EpochNumber,
|
|
558
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
515
559
|
return this.enqueueJob(
|
|
516
|
-
this.generateId(ProvingRequestType.
|
|
517
|
-
ProvingRequestType.
|
|
560
|
+
this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, input, epochNumber),
|
|
561
|
+
ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
|
|
562
|
+
input,
|
|
563
|
+
epochNumber,
|
|
564
|
+
signal,
|
|
565
|
+
);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
getBlockMergeRollupProof(
|
|
569
|
+
input: BlockMergeRollupPrivateInputs,
|
|
570
|
+
signal?: AbortSignal,
|
|
571
|
+
epochNumber?: EpochNumber,
|
|
572
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
573
|
+
return this.enqueueJob(
|
|
574
|
+
this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
|
|
575
|
+
ProvingRequestType.BLOCK_MERGE_ROLLUP,
|
|
518
576
|
input,
|
|
519
577
|
epochNumber,
|
|
520
578
|
signal,
|
|
521
579
|
);
|
|
522
580
|
}
|
|
523
|
-
|
|
524
|
-
|
|
581
|
+
|
|
582
|
+
getCheckpointRootRollupProof(
|
|
583
|
+
input: CheckpointRootRollupPrivateInputs,
|
|
525
584
|
signal?: AbortSignal,
|
|
526
|
-
epochNumber?:
|
|
585
|
+
epochNumber?: EpochNumber,
|
|
527
586
|
): Promise<
|
|
528
|
-
PublicInputsAndRecursiveProof<
|
|
587
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
529
588
|
> {
|
|
530
589
|
return this.enqueueJob(
|
|
531
|
-
this.generateId(ProvingRequestType.
|
|
532
|
-
ProvingRequestType.
|
|
533
|
-
|
|
590
|
+
this.generateId(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, input, epochNumber),
|
|
591
|
+
ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
|
|
592
|
+
input,
|
|
534
593
|
epochNumber,
|
|
535
594
|
signal,
|
|
536
595
|
);
|
|
537
596
|
}
|
|
538
597
|
|
|
539
|
-
|
|
540
|
-
|
|
598
|
+
getCheckpointRootSingleBlockRollupProof(
|
|
599
|
+
input: CheckpointRootSingleBlockRollupPrivateInputs,
|
|
541
600
|
signal?: AbortSignal,
|
|
542
|
-
epochNumber?:
|
|
601
|
+
epochNumber?: EpochNumber,
|
|
543
602
|
): Promise<
|
|
544
|
-
PublicInputsAndRecursiveProof<
|
|
603
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
545
604
|
> {
|
|
546
605
|
return this.enqueueJob(
|
|
547
|
-
this.generateId(ProvingRequestType.
|
|
548
|
-
ProvingRequestType.
|
|
549
|
-
|
|
606
|
+
this.generateId(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, input, epochNumber),
|
|
607
|
+
ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
|
|
608
|
+
input,
|
|
550
609
|
epochNumber,
|
|
551
610
|
signal,
|
|
552
611
|
);
|
|
553
612
|
}
|
|
554
613
|
|
|
555
|
-
|
|
556
|
-
|
|
614
|
+
getCheckpointPaddingRollupProof(
|
|
615
|
+
input: CheckpointPaddingRollupPrivateInputs,
|
|
557
616
|
signal?: AbortSignal,
|
|
558
|
-
epochNumber?:
|
|
559
|
-
): Promise<
|
|
617
|
+
epochNumber?: EpochNumber,
|
|
618
|
+
): Promise<
|
|
619
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
620
|
+
> {
|
|
560
621
|
return this.enqueueJob(
|
|
561
|
-
this.generateId(ProvingRequestType.
|
|
562
|
-
ProvingRequestType.
|
|
563
|
-
|
|
622
|
+
this.generateId(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, input, epochNumber),
|
|
623
|
+
ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
|
|
624
|
+
input,
|
|
564
625
|
epochNumber,
|
|
565
626
|
signal,
|
|
566
627
|
);
|
|
567
628
|
}
|
|
568
629
|
|
|
569
|
-
|
|
570
|
-
input:
|
|
630
|
+
getCheckpointMergeRollupProof(
|
|
631
|
+
input: CheckpointMergeRollupPrivateInputs,
|
|
571
632
|
signal?: AbortSignal,
|
|
572
|
-
epochNumber?:
|
|
573
|
-
): Promise<
|
|
633
|
+
epochNumber?: EpochNumber,
|
|
634
|
+
): Promise<
|
|
635
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
636
|
+
> {
|
|
574
637
|
return this.enqueueJob(
|
|
575
|
-
this.generateId(ProvingRequestType.
|
|
576
|
-
ProvingRequestType.
|
|
638
|
+
this.generateId(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, input, epochNumber),
|
|
639
|
+
ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
|
|
577
640
|
input,
|
|
578
641
|
epochNumber,
|
|
579
642
|
signal,
|
|
580
643
|
);
|
|
581
644
|
}
|
|
582
645
|
|
|
583
|
-
|
|
584
|
-
|
|
646
|
+
getRootRollupProof(
|
|
647
|
+
input: RootRollupPrivateInputs,
|
|
585
648
|
signal?: AbortSignal,
|
|
586
|
-
epochNumber?:
|
|
587
|
-
): Promise<
|
|
649
|
+
epochNumber?: EpochNumber,
|
|
650
|
+
): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
|
|
588
651
|
return this.enqueueJob(
|
|
589
|
-
this.generateId(ProvingRequestType.
|
|
590
|
-
ProvingRequestType.
|
|
591
|
-
|
|
652
|
+
this.generateId(ProvingRequestType.ROOT_ROLLUP, input, epochNumber),
|
|
653
|
+
ProvingRequestType.ROOT_ROLLUP,
|
|
654
|
+
input,
|
|
592
655
|
epochNumber,
|
|
593
656
|
signal,
|
|
594
657
|
);
|
|
595
658
|
}
|
|
596
659
|
|
|
597
|
-
private generateId(type: ProvingRequestType, inputs: { toBuffer(): Buffer }, epochNumber =
|
|
660
|
+
private generateId(type: ProvingRequestType, inputs: { toBuffer(): Buffer }, epochNumber = EpochNumber.ZERO) {
|
|
598
661
|
const inputsHash = sha256(inputs.toBuffer());
|
|
599
662
|
return makeProvingJobId(epochNumber, type, inputsHash.toString('hex'));
|
|
600
663
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
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,
|
|
@@ -22,9 +22,9 @@ export const ProverBrokerConfig = z.object({
|
|
|
22
22
|
/** If starting a prover broker locally, the directory to store broker data */
|
|
23
23
|
dataDirectory: z.string().optional(),
|
|
24
24
|
/** The size of the data store map */
|
|
25
|
-
|
|
26
|
-
/** The size of the prover broker's database. Will override the
|
|
27
|
-
|
|
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(),
|
|
28
28
|
/** The prover broker may batch jobs together before writing to the database */
|
|
29
29
|
proverBrokerBatchSize: z.number().int().nonnegative(),
|
|
30
30
|
/** How often the job batches get flushed */
|
|
@@ -34,7 +34,7 @@ export const ProverBrokerConfig = z.object({
|
|
|
34
34
|
});
|
|
35
35
|
|
|
36
36
|
export type ProverBrokerConfig = z.infer<typeof ProverBrokerConfig> &
|
|
37
|
-
Pick<DataStoreConfig, '
|
|
37
|
+
Pick<DataStoreConfig, 'dataStoreMapSizeKb' | 'dataDirectory'> &
|
|
38
38
|
L1ReaderConfig &
|
|
39
39
|
Pick<ChainConfig, 'rollupVersion'>;
|
|
40
40
|
|
|
@@ -69,10 +69,10 @@ export const proverBrokerConfigMappings: ConfigMappingsType<ProverBrokerConfig>
|
|
|
69
69
|
description: 'The maximum number of epochs to keep results for',
|
|
70
70
|
...numberConfigHelper(1),
|
|
71
71
|
},
|
|
72
|
-
|
|
72
|
+
proverBrokerStoreMapSizeKb: {
|
|
73
73
|
env: 'PROVER_BROKER_STORE_MAP_SIZE_KB',
|
|
74
74
|
parseEnv: (val: string | undefined) => (val ? +val : undefined),
|
|
75
|
-
description: "The size of the prover broker's database. Will override the
|
|
75
|
+
description: "The size of the prover broker's database. Will override the dataStoreMapSizeKb if set.",
|
|
76
76
|
},
|
|
77
77
|
...dataConfigMappings,
|
|
78
78
|
...l1ReaderConfigMappings,
|
|
@@ -98,6 +98,8 @@ export const ProverAgentConfig = z.object({
|
|
|
98
98
|
proverTestDelayMs: z.number(),
|
|
99
99
|
/** If using realistic delays, what percentage of realistic times to apply. */
|
|
100
100
|
proverTestDelayFactor: z.number(),
|
|
101
|
+
/** The delay (ms) to inject during fake proof verification */
|
|
102
|
+
proverTestVerificationDelayMs: z.number().optional(),
|
|
101
103
|
});
|
|
102
104
|
|
|
103
105
|
export type ProverAgentConfig = z.infer<typeof ProverAgentConfig>;
|
|
@@ -146,4 +148,9 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
|
|
|
146
148
|
description: 'If using realistic delays, what percentage of realistic times to apply.',
|
|
147
149
|
...numberConfigHelper(1),
|
|
148
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
|
+
},
|
|
149
156
|
};
|
|
@@ -9,7 +9,7 @@ export async function createAndStartProvingBroker(
|
|
|
9
9
|
_config: ProverBrokerConfig,
|
|
10
10
|
client: TelemetryClient,
|
|
11
11
|
): Promise<ProvingBroker> {
|
|
12
|
-
const config = { ..._config,
|
|
12
|
+
const config = { ..._config, dataStoreMapSizeKb: _config.proverBrokerStoreMapSizeKb ?? _config.dataStoreMapSizeKb };
|
|
13
13
|
const database = config.dataDirectory ? await KVBrokerDatabase.new(config, client) : new InMemoryBrokerDatabase();
|
|
14
14
|
|
|
15
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 {
|
|
@@ -13,27 +13,16 @@ import type {
|
|
|
13
13
|
ServerCircuitProver,
|
|
14
14
|
} from '@aztec/stdlib/interfaces/server';
|
|
15
15
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
16
|
-
import {
|
|
17
|
-
type TelemetryClient,
|
|
18
|
-
type Traceable,
|
|
19
|
-
type Tracer,
|
|
20
|
-
getTelemetryClient,
|
|
21
|
-
trackSpan,
|
|
22
|
-
} from '@aztec/telemetry-client';
|
|
23
16
|
|
|
24
17
|
import type { ProofStore } from './proof_store/index.js';
|
|
25
|
-
import { ProvingAgentInstrumentation } from './proving_agent_instrumentation.js';
|
|
26
18
|
import { ProvingJobController, ProvingJobControllerStatus } from './proving_job_controller.js';
|
|
27
19
|
|
|
28
20
|
/**
|
|
29
21
|
* A helper class that encapsulates a circuit prover and connects it to a job source.
|
|
30
22
|
*/
|
|
31
|
-
export class ProvingAgent
|
|
23
|
+
export class ProvingAgent {
|
|
32
24
|
private currentJobController?: ProvingJobController;
|
|
33
25
|
private runningPromise: RunningPromise;
|
|
34
|
-
private instrumentation: ProvingAgentInstrumentation;
|
|
35
|
-
|
|
36
|
-
public readonly tracer: Tracer;
|
|
37
26
|
|
|
38
27
|
constructor(
|
|
39
28
|
/** The source of proving jobs */
|
|
@@ -46,12 +35,8 @@ export class ProvingAgent implements Traceable {
|
|
|
46
35
|
private proofAllowList: Array<ProvingRequestType> = [],
|
|
47
36
|
/** How long to wait between jobs */
|
|
48
37
|
private pollIntervalMs = 1000,
|
|
49
|
-
/** A telemetry client through which to emit metrics */
|
|
50
|
-
client: TelemetryClient = getTelemetryClient(),
|
|
51
38
|
private log = createLogger('prover-client:proving-agent'),
|
|
52
39
|
) {
|
|
53
|
-
this.tracer = client.getTracer('ProvingAgent');
|
|
54
|
-
this.instrumentation = new ProvingAgentInstrumentation(client);
|
|
55
40
|
this.runningPromise = new RunningPromise(this.work.bind(this), this.log, this.pollIntervalMs);
|
|
56
41
|
}
|
|
57
42
|
|
|
@@ -85,7 +70,6 @@ export class ProvingAgent implements Traceable {
|
|
|
85
70
|
return this.runningPromise.isRunning() ? { status: 'running' } : { status: 'stopped' };
|
|
86
71
|
}
|
|
87
72
|
|
|
88
|
-
@trackSpan('ProvingAgent.safeWork')
|
|
89
73
|
private async work() {
|
|
90
74
|
// every tick we need to take one of the following actions:
|
|
91
75
|
// 1. send a hearbeat to the broker that we're working on some job
|