@aztec/archiver 4.0.0-nightly.20260126 → 4.0.0-nightly.20260128
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/archiver.d.ts +4 -3
- package/dest/archiver.d.ts.map +1 -1
- package/dest/archiver.js +8 -9
- package/dest/errors.d.ts +6 -1
- package/dest/errors.d.ts.map +1 -1
- package/dest/errors.js +8 -0
- package/dest/factory.d.ts +3 -1
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +1 -1
- package/dest/modules/data_store_updater.d.ts +21 -17
- package/dest/modules/data_store_updater.d.ts.map +1 -1
- package/dest/modules/data_store_updater.js +47 -49
- package/dest/modules/l1_synchronizer.js +7 -7
- package/dest/store/block_store.d.ts +18 -14
- package/dest/store/block_store.d.ts.map +1 -1
- package/dest/store/block_store.js +48 -36
- package/dest/store/kv_archiver_store.d.ts +12 -11
- package/dest/store/kv_archiver_store.d.ts.map +1 -1
- package/dest/store/kv_archiver_store.js +16 -15
- package/dest/store/log_store.d.ts +1 -1
- package/dest/store/log_store.d.ts.map +1 -1
- package/dest/store/log_store.js +2 -2
- package/dest/test/index.d.ts +2 -1
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +1 -0
- package/dest/test/mock_archiver.js +1 -1
- package/dest/test/mock_l2_block_source.d.ts +4 -4
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +5 -5
- package/dest/test/mock_structs.d.ts +3 -2
- package/dest/test/mock_structs.d.ts.map +1 -1
- package/dest/test/mock_structs.js +7 -5
- package/dest/test/noop_l1_archiver.d.ts +23 -0
- package/dest/test/noop_l1_archiver.d.ts.map +1 -0
- package/dest/test/noop_l1_archiver.js +68 -0
- package/package.json +13 -13
- package/src/archiver.ts +11 -10
- package/src/errors.ts +12 -0
- package/src/factory.ts +2 -1
- package/src/modules/data_store_updater.ts +57 -53
- package/src/modules/l1_synchronizer.ts +9 -9
- package/src/store/block_store.ts +50 -41
- package/src/store/kv_archiver_store.ts +17 -16
- package/src/store/log_store.ts +4 -4
- package/src/test/index.ts +1 -0
- package/src/test/mock_archiver.ts +1 -1
- package/src/test/mock_l2_block_source.ts +5 -5
- package/src/test/mock_structs.ts +22 -6
- package/src/test/noop_l1_archiver.ts +109 -0
package/dest/archiver.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { Buffer32 } from '@aztec/foundation/buffer';
|
|
|
8
8
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
9
9
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
10
10
|
import { type Logger } from '@aztec/foundation/log';
|
|
11
|
+
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
11
12
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
12
13
|
import { type ArchiverEmitter, L2Block, type L2BlockSink, type L2Tips, type ValidateCheckpointResult } from '@aztec/stdlib/block';
|
|
13
14
|
import { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
@@ -47,7 +48,7 @@ export declare class Archiver extends ArchiverDataSourceBase implements L2BlockS
|
|
|
47
48
|
/** Event emitter for archiver events (L2BlockProven, L2PruneUnproven, L2PruneUncheckpointed, etc). */
|
|
48
49
|
readonly events: ArchiverEmitter;
|
|
49
50
|
/** A loop in which we will be continually fetching new checkpoints. */
|
|
50
|
-
|
|
51
|
+
protected runningPromise: RunningPromise;
|
|
51
52
|
/** L1 synchronizer that handles fetching checkpoints and messages from L1. */
|
|
52
53
|
private readonly synchronizer;
|
|
53
54
|
private initialSyncComplete;
|
|
@@ -126,10 +127,10 @@ export declare class Archiver extends ArchiverDataSourceBase implements L2BlockS
|
|
|
126
127
|
isEpochComplete(epochNumber: EpochNumber): Promise<boolean>;
|
|
127
128
|
/** Returns whether the archiver has completed an initial sync run successfully. */
|
|
128
129
|
isInitialSyncComplete(): boolean;
|
|
129
|
-
|
|
130
|
+
removeCheckpointsAfter(checkpointNumber: CheckpointNumber): Promise<boolean>;
|
|
130
131
|
/** Used by TXE to add checkpoints directly without syncing from L1. */
|
|
131
132
|
addCheckpoints(checkpoints: PublishedCheckpoint[], pendingChainValidationStatus?: ValidateCheckpointResult): Promise<boolean>;
|
|
132
133
|
getL2Tips(): Promise<L2Tips>;
|
|
133
134
|
rollbackTo(targetL2BlockNumber: BlockNumber): Promise<void>;
|
|
134
135
|
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQXVCLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hGLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFcEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBMkIsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUNMLEtBQUssZUFBZSxFQUdwQixPQUFPLEVBQ1AsS0FBSyxXQUFXLEVBQ2hCLEtBQUssTUFBTSxFQUNYLEtBQUssd0JBQXdCLEVBQzlCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUNMLEtBQUssaUJBQWlCLEVBS3ZCLE1BQU0sNkJBQTZCLENBQUM7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
|
package/dest/archiver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../src/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAuB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACzG,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../src/archiver.ts"],"names":[],"mappings":"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"}
|
package/dest/archiver.js
CHANGED
|
@@ -512,7 +512,7 @@ _dec = trackSpan('Archiver.sync');
|
|
|
512
512
|
// Process each block individually to properly resolve/reject each promise
|
|
513
513
|
for (const { block, resolve, reject } of queuedItems){
|
|
514
514
|
try {
|
|
515
|
-
await this.updater.
|
|
515
|
+
await this.updater.addProposedBlocks([
|
|
516
516
|
block
|
|
517
517
|
]);
|
|
518
518
|
this.log.debug(`Added block ${block.number} to store`);
|
|
@@ -630,11 +630,11 @@ _dec = trackSpan('Archiver.sync');
|
|
|
630
630
|
/** Returns whether the archiver has completed an initial sync run successfully. */ isInitialSyncComplete() {
|
|
631
631
|
return this.initialSyncComplete;
|
|
632
632
|
}
|
|
633
|
-
|
|
634
|
-
return this.updater.
|
|
633
|
+
removeCheckpointsAfter(checkpointNumber) {
|
|
634
|
+
return this.updater.removeCheckpointsAfter(checkpointNumber);
|
|
635
635
|
}
|
|
636
636
|
/** Used by TXE to add checkpoints directly without syncing from L1. */ async addCheckpoints(checkpoints, pendingChainValidationStatus) {
|
|
637
|
-
await this.updater.
|
|
637
|
+
await this.updater.addCheckpoints(checkpoints, pendingChainValidationStatus);
|
|
638
638
|
return true;
|
|
639
639
|
}
|
|
640
640
|
async getL2Tips() {
|
|
@@ -731,13 +731,12 @@ _dec = trackSpan('Archiver.sync');
|
|
|
731
731
|
if (targetL2BlockNumber >= currentL2Block) {
|
|
732
732
|
throw new Error(`Target L2 block ${targetL2BlockNumber} must be less than current L2 block ${currentL2Block}`);
|
|
733
733
|
}
|
|
734
|
-
const blocksToUnwind = currentL2Block - targetL2BlockNumber;
|
|
735
734
|
const targetL2Block = await this.store.getCheckpointedBlock(targetL2BlockNumber);
|
|
736
735
|
if (!targetL2Block) {
|
|
737
736
|
throw new Error(`Target L2 block ${targetL2BlockNumber} not found`);
|
|
738
737
|
}
|
|
739
738
|
const targetL1BlockNumber = targetL2Block.l1.blockNumber;
|
|
740
|
-
const targetCheckpointNumber =
|
|
739
|
+
const targetCheckpointNumber = targetL2Block.checkpointNumber;
|
|
741
740
|
const targetL1Block = await this.publicClient.getBlock({
|
|
742
741
|
blockNumber: targetL1BlockNumber,
|
|
743
742
|
includeTransactions: false
|
|
@@ -746,9 +745,9 @@ _dec = trackSpan('Archiver.sync');
|
|
|
746
745
|
throw new Error(`Missing L1 block ${targetL1BlockNumber}`);
|
|
747
746
|
}
|
|
748
747
|
const targetL1BlockHash = Buffer32.fromString(targetL1Block.hash);
|
|
749
|
-
this.log.info(`
|
|
750
|
-
await this.updater.
|
|
751
|
-
this.log.info(`
|
|
748
|
+
this.log.info(`Removing checkpoints after checkpoint ${targetCheckpointNumber} (target block ${targetL2BlockNumber})`);
|
|
749
|
+
await this.updater.removeCheckpointsAfter(targetCheckpointNumber);
|
|
750
|
+
this.log.info(`Rolling back L1 to L2 messages to checkpoint ${targetCheckpointNumber}`);
|
|
752
751
|
await this.store.rollbackL1ToL2MessagesToCheckpoint(targetCheckpointNumber);
|
|
753
752
|
this.log.info(`Setting L1 syncpoints to ${targetL1BlockNumber}`);
|
|
754
753
|
await this.store.setCheckpointSynchedL1BlockNumber(targetL1BlockNumber);
|
package/dest/errors.d.ts
CHANGED
|
@@ -33,4 +33,9 @@ export declare class CheckpointNotFoundError extends Error {
|
|
|
33
33
|
export declare class BlockNotFoundError extends Error {
|
|
34
34
|
constructor(blockNumber: number);
|
|
35
35
|
}
|
|
36
|
-
|
|
36
|
+
export declare class CannotOverwriteCheckpointedBlockError extends Error {
|
|
37
|
+
readonly blockNumber: number;
|
|
38
|
+
readonly lastCheckpointedBlock: number;
|
|
39
|
+
constructor(blockNumber: number, lastCheckpointedBlock: number);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXBELHFCQUFhLHNCQUF1QixTQUFRLEtBQUs7SUFDL0MsWUFBWSxVQUFVLEVBQUUsTUFBTSxFQUU3QjtDQUNGO0FBRUQscUJBQWEsb0NBQXFDLFNBQVEsS0FBSzthQUUzQyxjQUFjLEVBQUUsTUFBTTthQUN0QixtQkFBbUIsRUFBRSxNQUFNLEdBQUcsU0FBUztJQUZ6RCxZQUNrQixjQUFjLEVBQUUsTUFBTSxFQUN0QixtQkFBbUIsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQU94RDtDQUNGO0FBRUQscUJBQWEsNkJBQThCLFNBQVEsS0FBSztJQUN0RCxZQUFZLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBSS9EO0NBQ0Y7QUFFRCxxQkFBYSx5Q0FBMEMsU0FBUSxLQUFLO2FBRWhELG1CQUFtQixFQUFFLE1BQU07YUFDM0Isd0JBQXdCLEVBQUUsTUFBTSxHQUFHLFNBQVM7SUFGOUQsWUFDa0IsbUJBQW1CLEVBQUUsTUFBTSxFQUMzQix3QkFBd0IsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQU83RDtDQUNGO0FBRUQscUJBQWEsa0NBQW1DLFNBQVEsS0FBSztJQUMzRCxZQUFZLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFJcEU7Q0FDRjtBQUVELHFCQUFhLGtDQUFtQyxTQUFRLEtBQUs7SUFDM0QsWUFBWSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBSXBFO0NBQ0Y7QUFFRCxxQkFBYSw0QkFBNkIsU0FBUSxLQUFLO0lBQ3JELFlBQVksYUFBYSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEdBQUcsU0FBUyxFQUl4RTtDQUNGO0FBRUQscUJBQWEsOEJBQStCLFNBQVEsS0FBSztJQUN2RCxZQUNFLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLG1CQUFtQixFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQ3ZDLGVBQWUsRUFBRSxFQUFFLEVBQ25CLG9CQUFvQixFQUFFLEVBQUUsRUFLekI7Q0FDRjtBQUVELHFCQUFhLHVCQUF3QixTQUFRLEtBQUs7SUFDaEQsWUFBWSxnQkFBZ0IsRUFBRSxNQUFNLEVBRW5DO0NBQ0Y7QUFFRCxxQkFBYSxrQkFBbUIsU0FBUSxLQUFLO0lBQzNDLFlBQVksV0FBVyxFQUFFLE1BQU0sRUFFOUI7Q0FDRjtBQUVELHFCQUFhLHFDQUFzQyxTQUFRLEtBQUs7YUFFNUMsV0FBVyxFQUFFLE1BQU07YUFDbkIscUJBQXFCLEVBQUUsTUFBTTtJQUYvQyxZQUNrQixXQUFXLEVBQUUsTUFBTSxFQUNuQixxQkFBcUIsRUFBRSxNQUFNLEVBTTlDO0NBQ0YifQ==
|
package/dest/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAEpD,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,UAAU,EAAE,MAAM,EAE7B;CACF;AAED,qBAAa,oCAAqC,SAAQ,KAAK;aAE3C,cAAc,EAAE,MAAM;aACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS;IAFzD,YACkB,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS,EAOxD;CACF;AAED,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,YAAY,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAI/D;CACF;AAED,qBAAa,yCAA0C,SAAQ,KAAK;aAEhD,mBAAmB,EAAE,MAAM;aAC3B,wBAAwB,EAAE,MAAM,GAAG,SAAS;IAF9D,YACkB,mBAAmB,EAAE,MAAM,EAC3B,wBAAwB,EAAE,MAAM,GAAG,SAAS,EAO7D;CACF;AAED,qBAAa,kCAAmC,SAAQ,KAAK;IAC3D,YAAY,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAIpE;CACF;AAED,qBAAa,kCAAmC,SAAQ,KAAK;IAC3D,YAAY,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAIpE;CACF;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,YAAY,aAAa,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,SAAS,EAIxE;CACF;AAED,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,YACE,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS,EACvC,eAAe,EAAE,EAAE,EACnB,oBAAoB,EAAE,EAAE,EAKzB;CACF;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,YAAY,gBAAgB,EAAE,MAAM,EAEnC;CACF;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,WAAW,EAAE,MAAM,EAE9B;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAEpD,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,UAAU,EAAE,MAAM,EAE7B;CACF;AAED,qBAAa,oCAAqC,SAAQ,KAAK;aAE3C,cAAc,EAAE,MAAM;aACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS;IAFzD,YACkB,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS,EAOxD;CACF;AAED,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,YAAY,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAI/D;CACF;AAED,qBAAa,yCAA0C,SAAQ,KAAK;aAEhD,mBAAmB,EAAE,MAAM;aAC3B,wBAAwB,EAAE,MAAM,GAAG,SAAS;IAF9D,YACkB,mBAAmB,EAAE,MAAM,EAC3B,wBAAwB,EAAE,MAAM,GAAG,SAAS,EAO7D;CACF;AAED,qBAAa,kCAAmC,SAAQ,KAAK;IAC3D,YAAY,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAIpE;CACF;AAED,qBAAa,kCAAmC,SAAQ,KAAK;IAC3D,YAAY,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAIpE;CACF;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,YAAY,aAAa,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,SAAS,EAIxE;CACF;AAED,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,YACE,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,GAAG,SAAS,EACvC,eAAe,EAAE,EAAE,EACnB,oBAAoB,EAAE,EAAE,EAKzB;CACF;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,YAAY,gBAAgB,EAAE,MAAM,EAEnC;CACF;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,WAAW,EAAE,MAAM,EAE9B;CACF;AAED,qBAAa,qCAAsC,SAAQ,KAAK;aAE5C,WAAW,EAAE,MAAM;aACnB,qBAAqB,EAAE,MAAM;IAF/C,YACkB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAM9C;CACF"}
|
package/dest/errors.js
CHANGED
|
@@ -52,3 +52,11 @@ export class BlockNotFoundError extends Error {
|
|
|
52
52
|
super(`Failed to find expected block number ${blockNumber}`);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
+
export class CannotOverwriteCheckpointedBlockError extends Error {
|
|
56
|
+
blockNumber;
|
|
57
|
+
lastCheckpointedBlock;
|
|
58
|
+
constructor(blockNumber, lastCheckpointedBlock){
|
|
59
|
+
super(`Cannot add block ${blockNumber}: would overwrite checkpointed data (checkpointed up to block ${lastCheckpointedBlock})`), this.blockNumber = blockNumber, this.lastCheckpointedBlock = lastCheckpointedBlock;
|
|
60
|
+
this.name = 'CannotOverwriteCheckpointedBlockError';
|
|
61
|
+
}
|
|
62
|
+
}
|
package/dest/factory.d.ts
CHANGED
|
@@ -16,4 +16,6 @@ export declare function createArchiverStore(userConfig: Pick<ArchiverConfig, 'ar
|
|
|
16
16
|
export declare function createArchiver(config: ArchiverConfig & DataStoreConfig, deps: ArchiverDeps, opts?: {
|
|
17
17
|
blockUntilSync: boolean;
|
|
18
18
|
}): Promise<Archiver>;
|
|
19
|
-
|
|
19
|
+
/** Registers protocol contracts in the archiver store. */
|
|
20
|
+
export declare function registerProtocolContracts(store: KVArchiverDataStore): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFPOUQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU1yRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBcUIsTUFBTSxhQUFhLENBQUM7QUFHckUsT0FBTyxFQUF1QixtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXhGLGVBQU8sTUFBTSxtQkFBbUIsYUFBYSxDQUFDO0FBRTlDLGlDQUFpQztBQUNqQyx3QkFBc0IsbUJBQW1CLENBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLHdCQUF3QixHQUFHLFNBQVMsQ0FBQyxHQUFHLGVBQWUsRUFDeEYsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLENBQUMsZ0NBUXREO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsd0JBQXNCLGNBQWMsQ0FDbEMsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLEVBQ3hDLElBQUksRUFBRSxZQUFZLEVBQ2xCLElBQUksR0FBRTtJQUFFLGNBQWMsRUFBRSxPQUFPLENBQUE7Q0FBNkIsR0FDM0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQXNHbkI7QUFFRCwwREFBMEQ7QUFDMUQsd0JBQXNCLHlCQUF5QixDQUFDLEtBQUssRUFBRSxtQkFBbUIsaUJBb0J6RSJ9
|
package/dest/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAO9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,aAAa,CAAC;AAGrE,OAAO,EAAuB,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExF,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAE9C,iCAAiC;AACjC,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,wBAAwB,GAAG,SAAS,CAAC,GAAG,eAAe,EACxF,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,gCAQtD;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,IAAI,EAAE,YAAY,EAClB,IAAI,GAAE;IAAE,cAAc,EAAE,OAAO,CAAA;CAA6B,GAC3D,OAAO,CAAC,QAAQ,CAAC,CAsGnB"}
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAO9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,aAAa,CAAC;AAGrE,OAAO,EAAuB,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExF,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAE9C,iCAAiC;AACjC,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,wBAAwB,GAAG,SAAS,CAAC,GAAG,eAAe,EACxF,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,gCAQtD;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,IAAI,EAAE,YAAY,EAClB,IAAI,GAAE;IAAE,cAAc,EAAE,OAAO,CAAA;CAA6B,GAC3D,OAAO,CAAC,QAAQ,CAAC,CAsGnB;AAED,0DAA0D;AAC1D,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,iBAoBzE"}
|
package/dest/factory.js
CHANGED
|
@@ -109,7 +109,7 @@ export const ARCHIVER_STORE_NAME = 'archiver';
|
|
|
109
109
|
await archiver.start(opts.blockUntilSync);
|
|
110
110
|
return archiver;
|
|
111
111
|
}
|
|
112
|
-
async function registerProtocolContracts(store) {
|
|
112
|
+
/** Registers protocol contracts in the archiver store. */ export async function registerProtocolContracts(store) {
|
|
113
113
|
const blockNumber = 0;
|
|
114
114
|
for (const name of protocolContractNames){
|
|
115
115
|
const provider = new BundledProtocolContractsProvider();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BlockNumber,
|
|
1
|
+
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import type { L2Block, ValidateCheckpointResult } from '@aztec/stdlib/block';
|
|
3
3
|
import type { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
4
4
|
import type { KVArchiverDataStore } from '../store/kv_archiver_store.js';
|
|
@@ -15,18 +15,19 @@ export declare class ArchiverDataStoreUpdater {
|
|
|
15
15
|
private readonly log;
|
|
16
16
|
constructor(store: KVArchiverDataStore);
|
|
17
17
|
/**
|
|
18
|
-
* Adds blocks to the store with contract class/instance extraction from logs.
|
|
18
|
+
* Adds proposed blocks to the store with contract class/instance extraction from logs.
|
|
19
|
+
* These are uncheckpointed blocks that have been proposed by the sequencer but not yet included in a checkpoint on L1.
|
|
19
20
|
* Extracts ContractClassPublished, ContractInstancePublished, ContractInstanceUpdated events,
|
|
20
21
|
* and individually broadcasted functions from the block logs.
|
|
21
22
|
*
|
|
22
|
-
* @param blocks - The L2 blocks to add.
|
|
23
|
+
* @param blocks - The proposed L2 blocks to add.
|
|
23
24
|
* @param pendingChainValidationStatus - Optional validation status to set.
|
|
24
25
|
* @returns True if the operation is successful.
|
|
25
26
|
*/
|
|
26
|
-
|
|
27
|
+
addProposedBlocks(blocks: L2Block[], pendingChainValidationStatus?: ValidateCheckpointResult): Promise<boolean>;
|
|
27
28
|
/**
|
|
28
29
|
* Reconciles local blocks with incoming checkpoints from L1.
|
|
29
|
-
* Adds checkpoints to the store with contract class/instance extraction from logs.
|
|
30
|
+
* Adds new checkpoints to the store with contract class/instance extraction from logs.
|
|
30
31
|
* Prunes any local blocks that conflict with checkpoint data (by comparing archive roots).
|
|
31
32
|
* Extracts ContractClassPublished, ContractInstancePublished, ContractInstanceUpdated events,
|
|
32
33
|
* and individually broadcasted functions from the checkpoint block logs.
|
|
@@ -35,35 +36,38 @@ export declare class ArchiverDataStoreUpdater {
|
|
|
35
36
|
* @param pendingChainValidationStatus - Optional validation status to set.
|
|
36
37
|
* @returns Result with information about any pruned blocks.
|
|
37
38
|
*/
|
|
38
|
-
|
|
39
|
+
addCheckpoints(checkpoints: PublishedCheckpoint[], pendingChainValidationStatus?: ValidateCheckpointResult): Promise<ReconcileCheckpointsResult>;
|
|
39
40
|
private pruneMismatchingLocalBlocks;
|
|
40
41
|
/**
|
|
41
|
-
* Removes all blocks strictly after the specified block number and cleans up associated contract data.
|
|
42
|
+
* Removes all uncheckpointed blocks strictly after the specified block number and cleans up associated contract data.
|
|
42
43
|
* This handles removal of provisionally added blocks along with their contract classes/instances.
|
|
44
|
+
* Verifies that each block being removed is not part of a stored checkpoint.
|
|
43
45
|
*
|
|
44
46
|
* @param blockNumber - Remove all blocks with number greater than this.
|
|
45
47
|
* @returns The removed blocks.
|
|
48
|
+
* @throws Error if any block to be removed is checkpointed.
|
|
46
49
|
*/
|
|
47
|
-
|
|
50
|
+
removeUncheckpointedBlocksAfter(blockNumber: BlockNumber): Promise<L2Block[]>;
|
|
51
|
+
private removeBlocksAfter;
|
|
48
52
|
/**
|
|
49
|
-
*
|
|
53
|
+
* Removes all checkpoints after the given checkpoint number.
|
|
50
54
|
* Deletes ContractClassPublished, ContractInstancePublished, ContractInstanceUpdated data
|
|
51
|
-
* that was stored for the
|
|
55
|
+
* that was stored for the removed checkpoints. Also removes ALL blocks (both checkpointed
|
|
56
|
+
* and uncheckpointed) after the last block of the given checkpoint.
|
|
52
57
|
*
|
|
53
|
-
* @param
|
|
54
|
-
* @param checkpointsToUnwind - The number of checkpoints to unwind.
|
|
58
|
+
* @param checkpointNumber - Remove all checkpoints strictly after this one.
|
|
55
59
|
* @returns True if the operation is successful.
|
|
56
60
|
*/
|
|
57
|
-
|
|
61
|
+
removeCheckpointsAfter(checkpointNumber: CheckpointNumber): Promise<boolean>;
|
|
58
62
|
/** Extracts and stores contract data from a single block. */
|
|
59
|
-
private
|
|
63
|
+
private addContractDataToDb;
|
|
60
64
|
/** Removes contract data associated with a block. */
|
|
61
|
-
private
|
|
62
|
-
private
|
|
65
|
+
private removeContractDataFromDb;
|
|
66
|
+
private updateContractDataOnDb;
|
|
63
67
|
private updatePublishedContractClasses;
|
|
64
68
|
private updateDeployedContractInstances;
|
|
65
69
|
private updateUpdatedContractInstances;
|
|
66
70
|
private storeBroadcastedIndividualFunctions;
|
|
67
71
|
}
|
|
68
72
|
export {};
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9zdG9yZV91cGRhdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlcy9kYXRhX3N0b3JlX3VwZGF0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBWWhGLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFhcEUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQVF6RSw2RUFBNkU7QUFDN0UsS0FBSywwQkFBMEIsR0FBRztJQUNoQyxtRUFBbUU7SUFDbkUsWUFBWSxFQUFFLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUNwQyxpRkFBaUY7SUFDakYsOEJBQThCLEVBQUUsV0FBVyxHQUFHLFNBQVMsQ0FBQztDQUN6RCxDQUFDO0FBRUYsa0VBQWtFO0FBQ2xFLHFCQUFhLHdCQUF3QjtJQUd2QixPQUFPLENBQUMsS0FBSztJQUZ6QixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBMEM7SUFFOUQsWUFBb0IsS0FBSyxFQUFFLG1CQUFtQixFQUFJO0lBRWxEOzs7Ozs7Ozs7T0FTRztJQUNJLGlCQUFpQixDQUN0QixNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQ2pCLDRCQUE0QixDQUFDLEVBQUUsd0JBQXdCLEdBQ3RELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FlbEI7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksY0FBYyxDQUNuQixXQUFXLEVBQUUsbUJBQW1CLEVBQUUsRUFDbEMsNEJBQTRCLENBQUMsRUFBRSx3QkFBd0IsR0FDdEQsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBdUJyQztZQVFhLDJCQUEyQjtJQW1FekM7Ozs7Ozs7O09BUUc7SUFDSSwrQkFBK0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQVluRjtZQU1hLGlCQUFpQjtJQWEvQjs7Ozs7Ozs7T0FRRztJQUNVLHNCQUFzQixDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FZeEY7SUFFRCw2REFBNkQ7SUFDN0QsT0FBTyxDQUFDLG1CQUFtQjtJQUkzQixxREFBcUQ7SUFDckQsT0FBTyxDQUFDLHdCQUF3QjtZQUtsQixzQkFBc0I7WUFvQnRCLDhCQUE4QjtZQTRCOUIsK0JBQStCO1lBeUIvQiw4QkFBOEI7WUE2QjlCLG1DQUFtQztDQXdEbEQifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_store_updater.d.ts","sourceRoot":"","sources":["../../src/modules/data_store_updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"data_store_updater.d.ts","sourceRoot":"","sources":["../../src/modules/data_store_updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAYhF,OAAO,KAAK,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAapE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAQzE,6EAA6E;AAC7E,KAAK,0BAA0B,GAAG;IAChC,mEAAmE;IACnE,YAAY,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IACpC,iFAAiF;IACjF,8BAA8B,EAAE,WAAW,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,kEAAkE;AAClE,qBAAa,wBAAwB;IAGvB,OAAO,CAAC,KAAK;IAFzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0C;IAE9D,YAAoB,KAAK,EAAE,mBAAmB,EAAI;IAElD;;;;;;;;;OASG;IACI,iBAAiB,CACtB,MAAM,EAAE,OAAO,EAAE,EACjB,4BAA4B,CAAC,EAAE,wBAAwB,GACtD,OAAO,CAAC,OAAO,CAAC,CAelB;IAED;;;;;;;;;;OAUG;IACI,cAAc,CACnB,WAAW,EAAE,mBAAmB,EAAE,EAClC,4BAA4B,CAAC,EAAE,wBAAwB,GACtD,OAAO,CAAC,0BAA0B,CAAC,CAuBrC;YAQa,2BAA2B;IAmEzC;;;;;;;;OAQG;IACI,+BAA+B,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAYnF;YAMa,iBAAiB;IAa/B;;;;;;;;OAQG;IACU,sBAAsB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAYxF;IAED,6DAA6D;IAC7D,OAAO,CAAC,mBAAmB;IAI3B,qDAAqD;IACrD,OAAO,CAAC,wBAAwB;YAKlB,sBAAsB;YAoBtB,8BAA8B;YA4B9B,+BAA+B;YAyB/B,8BAA8B;YA6B9B,mCAAmC;CAwDlD"}
|
|
@@ -18,30 +18,31 @@ import groupBy from 'lodash.groupby';
|
|
|
18
18
|
this.log = createLogger('archiver:store_updater');
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
* Adds blocks to the store with contract class/instance extraction from logs.
|
|
21
|
+
* Adds proposed blocks to the store with contract class/instance extraction from logs.
|
|
22
|
+
* These are uncheckpointed blocks that have been proposed by the sequencer but not yet included in a checkpoint on L1.
|
|
22
23
|
* Extracts ContractClassPublished, ContractInstancePublished, ContractInstanceUpdated events,
|
|
23
24
|
* and individually broadcasted functions from the block logs.
|
|
24
25
|
*
|
|
25
|
-
* @param blocks - The L2 blocks to add.
|
|
26
|
+
* @param blocks - The proposed L2 blocks to add.
|
|
26
27
|
* @param pendingChainValidationStatus - Optional validation status to set.
|
|
27
28
|
* @returns True if the operation is successful.
|
|
28
|
-
*/
|
|
29
|
+
*/ addProposedBlocks(blocks, pendingChainValidationStatus) {
|
|
29
30
|
return this.store.transactionAsync(async ()=>{
|
|
30
|
-
await this.store.
|
|
31
|
+
await this.store.addProposedBlocks(blocks);
|
|
31
32
|
const opResults = await Promise.all([
|
|
32
33
|
// Update the pending chain validation status if provided
|
|
33
34
|
pendingChainValidationStatus && this.store.setPendingChainValidationStatus(pendingChainValidationStatus),
|
|
34
35
|
// Add any logs emitted during the retrieved blocks
|
|
35
36
|
this.store.addLogs(blocks),
|
|
36
37
|
// Unroll all logs emitted during the retrieved blocks and extract any contract classes and instances from them
|
|
37
|
-
...blocks.map((block)=>this.
|
|
38
|
+
...blocks.map((block)=>this.addContractDataToDb(block))
|
|
38
39
|
]);
|
|
39
40
|
return opResults.every(Boolean);
|
|
40
41
|
});
|
|
41
42
|
}
|
|
42
43
|
/**
|
|
43
44
|
* Reconciles local blocks with incoming checkpoints from L1.
|
|
44
|
-
* Adds checkpoints to the store with contract class/instance extraction from logs.
|
|
45
|
+
* Adds new checkpoints to the store with contract class/instance extraction from logs.
|
|
45
46
|
* Prunes any local blocks that conflict with checkpoint data (by comparing archive roots).
|
|
46
47
|
* Extracts ContractClassPublished, ContractInstancePublished, ContractInstanceUpdated events,
|
|
47
48
|
* and individually broadcasted functions from the checkpoint block logs.
|
|
@@ -49,12 +50,12 @@ import groupBy from 'lodash.groupby';
|
|
|
49
50
|
* @param checkpoints - The published checkpoints to add.
|
|
50
51
|
* @param pendingChainValidationStatus - Optional validation status to set.
|
|
51
52
|
* @returns Result with information about any pruned blocks.
|
|
52
|
-
*/
|
|
53
|
+
*/ addCheckpoints(checkpoints, pendingChainValidationStatus) {
|
|
53
54
|
return this.store.transactionAsync(async ()=>{
|
|
54
55
|
// Before adding checkpoints, check for conflicts with local blocks if any
|
|
55
56
|
const { prunedBlocks, lastAlreadyInsertedBlockNumber } = await this.pruneMismatchingLocalBlocks(checkpoints);
|
|
56
57
|
await this.store.addCheckpoints(checkpoints);
|
|
57
|
-
// Filter out blocks that were already inserted via
|
|
58
|
+
// Filter out blocks that were already inserted via addProposedBlocks() to avoid duplicating logs/contract data
|
|
58
59
|
const newBlocks = checkpoints.flatMap((ch)=>ch.checkpoint.blocks).filter((b)=>lastAlreadyInsertedBlockNumber === undefined || b.number > lastAlreadyInsertedBlockNumber);
|
|
59
60
|
await Promise.all([
|
|
60
61
|
// Update the pending chain validation status if provided
|
|
@@ -62,7 +63,7 @@ import groupBy from 'lodash.groupby';
|
|
|
62
63
|
// Add any logs emitted during the retrieved blocks
|
|
63
64
|
this.store.addLogs(newBlocks),
|
|
64
65
|
// Unroll all logs emitted during the retrieved blocks and extract any contract classes and instances from them
|
|
65
|
-
...newBlocks.map((block)=>this.
|
|
66
|
+
...newBlocks.map((block)=>this.addContractDataToDb(block))
|
|
66
67
|
]);
|
|
67
68
|
return {
|
|
68
69
|
prunedBlocks,
|
|
@@ -139,67 +140,64 @@ import groupBy from 'lodash.groupby';
|
|
|
139
140
|
};
|
|
140
141
|
}
|
|
141
142
|
/**
|
|
142
|
-
* Removes all blocks strictly after the specified block number and cleans up associated contract data.
|
|
143
|
+
* Removes all uncheckpointed blocks strictly after the specified block number and cleans up associated contract data.
|
|
143
144
|
* This handles removal of provisionally added blocks along with their contract classes/instances.
|
|
145
|
+
* Verifies that each block being removed is not part of a stored checkpoint.
|
|
144
146
|
*
|
|
145
147
|
* @param blockNumber - Remove all blocks with number greater than this.
|
|
146
148
|
* @returns The removed blocks.
|
|
147
|
-
|
|
149
|
+
* @throws Error if any block to be removed is checkpointed.
|
|
150
|
+
*/ removeUncheckpointedBlocksAfter(blockNumber) {
|
|
148
151
|
return this.store.transactionAsync(async ()=>{
|
|
149
|
-
//
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
]);
|
|
156
|
-
return removedBlocks;
|
|
152
|
+
// Verify we're only removing uncheckpointed blocks
|
|
153
|
+
const lastCheckpointedBlockNumber = await this.store.getCheckpointedL2BlockNumber();
|
|
154
|
+
if (blockNumber < lastCheckpointedBlockNumber) {
|
|
155
|
+
throw new Error(`Cannot remove blocks after ${blockNumber} because checkpointed blocks exist up to ${lastCheckpointedBlockNumber}`);
|
|
156
|
+
}
|
|
157
|
+
return await this.removeBlocksAfter(blockNumber);
|
|
157
158
|
});
|
|
158
159
|
}
|
|
159
160
|
/**
|
|
160
|
-
*
|
|
161
|
+
* Removes all blocks strictly after the given block number along with any logs and contract data.
|
|
162
|
+
* Does not remove their checkpoints.
|
|
163
|
+
*/ async removeBlocksAfter(blockNumber) {
|
|
164
|
+
// First get the blocks to be removed so we can clean up contract data
|
|
165
|
+
const removedBlocks = await this.store.removeBlocksAfter(blockNumber);
|
|
166
|
+
// Clean up contract data and logs for the removed blocks
|
|
167
|
+
await Promise.all([
|
|
168
|
+
this.store.deleteLogs(removedBlocks),
|
|
169
|
+
...removedBlocks.map((block)=>this.removeContractDataFromDb(block))
|
|
170
|
+
]);
|
|
171
|
+
return removedBlocks;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Removes all checkpoints after the given checkpoint number.
|
|
161
175
|
* Deletes ContractClassPublished, ContractInstancePublished, ContractInstanceUpdated data
|
|
162
|
-
* that was stored for the
|
|
176
|
+
* that was stored for the removed checkpoints. Also removes ALL blocks (both checkpointed
|
|
177
|
+
* and uncheckpointed) after the last block of the given checkpoint.
|
|
163
178
|
*
|
|
164
|
-
* @param
|
|
165
|
-
* @param checkpointsToUnwind - The number of checkpoints to unwind.
|
|
179
|
+
* @param checkpointNumber - Remove all checkpoints strictly after this one.
|
|
166
180
|
* @returns True if the operation is successful.
|
|
167
|
-
*/ async
|
|
168
|
-
|
|
169
|
-
throw new Error(`Cannot unwind ${checkpointsToUnwind} blocks`);
|
|
170
|
-
}
|
|
171
|
-
const last = await this.store.getSynchedCheckpointNumber();
|
|
172
|
-
if (from != last) {
|
|
173
|
-
throw new Error(`Cannot unwind checkpoints from checkpoint ${from} when the last checkpoint is ${last}`);
|
|
174
|
-
}
|
|
175
|
-
const blocks = [];
|
|
176
|
-
const lastCheckpointNumber = from + checkpointsToUnwind - 1;
|
|
177
|
-
for(let checkpointNumber = from; checkpointNumber <= lastCheckpointNumber; checkpointNumber++){
|
|
178
|
-
const blocksForCheckpoint = await this.store.getBlocksForCheckpoint(checkpointNumber);
|
|
179
|
-
if (!blocksForCheckpoint) {
|
|
180
|
-
continue;
|
|
181
|
-
}
|
|
182
|
-
blocks.push(...blocksForCheckpoint);
|
|
183
|
-
}
|
|
181
|
+
*/ async removeCheckpointsAfter(checkpointNumber) {
|
|
182
|
+
const { blocksRemoved = [] } = await this.store.removeCheckpointsAfter(checkpointNumber);
|
|
184
183
|
const opResults = await Promise.all([
|
|
185
184
|
// Prune rolls back to the last proven block, which is by definition valid
|
|
186
185
|
this.store.setPendingChainValidationStatus({
|
|
187
186
|
valid: true
|
|
188
187
|
}),
|
|
189
|
-
// Remove contract data for all blocks being
|
|
190
|
-
...
|
|
191
|
-
this.store.deleteLogs(
|
|
192
|
-
this.store.unwindCheckpoints(from, checkpointsToUnwind)
|
|
188
|
+
// Remove contract data for all blocks being removed
|
|
189
|
+
...blocksRemoved.map((block)=>this.removeContractDataFromDb(block)),
|
|
190
|
+
this.store.deleteLogs(blocksRemoved)
|
|
193
191
|
]);
|
|
194
192
|
return opResults.every(Boolean);
|
|
195
193
|
}
|
|
196
|
-
/** Extracts and stores contract data from a single block. */
|
|
197
|
-
return this.
|
|
194
|
+
/** Extracts and stores contract data from a single block. */ addContractDataToDb(block) {
|
|
195
|
+
return this.updateContractDataOnDb(block, 0);
|
|
198
196
|
}
|
|
199
|
-
/** Removes contract data associated with a block. */
|
|
200
|
-
return this.
|
|
197
|
+
/** Removes contract data associated with a block. */ removeContractDataFromDb(block) {
|
|
198
|
+
return this.updateContractDataOnDb(block, 1);
|
|
201
199
|
}
|
|
202
|
-
/** Adds or remove contract data associated with a block. */ async
|
|
200
|
+
/** Adds or remove contract data associated with a block. */ async updateContractDataOnDb(block, operation) {
|
|
203
201
|
const contractClassLogs = block.body.txEffects.flatMap((txEffect)=>txEffect.contractClassLogs);
|
|
204
202
|
const privateLogs = block.body.txEffects.flatMap((txEffect)=>txEffect.privateLogs);
|
|
205
203
|
const publicLogs = block.body.txEffects.flatMap((txEffect)=>txEffect.publicLogs);
|
|
@@ -591,7 +591,7 @@ _dec = trackSpan('Archiver.syncFromL1'), _dec1 = trackSpan('Archiver.handleEpoch
|
|
|
591
591
|
firstUncheckpointedBlockHeader: firstUncheckpointedBlockHeader.toInspect(),
|
|
592
592
|
slotAtNextL1Block
|
|
593
593
|
});
|
|
594
|
-
const prunedBlocks = await this.updater.
|
|
594
|
+
const prunedBlocks = await this.updater.removeUncheckpointedBlocksAfter(lastCheckpointedBlockNumber);
|
|
595
595
|
if (prunedBlocks.length > 0) {
|
|
596
596
|
this.events.emit(L2BlockSourceEvents.L2PruneUncheckpointed, {
|
|
597
597
|
type: L2BlockSourceEvents.L2PruneUncheckpointed,
|
|
@@ -642,8 +642,8 @@ _dec = trackSpan('Archiver.syncFromL1'), _dec1 = trackSpan('Archiver.handleEpoch
|
|
|
642
642
|
blocks: newBlocks
|
|
643
643
|
});
|
|
644
644
|
this.log.debug(`L2 prune from ${provenCheckpointNumber + 1} to ${localPendingCheckpointNumber} will occur on next checkpoint submission.`);
|
|
645
|
-
await this.updater.
|
|
646
|
-
this.log.warn(`
|
|
645
|
+
await this.updater.removeCheckpointsAfter(provenCheckpointNumber);
|
|
646
|
+
this.log.warn(`Removed ${count(checkpointsToUnwind, 'checkpoint')} after checkpoint ${provenCheckpointNumber} ` + `due to predicted reorg at L1 block ${currentL1BlockNumber}. ` + `Updated latest checkpoint is ${await this.store.getSynchedCheckpointNumber()}.`);
|
|
647
647
|
this.instrumentation.processPrune(timer.ms());
|
|
648
648
|
// TODO(palla/reorg): Do we need to set the block synched L1 block number here?
|
|
649
649
|
// Seems like the next iteration should handle this.
|
|
@@ -931,9 +931,9 @@ _dec = trackSpan('Archiver.syncFromL1'), _dec1 = trackSpan('Archiver.handleEpoch
|
|
|
931
931
|
}
|
|
932
932
|
tipAfterUnwind--;
|
|
933
933
|
}
|
|
934
|
-
const
|
|
935
|
-
await this.updater.
|
|
936
|
-
this.log.warn(`
|
|
934
|
+
const checkpointsToRemove = localPendingCheckpointNumber - tipAfterUnwind;
|
|
935
|
+
await this.updater.removeCheckpointsAfter(CheckpointNumber(tipAfterUnwind));
|
|
936
|
+
this.log.warn(`Removed ${count(checkpointsToRemove, 'checkpoint')} after checkpoint ${tipAfterUnwind} ` + `due to mismatched checkpoint hashes at L1 block ${currentL1BlockNumber}. ` + `Updated L2 latest checkpoint is ${await this.store.getSynchedCheckpointNumber()}.`);
|
|
937
937
|
}
|
|
938
938
|
}
|
|
939
939
|
// Retrieve checkpoints in batches. Each batch is estimated to accommodate up to 'blockBatchSize' L1 blocks,
|
|
@@ -1011,7 +1011,7 @@ _dec = trackSpan('Archiver.syncFromL1'), _dec1 = trackSpan('Archiver.handleEpoch
|
|
|
1011
1011
|
}
|
|
1012
1012
|
try {
|
|
1013
1013
|
const updatedValidationResult = rollupStatus.validationResult === initialValidationResult ? undefined : rollupStatus.validationResult;
|
|
1014
|
-
const [processDuration, result] = await elapsed(()=>execInSpan(this.tracer, 'Archiver.
|
|
1014
|
+
const [processDuration, result] = await elapsed(()=>execInSpan(this.tracer, 'Archiver.addCheckpoints', ()=>this.updater.addCheckpoints(validCheckpoints, updatedValidationResult)));
|
|
1015
1015
|
this.instrumentation.processNewBlocks(processDuration / validCheckpoints.length, validCheckpoints.flatMap((c)=>c.checkpoint.blocks));
|
|
1016
1016
|
// If blocks were pruned due to conflict with L1 checkpoints, emit event
|
|
1017
1017
|
if (result.prunedBlocks && result.prunedBlocks.length > 0) {
|