@aztec/archiver 0.0.1-commit.f2ce05ee → 0.0.1-commit.f81dbcf
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 +7 -4
- package/dest/archiver.d.ts.map +1 -1
- package/dest/archiver.js +55 -106
- package/dest/factory.d.ts +2 -3
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +13 -13
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/l1/bin/retrieve-calldata.js +32 -28
- package/dest/l1/calldata_retriever.d.ts +73 -50
- package/dest/l1/calldata_retriever.d.ts.map +1 -1
- package/dest/l1/calldata_retriever.js +190 -259
- package/dest/l1/data_retrieval.d.ts +4 -7
- package/dest/l1/data_retrieval.d.ts.map +1 -1
- package/dest/l1/data_retrieval.js +9 -13
- package/dest/l1/spire_proposer.d.ts +5 -5
- package/dest/l1/spire_proposer.d.ts.map +1 -1
- package/dest/l1/spire_proposer.js +9 -17
- package/dest/modules/data_source_base.d.ts +10 -5
- package/dest/modules/data_source_base.d.ts.map +1 -1
- package/dest/modules/data_source_base.js +29 -73
- package/dest/modules/data_store_updater.d.ts +18 -3
- package/dest/modules/data_store_updater.d.ts.map +1 -1
- package/dest/modules/data_store_updater.js +75 -23
- package/dest/modules/instrumentation.d.ts +4 -2
- package/dest/modules/instrumentation.d.ts.map +1 -1
- package/dest/modules/instrumentation.js +9 -2
- package/dest/modules/l1_synchronizer.d.ts +5 -8
- package/dest/modules/l1_synchronizer.d.ts.map +1 -1
- package/dest/modules/l1_synchronizer.js +37 -10
- package/dest/store/block_store.d.ts +25 -22
- package/dest/store/block_store.d.ts.map +1 -1
- package/dest/store/block_store.js +100 -30
- package/dest/store/kv_archiver_store.d.ts +30 -6
- package/dest/store/kv_archiver_store.d.ts.map +1 -1
- package/dest/store/kv_archiver_store.js +34 -4
- package/dest/store/l2_tips_cache.d.ts +19 -0
- package/dest/store/l2_tips_cache.d.ts.map +1 -0
- package/dest/store/l2_tips_cache.js +89 -0
- 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 +48 -10
- package/dest/store/message_store.js +1 -1
- package/dest/test/fake_l1_state.d.ts +13 -1
- package/dest/test/fake_l1_state.d.ts.map +1 -1
- package/dest/test/fake_l1_state.js +84 -20
- package/dest/test/mock_archiver.d.ts +1 -1
- package/dest/test/mock_archiver.d.ts.map +1 -1
- package/dest/test/mock_archiver.js +3 -2
- package/dest/test/mock_l2_block_source.d.ts +21 -5
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +132 -86
- package/dest/test/mock_structs.d.ts +4 -1
- package/dest/test/mock_structs.d.ts.map +1 -1
- package/dest/test/mock_structs.js +13 -1
- package/dest/test/noop_l1_archiver.d.ts +4 -1
- package/dest/test/noop_l1_archiver.d.ts.map +1 -1
- package/dest/test/noop_l1_archiver.js +5 -1
- package/package.json +13 -13
- package/src/archiver.ts +67 -128
- package/src/factory.ts +12 -5
- package/src/index.ts +1 -0
- package/src/l1/README.md +25 -68
- package/src/l1/bin/retrieve-calldata.ts +40 -27
- package/src/l1/calldata_retriever.ts +249 -379
- package/src/l1/data_retrieval.ts +6 -16
- package/src/l1/spire_proposer.ts +7 -15
- package/src/modules/data_source_base.ts +56 -95
- package/src/modules/data_store_updater.ts +82 -22
- package/src/modules/instrumentation.ts +9 -2
- package/src/modules/l1_synchronizer.ts +44 -14
- package/src/store/block_store.ts +126 -49
- package/src/store/kv_archiver_store.ts +57 -7
- package/src/store/l2_tips_cache.ts +89 -0
- package/src/store/log_store.ts +66 -12
- package/src/store/message_store.ts +1 -1
- package/src/test/fake_l1_state.ts +110 -21
- package/src/test/mock_archiver.ts +3 -2
- package/src/test/mock_l2_block_source.ts +173 -81
- package/src/test/mock_structs.ts +20 -6
- package/src/test/noop_l1_archiver.ts +7 -1
|
@@ -8,6 +8,7 @@ import { bufferToHex } from '@aztec/foundation/string';
|
|
|
8
8
|
import { isDefined } from '@aztec/foundation/types';
|
|
9
9
|
import { Body, CheckpointedL2Block, CommitteeAttestation, L2Block, deserializeValidateCheckpointResult, serializeValidateCheckpointResult } from '@aztec/stdlib/block';
|
|
10
10
|
import { L1PublishedData } from '@aztec/stdlib/checkpoint';
|
|
11
|
+
import { getEpochAtSlot } from '@aztec/stdlib/epoch-helpers';
|
|
11
12
|
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
12
13
|
import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
|
|
13
14
|
import { BlockHeader, TxHash, TxReceipt, TxStatus, deserializeIndexedTxEffect, serializeIndexedTxEffect } from '@aztec/stdlib/tx';
|
|
@@ -17,21 +18,21 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
17
18
|
* LMDB-based block storage for the archiver.
|
|
18
19
|
*/ export class BlockStore {
|
|
19
20
|
db;
|
|
20
|
-
l1Constants;
|
|
21
21
|
/** Map block number to block data */ #blocks;
|
|
22
22
|
/** Map checkpoint number to checkpoint data */ #checkpoints;
|
|
23
|
+
/** Map slot number to checkpoint number, for looking up checkpoints by slot range. */ #slotToCheckpoint;
|
|
23
24
|
/** Map block hash to list of tx hashes */ #blockTxs;
|
|
24
25
|
/** Tx hash to serialized IndexedTxEffect */ #txEffects;
|
|
25
26
|
/** Stores L1 block number in which the last processed L2 block was included */ #lastSynchedL1Block;
|
|
26
27
|
/** Stores last proven checkpoint */ #lastProvenCheckpoint;
|
|
28
|
+
/** Stores last finalized checkpoint (proven at or before the finalized L1 block) */ #lastFinalizedCheckpoint;
|
|
27
29
|
/** Stores the pending chain validation status */ #pendingChainValidationStatus;
|
|
28
30
|
/** Index mapping a contract's address (as a string) to its location in a block */ #contractIndex;
|
|
29
31
|
/** Index mapping block hash to block number */ #blockHashIndex;
|
|
30
32
|
/** Index mapping block archive to block number */ #blockArchiveIndex;
|
|
31
33
|
#log;
|
|
32
|
-
constructor(db
|
|
34
|
+
constructor(db){
|
|
33
35
|
this.db = db;
|
|
34
|
-
this.l1Constants = l1Constants;
|
|
35
36
|
this.#log = createLogger('archiver:block_store');
|
|
36
37
|
this.#blocks = db.openMap('archiver_blocks');
|
|
37
38
|
this.#blockTxs = db.openMap('archiver_block_txs');
|
|
@@ -41,18 +42,25 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
41
42
|
this.#blockArchiveIndex = db.openMap('archiver_block_archive_index');
|
|
42
43
|
this.#lastSynchedL1Block = db.openSingleton('archiver_last_synched_l1_block');
|
|
43
44
|
this.#lastProvenCheckpoint = db.openSingleton('archiver_last_proven_l2_checkpoint');
|
|
45
|
+
this.#lastFinalizedCheckpoint = db.openSingleton('archiver_last_finalized_l2_checkpoint');
|
|
44
46
|
this.#pendingChainValidationStatus = db.openSingleton('archiver_pending_chain_validation_status');
|
|
45
47
|
this.#checkpoints = db.openMap('archiver_checkpoints');
|
|
48
|
+
this.#slotToCheckpoint = db.openMap('archiver_slot_to_checkpoint');
|
|
46
49
|
}
|
|
47
50
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* TODO(#13569): Compute proper finalized block number based on L1 finalized block.
|
|
51
|
-
* TODO(palla/mbps): Even the provisional computation is wrong, since it should subtract checkpoints, not blocks
|
|
51
|
+
* Returns the finalized L2 block number. An L2 block is finalized when it was proven
|
|
52
|
+
* in an L1 block that has itself been finalized on Ethereum.
|
|
52
53
|
* @returns The finalized block number.
|
|
53
54
|
*/ async getFinalizedL2BlockNumber() {
|
|
54
|
-
const
|
|
55
|
-
|
|
55
|
+
const finalizedCheckpointNumber = await this.getFinalizedCheckpointNumber();
|
|
56
|
+
if (finalizedCheckpointNumber === INITIAL_CHECKPOINT_NUMBER - 1) {
|
|
57
|
+
return BlockNumber(INITIAL_L2_BLOCK_NUM - 1);
|
|
58
|
+
}
|
|
59
|
+
const checkpointStorage = await this.#checkpoints.getAsync(finalizedCheckpointNumber);
|
|
60
|
+
if (!checkpointStorage) {
|
|
61
|
+
throw new CheckpointNotFoundError(finalizedCheckpointNumber);
|
|
62
|
+
}
|
|
63
|
+
return BlockNumber(checkpointStorage.startBlock + checkpointStorage.blockCount - 1);
|
|
56
64
|
}
|
|
57
65
|
/**
|
|
58
66
|
* Append new proposed blocks to the store's list. All blocks must be for the 'current' checkpoint.
|
|
@@ -155,7 +163,7 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
155
163
|
let previousBlock = undefined;
|
|
156
164
|
// If we have a previous checkpoint then we need to get the previous block number
|
|
157
165
|
if (previousCheckpointData !== undefined) {
|
|
158
|
-
previousBlockNumber = BlockNumber(previousCheckpointData.startBlock + previousCheckpointData.
|
|
166
|
+
previousBlockNumber = BlockNumber(previousCheckpointData.startBlock + previousCheckpointData.blockCount - 1);
|
|
159
167
|
previousBlock = await this.getBlock(previousBlockNumber);
|
|
160
168
|
if (previousBlock === undefined) {
|
|
161
169
|
// We should be able to get the required previous block
|
|
@@ -200,12 +208,15 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
200
208
|
await this.#checkpoints.set(checkpoint.checkpoint.number, {
|
|
201
209
|
header: checkpoint.checkpoint.header.toBuffer(),
|
|
202
210
|
archive: checkpoint.checkpoint.archive.toBuffer(),
|
|
211
|
+
checkpointOutHash: checkpoint.checkpoint.getCheckpointOutHash().toBuffer(),
|
|
203
212
|
l1: checkpoint.l1.toBuffer(),
|
|
204
213
|
attestations: checkpoint.attestations.map((attestation)=>attestation.toBuffer()),
|
|
205
214
|
checkpointNumber: checkpoint.checkpoint.number,
|
|
206
215
|
startBlock: checkpoint.checkpoint.blocks[0].number,
|
|
207
|
-
|
|
216
|
+
blockCount: checkpoint.checkpoint.blocks.length
|
|
208
217
|
});
|
|
218
|
+
// Update slot-to-checkpoint index
|
|
219
|
+
await this.#slotToCheckpoint.set(checkpoint.checkpoint.header.slotNumber, checkpoint.checkpoint.number);
|
|
209
220
|
}
|
|
210
221
|
await this.#lastSynchedL1Block.set(checkpoints[checkpoints.length - 1].l1.blockNumber);
|
|
211
222
|
return true;
|
|
@@ -274,12 +285,17 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
274
285
|
if (!targetCheckpoint) {
|
|
275
286
|
throw new Error(`Target checkpoint ${checkpointNumber} not found in store`);
|
|
276
287
|
}
|
|
277
|
-
lastBlockToKeep = BlockNumber(targetCheckpoint.startBlock + targetCheckpoint.
|
|
288
|
+
lastBlockToKeep = BlockNumber(targetCheckpoint.startBlock + targetCheckpoint.blockCount - 1);
|
|
278
289
|
}
|
|
279
290
|
// Remove all blocks after lastBlockToKeep (both checkpointed and uncheckpointed)
|
|
280
291
|
const blocksRemoved = await this.removeBlocksAfter(lastBlockToKeep);
|
|
281
292
|
// Remove all checkpoints after the target
|
|
282
293
|
for(let c = latestCheckpointNumber; c > checkpointNumber; c = CheckpointNumber(c - 1)){
|
|
294
|
+
const checkpointStorage = await this.#checkpoints.getAsync(c);
|
|
295
|
+
if (checkpointStorage) {
|
|
296
|
+
const slotNumber = CheckpointHeader.fromBuffer(checkpointStorage.header).slotNumber;
|
|
297
|
+
await this.#slotToCheckpoint.delete(slotNumber);
|
|
298
|
+
}
|
|
283
299
|
await this.#checkpoints.delete(c);
|
|
284
300
|
this.#log.debug(`Removed checkpoint ${c}`);
|
|
285
301
|
}
|
|
@@ -306,17 +322,30 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
306
322
|
}
|
|
307
323
|
return checkpoints;
|
|
308
324
|
}
|
|
325
|
+
/** Returns checkpoint data for all checkpoints whose slot falls within the given range (inclusive). */ async getCheckpointDataForSlotRange(startSlot, endSlot) {
|
|
326
|
+
const result = [];
|
|
327
|
+
for await (const [, checkpointNumber] of this.#slotToCheckpoint.entriesAsync({
|
|
328
|
+
start: startSlot,
|
|
329
|
+
end: endSlot + 1
|
|
330
|
+
})){
|
|
331
|
+
const checkpointStorage = await this.#checkpoints.getAsync(checkpointNumber);
|
|
332
|
+
if (checkpointStorage) {
|
|
333
|
+
result.push(this.checkpointDataFromCheckpointStorage(checkpointStorage));
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
return result;
|
|
337
|
+
}
|
|
309
338
|
checkpointDataFromCheckpointStorage(checkpointStorage) {
|
|
310
|
-
|
|
339
|
+
return {
|
|
311
340
|
header: CheckpointHeader.fromBuffer(checkpointStorage.header),
|
|
312
341
|
archive: AppendOnlyTreeSnapshot.fromBuffer(checkpointStorage.archive),
|
|
342
|
+
checkpointOutHash: Fr.fromBuffer(checkpointStorage.checkpointOutHash),
|
|
313
343
|
checkpointNumber: CheckpointNumber(checkpointStorage.checkpointNumber),
|
|
314
|
-
startBlock: checkpointStorage.startBlock,
|
|
315
|
-
|
|
344
|
+
startBlock: BlockNumber(checkpointStorage.startBlock),
|
|
345
|
+
blockCount: checkpointStorage.blockCount,
|
|
316
346
|
l1: L1PublishedData.fromBuffer(checkpointStorage.l1),
|
|
317
|
-
attestations: checkpointStorage.attestations
|
|
347
|
+
attestations: checkpointStorage.attestations.map((buf)=>CommitteeAttestation.fromBuffer(buf))
|
|
318
348
|
};
|
|
319
|
-
return data;
|
|
320
349
|
}
|
|
321
350
|
async getBlocksForCheckpoint(checkpointNumber) {
|
|
322
351
|
const checkpoint = await this.#checkpoints.getAsync(checkpointNumber);
|
|
@@ -325,7 +354,7 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
325
354
|
}
|
|
326
355
|
const blocksForCheckpoint = await toArray(this.#blocks.entriesAsync({
|
|
327
356
|
start: checkpoint.startBlock,
|
|
328
|
-
end: checkpoint.startBlock + checkpoint.
|
|
357
|
+
end: checkpoint.startBlock + checkpoint.blockCount
|
|
329
358
|
}));
|
|
330
359
|
const converted = await Promise.all(blocksForCheckpoint.map((x)=>this.getBlockFromBlockStorage(x[0], x[1])));
|
|
331
360
|
return converted.filter(isDefined);
|
|
@@ -386,7 +415,7 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
386
415
|
if (!checkpointStorage) {
|
|
387
416
|
throw new CheckpointNotFoundError(provenCheckpointNumber);
|
|
388
417
|
} else {
|
|
389
|
-
return BlockNumber(checkpointStorage.startBlock + checkpointStorage.
|
|
418
|
+
return BlockNumber(checkpointStorage.startBlock + checkpointStorage.blockCount - 1);
|
|
390
419
|
}
|
|
391
420
|
}
|
|
392
421
|
async getLatestBlockNumber() {
|
|
@@ -468,6 +497,28 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
468
497
|
}
|
|
469
498
|
}
|
|
470
499
|
/**
|
|
500
|
+
* Gets block metadata (without tx data) by block number.
|
|
501
|
+
* @param blockNumber - The number of the block to return.
|
|
502
|
+
* @returns The requested block data.
|
|
503
|
+
*/ async getBlockData(blockNumber) {
|
|
504
|
+
const blockStorage = await this.#blocks.getAsync(blockNumber);
|
|
505
|
+
if (!blockStorage || !blockStorage.header) {
|
|
506
|
+
return undefined;
|
|
507
|
+
}
|
|
508
|
+
return this.getBlockDataFromBlockStorage(blockStorage);
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Gets block metadata (without tx data) by archive root.
|
|
512
|
+
* @param archive - The archive root of the block to return.
|
|
513
|
+
* @returns The requested block data.
|
|
514
|
+
*/ async getBlockDataByArchive(archive) {
|
|
515
|
+
const blockNumber = await this.#blockArchiveIndex.getAsync(archive.toString());
|
|
516
|
+
if (blockNumber === undefined) {
|
|
517
|
+
return undefined;
|
|
518
|
+
}
|
|
519
|
+
return this.getBlockData(BlockNumber(blockNumber));
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
471
522
|
* Gets an L2 block.
|
|
472
523
|
* @param blockNumber - The number of the block to return.
|
|
473
524
|
* @returns The requested L2 block.
|
|
@@ -557,12 +608,19 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
557
608
|
];
|
|
558
609
|
}
|
|
559
610
|
}
|
|
611
|
+
getBlockDataFromBlockStorage(blockStorage) {
|
|
612
|
+
return {
|
|
613
|
+
header: BlockHeader.fromBuffer(blockStorage.header),
|
|
614
|
+
archive: AppendOnlyTreeSnapshot.fromBuffer(blockStorage.archive),
|
|
615
|
+
blockHash: Fr.fromBuffer(blockStorage.blockHash),
|
|
616
|
+
checkpointNumber: CheckpointNumber(blockStorage.checkpointNumber),
|
|
617
|
+
indexWithinCheckpoint: IndexWithinCheckpoint(blockStorage.indexWithinCheckpoint)
|
|
618
|
+
};
|
|
619
|
+
}
|
|
560
620
|
async getBlockFromBlockStorage(blockNumber, blockStorage) {
|
|
561
|
-
const header =
|
|
562
|
-
|
|
563
|
-
const
|
|
564
|
-
header.setHash(Fr.fromBuffer(blockHash));
|
|
565
|
-
const blockHashString = bufferToHex(blockHash);
|
|
621
|
+
const { header, archive, blockHash, checkpointNumber, indexWithinCheckpoint } = this.getBlockDataFromBlockStorage(blockStorage);
|
|
622
|
+
header.setHash(blockHash);
|
|
623
|
+
const blockHashString = bufferToHex(blockStorage.blockHash);
|
|
566
624
|
const blockTxsBuffer = await this.#blockTxs.getAsync(blockHashString);
|
|
567
625
|
if (blockTxsBuffer === undefined) {
|
|
568
626
|
this.#log.warn(`Could not find body for block ${header.globalVariables.blockNumber} ${blockHash}`);
|
|
@@ -580,7 +638,7 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
580
638
|
txEffects.push(deserializeIndexedTxEffect(txEffect).data);
|
|
581
639
|
}
|
|
582
640
|
const body = new Body(txEffects);
|
|
583
|
-
const block = new L2Block(archive, header, body,
|
|
641
|
+
const block = new L2Block(archive, header, body, checkpointNumber, indexWithinCheckpoint);
|
|
584
642
|
if (block.number !== blockNumber) {
|
|
585
643
|
throw new Error(`Block number mismatch when retrieving block from archive (expected ${blockNumber} but got ${block.number} with hash ${blockHashString})`);
|
|
586
644
|
}
|
|
@@ -601,17 +659,18 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
601
659
|
* Gets a receipt of a settled tx.
|
|
602
660
|
* @param txHash - The hash of a tx we try to get the receipt for.
|
|
603
661
|
* @returns The requested tx receipt (or undefined if not found).
|
|
604
|
-
*/ async getSettledTxReceipt(txHash) {
|
|
662
|
+
*/ async getSettledTxReceipt(txHash, l1Constants) {
|
|
605
663
|
const txEffect = await this.getTxEffect(txHash);
|
|
606
664
|
if (!txEffect) {
|
|
607
665
|
return undefined;
|
|
608
666
|
}
|
|
609
667
|
const blockNumber = BlockNumber(txEffect.l2BlockNumber);
|
|
610
668
|
// Use existing archiver methods to determine finalization level
|
|
611
|
-
const [provenBlockNumber, checkpointedBlockNumber, finalizedBlockNumber] = await Promise.all([
|
|
669
|
+
const [provenBlockNumber, checkpointedBlockNumber, finalizedBlockNumber, blockData] = await Promise.all([
|
|
612
670
|
this.getProvenBlockNumber(),
|
|
613
671
|
this.getCheckpointedL2BlockNumber(),
|
|
614
|
-
this.getFinalizedL2BlockNumber()
|
|
672
|
+
this.getFinalizedL2BlockNumber(),
|
|
673
|
+
this.getBlockData(blockNumber)
|
|
615
674
|
]);
|
|
616
675
|
let status;
|
|
617
676
|
if (blockNumber <= finalizedBlockNumber) {
|
|
@@ -623,7 +682,8 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
623
682
|
} else {
|
|
624
683
|
status = TxStatus.PROPOSED;
|
|
625
684
|
}
|
|
626
|
-
|
|
685
|
+
const epochNumber = blockData && l1Constants ? getEpochAtSlot(blockData.header.globalVariables.slotNumber, l1Constants) : undefined;
|
|
686
|
+
return new TxReceipt(txHash, status, TxReceipt.executionResultFromRevertCode(txEffect.data.revertCode), undefined, txEffect.data.transactionFee.toBigInt(), txEffect.l2BlockHash, blockNumber, epochNumber);
|
|
627
687
|
}
|
|
628
688
|
/**
|
|
629
689
|
* Looks up which block included the requested tx effect.
|
|
@@ -656,7 +716,7 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
656
716
|
if (!checkpoint) {
|
|
657
717
|
return BlockNumber(INITIAL_L2_BLOCK_NUM - 1);
|
|
658
718
|
}
|
|
659
|
-
return BlockNumber(checkpoint.startBlock + checkpoint.
|
|
719
|
+
return BlockNumber(checkpoint.startBlock + checkpoint.blockCount - 1);
|
|
660
720
|
}
|
|
661
721
|
async getLatestL2BlockNumber() {
|
|
662
722
|
const [lastBlockNumber] = await toArray(this.#blocks.keysAsync({
|
|
@@ -685,6 +745,16 @@ export { TxReceipt } from '@aztec/stdlib/tx';
|
|
|
685
745
|
const result = await this.#lastProvenCheckpoint.set(checkpointNumber);
|
|
686
746
|
return result;
|
|
687
747
|
}
|
|
748
|
+
async getFinalizedCheckpointNumber() {
|
|
749
|
+
const [latestCheckpointNumber, finalizedCheckpointNumber] = await Promise.all([
|
|
750
|
+
this.getLatestCheckpointNumber(),
|
|
751
|
+
this.#lastFinalizedCheckpoint.getAsync()
|
|
752
|
+
]);
|
|
753
|
+
return (finalizedCheckpointNumber ?? 0) > latestCheckpointNumber ? latestCheckpointNumber : CheckpointNumber(finalizedCheckpointNumber ?? 0);
|
|
754
|
+
}
|
|
755
|
+
setFinalizedCheckpointNumber(checkpointNumber) {
|
|
756
|
+
return this.#lastFinalizedCheckpoint.set(checkpointNumber);
|
|
757
|
+
}
|
|
688
758
|
#computeBlockRange(start, limit) {
|
|
689
759
|
if (limit < 1) {
|
|
690
760
|
throw new Error(`Invalid limit: ${limit}`);
|
|
@@ -4,8 +4,8 @@ import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
4
4
|
import type { AztecAsyncKVStore, CustomRange, StoreSize } from '@aztec/kv-store';
|
|
5
5
|
import { FunctionSelector } from '@aztec/stdlib/abi';
|
|
6
6
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
-
import { BlockHash, CheckpointedL2Block, L2Block, type ValidateCheckpointResult } from '@aztec/stdlib/block';
|
|
8
|
-
import type { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
7
|
+
import { type BlockData, BlockHash, CheckpointedL2Block, L2Block, type ValidateCheckpointResult } from '@aztec/stdlib/block';
|
|
8
|
+
import type { CheckpointData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
|
|
9
9
|
import type { ContractClassPublic, ContractDataSource, ContractInstanceUpdateWithAddress, ContractInstanceWithAddress, ExecutablePrivateFunctionWithMembershipProof, UtilityFunctionWithMembershipProof } from '@aztec/stdlib/contract';
|
|
10
10
|
import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
11
11
|
import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
@@ -13,7 +13,7 @@ import type { LogFilter, SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/log
|
|
|
13
13
|
import type { BlockHeader, TxHash, TxReceipt } from '@aztec/stdlib/tx';
|
|
14
14
|
import type { UInt64 } from '@aztec/stdlib/types';
|
|
15
15
|
import type { InboxMessage } from '../structs/inbox_message.js';
|
|
16
|
-
import {
|
|
16
|
+
import { BlockStore, type RemoveCheckpointsResult } from './block_store.js';
|
|
17
17
|
export declare const ARCHIVER_DB_VERSION = 5;
|
|
18
18
|
export declare const MAX_FUNCTION_SIGNATURES = 1000;
|
|
19
19
|
export declare const MAX_FUNCTION_NAME_LEN = 256;
|
|
@@ -35,7 +35,9 @@ export declare class KVArchiverDataStore implements ContractDataSource {
|
|
|
35
35
|
private db;
|
|
36
36
|
static readonly SCHEMA_VERSION = 5;
|
|
37
37
|
private functionNames;
|
|
38
|
-
constructor(db: AztecAsyncKVStore, logsMaxPageSize
|
|
38
|
+
constructor(db: AztecAsyncKVStore, logsMaxPageSize?: number);
|
|
39
|
+
/** Returns the underlying block store. Used by L2TipsCache. */
|
|
40
|
+
get blockStore(): BlockStore;
|
|
39
41
|
/** Opens a new transaction to the underlying store and runs all operations within it. */
|
|
40
42
|
transactionAsync<T>(callback: () => Promise<T>): Promise<T>;
|
|
41
43
|
getBlockNumber(): Promise<BlockNumber>;
|
|
@@ -189,6 +191,16 @@ export declare class KVArchiverDataStore implements ContractDataSource {
|
|
|
189
191
|
* @param archive - The archive root to return.
|
|
190
192
|
*/
|
|
191
193
|
getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
|
|
194
|
+
/**
|
|
195
|
+
* Gets block metadata (without tx data) by block number.
|
|
196
|
+
* @param blockNumber - The block number to return.
|
|
197
|
+
*/
|
|
198
|
+
getBlockData(blockNumber: BlockNumber): Promise<BlockData | undefined>;
|
|
199
|
+
/**
|
|
200
|
+
* Gets block metadata (without tx data) by archive root.
|
|
201
|
+
* @param archive - The archive root to return.
|
|
202
|
+
*/
|
|
203
|
+
getBlockDataByArchive(archive: Fr): Promise<BlockData | undefined>;
|
|
192
204
|
/**
|
|
193
205
|
* Gets a tx effect.
|
|
194
206
|
* @param txHash - The hash of the tx corresponding to the tx effect.
|
|
@@ -200,7 +212,7 @@ export declare class KVArchiverDataStore implements ContractDataSource {
|
|
|
200
212
|
* @param txHash - The hash of a tx we try to get the receipt for.
|
|
201
213
|
* @returns The requested tx receipt (or undefined if not found).
|
|
202
214
|
*/
|
|
203
|
-
getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
|
|
215
|
+
getSettledTxReceipt(txHash: TxHash, l1Constants?: Pick<L1RollupConstants, 'epochDuration'>): Promise<TxReceipt | undefined>;
|
|
204
216
|
/**
|
|
205
217
|
* Append new logs to the store's list.
|
|
206
218
|
* @param blocks - The blocks for which to add the logs.
|
|
@@ -270,6 +282,16 @@ export declare class KVArchiverDataStore implements ContractDataSource {
|
|
|
270
282
|
* @param checkpointNumber - The number of the latest proven checkpoint processed.
|
|
271
283
|
*/
|
|
272
284
|
setProvenCheckpointNumber(checkpointNumber: CheckpointNumber): Promise<void>;
|
|
285
|
+
/**
|
|
286
|
+
* Gets the number of the latest finalized checkpoint processed.
|
|
287
|
+
* @returns The number of the latest finalized checkpoint processed.
|
|
288
|
+
*/
|
|
289
|
+
getFinalizedCheckpointNumber(): Promise<CheckpointNumber>;
|
|
290
|
+
/**
|
|
291
|
+
* Stores the number of the latest finalized checkpoint processed.
|
|
292
|
+
* @param checkpointNumber - The number of the latest finalized checkpoint processed.
|
|
293
|
+
*/
|
|
294
|
+
setFinalizedCheckpointNumber(checkpointNumber: CheckpointNumber): Promise<void>;
|
|
273
295
|
setBlockSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<void>;
|
|
274
296
|
/**
|
|
275
297
|
* Stores the l1 block that messages have been synched until
|
|
@@ -323,6 +345,8 @@ export declare class KVArchiverDataStore implements ContractDataSource {
|
|
|
323
345
|
* @returns The checkpoint data or undefined if not found
|
|
324
346
|
*/
|
|
325
347
|
getCheckpointData(checkpointNumber: CheckpointNumber): Promise<CheckpointData | undefined>;
|
|
348
|
+
/** Returns checkpoint data for all checkpoints whose slot falls within the given range (inclusive). */
|
|
349
|
+
getCheckpointDataForSlotRange(startSlot: SlotNumber, endSlot: SlotNumber): Promise<CheckpointData[]>;
|
|
326
350
|
/**
|
|
327
351
|
* Gets all blocks that have the given slot number.
|
|
328
352
|
* @param slotNumber - The slot number to search for.
|
|
@@ -337,4 +361,4 @@ export declare class KVArchiverDataStore implements ContractDataSource {
|
|
|
337
361
|
*/
|
|
338
362
|
removeBlocksAfter(blockNumber: BlockNumber): Promise<L2Block[]>;
|
|
339
363
|
}
|
|
340
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3ZfYXJjaGl2ZXJfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZS9rdl9hcmNoaXZlcl9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakcsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHekQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLEtBQUssd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sS0FBSyxFQUNWLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsaUNBQWlDLEVBQ2pDLDJCQUEyQixFQUMzQiw0Q0FBNEMsRUFDNUMsa0NBQWtDLEVBQ25DLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNHLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFD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
|
|
364
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3ZfYXJjaGl2ZXJfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZS9rdl9hcmNoaXZlcl9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakcsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHekQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxLQUFLLFNBQVMsRUFDZCxTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxLQUFLLHdCQUF3QixFQUM5QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sS0FBSyxFQUNWLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsaUNBQWlDLEVBQ2pDLDJCQUEyQixFQUMzQiw0Q0FBNEMsRUFDNUMsa0NBQWtDLEVBQ25DLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNHLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kv_archiver_store.d.ts","sourceRoot":"","sources":["../../src/store/kv_archiver_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,
|
|
1
|
+
{"version":3,"file":"kv_archiver_store.d.ts","sourceRoot":"","sources":["../../src/store/kv_archiver_store.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,16 +23,19 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
23
23
|
#contractInstanceStore;
|
|
24
24
|
functionNames;
|
|
25
25
|
#log;
|
|
26
|
-
constructor(db, logsMaxPageSize = 1000
|
|
26
|
+
constructor(db, logsMaxPageSize = 1000){
|
|
27
27
|
this.db = db;
|
|
28
28
|
this.functionNames = new Map();
|
|
29
29
|
this.#log = createLogger('archiver:data-store');
|
|
30
|
-
this.#blockStore = new BlockStore(db
|
|
30
|
+
this.#blockStore = new BlockStore(db);
|
|
31
31
|
this.#logStore = new LogStore(db, this.#blockStore, logsMaxPageSize);
|
|
32
32
|
this.#messageStore = new MessageStore(db);
|
|
33
33
|
this.#contractClassStore = new ContractClassStore(db);
|
|
34
34
|
this.#contractInstanceStore = new ContractInstanceStore(db);
|
|
35
35
|
}
|
|
36
|
+
/** Returns the underlying block store. Used by L2TipsCache. */ get blockStore() {
|
|
37
|
+
return this.#blockStore;
|
|
38
|
+
}
|
|
36
39
|
/** Opens a new transaction to the underlying store and runs all operations within it. */ transactionAsync(callback) {
|
|
37
40
|
return this.db.transactionAsync(callback);
|
|
38
41
|
}
|
|
@@ -240,6 +243,18 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
240
243
|
return this.#blockStore.getBlockHeaderByArchive(archive);
|
|
241
244
|
}
|
|
242
245
|
/**
|
|
246
|
+
* Gets block metadata (without tx data) by block number.
|
|
247
|
+
* @param blockNumber - The block number to return.
|
|
248
|
+
*/ getBlockData(blockNumber) {
|
|
249
|
+
return this.#blockStore.getBlockData(blockNumber);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Gets block metadata (without tx data) by archive root.
|
|
253
|
+
* @param archive - The archive root to return.
|
|
254
|
+
*/ getBlockDataByArchive(archive) {
|
|
255
|
+
return this.#blockStore.getBlockDataByArchive(archive);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
243
258
|
* Gets a tx effect.
|
|
244
259
|
* @param txHash - The hash of the tx corresponding to the tx effect.
|
|
245
260
|
* @returns The requested tx effect with block info (or undefined if not found).
|
|
@@ -250,8 +265,8 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
250
265
|
* Gets a receipt of a settled tx.
|
|
251
266
|
* @param txHash - The hash of a tx we try to get the receipt for.
|
|
252
267
|
* @returns The requested tx receipt (or undefined if not found).
|
|
253
|
-
*/ getSettledTxReceipt(txHash) {
|
|
254
|
-
return this.#blockStore.getSettledTxReceipt(txHash);
|
|
268
|
+
*/ getSettledTxReceipt(txHash, l1Constants) {
|
|
269
|
+
return this.#blockStore.getSettledTxReceipt(txHash, l1Constants);
|
|
255
270
|
}
|
|
256
271
|
/**
|
|
257
272
|
* Append new logs to the store's list.
|
|
@@ -352,6 +367,18 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
352
367
|
*/ async setProvenCheckpointNumber(checkpointNumber) {
|
|
353
368
|
await this.#blockStore.setProvenCheckpointNumber(checkpointNumber);
|
|
354
369
|
}
|
|
370
|
+
/**
|
|
371
|
+
* Gets the number of the latest finalized checkpoint processed.
|
|
372
|
+
* @returns The number of the latest finalized checkpoint processed.
|
|
373
|
+
*/ getFinalizedCheckpointNumber() {
|
|
374
|
+
return this.#blockStore.getFinalizedCheckpointNumber();
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Stores the number of the latest finalized checkpoint processed.
|
|
378
|
+
* @param checkpointNumber - The number of the latest finalized checkpoint processed.
|
|
379
|
+
*/ async setFinalizedCheckpointNumber(checkpointNumber) {
|
|
380
|
+
await this.#blockStore.setFinalizedCheckpointNumber(checkpointNumber);
|
|
381
|
+
}
|
|
355
382
|
async setBlockSynchedL1BlockNumber(l1BlockNumber) {
|
|
356
383
|
await this.#blockStore.setSynchedL1BlockNumber(l1BlockNumber);
|
|
357
384
|
}
|
|
@@ -428,6 +455,9 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
428
455
|
*/ getCheckpointData(checkpointNumber) {
|
|
429
456
|
return this.#blockStore.getCheckpointData(checkpointNumber);
|
|
430
457
|
}
|
|
458
|
+
/** Returns checkpoint data for all checkpoints whose slot falls within the given range (inclusive). */ getCheckpointDataForSlotRange(startSlot, endSlot) {
|
|
459
|
+
return this.#blockStore.getCheckpointDataForSlotRange(startSlot, endSlot);
|
|
460
|
+
}
|
|
431
461
|
/**
|
|
432
462
|
* Gets all blocks that have the given slot number.
|
|
433
463
|
* @param slotNumber - The slot number to search for.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type L2Tips } from '@aztec/stdlib/block';
|
|
2
|
+
import type { BlockStore } from './block_store.js';
|
|
3
|
+
/**
|
|
4
|
+
* In-memory cache for L2 chain tips (proposed, checkpointed, proven, finalized).
|
|
5
|
+
* Populated from the BlockStore on first access, then kept up-to-date by the ArchiverDataStoreUpdater.
|
|
6
|
+
* Refresh calls should happen within the store transaction that mutates block data to ensure consistency.
|
|
7
|
+
*/
|
|
8
|
+
export declare class L2TipsCache {
|
|
9
|
+
#private;
|
|
10
|
+
private blockStore;
|
|
11
|
+
constructor(blockStore: BlockStore);
|
|
12
|
+
/** Returns the cached L2 tips. Loads from the block store on first call. */
|
|
13
|
+
getL2Tips(): Promise<L2Tips>;
|
|
14
|
+
/** Reloads the L2 tips from the block store. Should be called within the store transaction that mutates data. */
|
|
15
|
+
refresh(): Promise<void>;
|
|
16
|
+
private loadFromStore;
|
|
17
|
+
private getCheckpointIdForBlock;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDJfdGlwc19jYWNoZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JlL2wyX3RpcHNfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFxRSxLQUFLLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJILE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5EOzs7O0dBSUc7QUFDSCxxQkFBYSxXQUFXOztJQUdWLE9BQU8sQ0FBQyxVQUFVO0lBQTlCLFlBQW9CLFVBQVUsRUFBRSxVQUFVLEVBQUk7SUFFOUMsNEVBQTRFO0lBQ3JFLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRWxDO0lBRUQsaUhBQWlIO0lBQ3BHLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBR3BDO1lBRWEsYUFBYTtZQWdEYix1QkFBdUI7Q0FhdEMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"l2_tips_cache.d.ts","sourceRoot":"","sources":["../../src/store/l2_tips_cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAErH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,qBAAa,WAAW;;IAGV,OAAO,CAAC,UAAU;IAA9B,YAAoB,UAAU,EAAE,UAAU,EAAI;IAE9C,4EAA4E;IACrE,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAElC;IAED,iHAAiH;IACpG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpC;YAEa,aAAa;YAgDb,uBAAuB;CAatC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { GENESIS_BLOCK_HEADER_HASH, INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
2
|
+
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { GENESIS_CHECKPOINT_HEADER_HASH } from '@aztec/stdlib/block';
|
|
4
|
+
/**
|
|
5
|
+
* In-memory cache for L2 chain tips (proposed, checkpointed, proven, finalized).
|
|
6
|
+
* Populated from the BlockStore on first access, then kept up-to-date by the ArchiverDataStoreUpdater.
|
|
7
|
+
* Refresh calls should happen within the store transaction that mutates block data to ensure consistency.
|
|
8
|
+
*/ export class L2TipsCache {
|
|
9
|
+
blockStore;
|
|
10
|
+
#tipsPromise;
|
|
11
|
+
constructor(blockStore){
|
|
12
|
+
this.blockStore = blockStore;
|
|
13
|
+
}
|
|
14
|
+
/** Returns the cached L2 tips. Loads from the block store on first call. */ getL2Tips() {
|
|
15
|
+
return this.#tipsPromise ??= this.loadFromStore();
|
|
16
|
+
}
|
|
17
|
+
/** Reloads the L2 tips from the block store. Should be called within the store transaction that mutates data. */ async refresh() {
|
|
18
|
+
this.#tipsPromise = this.loadFromStore();
|
|
19
|
+
await this.#tipsPromise;
|
|
20
|
+
}
|
|
21
|
+
async loadFromStore() {
|
|
22
|
+
const [latestBlockNumber, provenBlockNumber, checkpointedBlockNumber, finalizedBlockNumber] = await Promise.all([
|
|
23
|
+
this.blockStore.getLatestBlockNumber(),
|
|
24
|
+
this.blockStore.getProvenBlockNumber(),
|
|
25
|
+
this.blockStore.getCheckpointedL2BlockNumber(),
|
|
26
|
+
this.blockStore.getFinalizedL2BlockNumber()
|
|
27
|
+
]);
|
|
28
|
+
const genesisBlockHeader = {
|
|
29
|
+
blockHash: GENESIS_BLOCK_HEADER_HASH,
|
|
30
|
+
checkpointNumber: CheckpointNumber.ZERO
|
|
31
|
+
};
|
|
32
|
+
const beforeInitialBlockNumber = BlockNumber(INITIAL_L2_BLOCK_NUM - 1);
|
|
33
|
+
const getBlockData = (blockNumber)=>blockNumber > beforeInitialBlockNumber ? this.blockStore.getBlockData(blockNumber) : genesisBlockHeader;
|
|
34
|
+
const [latestBlockData, provenBlockData, checkpointedBlockData, finalizedBlockData] = await Promise.all([
|
|
35
|
+
latestBlockNumber,
|
|
36
|
+
provenBlockNumber,
|
|
37
|
+
checkpointedBlockNumber,
|
|
38
|
+
finalizedBlockNumber
|
|
39
|
+
].map(getBlockData));
|
|
40
|
+
if (!latestBlockData || !provenBlockData || !finalizedBlockData || !checkpointedBlockData) {
|
|
41
|
+
throw new Error('Failed to load block data for L2 tips');
|
|
42
|
+
}
|
|
43
|
+
const [provenCheckpointId, finalizedCheckpointId, checkpointedCheckpointId] = await Promise.all([
|
|
44
|
+
this.getCheckpointIdForBlock(provenBlockData),
|
|
45
|
+
this.getCheckpointIdForBlock(finalizedBlockData),
|
|
46
|
+
this.getCheckpointIdForBlock(checkpointedBlockData)
|
|
47
|
+
]);
|
|
48
|
+
return {
|
|
49
|
+
proposed: {
|
|
50
|
+
number: latestBlockNumber,
|
|
51
|
+
hash: latestBlockData.blockHash.toString()
|
|
52
|
+
},
|
|
53
|
+
proven: {
|
|
54
|
+
block: {
|
|
55
|
+
number: provenBlockNumber,
|
|
56
|
+
hash: provenBlockData.blockHash.toString()
|
|
57
|
+
},
|
|
58
|
+
checkpoint: provenCheckpointId
|
|
59
|
+
},
|
|
60
|
+
finalized: {
|
|
61
|
+
block: {
|
|
62
|
+
number: finalizedBlockNumber,
|
|
63
|
+
hash: finalizedBlockData.blockHash.toString()
|
|
64
|
+
},
|
|
65
|
+
checkpoint: finalizedCheckpointId
|
|
66
|
+
},
|
|
67
|
+
checkpointed: {
|
|
68
|
+
block: {
|
|
69
|
+
number: checkpointedBlockNumber,
|
|
70
|
+
hash: checkpointedBlockData.blockHash.toString()
|
|
71
|
+
},
|
|
72
|
+
checkpoint: checkpointedCheckpointId
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async getCheckpointIdForBlock(blockData) {
|
|
77
|
+
const checkpointData = await this.blockStore.getCheckpointData(blockData.checkpointNumber);
|
|
78
|
+
if (!checkpointData) {
|
|
79
|
+
return {
|
|
80
|
+
number: CheckpointNumber.ZERO,
|
|
81
|
+
hash: GENESIS_CHECKPOINT_HEADER_HASH.toString()
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
number: checkpointData.checkpointNumber,
|
|
86
|
+
hash: checkpointData.header.hash().toString()
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|