@aztec/prover-client 0.0.1-commit.e61ad554 → 0.0.1-commit.f146247c
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/light/lightweight_checkpoint_builder.d.ts +7 -4
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
- package/dest/light/lightweight_checkpoint_builder.js +13 -7
- package/dest/mocks/fixtures.d.ts +1 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +2 -1
- package/dest/orchestrator/block-building-helpers.js +2 -2
- package/dest/orchestrator/orchestrator.d.ts +4 -2
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +65 -64
- package/dest/prover-client/prover-client.d.ts +1 -1
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +7 -4
- package/dest/proving_broker/broker_prover_facade.d.ts +4 -3
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +3 -3
- package/dest/proving_broker/proving_agent.d.ts +4 -3
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +4 -4
- package/dest/proving_broker/proving_broker_instrumentation.d.ts +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.js +11 -7
- package/dest/proving_broker/proving_job_controller.d.ts +4 -3
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +6 -3
- package/package.json +15 -15
- package/src/light/lightweight_checkpoint_builder.ts +17 -2
- package/src/mocks/fixtures.ts +2 -1
- package/src/orchestrator/block-building-helpers.ts +2 -2
- package/src/orchestrator/orchestrator.ts +66 -65
- package/src/prover-client/prover-client.ts +16 -5
- package/src/proving_broker/broker_prover_facade.ts +6 -3
- package/src/proving_broker/proving_agent.ts +5 -2
- package/src/proving_broker/proving_broker_instrumentation.ts +10 -6
- package/src/proving_broker/proving_job_controller.ts +9 -3
|
@@ -389,7 +389,6 @@ import { buildHeaderFromCircuitOutputs, getLastSiblingPath, getPublicChonkVerifi
|
|
|
389
389
|
import { EpochProvingState } from './epoch-proving-state.js';
|
|
390
390
|
import { ProvingOrchestratorMetrics } from './orchestrator_metrics.js';
|
|
391
391
|
import { TxProvingState } from './tx-proving-state.js';
|
|
392
|
-
const logger = createLogger('prover-client:orchestrator');
|
|
393
392
|
_dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
394
393
|
[Attributes.BLOCK_NUMBER]: blockNumber
|
|
395
394
|
})), _dec1 = trackSpan('ProvingOrchestrator.addTxs', (txs)=>({
|
|
@@ -450,7 +449,8 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
450
449
|
metrics;
|
|
451
450
|
// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
|
|
452
451
|
dbs;
|
|
453
|
-
|
|
452
|
+
logger;
|
|
453
|
+
constructor(dbProvider, prover, proverId, cancelJobsOnStop = false, telemetryClient = getTelemetryClient(), bindings){
|
|
454
454
|
this.dbProvider = dbProvider;
|
|
455
455
|
this.prover = prover;
|
|
456
456
|
this.proverId = proverId;
|
|
@@ -459,6 +459,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
459
459
|
this.pendingProvingJobs = [];
|
|
460
460
|
this.provingPromise = undefined;
|
|
461
461
|
this.dbs = new Map();
|
|
462
|
+
this.logger = createLogger('prover-client:orchestrator', bindings);
|
|
462
463
|
this.metrics = new ProvingOrchestratorMetrics(telemetryClient, 'ProvingOrchestrator');
|
|
463
464
|
}
|
|
464
465
|
get tracer() {
|
|
@@ -483,7 +484,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
483
484
|
status: 'failure',
|
|
484
485
|
reason
|
|
485
486
|
}));
|
|
486
|
-
logger.info(`Starting epoch ${epochNumber} with ${totalNumCheckpoints} checkpoints.`);
|
|
487
|
+
this.logger.info(`Starting epoch ${epochNumber} with ${totalNumCheckpoints} checkpoints.`);
|
|
487
488
|
this.provingState = new EpochProvingState(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges, (provingState)=>this.checkAndEnqueueCheckpointRootRollup(provingState), resolve, reject);
|
|
488
489
|
this.provingPromise = promise;
|
|
489
490
|
}
|
|
@@ -533,7 +534,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
533
534
|
throw new Error(`Checkpoint not accepting further blocks.`);
|
|
534
535
|
}
|
|
535
536
|
const constants = checkpointProvingState.constants;
|
|
536
|
-
logger.info(`Starting block ${blockNumber} for slot ${constants.slotNumber}.`);
|
|
537
|
+
this.logger.info(`Starting block ${blockNumber} for slot ${constants.slotNumber}.`);
|
|
537
538
|
// Fork the db only when it's not already set. The db for the first block is set in `startNewCheckpoint`.
|
|
538
539
|
if (!this.dbs.has(blockNumber)) {
|
|
539
540
|
// Fork world state at the end of the immediately previous block
|
|
@@ -578,7 +579,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
578
579
|
if (!txs.length) {
|
|
579
580
|
// To avoid an ugly throw below. If we require an empty block, we can just call setBlockCompleted
|
|
580
581
|
// on a block with no txs. We cannot do that here because we cannot find the blockNumber without any txs.
|
|
581
|
-
logger.warn(`Provided no txs to orchestrator addTxs.`);
|
|
582
|
+
this.logger.warn(`Provided no txs to orchestrator addTxs.`);
|
|
582
583
|
return;
|
|
583
584
|
}
|
|
584
585
|
const blockNumber = BlockNumber(txs[0].globalVariables.blockNumber);
|
|
@@ -592,7 +593,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
592
593
|
if (!provingState.isAcceptingTxs()) {
|
|
593
594
|
throw new Error(`Block ${blockNumber} has been initialized with transactions.`);
|
|
594
595
|
}
|
|
595
|
-
logger.info(`Adding ${txs.length} transactions to block ${blockNumber}`);
|
|
596
|
+
this.logger.info(`Adding ${txs.length} transactions to block ${blockNumber}`);
|
|
596
597
|
const db = this.dbs.get(blockNumber).fork;
|
|
597
598
|
const lastArchive = provingState.lastArchiveTreeSnapshot;
|
|
598
599
|
const newL1ToL2MessageTreeSnapshot = provingState.newL1ToL2MessageTreeSnapshot;
|
|
@@ -603,7 +604,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
603
604
|
throw new Error(`Invalid proving state when adding a tx`);
|
|
604
605
|
}
|
|
605
606
|
validateTx(tx);
|
|
606
|
-
logger.debug(`Received transaction: ${tx.hash}`);
|
|
607
|
+
this.logger.debug(`Received transaction: ${tx.hash}`);
|
|
607
608
|
const startSpongeBlob = spongeBlobState.clone();
|
|
608
609
|
const [hints, treeSnapshots] = await this.prepareBaseRollupInputs(tx, lastArchive, newL1ToL2MessageTreeSnapshot, startSpongeBlob, db);
|
|
609
610
|
if (!provingState.verifyState()) {
|
|
@@ -614,10 +615,10 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
614
615
|
const txIndex = provingState.addNewTx(txProvingState);
|
|
615
616
|
if (txProvingState.requireAvmProof) {
|
|
616
617
|
this.getOrEnqueueChonkVerifier(provingState, txIndex);
|
|
617
|
-
logger.debug(`Enqueueing public VM for tx ${txIndex}`);
|
|
618
|
+
this.logger.debug(`Enqueueing public VM for tx ${txIndex}`);
|
|
618
619
|
this.enqueueVM(provingState, txIndex);
|
|
619
620
|
} else {
|
|
620
|
-
logger.debug(`Enqueueing base rollup for private-only tx ${txIndex}`);
|
|
621
|
+
this.logger.debug(`Enqueueing base rollup for private-only tx ${txIndex}`);
|
|
621
622
|
this.enqueueBaseRollup(provingState, txIndex);
|
|
622
623
|
}
|
|
623
624
|
} catch (err) {
|
|
@@ -647,7 +648,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
647
648
|
const txHash = tx.getTxHash().toString();
|
|
648
649
|
const privateInputs = getPublicChonkVerifierPrivateInputsFromTx(tx, this.proverId.toField());
|
|
649
650
|
const tubeProof = promiseWithResolvers();
|
|
650
|
-
logger.debug(`Starting chonk verifier circuit for tx ${txHash}`);
|
|
651
|
+
this.logger.debug(`Starting chonk verifier circuit for tx ${txHash}`);
|
|
651
652
|
this.doEnqueueChonkVerifier(txHash, privateInputs, (proof)=>{
|
|
652
653
|
tubeProof.resolve(proof);
|
|
653
654
|
});
|
|
@@ -676,16 +677,16 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
676
677
|
throw new Error(`Block ${blockNumber} is still accepting txs. Call setBlockCompleted after all txs have been added.`);
|
|
677
678
|
}
|
|
678
679
|
// Given we've applied every change from this block, now assemble the block header:
|
|
679
|
-
logger.verbose(`Block ${blockNumber} completed. Assembling header.`);
|
|
680
|
+
this.logger.verbose(`Block ${blockNumber} completed. Assembling header.`);
|
|
680
681
|
const header = await provingState.buildBlockHeader();
|
|
681
682
|
if (expectedHeader && !header.equals(expectedHeader)) {
|
|
682
|
-
logger.error(`Block header mismatch: header=${header} expectedHeader=${expectedHeader}`);
|
|
683
|
+
this.logger.error(`Block header mismatch: header=${header} expectedHeader=${expectedHeader}`);
|
|
683
684
|
throw new Error('Block header mismatch');
|
|
684
685
|
}
|
|
685
686
|
// Get db for this block
|
|
686
687
|
const db = this.dbs.get(provingState.blockNumber).fork;
|
|
687
688
|
// Update the archive tree, so we're ready to start processing the next block:
|
|
688
|
-
logger.verbose(`Updating archive tree with block ${provingState.blockNumber} header ${(await header.hash()).toString()}`);
|
|
689
|
+
this.logger.verbose(`Updating archive tree with block ${provingState.blockNumber} header ${(await header.hash()).toString()}`);
|
|
689
690
|
await db.updateArchive(header);
|
|
690
691
|
await this.verifyBuiltBlockAgainstSyncedState(provingState);
|
|
691
692
|
return header;
|
|
@@ -694,17 +695,17 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
694
695
|
async verifyBuiltBlockAgainstSyncedState(provingState) {
|
|
695
696
|
const builtBlockHeader = provingState.getBuiltBlockHeader();
|
|
696
697
|
if (!builtBlockHeader) {
|
|
697
|
-
logger.debug('Block header not built yet, skipping header check.');
|
|
698
|
+
this.logger.debug('Block header not built yet, skipping header check.');
|
|
698
699
|
return;
|
|
699
700
|
}
|
|
700
701
|
const output = provingState.getBlockRootRollupOutput();
|
|
701
702
|
if (!output) {
|
|
702
|
-
logger.debug('Block root rollup proof not built yet, skipping header check.');
|
|
703
|
+
this.logger.debug('Block root rollup proof not built yet, skipping header check.');
|
|
703
704
|
return;
|
|
704
705
|
}
|
|
705
706
|
const header = await buildHeaderFromCircuitOutputs(output);
|
|
706
707
|
if (!(await header.hash()).equals(await builtBlockHeader.hash())) {
|
|
707
|
-
logger.error(`Block header mismatch.\nCircuit: ${inspect(header)}\nComputed: ${inspect(builtBlockHeader)}`);
|
|
708
|
+
this.logger.error(`Block header mismatch.\nCircuit: ${inspect(header)}\nComputed: ${inspect(builtBlockHeader)}`);
|
|
708
709
|
provingState.reject(`Block header hash mismatch.`);
|
|
709
710
|
return;
|
|
710
711
|
}
|
|
@@ -714,13 +715,13 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
714
715
|
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
|
|
715
716
|
const syncedArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.dbProvider.getSnapshot(blockNumber));
|
|
716
717
|
if (!syncedArchive.equals(newArchive)) {
|
|
717
|
-
logger.error(`Archive tree mismatch for block ${blockNumber}: world state synced to ${inspect(syncedArchive)} but built ${inspect(newArchive)}`);
|
|
718
|
+
this.logger.error(`Archive tree mismatch for block ${blockNumber}: world state synced to ${inspect(syncedArchive)} but built ${inspect(newArchive)}`);
|
|
718
719
|
provingState.reject(`Archive tree mismatch.`);
|
|
719
720
|
return;
|
|
720
721
|
}
|
|
721
722
|
const circuitArchive = output.newArchive;
|
|
722
723
|
if (!newArchive.equals(circuitArchive)) {
|
|
723
|
-
logger.error(`New archive mismatch.\nCircuit: ${output.newArchive}\nComputed: ${newArchive}`);
|
|
724
|
+
this.logger.error(`New archive mismatch.\nCircuit: ${output.newArchive}\nComputed: ${newArchive}`);
|
|
724
725
|
provingState.reject(`New archive mismatch.`);
|
|
725
726
|
return;
|
|
726
727
|
}
|
|
@@ -761,7 +762,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
761
762
|
return epochProofResult;
|
|
762
763
|
}
|
|
763
764
|
async cleanupDBFork(blockNumber) {
|
|
764
|
-
logger.debug(`Cleaning up world state fork for ${blockNumber}`);
|
|
765
|
+
this.logger.debug(`Cleaning up world state fork for ${blockNumber}`);
|
|
765
766
|
const fork = this.dbs.get(blockNumber);
|
|
766
767
|
if (!fork) {
|
|
767
768
|
return;
|
|
@@ -773,7 +774,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
773
774
|
await fork.cleanupPromise;
|
|
774
775
|
this.dbs.delete(blockNumber);
|
|
775
776
|
} catch (err) {
|
|
776
|
-
logger.error(`Error closing db for block ${blockNumber}`, err);
|
|
777
|
+
this.logger.error(`Error closing db for block ${blockNumber}`, err);
|
|
777
778
|
}
|
|
778
779
|
}
|
|
779
780
|
/**
|
|
@@ -783,7 +784,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
783
784
|
* @param job - The actual job, returns a promise notifying of the job's completion
|
|
784
785
|
*/ deferredProving(provingState, request, callback) {
|
|
785
786
|
if (!provingState.verifyState()) {
|
|
786
|
-
logger.debug(`Not enqueuing job, state no longer valid`);
|
|
787
|
+
this.logger.debug(`Not enqueuing job, state no longer valid`);
|
|
787
788
|
return;
|
|
788
789
|
}
|
|
789
790
|
const controller = new AbortController();
|
|
@@ -798,7 +799,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
798
799
|
}
|
|
799
800
|
const result = await request(controller.signal);
|
|
800
801
|
if (!provingState.verifyState()) {
|
|
801
|
-
logger.debug(`State no longer valid, discarding result`);
|
|
802
|
+
this.logger.debug(`State no longer valid, discarding result`);
|
|
802
803
|
return;
|
|
803
804
|
}
|
|
804
805
|
// we could have been cancelled whilst waiting for the result
|
|
@@ -813,7 +814,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
813
814
|
// drop this result
|
|
814
815
|
return;
|
|
815
816
|
}
|
|
816
|
-
logger.error(`Error thrown when proving job`, err);
|
|
817
|
+
this.logger.error(`Error thrown when proving job`, err);
|
|
817
818
|
provingState.reject(`${err}`);
|
|
818
819
|
} finally{
|
|
819
820
|
const index = this.pendingProvingJobs.indexOf(controller);
|
|
@@ -869,17 +870,17 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
869
870
|
// Executes the next level of merge if all inputs are available
|
|
870
871
|
enqueueBaseRollup(provingState, txIndex) {
|
|
871
872
|
if (!provingState.verifyState()) {
|
|
872
|
-
logger.debug('Not running base rollup, state invalid');
|
|
873
|
+
this.logger.debug('Not running base rollup, state invalid');
|
|
873
874
|
return;
|
|
874
875
|
}
|
|
875
876
|
if (!provingState.tryStartProvingBase(txIndex)) {
|
|
876
|
-
logger.debug(`Base rollup for tx ${txIndex} already started.`);
|
|
877
|
+
this.logger.debug(`Base rollup for tx ${txIndex} already started.`);
|
|
877
878
|
return;
|
|
878
879
|
}
|
|
879
880
|
const txProvingState = provingState.getTxProvingState(txIndex);
|
|
880
881
|
const { processedTx } = txProvingState;
|
|
881
882
|
const { rollupType, inputs } = txProvingState.getBaseRollupTypeAndInputs();
|
|
882
|
-
logger.debug(`Enqueuing deferred proving base rollup for ${processedTx.hash.toString()}`);
|
|
883
|
+
this.logger.debug(`Enqueuing deferred proving base rollup for ${processedTx.hash.toString()}`);
|
|
883
884
|
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, `ProvingOrchestrator.prover.${inputs instanceof PrivateTxBaseRollupPrivateInputs ? 'getPrivateTxBaseRollupProof' : 'getPublicTxBaseRollupProof'}`, {
|
|
884
885
|
[Attributes.TX_HASH]: processedTx.hash.toString(),
|
|
885
886
|
[Attributes.PROTOCOL_CIRCUIT_NAME]: rollupType
|
|
@@ -890,7 +891,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
890
891
|
return this.prover.getPublicTxBaseRollupProof(inputs, signal, provingState.epochNumber);
|
|
891
892
|
}
|
|
892
893
|
}), (result)=>{
|
|
893
|
-
logger.debug(`Completed proof for ${rollupType} for tx ${processedTx.hash.toString()}`);
|
|
894
|
+
this.logger.debug(`Completed proof for ${rollupType} for tx ${processedTx.hash.toString()}`);
|
|
894
895
|
validatePartialState(result.inputs.endTreeSnapshots, txProvingState.treeSnapshots);
|
|
895
896
|
const leafLocation = provingState.setBaseRollupProof(txIndex, result);
|
|
896
897
|
if (provingState.totalNumTxs === 1) {
|
|
@@ -904,14 +905,14 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
904
905
|
// Once completed, will enqueue the the public tx base rollup.
|
|
905
906
|
getOrEnqueueChonkVerifier(provingState, txIndex) {
|
|
906
907
|
if (!provingState.verifyState()) {
|
|
907
|
-
logger.debug('Not running chonk verifier circuit, state invalid');
|
|
908
|
+
this.logger.debug('Not running chonk verifier circuit, state invalid');
|
|
908
909
|
return;
|
|
909
910
|
}
|
|
910
911
|
const txProvingState = provingState.getTxProvingState(txIndex);
|
|
911
912
|
const txHash = txProvingState.processedTx.hash.toString();
|
|
912
913
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH;
|
|
913
914
|
const handleResult = (result)=>{
|
|
914
|
-
logger.debug(`Got chonk verifier proof for tx index: ${txIndex}`, {
|
|
915
|
+
this.logger.debug(`Got chonk verifier proof for tx index: ${txIndex}`, {
|
|
915
916
|
txHash
|
|
916
917
|
});
|
|
917
918
|
txProvingState.setPublicChonkVerifierProof(result);
|
|
@@ -919,18 +920,18 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
919
920
|
this.checkAndEnqueueBaseRollup(provingState, txIndex);
|
|
920
921
|
};
|
|
921
922
|
if (this.provingState?.cachedChonkVerifierProofs.has(txHash)) {
|
|
922
|
-
logger.debug(`Chonk verifier proof already enqueued for tx index: ${txIndex}`, {
|
|
923
|
+
this.logger.debug(`Chonk verifier proof already enqueued for tx index: ${txIndex}`, {
|
|
923
924
|
txHash
|
|
924
925
|
});
|
|
925
926
|
void this.provingState.cachedChonkVerifierProofs.get(txHash).then(handleResult);
|
|
926
927
|
return;
|
|
927
928
|
}
|
|
928
|
-
logger.debug(`Enqueuing chonk verifier circuit for tx index: ${txIndex}`);
|
|
929
|
+
this.logger.debug(`Enqueuing chonk verifier circuit for tx index: ${txIndex}`);
|
|
929
930
|
this.doEnqueueChonkVerifier(txHash, txProvingState.getPublicChonkVerifierPrivateInputs(), handleResult);
|
|
930
931
|
}
|
|
931
932
|
doEnqueueChonkVerifier(txHash, inputs, handler, provingState = this.provingState) {
|
|
932
933
|
if (!provingState.verifyState()) {
|
|
933
|
-
logger.debug('Not running chonk verifier circuit, state invalid');
|
|
934
|
+
this.logger.debug('Not running chonk verifier circuit, state invalid');
|
|
934
935
|
return;
|
|
935
936
|
}
|
|
936
937
|
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getPublicChonkVerifierProof', {
|
|
@@ -942,11 +943,11 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
942
943
|
// Enqueues the next level of merge if all inputs are available
|
|
943
944
|
enqueueMergeRollup(provingState, location) {
|
|
944
945
|
if (!provingState.verifyState()) {
|
|
945
|
-
logger.debug('Not running merge rollup. State no longer valid.');
|
|
946
|
+
this.logger.debug('Not running merge rollup. State no longer valid.');
|
|
946
947
|
return;
|
|
947
948
|
}
|
|
948
949
|
if (!provingState.tryStartProvingMerge(location)) {
|
|
949
|
-
logger.debug('Merge rollup already started.');
|
|
950
|
+
this.logger.debug('Merge rollup already started.');
|
|
950
951
|
return;
|
|
951
952
|
}
|
|
952
953
|
const inputs = provingState.getMergeRollupInputs(location);
|
|
@@ -960,15 +961,15 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
960
961
|
// Executes the block root rollup circuit
|
|
961
962
|
enqueueBlockRootRollup(provingState) {
|
|
962
963
|
if (!provingState.verifyState()) {
|
|
963
|
-
logger.debug('Not running block root rollup, state no longer valid');
|
|
964
|
+
this.logger.debug('Not running block root rollup, state no longer valid');
|
|
964
965
|
return;
|
|
965
966
|
}
|
|
966
967
|
if (!provingState.tryStartProvingBlockRoot()) {
|
|
967
|
-
logger.debug('Block root rollup already started.');
|
|
968
|
+
this.logger.debug('Block root rollup already started.');
|
|
968
969
|
return;
|
|
969
970
|
}
|
|
970
971
|
const { rollupType, inputs } = provingState.getBlockRootRollupTypeAndInputs();
|
|
971
|
-
logger.debug(`Enqueuing ${rollupType} for block ${provingState.blockNumber}.`);
|
|
972
|
+
this.logger.debug(`Enqueuing ${rollupType} for block ${provingState.blockNumber}.`);
|
|
972
973
|
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getBlockRootRollupProof', {
|
|
973
974
|
[Attributes.PROTOCOL_CIRCUIT_NAME]: rollupType
|
|
974
975
|
}, (signal)=>{
|
|
@@ -984,7 +985,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
984
985
|
return this.prover.getBlockRootRollupProof(inputs, signal, provingState.epochNumber);
|
|
985
986
|
}
|
|
986
987
|
}), async (result)=>{
|
|
987
|
-
logger.debug(`Completed ${rollupType} proof for block ${provingState.blockNumber}`);
|
|
988
|
+
this.logger.debug(`Completed ${rollupType} proof for block ${provingState.blockNumber}`);
|
|
988
989
|
const leafLocation = provingState.setBlockRootRollupProof(result);
|
|
989
990
|
const checkpointProvingState = provingState.parentCheckpoint;
|
|
990
991
|
// If the proofs were slower than the block header building, then we need to try validating the block header hashes here.
|
|
@@ -1002,11 +1003,11 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
1002
1003
|
// Enqueues the root parity circuit if all inputs are available
|
|
1003
1004
|
enqueueBaseParityCircuit(checkpointProvingState, provingState, baseParityIndex) {
|
|
1004
1005
|
if (!provingState.verifyState()) {
|
|
1005
|
-
logger.debug('Not running base parity. State no longer valid.');
|
|
1006
|
+
this.logger.debug('Not running base parity. State no longer valid.');
|
|
1006
1007
|
return;
|
|
1007
1008
|
}
|
|
1008
1009
|
if (!provingState.tryStartProvingBaseParity(baseParityIndex)) {
|
|
1009
|
-
logger.warn(`Base parity ${baseParityIndex} already started.`);
|
|
1010
|
+
this.logger.warn(`Base parity ${baseParityIndex} already started.`);
|
|
1010
1011
|
return;
|
|
1011
1012
|
}
|
|
1012
1013
|
const inputs = checkpointProvingState.getBaseParityInputs(baseParityIndex);
|
|
@@ -1027,11 +1028,11 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
1027
1028
|
// Enqueues the root rollup proof if all inputs are available
|
|
1028
1029
|
enqueueRootParityCircuit(provingState) {
|
|
1029
1030
|
if (!provingState.verifyState()) {
|
|
1030
|
-
logger.debug('Not running root parity. State no longer valid.');
|
|
1031
|
+
this.logger.debug('Not running root parity. State no longer valid.');
|
|
1031
1032
|
return;
|
|
1032
1033
|
}
|
|
1033
1034
|
if (!provingState.tryStartProvingRootParity()) {
|
|
1034
|
-
logger.debug('Root parity already started.');
|
|
1035
|
+
this.logger.debug('Root parity already started.');
|
|
1035
1036
|
return;
|
|
1036
1037
|
}
|
|
1037
1038
|
const inputs = provingState.getParityRootInputs();
|
|
@@ -1046,11 +1047,11 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
1046
1047
|
// Enqueues the next level of merge if all inputs are available
|
|
1047
1048
|
enqueueBlockMergeRollup(provingState, location) {
|
|
1048
1049
|
if (!provingState.verifyState()) {
|
|
1049
|
-
logger.debug('Not running block merge rollup. State no longer valid.');
|
|
1050
|
+
this.logger.debug('Not running block merge rollup. State no longer valid.');
|
|
1050
1051
|
return;
|
|
1051
1052
|
}
|
|
1052
1053
|
if (!provingState.tryStartProvingBlockMerge(location)) {
|
|
1053
|
-
logger.debug('Block merge rollup already started.');
|
|
1054
|
+
this.logger.debug('Block merge rollup already started.');
|
|
1054
1055
|
return;
|
|
1055
1056
|
}
|
|
1056
1057
|
const inputs = provingState.getBlockMergeRollupInputs(location);
|
|
@@ -1063,15 +1064,15 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
1063
1064
|
}
|
|
1064
1065
|
enqueueCheckpointRootRollup(provingState) {
|
|
1065
1066
|
if (!provingState.verifyState()) {
|
|
1066
|
-
logger.debug('Not running checkpoint root rollup. State no longer valid.');
|
|
1067
|
+
this.logger.debug('Not running checkpoint root rollup. State no longer valid.');
|
|
1067
1068
|
return;
|
|
1068
1069
|
}
|
|
1069
1070
|
if (!provingState.tryStartProvingCheckpointRoot()) {
|
|
1070
|
-
logger.debug('Checkpoint root rollup already started.');
|
|
1071
|
+
this.logger.debug('Checkpoint root rollup already started.');
|
|
1071
1072
|
return;
|
|
1072
1073
|
}
|
|
1073
1074
|
const rollupType = provingState.getCheckpointRootRollupType();
|
|
1074
|
-
logger.debug(`Enqueuing ${rollupType} for checkpoint ${provingState.index}.`);
|
|
1075
|
+
this.logger.debug(`Enqueuing ${rollupType} for checkpoint ${provingState.index}.`);
|
|
1075
1076
|
const inputs = provingState.getCheckpointRootRollupInputs();
|
|
1076
1077
|
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getCheckpointRootRollupProof', {
|
|
1077
1078
|
[Attributes.PROTOCOL_CIRCUIT_NAME]: rollupType
|
|
@@ -1085,11 +1086,11 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
1085
1086
|
const computedEndBlobAccumulatorState = provingState.getEndBlobAccumulator().toBlobAccumulator();
|
|
1086
1087
|
const circuitEndBlobAccumulatorState = result.inputs.endBlobAccumulator;
|
|
1087
1088
|
if (!circuitEndBlobAccumulatorState.equals(computedEndBlobAccumulatorState)) {
|
|
1088
|
-
logger.error(`Blob accumulator state mismatch.\nCircuit: ${inspect(circuitEndBlobAccumulatorState)}\nComputed: ${inspect(computedEndBlobAccumulatorState)}`);
|
|
1089
|
+
this.logger.error(`Blob accumulator state mismatch.\nCircuit: ${inspect(circuitEndBlobAccumulatorState)}\nComputed: ${inspect(computedEndBlobAccumulatorState)}`);
|
|
1089
1090
|
provingState.reject(`Blob accumulator state mismatch.`);
|
|
1090
1091
|
return;
|
|
1091
1092
|
}
|
|
1092
|
-
logger.debug(`Completed ${rollupType} proof for checkpoint ${provingState.index}.`);
|
|
1093
|
+
this.logger.debug(`Completed ${rollupType} proof for checkpoint ${provingState.index}.`);
|
|
1093
1094
|
const leafLocation = provingState.setCheckpointRootRollupProof(result);
|
|
1094
1095
|
const epochProvingState = provingState.parentEpoch;
|
|
1095
1096
|
if (epochProvingState.totalNumCheckpoints === 1) {
|
|
@@ -1101,37 +1102,37 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
1101
1102
|
}
|
|
1102
1103
|
enqueueCheckpointMergeRollup(provingState, location) {
|
|
1103
1104
|
if (!provingState.verifyState()) {
|
|
1104
|
-
logger.debug('Not running checkpoint merge rollup. State no longer valid.');
|
|
1105
|
+
this.logger.debug('Not running checkpoint merge rollup. State no longer valid.');
|
|
1105
1106
|
return;
|
|
1106
1107
|
}
|
|
1107
1108
|
if (!provingState.tryStartProvingCheckpointMerge(location)) {
|
|
1108
|
-
logger.debug('Checkpoint merge rollup already started.');
|
|
1109
|
+
this.logger.debug('Checkpoint merge rollup already started.');
|
|
1109
1110
|
return;
|
|
1110
1111
|
}
|
|
1111
1112
|
const inputs = provingState.getCheckpointMergeRollupInputs(location);
|
|
1112
1113
|
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getCheckpointMergeRollupProof', {
|
|
1113
1114
|
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'rollup-checkpoint-merge'
|
|
1114
1115
|
}, (signal)=>this.prover.getCheckpointMergeRollupProof(inputs, signal, provingState.epochNumber)), (result)=>{
|
|
1115
|
-
logger.debug('Completed proof for checkpoint merge rollup.');
|
|
1116
|
+
this.logger.debug('Completed proof for checkpoint merge rollup.');
|
|
1116
1117
|
provingState.setCheckpointMergeRollupProof(location, result);
|
|
1117
1118
|
this.checkAndEnqueueNextCheckpointMergeRollup(provingState, location);
|
|
1118
1119
|
});
|
|
1119
1120
|
}
|
|
1120
1121
|
enqueueEpochPadding(provingState) {
|
|
1121
1122
|
if (!provingState.verifyState()) {
|
|
1122
|
-
logger.debug('Not running epoch padding. State no longer valid.');
|
|
1123
|
+
this.logger.debug('Not running epoch padding. State no longer valid.');
|
|
1123
1124
|
return;
|
|
1124
1125
|
}
|
|
1125
1126
|
if (!provingState.tryStartProvingPaddingCheckpoint()) {
|
|
1126
|
-
logger.debug('Padding checkpoint already started.');
|
|
1127
|
+
this.logger.debug('Padding checkpoint already started.');
|
|
1127
1128
|
return;
|
|
1128
1129
|
}
|
|
1129
|
-
logger.debug('Padding epoch proof with a padding block root proof.');
|
|
1130
|
+
this.logger.debug('Padding epoch proof with a padding block root proof.');
|
|
1130
1131
|
const inputs = provingState.getPaddingCheckpointInputs();
|
|
1131
1132
|
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getCheckpointPaddingRollupProof', {
|
|
1132
1133
|
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'rollup-checkpoint-padding'
|
|
1133
1134
|
}, (signal)=>this.prover.getCheckpointPaddingRollupProof(inputs, signal, provingState.epochNumber)), (result)=>{
|
|
1134
|
-
logger.debug('Completed proof for padding checkpoint.');
|
|
1135
|
+
this.logger.debug('Completed proof for padding checkpoint.');
|
|
1135
1136
|
provingState.setCheckpointPaddingProof(result);
|
|
1136
1137
|
this.checkAndEnqueueRootRollup(provingState);
|
|
1137
1138
|
});
|
|
@@ -1139,15 +1140,15 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
1139
1140
|
// Executes the root rollup circuit
|
|
1140
1141
|
enqueueRootRollup(provingState) {
|
|
1141
1142
|
if (!provingState.verifyState()) {
|
|
1142
|
-
logger.debug('Not running root rollup, state no longer valid');
|
|
1143
|
+
this.logger.debug('Not running root rollup, state no longer valid');
|
|
1143
1144
|
return;
|
|
1144
1145
|
}
|
|
1145
|
-
logger.debug(`Preparing root rollup`);
|
|
1146
|
+
this.logger.debug(`Preparing root rollup`);
|
|
1146
1147
|
const inputs = provingState.getRootRollupInputs();
|
|
1147
1148
|
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getRootRollupProof', {
|
|
1148
1149
|
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'rollup-root'
|
|
1149
1150
|
}, (signal)=>this.prover.getRootRollupProof(inputs, signal, provingState.epochNumber)), (result)=>{
|
|
1150
|
-
logger.verbose(`Orchestrator completed root rollup for epoch ${provingState.epochNumber}`);
|
|
1151
|
+
this.logger.verbose(`Orchestrator completed root rollup for epoch ${provingState.epochNumber}`);
|
|
1151
1152
|
provingState.setRootRollupProof(result);
|
|
1152
1153
|
provingState.resolve({
|
|
1153
1154
|
status: 'success'
|
|
@@ -1167,7 +1168,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
1167
1168
|
}
|
|
1168
1169
|
checkAndEnqueueBlockRootRollup(provingState) {
|
|
1169
1170
|
if (!provingState.isReadyForBlockRootRollup()) {
|
|
1170
|
-
logger.debug('Not ready for block root rollup');
|
|
1171
|
+
this.logger.debug('Not ready for block root rollup');
|
|
1171
1172
|
return;
|
|
1172
1173
|
}
|
|
1173
1174
|
this.enqueueBlockRootRollup(provingState);
|
|
@@ -1202,7 +1203,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
1202
1203
|
}
|
|
1203
1204
|
checkAndEnqueueRootRollup(provingState) {
|
|
1204
1205
|
if (!provingState.isReadyForRootRollup()) {
|
|
1205
|
-
logger.debug('Not ready for root rollup');
|
|
1206
|
+
this.logger.debug('Not ready for root rollup');
|
|
1206
1207
|
return;
|
|
1207
1208
|
}
|
|
1208
1209
|
this.enqueueRootRollup(provingState);
|
|
@@ -1214,7 +1215,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
1214
1215
|
* @param txIndex - The index of the transaction being proven
|
|
1215
1216
|
*/ enqueueVM(provingState, txIndex) {
|
|
1216
1217
|
if (!provingState.verifyState()) {
|
|
1217
|
-
logger.debug(`Not running VM circuit as state is no longer valid`);
|
|
1218
|
+
this.logger.debug(`Not running VM circuit as state is no longer valid`);
|
|
1218
1219
|
return;
|
|
1219
1220
|
}
|
|
1220
1221
|
const txProvingState = provingState.getTxProvingState(txIndex);
|
|
@@ -1225,7 +1226,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
1225
1226
|
return await this.prover.getAvmProof(inputs, signal, provingState.epochNumber);
|
|
1226
1227
|
});
|
|
1227
1228
|
this.deferredProving(provingState, doAvmProving, (proof)=>{
|
|
1228
|
-
logger.debug(`Proven VM for tx index: ${txIndex}`);
|
|
1229
|
+
this.logger.debug(`Proven VM for tx index: ${txIndex}`);
|
|
1229
1230
|
txProvingState.setAvmProof(proof);
|
|
1230
1231
|
this.checkAndEnqueueBaseRollup(provingState, txIndex);
|
|
1231
1232
|
});
|
|
@@ -1236,7 +1237,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
1236
1237
|
return;
|
|
1237
1238
|
}
|
|
1238
1239
|
// We must have completed all proving (chonk verifier proof and (if required) vm proof are generated), we now move to the base rollup.
|
|
1239
|
-
logger.debug(`Public functions completed for tx ${txIndex} enqueueing base rollup`);
|
|
1240
|
+
this.logger.debug(`Public functions completed for tx ${txIndex} enqueueing base rollup`);
|
|
1240
1241
|
this.enqueueBaseRollup(provingState, txIndex);
|
|
1241
1242
|
}
|
|
1242
1243
|
}
|
|
@@ -39,4 +39,4 @@ export declare class ProverClient implements EpochProverManager {
|
|
|
39
39
|
private stopAgents;
|
|
40
40
|
}
|
|
41
41
|
export declare function buildServerCircuitProver(config: ActualProverConfig & ACVMConfig & BBConfig, telemetry: TelemetryClient): Promise<ServerCircuitProver>;
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLWNsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1jbGllbnQvcHJvdmVyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUUsS0FBSyxRQUFRLEVBQTJDLE1BQU0sa0JBQWtCLENBQUM7QUFFM0csT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHaEUsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNoQixLQUFLLGtCQUFrQixFQUN2QixLQUFLLHdCQUF3QixFQUM3QixLQUFLLGdCQUFnQixFQUNyQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLHdCQUF3QixFQUM3QixLQUFLLG1CQUFtQixFQUV6QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU92RCxzSEFBc0g7QUFDdEgscUJBQWEsWUFBYSxZQUFXLGtCQUFrQjtJQVFuRCxPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxrQkFBa0I7SUFDMUIsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsR0FBRztJQVpiLE9BQU8sQ0FBQyxPQUFPLENBQVM7SUFDeEIsT0FBTyxDQUFDLE1BQU0sQ0FBc0I7SUFFcEMsT0FBTyxDQUFDLFVBQVUsQ0FBYTtJQUMvQixPQUFPLENBQUMsZ0JBQWdCLENBQXlCO0lBRWpELE9BQU8sZUFVTjtJQUVNLGlCQUFpQixJQUFJLFdBQVcsQ0FrQnRDO0lBRU0sV0FBVyxJQUFJLFVBQVUsQ0FFL0I7SUFFSyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVkzRTtJQUVEOztPQUVHO0lBQ1UsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FPbEM7SUFFRDs7T0FFRztJQUNVLElBQUksa0JBT2hCO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFvQixHQUFHLENBQ3JCLE1BQU0sRUFBRSxrQkFBa0IsRUFDMUIsVUFBVSxFQUFFLHdCQUF3QixHQUFHLHdCQUF3QixFQUMvRCxNQUFNLEVBQUUsZ0JBQWdCLEVBQ3hCLFNBQVMsR0FBRSxlQUFzQyx5QkFLbEQ7SUFFTSxtQkFBbUIsSUFBSSxrQkFBa0IsQ0FNL0M7WUFFYSxvQkFBb0I7WUFxQnBCLFVBQVU7Q0FHekI7QUFFRCx3QkFBZ0Isd0JBQXdCLENBQ3RDLE1BQU0sRUFBRSxrQkFBa0IsR0FBRyxVQUFVLEdBQUcsUUFBUSxFQUNsRCxTQUFTLEVBQUUsZUFBZSxHQUN6QixPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FXOUIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-client.d.ts","sourceRoot":"","sources":["../../src/prover-client/prover-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAA2C,MAAM,kBAAkB,CAAC;AAE3G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAEvB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EAEzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOvD,sHAAsH;AACtH,qBAAa,YAAa,YAAW,kBAAkB;IAQnD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IAZb,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,eAUN;IAEM,iBAAiB,IAAI,WAAW,
|
|
1
|
+
{"version":3,"file":"prover-client.d.ts","sourceRoot":"","sources":["../../src/prover-client/prover-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAA2C,MAAM,kBAAkB,CAAC;AAE3G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAEvB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EAEzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOvD,sHAAsH;AACtH,qBAAa,YAAa,YAAW,kBAAkB;IAQnD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IAZb,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,OAAO,eAUN;IAEM,iBAAiB,IAAI,WAAW,CAkBtC;IAEM,WAAW,IAAI,UAAU,CAE/B;IAEK,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3E;IAED;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAOlC;IAED;;OAEG;IACU,IAAI,kBAOhB;IAED;;;;;OAKG;IACH,OAAoB,GAAG,CACrB,MAAM,EAAE,kBAAkB,EAC1B,UAAU,EAAE,wBAAwB,GAAG,wBAAwB,EAC/D,MAAM,EAAE,gBAAgB,EACxB,SAAS,GAAE,eAAsC,yBAKlD;IAEM,mBAAmB,IAAI,kBAAkB,CAM/C;YAEa,oBAAoB;YAqBpB,UAAU;CAGzB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,kBAAkB,GAAG,UAAU,GAAG,QAAQ,EAClD,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAW9B"}
|
|
@@ -33,8 +33,9 @@ import { ServerEpochProver } from './server-epoch-prover.js';
|
|
|
33
33
|
this.failedProofStore = this.config.failedProofStore ? createProofStore(this.config.failedProofStore) : undefined;
|
|
34
34
|
}
|
|
35
35
|
createEpochProver() {
|
|
36
|
-
const
|
|
37
|
-
const
|
|
36
|
+
const bindings = this.log.getBindings();
|
|
37
|
+
const facade = new BrokerCircuitProverFacade(this.orchestratorClient, this.proofStore, this.failedProofStore, undefined, bindings);
|
|
38
|
+
const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.config.proverId, this.config.cancelJobsOnStop, this.telemetry, bindings);
|
|
38
39
|
return new ServerEpochProver(facade, orchestrator);
|
|
39
40
|
}
|
|
40
41
|
getProverId() {
|
|
@@ -95,7 +96,8 @@ import { ServerEpochProver } from './server-epoch-prover.js';
|
|
|
95
96
|
}
|
|
96
97
|
const proofStore = new InlineProofStore();
|
|
97
98
|
const prover = await buildServerCircuitProver(this.config, this.telemetry);
|
|
98
|
-
|
|
99
|
+
const bindings = this.log.getBindings();
|
|
100
|
+
this.agents = times(this.config.proverAgentCount, ()=>new ProvingAgent(this.agentClient, proofStore, prover, [], this.config.proverAgentPollIntervalMs, bindings));
|
|
99
101
|
await Promise.all(this.agents.map((agent)=>agent.start()));
|
|
100
102
|
}
|
|
101
103
|
async stopAgents() {
|
|
@@ -106,6 +108,7 @@ export function buildServerCircuitProver(config, telemetry) {
|
|
|
106
108
|
if (config.realProofs) {
|
|
107
109
|
return BBNativeRollupProver.new(config, telemetry);
|
|
108
110
|
}
|
|
109
|
-
const
|
|
111
|
+
const logger = createLogger('prover-client:acvm-native');
|
|
112
|
+
const simulator = config.acvmBinaryPath ? new NativeACVMSimulator(config.acvmWorkingDirectory, config.acvmBinaryPath, undefined, logger) : undefined;
|
|
110
113
|
return Promise.resolve(new TestCircuitProver(simulator, config, telemetry));
|
|
111
114
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { type LoggerBindings } from '@aztec/foundation/log';
|
|
3
4
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
4
5
|
import { type ProvingJobProducer, type PublicInputsAndRecursiveProof, type ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
5
6
|
import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
@@ -11,12 +12,12 @@ export declare class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
11
12
|
private proofStore;
|
|
12
13
|
private failedProofStore?;
|
|
13
14
|
private pollIntervalMs;
|
|
14
|
-
private log;
|
|
15
15
|
private jobs;
|
|
16
16
|
private runningPromise?;
|
|
17
17
|
private timeOfLastSnapshotSync;
|
|
18
18
|
private jobsToRetrieve;
|
|
19
|
-
|
|
19
|
+
private log;
|
|
20
|
+
constructor(broker: ProvingJobProducer, proofStore?: ProofStore, failedProofStore?: ProofStore | undefined, pollIntervalMs?: number, bindings?: LoggerBindings);
|
|
20
21
|
/**
|
|
21
22
|
* This is a critical section. This function can not be async since it writes
|
|
22
23
|
* to the jobs map which acts as a mutex, ensuring a job is only ever created once.
|
|
@@ -51,4 +52,4 @@ export declare class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
51
52
|
getRootRollupProof(input: RootRollupPrivateInputs, signal?: AbortSignal, epochNumber?: EpochNumber): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
|
|
52
53
|
private generateId;
|
|
53
54
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJva2VyX3Byb3Zlcl9mYWNhZGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9icm9rZXJfcHJvdmVyX2ZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFDVixvQ0FBb0MsRUFDcEMsNkJBQTZCLEVBQzdCLHlDQUF5QyxFQUN6QyxzQkFBc0IsRUFDdkIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBR3ZGLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUlMLEtBQUssa0JBQWtCLEVBR3ZCLEtBQUssNkJBQTZCLEVBQ2xDLEtBQUssbUJBQW1CLEVBRXpCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqSCxPQUFPLEVBQXNCLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sS0FBSyxFQUNWLDZCQUE2QixFQUM3Qix1QkFBdUIsRUFDdkIsd0NBQXdDLEVBQ3hDLGlDQUFpQyxFQUNqQyw0QkFBNEIsRUFDNUIseUNBQXlDLEVBQ3pDLG9DQUFvQyxFQUNwQyxrQ0FBa0MsRUFDbEMsb0NBQW9DLEVBQ3BDLDRCQUE0QixFQUM1QixpQ0FBaUMsRUFDakMsNENBQTRDLEVBQzVDLGdDQUFnQyxFQUNoQyxnQ0FBZ0MsRUFDaEMsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDckIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQW9C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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker_prover_facade.d.ts","sourceRoot":"","sources":["../../src/proving_broker/broker_prover_facade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oCAAoC,EACpC,6BAA6B,EAC7B,yCAAyC,EACzC,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"broker_prover_facade.d.ts","sourceRoot":"","sources":["../../src/proving_broker/broker_prover_facade.ts"],"names":[],"mappings":"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"}
|