@aztec/prover-client 0.0.1-commit.1142ef1 → 0.0.1-commit.1bea0213
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 +8 -7
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
- package/dest/light/lightweight_checkpoint_builder.js +20 -9
- package/dest/mocks/test_context.d.ts +3 -2
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +6 -1
- package/dest/orchestrator/block-building-helpers.d.ts +1 -1
- package/dest/orchestrator/block-building-helpers.js +1 -1
- package/dest/orchestrator/checkpoint-proving-state.d.ts +15 -2
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/checkpoint-proving-state.js +34 -1
- package/dest/orchestrator/epoch-proving-state.d.ts +5 -4
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +35 -1
- package/dest/orchestrator/orchestrator.d.ts +16 -3
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +58 -17
- 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 +1 -1
- package/dest/proving_broker/config.d.ts +5 -1
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +7 -1
- package/dest/test/mock_proof_store.d.ts +3 -3
- package/dest/test/mock_proof_store.d.ts.map +1 -1
- package/package.json +16 -17
- package/src/light/lightweight_checkpoint_builder.ts +35 -10
- package/src/mocks/test_context.ts +5 -0
- package/src/orchestrator/block-building-helpers.ts +1 -1
- package/src/orchestrator/checkpoint-proving-state.ts +47 -1
- package/src/orchestrator/epoch-proving-state.ts +56 -8
- package/src/orchestrator/orchestrator.ts +61 -21
- package/src/prover-client/prover-client.ts +7 -1
- package/src/proving_broker/config.ts +9 -0
- package/dest/block-factory/index.d.ts +0 -2
- package/dest/block-factory/index.d.ts.map +0 -1
- package/dest/block-factory/index.js +0 -1
- package/dest/block-factory/light.d.ts +0 -38
- package/dest/block-factory/light.d.ts.map +0 -1
- package/dest/block-factory/light.js +0 -106
- package/src/block-factory/index.ts +0 -1
- package/src/block-factory/light.ts +0 -136
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAc,MAAM,uBAAuB,CAAC;AAQ7F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAQpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EACV,WAAW,EACX,wBAAwB,EAGxB,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAML,sBAAsB,EAKtB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,MAAM,EAIZ,MAAM,yBAAyB,CAAC;AAejC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -414,6 +414,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
414
414
|
dbProvider;
|
|
415
415
|
prover;
|
|
416
416
|
proverId;
|
|
417
|
+
cancelJobsOnStop;
|
|
417
418
|
static{
|
|
418
419
|
({ e: [_initProto] } = _apply_decs_2203_r(this, [
|
|
419
420
|
[
|
|
@@ -449,10 +450,11 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
449
450
|
metrics;
|
|
450
451
|
// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
|
|
451
452
|
dbs;
|
|
452
|
-
constructor(dbProvider, prover, proverId, telemetryClient = getTelemetryClient()){
|
|
453
|
+
constructor(dbProvider, prover, proverId, cancelJobsOnStop = false, telemetryClient = getTelemetryClient()){
|
|
453
454
|
this.dbProvider = dbProvider;
|
|
454
455
|
this.prover = prover;
|
|
455
456
|
this.proverId = proverId;
|
|
457
|
+
this.cancelJobsOnStop = cancelJobsOnStop;
|
|
456
458
|
this.provingState = (_initProto(this), undefined);
|
|
457
459
|
this.pendingProvingJobs = [];
|
|
458
460
|
this.provingPromise = undefined;
|
|
@@ -465,6 +467,9 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
465
467
|
getProverId() {
|
|
466
468
|
return this.proverId;
|
|
467
469
|
}
|
|
470
|
+
getNumActiveForks() {
|
|
471
|
+
return this.dbs.size;
|
|
472
|
+
}
|
|
468
473
|
stop() {
|
|
469
474
|
this.cancel();
|
|
470
475
|
return Promise.resolve();
|
|
@@ -482,7 +487,14 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
482
487
|
this.provingState = new EpochProvingState(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges, (provingState)=>this.checkAndEnqueueCheckpointRootRollup(provingState), resolve, reject);
|
|
483
488
|
this.provingPromise = promise;
|
|
484
489
|
}
|
|
485
|
-
|
|
490
|
+
/**
|
|
491
|
+
* Starts a new checkpoint.
|
|
492
|
+
* @param checkpointIndex - The index of the checkpoint in the epoch.
|
|
493
|
+
* @param constants - The constants for this checkpoint.
|
|
494
|
+
* @param l1ToL2Messages - The set of L1 to L2 messages to be inserted at the beginning of this checkpoint.
|
|
495
|
+
* @param totalNumBlocks - The total number of blocks expected in the checkpoint (must be at least one).
|
|
496
|
+
* @param headerOfLastBlockInPreviousCheckpoint - The header of the last block in the previous checkpoint.
|
|
497
|
+
*/ async startNewCheckpoint(checkpointIndex, constants, l1ToL2Messages, totalNumBlocks, headerOfLastBlockInPreviousCheckpoint) {
|
|
486
498
|
if (!this.provingState) {
|
|
487
499
|
throw new Error('Empty epoch proving state. Call startNewEpoch before starting a checkpoint.');
|
|
488
500
|
}
|
|
@@ -493,7 +505,10 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
493
505
|
const lastBlockNumber = headerOfLastBlockInPreviousCheckpoint.globalVariables.blockNumber;
|
|
494
506
|
const db = await this.dbProvider.fork(lastBlockNumber);
|
|
495
507
|
const firstBlockNumber = BlockNumber(lastBlockNumber + 1);
|
|
496
|
-
this.dbs.set(firstBlockNumber,
|
|
508
|
+
this.dbs.set(firstBlockNumber, {
|
|
509
|
+
fork: db,
|
|
510
|
+
cleanupPromise: undefined
|
|
511
|
+
});
|
|
497
512
|
// Get archive sibling path before any block in this checkpoint lands.
|
|
498
513
|
const lastArchiveSiblingPath = await getLastSiblingPath(MerkleTreeId.ARCHIVE, db);
|
|
499
514
|
// Insert all the l1 to l2 messages into the db. And get the states before and after the insertion.
|
|
@@ -523,9 +538,12 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
523
538
|
if (!this.dbs.has(blockNumber)) {
|
|
524
539
|
// Fork world state at the end of the immediately previous block
|
|
525
540
|
const db = await this.dbProvider.fork(BlockNumber(blockNumber - 1));
|
|
526
|
-
this.dbs.set(blockNumber,
|
|
541
|
+
this.dbs.set(blockNumber, {
|
|
542
|
+
fork: db,
|
|
543
|
+
cleanupPromise: undefined
|
|
544
|
+
});
|
|
527
545
|
}
|
|
528
|
-
const db = this.dbs.get(blockNumber);
|
|
546
|
+
const db = this.dbs.get(blockNumber).fork;
|
|
529
547
|
// Get archive snapshot and sibling path before any txs in this block lands.
|
|
530
548
|
const lastArchiveTreeSnapshot = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
|
|
531
549
|
const lastArchiveSiblingPath = await getRootTreeSiblingPath(MerkleTreeId.ARCHIVE, db);
|
|
@@ -545,7 +563,8 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
545
563
|
const blockEndBlobFields = blockProvingState.getBlockEndBlobFields();
|
|
546
564
|
await endSpongeBlob.absorb(blockEndBlobFields);
|
|
547
565
|
blockProvingState.setEndSpongeBlob(endSpongeBlob);
|
|
548
|
-
//
|
|
566
|
+
// Try to accumulate the out hashes and blobs as far as we can:
|
|
567
|
+
await this.provingState.accumulateCheckpointOutHashes();
|
|
549
568
|
await this.provingState.setBlobAccumulators();
|
|
550
569
|
}
|
|
551
570
|
}
|
|
@@ -574,7 +593,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
574
593
|
throw new Error(`Block ${blockNumber} has been initialized with transactions.`);
|
|
575
594
|
}
|
|
576
595
|
logger.info(`Adding ${txs.length} transactions to block ${blockNumber}`);
|
|
577
|
-
const db = this.dbs.get(blockNumber);
|
|
596
|
+
const db = this.dbs.get(blockNumber).fork;
|
|
578
597
|
const lastArchive = provingState.lastArchiveTreeSnapshot;
|
|
579
598
|
const newL1ToL2MessageTreeSnapshot = provingState.newL1ToL2MessageTreeSnapshot;
|
|
580
599
|
const spongeBlobState = provingState.getStartSpongeBlob().clone();
|
|
@@ -612,7 +631,8 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
612
631
|
const blockEndBlobFields = provingState.getBlockEndBlobFields();
|
|
613
632
|
await spongeBlobState.absorb(blockEndBlobFields);
|
|
614
633
|
provingState.setEndSpongeBlob(spongeBlobState);
|
|
615
|
-
// Txs have been added to the block. Now try to accumulate the blobs as far as we can:
|
|
634
|
+
// Txs have been added to the block. Now try to accumulate the out hashes and blobs as far as we can:
|
|
635
|
+
await this.provingState.accumulateCheckpointOutHashes();
|
|
616
636
|
await this.provingState.setBlobAccumulators();
|
|
617
637
|
}
|
|
618
638
|
/**
|
|
@@ -663,7 +683,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
663
683
|
throw new Error('Block header mismatch');
|
|
664
684
|
}
|
|
665
685
|
// Get db for this block
|
|
666
|
-
const db = this.dbs.get(provingState.blockNumber);
|
|
686
|
+
const db = this.dbs.get(provingState.blockNumber).fork;
|
|
667
687
|
// Update the archive tree, so we're ready to start processing the next block:
|
|
668
688
|
logger.verbose(`Updating archive tree with block ${provingState.blockNumber} header ${(await header.hash()).toString()}`);
|
|
669
689
|
await db.updateArchive(header);
|
|
@@ -690,7 +710,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
690
710
|
}
|
|
691
711
|
// Get db for this block
|
|
692
712
|
const blockNumber = provingState.blockNumber;
|
|
693
|
-
const db = this.dbs.get(blockNumber);
|
|
713
|
+
const db = this.dbs.get(blockNumber).fork;
|
|
694
714
|
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
|
|
695
715
|
const syncedArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.dbProvider.getSnapshot(blockNumber));
|
|
696
716
|
if (!syncedArchive.equals(newArchive)) {
|
|
@@ -708,14 +728,17 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
708
728
|
// is aborted and never reaches this point, it will leak the fork. We need to add a global cleanup,
|
|
709
729
|
// but have to make sure it only runs once all operations are completed, otherwise some function here
|
|
710
730
|
// will attempt to access the fork after it was closed.
|
|
711
|
-
|
|
712
|
-
void this.dbs.get(blockNumber)?.close().then(()=>this.dbs.delete(blockNumber)).catch((err)=>logger.error(`Error closing db for block ${blockNumber}`, err));
|
|
731
|
+
void this.cleanupDBFork(blockNumber);
|
|
713
732
|
}
|
|
714
733
|
/**
|
|
715
|
-
* Cancel any further proving
|
|
734
|
+
* Cancel any further proving.
|
|
735
|
+
* If cancelJobsOnStop is true, aborts all pending jobs with the broker (which marks them as 'Aborted').
|
|
736
|
+
* If cancelJobsOnStop is false (default), jobs remain in the broker queue and can be reused on restart/reorg.
|
|
716
737
|
*/ cancel() {
|
|
717
|
-
|
|
718
|
-
controller.
|
|
738
|
+
if (this.cancelJobsOnStop) {
|
|
739
|
+
for (const controller of this.pendingProvingJobs){
|
|
740
|
+
controller.abort();
|
|
741
|
+
}
|
|
719
742
|
}
|
|
720
743
|
this.provingState?.cancel();
|
|
721
744
|
}
|
|
@@ -737,6 +760,22 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
737
760
|
});
|
|
738
761
|
return epochProofResult;
|
|
739
762
|
}
|
|
763
|
+
async cleanupDBFork(blockNumber) {
|
|
764
|
+
logger.debug(`Cleaning up world state fork for ${blockNumber}`);
|
|
765
|
+
const fork = this.dbs.get(blockNumber);
|
|
766
|
+
if (!fork) {
|
|
767
|
+
return;
|
|
768
|
+
}
|
|
769
|
+
try {
|
|
770
|
+
if (!fork.cleanupPromise) {
|
|
771
|
+
fork.cleanupPromise = fork.fork.close();
|
|
772
|
+
}
|
|
773
|
+
await fork.cleanupPromise;
|
|
774
|
+
this.dbs.delete(blockNumber);
|
|
775
|
+
} catch (err) {
|
|
776
|
+
logger.error(`Error closing db for block ${blockNumber}`, err);
|
|
777
|
+
}
|
|
778
|
+
}
|
|
740
779
|
/**
|
|
741
780
|
* Enqueue a job to be scheduled
|
|
742
781
|
* @param provingState - The proving state object being operated on
|
|
@@ -945,16 +984,18 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
|
|
|
945
984
|
return this.prover.getBlockRootRollupProof(inputs, signal, provingState.epochNumber);
|
|
946
985
|
}
|
|
947
986
|
}), async (result)=>{
|
|
948
|
-
// If the proofs were slower than the block header building, then we need to try validating the block header hashes here.
|
|
949
|
-
await this.verifyBuiltBlockAgainstSyncedState(provingState);
|
|
950
987
|
logger.debug(`Completed ${rollupType} proof for block ${provingState.blockNumber}`);
|
|
951
988
|
const leafLocation = provingState.setBlockRootRollupProof(result);
|
|
952
989
|
const checkpointProvingState = provingState.parentCheckpoint;
|
|
990
|
+
// If the proofs were slower than the block header building, then we need to try validating the block header hashes here.
|
|
991
|
+
await this.verifyBuiltBlockAgainstSyncedState(provingState);
|
|
953
992
|
if (checkpointProvingState.totalNumBlocks === 1) {
|
|
954
993
|
this.checkAndEnqueueCheckpointRootRollup(checkpointProvingState);
|
|
955
994
|
} else {
|
|
956
995
|
this.checkAndEnqueueNextBlockMergeRollup(checkpointProvingState, leafLocation);
|
|
957
996
|
}
|
|
997
|
+
// We are finished with the block at this point, ensure the fork is cleaned up
|
|
998
|
+
void this.cleanupDBFork(provingState.blockNumber);
|
|
958
999
|
});
|
|
959
1000
|
}
|
|
960
1001
|
// Executes the base parity circuit and stores the intermediate state for the root parity circuit
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLWNsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1jbGllbnQvcHJvdmVyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUUsS0FBSyxRQUFRLEVBQTJDLE1BQU0sa0JBQWtCLENBQUM7QUFFM0csT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHaEUsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssV0FBVyxFQUNoQixLQUFLLGtCQUFrQixFQUN2QixLQUFLLHdCQUF3QixFQUM3QixLQUFLLGdCQUFnQixFQUNyQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLHdCQUF3QixFQUM3QixLQUFLLG1CQUFtQixFQUV6QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU92RCxzSEFBc0g7QUFDdEgscUJBQWEsWUFBYSxZQUFXLGtCQUFrQjtJQVFuRCxPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxrQkFBa0I7SUFDMUIsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsR0FBRztJQVpiLE9BQU8sQ0FBQyxPQUFPLENBQVM7SUFDeEIsT0FBTyxDQUFDLE1BQU0sQ0FBc0I7SUFFcEMsT0FBTyxDQUFDLFVBQVUsQ0FBYTtJQUMvQixPQUFPLENBQUMsZ0JBQWdCLENBQXlCO0lBRWpELE9BQU8sZUFVTjtJQUVNLGlCQUFpQixJQUFJLFdBQVcsQ0FVdEM7SUFFTSxXQUFXLElBQUksVUFBVSxDQUUvQjtJQUVLLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBWTNFO0lBRUQ7O09BRUc7SUFDVSxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU9sQztJQUVEOztPQUVHO0lBQ1UsSUFBSSxrQkFPaEI7SUFFRDs7Ozs7T0FLRztJQUNILE9BQW9CLEdBQUcsQ0FDckIsTUFBTSxFQUFFLGtCQUFrQixFQUMxQixVQUFVLEVBQUUsd0JBQXdCLEdBQUcsd0JBQXdCLEVBQy9ELE1BQU0sRUFBRSxnQkFBZ0IsRUFDeEIsU0FBUyxHQUFFLGVBQXNDLHlCQUtsRDtJQUVNLG1CQUFtQixJQUFJLGtCQUFrQixDQU0vQztZQUVhLG9CQUFvQjtZQW1CcEIsVUFBVTtDQUd6QjtBQUVELHdCQUFnQix3QkFBd0IsQ0FDdEMsTUFBTSxFQUFFLGtCQUFrQixHQUFHLFVBQVUsR0FBRyxRQUFRLEVBQ2xELFNBQVMsRUFBRSxlQUFlLEdBQ3pCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQVU5QiJ9
|
|
@@ -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,CAUtC;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;YAmBpB,UAAU;CAGzB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,kBAAkB,GAAG,UAAU,GAAG,QAAQ,EAClD,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAU9B"}
|
|
@@ -34,7 +34,7 @@ import { ServerEpochProver } from './server-epoch-prover.js';
|
|
|
34
34
|
}
|
|
35
35
|
createEpochProver() {
|
|
36
36
|
const facade = new BrokerCircuitProverFacade(this.orchestratorClient, this.proofStore, this.failedProofStore);
|
|
37
|
-
const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.config.proverId, this.telemetry);
|
|
37
|
+
const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.config.proverId, this.config.cancelJobsOnStop, this.telemetry);
|
|
38
38
|
return new ServerEpochProver(facade, orchestrator);
|
|
39
39
|
}
|
|
40
40
|
getProverId() {
|
|
@@ -66,6 +66,8 @@ export declare const ProverAgentConfig: z.ZodObject<{
|
|
|
66
66
|
proverTestDelayFactor: z.ZodNumber;
|
|
67
67
|
/** The delay (ms) to inject during fake proof verification */
|
|
68
68
|
proverTestVerificationDelayMs: z.ZodOptional<z.ZodNumber>;
|
|
69
|
+
/** Whether to abort pending proving jobs when the orchestrator is cancelled */
|
|
70
|
+
cancelJobsOnStop: z.ZodBoolean;
|
|
69
71
|
}, "strip", z.ZodTypeAny, {
|
|
70
72
|
proverAgentCount: number;
|
|
71
73
|
proverAgentProofTypes: ProvingRequestType[];
|
|
@@ -76,6 +78,7 @@ export declare const ProverAgentConfig: z.ZodObject<{
|
|
|
76
78
|
proverTestDelayMs: number;
|
|
77
79
|
proverTestDelayFactor: number;
|
|
78
80
|
proverTestVerificationDelayMs?: number | undefined;
|
|
81
|
+
cancelJobsOnStop: boolean;
|
|
79
82
|
}, {
|
|
80
83
|
proverAgentCount: number;
|
|
81
84
|
proverAgentProofTypes: ProvingRequestType[];
|
|
@@ -86,7 +89,8 @@ export declare const ProverAgentConfig: z.ZodObject<{
|
|
|
86
89
|
proverTestDelayMs: number;
|
|
87
90
|
proverTestDelayFactor: number;
|
|
88
91
|
proverTestVerificationDelayMs?: number | undefined;
|
|
92
|
+
cancelJobsOnStop: boolean;
|
|
89
93
|
}>;
|
|
90
94
|
export type ProverAgentConfig = z.infer<typeof ProverAgentConfig>;
|
|
91
95
|
export declare const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig>;
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBMEIsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RixPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFJeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTFELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsZUFBTyxNQUFNLGtCQUFrQjtJQUM3QixxRkFBcUY7O0lBRXJGLHVIQUF1SDs7SUFFdkgsNkZBQTZGOztJQUU3Riw4RUFBOEU7O0lBRTlFLHFDQUFxQzs7SUFFckMsNkZBQTZGOztJQUU3RiwrRUFBK0U7O0lBRS9FLDRDQUE0Qzs7SUFFNUMsdURBQXVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBRXZELENBQUM7QUFFSCxNQUFNLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLGtCQUFrQixDQUFDLEdBQ2pFLElBQUksQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLEdBQUcsZUFBZSxDQUFDLEdBQzdELGNBQWMsR0FDZCxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRXJDLGVBQU8sTUFBTSwwQkFBMEIsRUFBRSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0F1QzdFLENBQUM7QUFFRixlQUFPLE1BQU0seUJBQXlCLEVBQUUsa0JBQWlFLENBQUM7QUFFMUcsZUFBTyxNQUFNLGlCQUFpQjtJQUM1QiwyQ0FBMkM7O0lBRTNDLHdEQUF3RDs7SUFFeEQsZ0RBQWdEOztJQUVoRCwrQ0FBK0M7O0lBRS9DLHVDQUF1Qzs7SUFFdkMsZ0RBQWdEOztJQUVoRCwyREFBMkQ7O0lBRTNELDhFQUE4RTs7SUFFOUUsOERBQThEOztJQUU5RCwrRUFBK0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUUvRSxDQUFDO0FBRUgsTUFBTSxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDO0FBRWxFLGVBQU8sTUFBTSx5QkFBeUIsRUFBRSxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0F3RDNFLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/proving_broker/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;IAC7B,qFAAqF;;IAErF,uHAAuH;;IAEvH,6FAA6F;;IAE7F,8EAA8E;;IAE9E,qCAAqC;;IAErC,6FAA6F;;IAE7F,+EAA+E;;IAE/E,4CAA4C;;IAE5C,uDAAuD;;;;;;;;;;;;;;;;;;;;;;EAEvD,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACjE,IAAI,CAAC,eAAe,EAAE,oBAAoB,GAAG,eAAe,CAAC,GAC7D,cAAc,GACd,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAErC,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CAuC7E,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAiE,CAAC;AAE1G,eAAO,MAAM,iBAAiB;IAC5B,2CAA2C;;IAE3C,wDAAwD;;IAExD,gDAAgD;;IAEhD,+CAA+C;;IAE/C,uCAAuC;;IAEvC,gDAAgD;;IAEhD,2DAA2D;;IAE3D,8EAA8E;;IAE9E,8DAA8D
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/proving_broker/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;IAC7B,qFAAqF;;IAErF,uHAAuH;;IAEvH,6FAA6F;;IAE7F,8EAA8E;;IAE9E,qCAAqC;;IAErC,6FAA6F;;IAE7F,+EAA+E;;IAE/E,4CAA4C;;IAE5C,uDAAuD;;;;;;;;;;;;;;;;;;;;;;EAEvD,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACjE,IAAI,CAAC,eAAe,EAAE,oBAAoB,GAAG,eAAe,CAAC,GAC7D,cAAc,GACd,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAErC,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CAuC7E,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAiE,CAAC;AAE1G,eAAO,MAAM,iBAAiB;IAC5B,2CAA2C;;IAE3C,wDAAwD;;IAExD,gDAAgD;;IAEhD,+CAA+C;;IAE/C,uCAAuC;;IAEvC,gDAAgD;;IAEhD,2DAA2D;;IAE3D,8EAA8E;;IAE9E,8DAA8D;;IAE9D,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;EAE/E,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CAwD3E,CAAC"}
|
|
@@ -71,7 +71,8 @@ export const ProverAgentConfig = z.object({
|
|
|
71
71
|
]),
|
|
72
72
|
/** If using fixed delay, the time each operation takes. */ proverTestDelayMs: z.number(),
|
|
73
73
|
/** If using realistic delays, what percentage of realistic times to apply. */ proverTestDelayFactor: z.number(),
|
|
74
|
-
/** The delay (ms) to inject during fake proof verification */ proverTestVerificationDelayMs: z.number().optional()
|
|
74
|
+
/** The delay (ms) to inject during fake proof verification */ proverTestVerificationDelayMs: z.number().optional(),
|
|
75
|
+
/** Whether to abort pending proving jobs when the orchestrator is cancelled */ cancelJobsOnStop: z.boolean()
|
|
75
76
|
});
|
|
76
77
|
export const proverAgentConfigMappings = {
|
|
77
78
|
proverAgentCount: {
|
|
@@ -117,5 +118,10 @@ export const proverAgentConfigMappings = {
|
|
|
117
118
|
env: 'PROVER_TEST_VERIFICATION_DELAY_MS',
|
|
118
119
|
description: 'The delay (ms) to inject during fake proof verification',
|
|
119
120
|
...numberConfigHelper(10)
|
|
121
|
+
},
|
|
122
|
+
cancelJobsOnStop: {
|
|
123
|
+
env: 'PROVER_CANCEL_JOBS_ON_STOP',
|
|
124
|
+
description: 'Whether to abort pending proving jobs when the orchestrator is cancelled. ' + 'When false (default), jobs remain in the broker queue and can be reused on restart/reorg.',
|
|
125
|
+
...booleanConfigHelper(false)
|
|
120
126
|
}
|
|
121
127
|
};
|
|
@@ -2,8 +2,8 @@ import type { ProvingJobId } from '@aztec/stdlib/interfaces/server';
|
|
|
2
2
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
3
3
|
export declare class MockProofStore {
|
|
4
4
|
private mockCounter;
|
|
5
|
-
private readonly bucketName
|
|
6
|
-
private readonly basePath
|
|
5
|
+
private readonly bucketName;
|
|
6
|
+
private readonly basePath;
|
|
7
7
|
saveProofInput(jobId: ProvingJobId, type: ProvingRequestType): Promise<string>;
|
|
8
8
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19wcm9vZl9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvbW9ja19wcm9vZl9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxxQkFBYSxjQUFjO0lBQ3pCLE9BQU8sQ0FBQyxXQUFXLENBQUs7SUFDeEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQThCO0lBQ3pELE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFrQjtJQUUzQyxjQUFjLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUc3RTtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_proof_store.d.ts","sourceRoot":"","sources":["../../src/test/mock_proof_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"mock_proof_store.d.ts","sourceRoot":"","sources":["../../src/test/mock_proof_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAE3C,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAG7E;CACF"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-client",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.1bea0213",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
7
|
-
"./block-factory": "./dest/block-factory/index.js",
|
|
8
7
|
"./broker": "./dest/proving_broker/index.js",
|
|
9
8
|
"./broker/config": "./dest/proving_broker/config.js",
|
|
10
9
|
"./orchestrator": "./dest/orchestrator/index.js",
|
|
@@ -69,19 +68,19 @@
|
|
|
69
68
|
]
|
|
70
69
|
},
|
|
71
70
|
"dependencies": {
|
|
72
|
-
"@aztec/bb-prover": "0.0.1-commit.
|
|
73
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
74
|
-
"@aztec/constants": "0.0.1-commit.
|
|
75
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
76
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
77
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
78
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
79
|
-
"@aztec/noir-types": "0.0.1-commit.
|
|
80
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
81
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
82
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
83
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
84
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
71
|
+
"@aztec/bb-prover": "0.0.1-commit.1bea0213",
|
|
72
|
+
"@aztec/blob-lib": "0.0.1-commit.1bea0213",
|
|
73
|
+
"@aztec/constants": "0.0.1-commit.1bea0213",
|
|
74
|
+
"@aztec/ethereum": "0.0.1-commit.1bea0213",
|
|
75
|
+
"@aztec/foundation": "0.0.1-commit.1bea0213",
|
|
76
|
+
"@aztec/kv-store": "0.0.1-commit.1bea0213",
|
|
77
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.1bea0213",
|
|
78
|
+
"@aztec/noir-types": "0.0.1-commit.1bea0213",
|
|
79
|
+
"@aztec/protocol-contracts": "0.0.1-commit.1bea0213",
|
|
80
|
+
"@aztec/simulator": "0.0.1-commit.1bea0213",
|
|
81
|
+
"@aztec/stdlib": "0.0.1-commit.1bea0213",
|
|
82
|
+
"@aztec/telemetry-client": "0.0.1-commit.1bea0213",
|
|
83
|
+
"@aztec/world-state": "0.0.1-commit.1bea0213",
|
|
85
84
|
"@google-cloud/storage": "^7.15.0",
|
|
86
85
|
"@iarna/toml": "^2.2.5",
|
|
87
86
|
"commander": "^12.1.0",
|
|
@@ -91,12 +90,12 @@
|
|
|
91
90
|
"zod": "^3.23.8"
|
|
92
91
|
},
|
|
93
92
|
"devDependencies": {
|
|
94
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
93
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.1bea0213",
|
|
95
94
|
"@jest/globals": "^30.0.0",
|
|
96
95
|
"@types/jest": "^30.0.0",
|
|
97
96
|
"@types/node": "^22.15.17",
|
|
98
97
|
"@types/source-map-support": "^0.5.10",
|
|
99
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
98
|
+
"@typescript/native-preview": "7.0.0-dev.20260113.1",
|
|
100
99
|
"get-port": "^7.1.0",
|
|
101
100
|
"jest": "^30.0.0",
|
|
102
101
|
"jest-mock-extended": "^4.0.0",
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { SpongeBlob, computeBlobsHashFromBlobs, encodeCheckpointEndMarker, getBlobsPerL1Block } from '@aztec/blob-lib';
|
|
2
2
|
import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
3
|
-
import type
|
|
3
|
+
import { type CheckpointNumber, IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
|
|
4
4
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
5
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import { createLogger } from '@aztec/foundation/log';
|
|
7
|
-
import {
|
|
7
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
8
8
|
import { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
9
9
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
accumulateCheckpointOutHashes,
|
|
12
|
+
computeCheckpointOutHash,
|
|
13
|
+
computeInHashFromL1ToL2Messages,
|
|
14
|
+
} from '@aztec/stdlib/messaging';
|
|
11
15
|
import { CheckpointHeader, computeBlockHeadersHash } from '@aztec/stdlib/rollup';
|
|
12
16
|
import { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
13
17
|
import {
|
|
@@ -34,13 +38,14 @@ export class LightweightCheckpointBuilder {
|
|
|
34
38
|
|
|
35
39
|
private lastArchives: AppendOnlyTreeSnapshot[] = [];
|
|
36
40
|
private spongeBlob: SpongeBlob;
|
|
37
|
-
private blocks:
|
|
41
|
+
private blocks: L2Block[] = [];
|
|
38
42
|
private blobFields: Fr[] = [];
|
|
39
43
|
|
|
40
44
|
constructor(
|
|
41
45
|
public readonly checkpointNumber: CheckpointNumber,
|
|
42
46
|
public readonly constants: CheckpointGlobalVariables,
|
|
43
47
|
public readonly l1ToL2Messages: Fr[],
|
|
48
|
+
private readonly previousCheckpointOutHashes: Fr[],
|
|
44
49
|
public readonly db: MerkleTreeWriteOperations,
|
|
45
50
|
) {
|
|
46
51
|
this.spongeBlob = SpongeBlob.init();
|
|
@@ -51,6 +56,7 @@ export class LightweightCheckpointBuilder {
|
|
|
51
56
|
checkpointNumber: CheckpointNumber,
|
|
52
57
|
constants: CheckpointGlobalVariables,
|
|
53
58
|
l1ToL2Messages: Fr[],
|
|
59
|
+
previousCheckpointOutHashes: Fr[],
|
|
54
60
|
db: MerkleTreeWriteOperations,
|
|
55
61
|
): Promise<LightweightCheckpointBuilder> {
|
|
56
62
|
// Insert l1-to-l2 messages into the tree.
|
|
@@ -59,7 +65,13 @@ export class LightweightCheckpointBuilder {
|
|
|
59
65
|
padArrayEnd<Fr, number>(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP),
|
|
60
66
|
);
|
|
61
67
|
|
|
62
|
-
return new LightweightCheckpointBuilder(
|
|
68
|
+
return new LightweightCheckpointBuilder(
|
|
69
|
+
checkpointNumber,
|
|
70
|
+
constants,
|
|
71
|
+
l1ToL2Messages,
|
|
72
|
+
previousCheckpointOutHashes,
|
|
73
|
+
db,
|
|
74
|
+
);
|
|
63
75
|
}
|
|
64
76
|
|
|
65
77
|
/**
|
|
@@ -72,10 +84,17 @@ export class LightweightCheckpointBuilder {
|
|
|
72
84
|
checkpointNumber: CheckpointNumber,
|
|
73
85
|
constants: CheckpointGlobalVariables,
|
|
74
86
|
l1ToL2Messages: Fr[],
|
|
87
|
+
previousCheckpointOutHashes: Fr[],
|
|
75
88
|
db: MerkleTreeWriteOperations,
|
|
76
|
-
existingBlocks:
|
|
89
|
+
existingBlocks: L2Block[],
|
|
77
90
|
): Promise<LightweightCheckpointBuilder> {
|
|
78
|
-
const builder = new LightweightCheckpointBuilder(
|
|
91
|
+
const builder = new LightweightCheckpointBuilder(
|
|
92
|
+
checkpointNumber,
|
|
93
|
+
constants,
|
|
94
|
+
l1ToL2Messages,
|
|
95
|
+
previousCheckpointOutHashes,
|
|
96
|
+
db,
|
|
97
|
+
);
|
|
79
98
|
|
|
80
99
|
builder.logger.debug('Resuming checkpoint from existing blocks', {
|
|
81
100
|
checkpointNumber,
|
|
@@ -123,7 +142,7 @@ export class LightweightCheckpointBuilder {
|
|
|
123
142
|
globalVariables: GlobalVariables,
|
|
124
143
|
txs: ProcessedTx[],
|
|
125
144
|
opts: { insertTxsEffects?: boolean; expectedEndState?: StateReference } = {},
|
|
126
|
-
): Promise<
|
|
145
|
+
): Promise<L2Block> {
|
|
127
146
|
const isFirstBlock = this.blocks.length === 0;
|
|
128
147
|
|
|
129
148
|
// Empty blocks are only allowed as the first block in a checkpoint
|
|
@@ -172,8 +191,8 @@ export class LightweightCheckpointBuilder {
|
|
|
172
191
|
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db);
|
|
173
192
|
this.lastArchives.push(newArchive);
|
|
174
193
|
|
|
175
|
-
const indexWithinCheckpoint = this.blocks.length;
|
|
176
|
-
const block = new
|
|
194
|
+
const indexWithinCheckpoint = IndexWithinCheckpoint(this.blocks.length);
|
|
195
|
+
const block = new L2Block(newArchive, header, body, this.checkpointNumber, indexWithinCheckpoint);
|
|
177
196
|
this.blocks.push(block);
|
|
178
197
|
|
|
179
198
|
await this.spongeBlob.absorb(blockBlobFields);
|
|
@@ -210,6 +229,10 @@ export class LightweightCheckpointBuilder {
|
|
|
210
229
|
const inHash = computeInHashFromL1ToL2Messages(this.l1ToL2Messages);
|
|
211
230
|
|
|
212
231
|
const { slotNumber, coinbase, feeRecipient, gasFees } = this.constants;
|
|
232
|
+
const checkpointOutHash = computeCheckpointOutHash(
|
|
233
|
+
blocks.map(block => block.body.txEffects.map(tx => tx.l2ToL1Msgs)),
|
|
234
|
+
);
|
|
235
|
+
const epochOutHash = accumulateCheckpointOutHashes([...this.previousCheckpointOutHashes, checkpointOutHash]);
|
|
213
236
|
|
|
214
237
|
// TODO(palla/mbps): Should we source this from the constants instead?
|
|
215
238
|
// timestamp of a checkpoint is the timestamp of the last block in the checkpoint.
|
|
@@ -221,6 +244,7 @@ export class LightweightCheckpointBuilder {
|
|
|
221
244
|
lastArchiveRoot: this.lastArchives[0].root,
|
|
222
245
|
blobsHash,
|
|
223
246
|
inHash,
|
|
247
|
+
epochOutHash,
|
|
224
248
|
blockHeadersHash,
|
|
225
249
|
slotNumber,
|
|
226
250
|
timestamp,
|
|
@@ -238,6 +262,7 @@ export class LightweightCheckpointBuilder {
|
|
|
238
262
|
this.checkpointNumber,
|
|
239
263
|
this.constants,
|
|
240
264
|
[...this.l1ToL2Messages],
|
|
265
|
+
[...this.previousCheckpointOutHashes],
|
|
241
266
|
this.db,
|
|
242
267
|
);
|
|
243
268
|
clone.lastArchives = [...this.lastArchives];
|
|
@@ -44,6 +44,7 @@ import { getEnvironmentConfig, getSimulator, makeCheckpointConstants, makeGlobal
|
|
|
44
44
|
export class TestContext {
|
|
45
45
|
private headers: Map<number, BlockHeader> = new Map();
|
|
46
46
|
private checkpoints: Checkpoint[] = [];
|
|
47
|
+
private checkpointOutHashes: Fr[] = [];
|
|
47
48
|
private nextCheckpointIndex = 0;
|
|
48
49
|
private nextCheckpointNumber = CheckpointNumber(1);
|
|
49
50
|
private nextBlockNumber = 1;
|
|
@@ -151,6 +152,7 @@ export class TestContext {
|
|
|
151
152
|
|
|
152
153
|
public startNewEpoch() {
|
|
153
154
|
this.checkpoints = [];
|
|
155
|
+
this.checkpointOutHashes = [];
|
|
154
156
|
this.nextCheckpointIndex = 0;
|
|
155
157
|
this.epochNumber++;
|
|
156
158
|
}
|
|
@@ -245,10 +247,12 @@ export class TestContext {
|
|
|
245
247
|
});
|
|
246
248
|
|
|
247
249
|
const cleanFork = await this.worldState.fork();
|
|
250
|
+
const previousCheckpointOutHashes = this.checkpointOutHashes;
|
|
248
251
|
const builder = await LightweightCheckpointBuilder.startNewCheckpoint(
|
|
249
252
|
checkpointNumber,
|
|
250
253
|
constants,
|
|
251
254
|
l1ToL2Messages,
|
|
255
|
+
previousCheckpointOutHashes,
|
|
252
256
|
cleanFork,
|
|
253
257
|
);
|
|
254
258
|
|
|
@@ -274,6 +278,7 @@ export class TestContext {
|
|
|
274
278
|
|
|
275
279
|
const checkpoint = await builder.completeCheckpoint();
|
|
276
280
|
this.checkpoints.push(checkpoint);
|
|
281
|
+
this.checkpointOutHashes.push(checkpoint.getCheckpointOutHash());
|
|
277
282
|
|
|
278
283
|
return {
|
|
279
284
|
constants,
|
|
@@ -97,7 +97,7 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
|
97
97
|
|
|
98
98
|
const { nullifierInsertionResult, publicDataInsertionResult } = await insertSideEffects(tx, db);
|
|
99
99
|
|
|
100
|
-
const blockHash = await tx.data.constants.anchorBlockHeader.hash();
|
|
100
|
+
const blockHash = (await tx.data.constants.anchorBlockHeader.hash()).toField();
|
|
101
101
|
const anchorBlockArchiveSiblingPath = (
|
|
102
102
|
await getMembershipWitnessFor(blockHash, MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT, db)
|
|
103
103
|
).siblingPath;
|