@aztec/archiver 0.0.1-commit.9593d84 → 0.0.1-commit.96bb3f7

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.
Files changed (128) hide show
  1. package/README.md +14 -14
  2. package/dest/archiver/archiver.d.ts +105 -85
  3. package/dest/archiver/archiver.d.ts.map +1 -1
  4. package/dest/archiver/archiver.js +949 -255
  5. package/dest/archiver/archiver_store.d.ts +109 -49
  6. package/dest/archiver/archiver_store.d.ts.map +1 -1
  7. package/dest/archiver/archiver_store_test_suite.d.ts +1 -1
  8. package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
  9. package/dest/archiver/archiver_store_test_suite.js +1871 -390
  10. package/dest/archiver/config.d.ts +5 -4
  11. package/dest/archiver/config.d.ts.map +1 -1
  12. package/dest/archiver/config.js +12 -5
  13. package/dest/archiver/errors.d.ts +25 -1
  14. package/dest/archiver/errors.d.ts.map +1 -1
  15. package/dest/archiver/errors.js +37 -0
  16. package/dest/archiver/index.d.ts +2 -2
  17. package/dest/archiver/index.d.ts.map +1 -1
  18. package/dest/archiver/instrumentation.d.ts +3 -1
  19. package/dest/archiver/instrumentation.d.ts.map +1 -1
  20. package/dest/archiver/instrumentation.js +22 -59
  21. package/dest/archiver/kv_archiver_store/block_store.d.ts +60 -20
  22. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
  23. package/dest/archiver/kv_archiver_store/block_store.js +345 -89
  24. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +2 -2
  25. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
  26. package/dest/archiver/kv_archiver_store/contract_class_store.js +1 -1
  27. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +2 -2
  28. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
  29. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +49 -58
  30. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
  31. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +68 -48
  32. package/dest/archiver/kv_archiver_store/log_store.d.ts +12 -16
  33. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
  34. package/dest/archiver/kv_archiver_store/log_store.js +149 -84
  35. package/dest/archiver/kv_archiver_store/message_store.d.ts +6 -5
  36. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
  37. package/dest/archiver/kv_archiver_store/message_store.js +15 -14
  38. package/dest/archiver/l1/bin/retrieve-calldata.d.ts +3 -0
  39. package/dest/archiver/l1/bin/retrieve-calldata.d.ts.map +1 -0
  40. package/dest/archiver/l1/bin/retrieve-calldata.js +149 -0
  41. package/dest/archiver/l1/calldata_retriever.d.ts +112 -0
  42. package/dest/archiver/l1/calldata_retriever.d.ts.map +1 -0
  43. package/dest/archiver/l1/calldata_retriever.js +471 -0
  44. package/dest/archiver/l1/data_retrieval.d.ts +90 -0
  45. package/dest/archiver/l1/data_retrieval.d.ts.map +1 -0
  46. package/dest/archiver/{data_retrieval.js → l1/data_retrieval.js} +52 -107
  47. package/dest/archiver/l1/debug_tx.d.ts +19 -0
  48. package/dest/archiver/l1/debug_tx.d.ts.map +1 -0
  49. package/dest/archiver/l1/debug_tx.js +73 -0
  50. package/dest/archiver/l1/spire_proposer.d.ts +70 -0
  51. package/dest/archiver/l1/spire_proposer.d.ts.map +1 -0
  52. package/dest/archiver/l1/spire_proposer.js +157 -0
  53. package/dest/archiver/l1/trace_tx.d.ts +97 -0
  54. package/dest/archiver/l1/trace_tx.d.ts.map +1 -0
  55. package/dest/archiver/l1/trace_tx.js +91 -0
  56. package/dest/archiver/l1/types.d.ts +12 -0
  57. package/dest/archiver/l1/types.d.ts.map +1 -0
  58. package/dest/archiver/l1/types.js +3 -0
  59. package/dest/archiver/l1/validate_trace.d.ts +29 -0
  60. package/dest/archiver/l1/validate_trace.d.ts.map +1 -0
  61. package/dest/archiver/l1/validate_trace.js +150 -0
  62. package/dest/archiver/structs/inbox_message.d.ts +4 -4
  63. package/dest/archiver/structs/inbox_message.d.ts.map +1 -1
  64. package/dest/archiver/structs/inbox_message.js +6 -5
  65. package/dest/archiver/structs/published.d.ts +1 -2
  66. package/dest/archiver/structs/published.d.ts.map +1 -1
  67. package/dest/archiver/validation.d.ts +4 -4
  68. package/dest/archiver/validation.d.ts.map +1 -1
  69. package/dest/archiver/validation.js +1 -1
  70. package/dest/factory.d.ts +2 -2
  71. package/dest/factory.d.ts.map +1 -1
  72. package/dest/factory.js +4 -3
  73. package/dest/index.d.ts +2 -2
  74. package/dest/index.d.ts.map +1 -1
  75. package/dest/index.js +1 -1
  76. package/dest/test/mock_archiver.d.ts +16 -8
  77. package/dest/test/mock_archiver.d.ts.map +1 -1
  78. package/dest/test/mock_archiver.js +19 -14
  79. package/dest/test/mock_l1_to_l2_message_source.d.ts +7 -6
  80. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
  81. package/dest/test/mock_l1_to_l2_message_source.js +21 -11
  82. package/dest/test/mock_l2_block_source.d.ts +23 -8
  83. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  84. package/dest/test/mock_l2_block_source.js +95 -35
  85. package/dest/test/mock_structs.d.ts +3 -2
  86. package/dest/test/mock_structs.d.ts.map +1 -1
  87. package/dest/test/mock_structs.js +9 -8
  88. package/package.json +17 -16
  89. package/src/archiver/archiver.ts +751 -344
  90. package/src/archiver/archiver_store.ts +123 -48
  91. package/src/archiver/archiver_store_test_suite.ts +1943 -365
  92. package/src/archiver/config.ts +17 -12
  93. package/src/archiver/errors.ts +64 -0
  94. package/src/archiver/index.ts +1 -1
  95. package/src/archiver/instrumentation.ts +24 -59
  96. package/src/archiver/kv_archiver_store/block_store.ts +475 -106
  97. package/src/archiver/kv_archiver_store/contract_class_store.ts +1 -1
  98. package/src/archiver/kv_archiver_store/contract_instance_store.ts +1 -1
  99. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +92 -72
  100. package/src/archiver/kv_archiver_store/log_store.ts +209 -99
  101. package/src/archiver/kv_archiver_store/message_store.ts +21 -18
  102. package/src/archiver/l1/README.md +98 -0
  103. package/src/archiver/l1/bin/retrieve-calldata.ts +182 -0
  104. package/src/archiver/l1/calldata_retriever.ts +641 -0
  105. package/src/archiver/{data_retrieval.ts → l1/data_retrieval.ts} +101 -165
  106. package/src/archiver/l1/debug_tx.ts +99 -0
  107. package/src/archiver/l1/spire_proposer.ts +160 -0
  108. package/src/archiver/l1/trace_tx.ts +128 -0
  109. package/src/archiver/l1/types.ts +13 -0
  110. package/src/archiver/l1/validate_trace.ts +211 -0
  111. package/src/archiver/structs/inbox_message.ts +8 -8
  112. package/src/archiver/structs/published.ts +0 -1
  113. package/src/archiver/validation.ts +6 -6
  114. package/src/factory.ts +4 -3
  115. package/src/index.ts +1 -1
  116. package/src/test/fixtures/debug_traceTransaction-multicall3.json +88 -0
  117. package/src/test/fixtures/debug_traceTransaction-multiplePropose.json +153 -0
  118. package/src/test/fixtures/debug_traceTransaction-proxied.json +122 -0
  119. package/src/test/fixtures/trace_transaction-multicall3.json +65 -0
  120. package/src/test/fixtures/trace_transaction-multiplePropose.json +319 -0
  121. package/src/test/fixtures/trace_transaction-proxied.json +128 -0
  122. package/src/test/fixtures/trace_transaction-randomRevert.json +216 -0
  123. package/src/test/mock_archiver.ts +22 -16
  124. package/src/test/mock_l1_to_l2_message_source.ts +18 -11
  125. package/src/test/mock_l2_block_source.ts +115 -37
  126. package/src/test/mock_structs.ts +10 -9
  127. package/dest/archiver/data_retrieval.d.ts +0 -79
  128. package/dest/archiver/data_retrieval.d.ts.map +0 -1
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { toArray } from '@aztec/foundation/iterable';
3
3
  import { BufferReader, numToUInt8, serializeToBuffer } from '@aztec/foundation/serialize';
4
4
  import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
@@ -1,4 +1,4 @@
1
- import type { Fr } from '@aztec/foundation/fields';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import {
@@ -1,11 +1,13 @@
1
- import type { L1BlockId } from '@aztec/ethereum';
2
- import type { Fr } from '@aztec/foundation/fields';
1
+ import type { L1BlockId } from '@aztec/ethereum/l1-types';
2
+ import type { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
3
+ import type { Fr } from '@aztec/foundation/curves/bn254';
3
4
  import { toArray } from '@aztec/foundation/iterable';
4
5
  import { createLogger } from '@aztec/foundation/log';
5
6
  import type { AztecAsyncKVStore, CustomRange, StoreSize } from '@aztec/kv-store';
6
7
  import { FunctionSelector } from '@aztec/stdlib/abi';
7
8
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
8
- import { type L2Block, L2BlockHash, type ValidateBlockResult } from '@aztec/stdlib/block';
9
+ import { CheckpointedL2Block, L2BlockHash, L2BlockNew, type ValidateCheckpointResult } from '@aztec/stdlib/block';
10
+ import type { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
9
11
  import type {
10
12
  ContractClassPublic,
11
13
  ContractDataSource,
@@ -15,7 +17,7 @@ import type {
15
17
  UtilityFunctionWithMembershipProof,
16
18
  } from '@aztec/stdlib/contract';
17
19
  import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
18
- import { type LogFilter, PrivateLog, type TxScopedL2Log } from '@aztec/stdlib/logs';
20
+ import type { LogFilter, SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
19
21
  import type { BlockHeader, TxHash, TxReceipt } from '@aztec/stdlib/tx';
20
22
  import type { UInt64 } from '@aztec/stdlib/types';
21
23
 
@@ -23,14 +25,13 @@ import { join } from 'path';
23
25
 
24
26
  import type { ArchiverDataStore, ArchiverL1SynchPoint } from '../archiver_store.js';
25
27
  import type { InboxMessage } from '../structs/inbox_message.js';
26
- import type { PublishedL2Block } from '../structs/published.js';
27
- import { BlockStore } from './block_store.js';
28
+ import { BlockStore, type CheckpointData } from './block_store.js';
28
29
  import { ContractClassStore } from './contract_class_store.js';
29
30
  import { ContractInstanceStore } from './contract_instance_store.js';
30
31
  import { LogStore } from './log_store.js';
31
32
  import { MessageStore } from './message_store.js';
32
33
 
33
- export const ARCHIVER_DB_VERSION = 3;
34
+ export const ARCHIVER_DB_VERSION = 5;
34
35
  export const MAX_FUNCTION_SIGNATURES = 1000;
35
36
  export const MAX_FUNCTION_NAME_LEN = 256;
36
37
 
@@ -65,8 +66,8 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
65
66
  return this.db.transactionAsync(callback);
66
67
  }
67
68
 
68
- public getBlockNumber(): Promise<number> {
69
- return this.getSynchedL2BlockNumber();
69
+ public getBlockNumber(): Promise<BlockNumber> {
70
+ return this.#blockStore.getLatestL2BlockNumber();
70
71
  }
71
72
 
72
73
  public async getContract(
@@ -124,7 +125,7 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
124
125
  async addContractClasses(
125
126
  data: ContractClassPublic[],
126
127
  bytecodeCommitments: Fr[],
127
- blockNumber: number,
128
+ blockNumber: BlockNumber,
128
129
  ): Promise<boolean> {
129
130
  return (
130
131
  await Promise.all(
@@ -133,7 +134,7 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
133
134
  ).every(Boolean);
134
135
  }
135
136
 
136
- async deleteContractClasses(data: ContractClassPublic[], blockNumber: number): Promise<boolean> {
137
+ async deleteContractClasses(data: ContractClassPublic[], blockNumber: BlockNumber): Promise<boolean> {
137
138
  return (await Promise.all(data.map(c => this.#contractClassStore.deleteContractClasses(c, blockNumber)))).every(
138
139
  Boolean,
139
140
  );
@@ -151,13 +152,13 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
151
152
  return this.#contractClassStore.addFunctions(contractClassId, privateFunctions, utilityFunctions);
152
153
  }
153
154
 
154
- async addContractInstances(data: ContractInstanceWithAddress[], blockNumber: number): Promise<boolean> {
155
+ async addContractInstances(data: ContractInstanceWithAddress[], blockNumber: BlockNumber): Promise<boolean> {
155
156
  return (await Promise.all(data.map(c => this.#contractInstanceStore.addContractInstance(c, blockNumber)))).every(
156
157
  Boolean,
157
158
  );
158
159
  }
159
160
 
160
- async deleteContractInstances(data: ContractInstanceWithAddress[], _blockNumber: number): Promise<boolean> {
161
+ async deleteContractInstances(data: ContractInstanceWithAddress[], _blockNumber: BlockNumber): Promise<boolean> {
161
162
  return (await Promise.all(data.map(c => this.#contractInstanceStore.deleteContractInstance(c)))).every(Boolean);
162
163
  }
163
164
 
@@ -185,42 +186,56 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
185
186
  * @param blocks - The L2 blocks to be added to the store and the last processed L1 block.
186
187
  * @returns True if the operation is successful.
187
188
  */
188
- addBlocks(blocks: PublishedL2Block[], opts: { force?: boolean } = {}): Promise<boolean> {
189
+ addBlocks(blocks: L2BlockNew[], opts: { force?: boolean; checkpointNumber?: number } = {}): Promise<boolean> {
189
190
  return this.#blockStore.addBlocks(blocks, opts);
190
191
  }
191
192
 
193
+ getRangeOfCheckpoints(from: CheckpointNumber, limit: number): Promise<CheckpointData[]> {
194
+ return this.#blockStore.getRangeOfCheckpoints(from, limit);
195
+ }
196
+ getLatestBlockNumber(): Promise<BlockNumber> {
197
+ return this.#blockStore.getLatestBlockNumber();
198
+ }
199
+
192
200
  /**
193
- * Unwinds blocks from the database
201
+ * Unwinds checkpoints from the database
194
202
  * @param from - The tip of the chain, passed for verification purposes,
195
203
  * ensuring that we don't end up deleting something we did not intend
196
- * @param blocksToUnwind - The number of blocks we are to unwind
204
+ * @param checkpointsToUnwind - The number of checkpoints we are to unwind
197
205
  * @returns True if the operation is successful
198
206
  */
199
- unwindBlocks(from: number, blocksToUnwind: number): Promise<boolean> {
200
- return this.#blockStore.unwindBlocks(from, blocksToUnwind);
207
+ unwindCheckpoints(from: CheckpointNumber, checkpointsToUnwind: number): Promise<boolean> {
208
+ return this.#blockStore.unwindCheckpoints(from, checkpointsToUnwind);
201
209
  }
202
210
 
203
- getPublishedBlock(number: number): Promise<PublishedL2Block | undefined> {
204
- return this.#blockStore.getBlock(number);
211
+ addCheckpoints(checkpoints: PublishedCheckpoint[]): Promise<boolean> {
212
+ return this.#blockStore.addCheckpoints(checkpoints);
205
213
  }
206
214
 
207
- getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined> {
215
+ getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined> {
216
+ return this.#blockStore.getCheckpointedBlock(number);
217
+ }
218
+ getCheckpointedBlockByHash(blockHash: Fr): Promise<CheckpointedL2Block | undefined> {
219
+ return this.#blockStore.getCheckpointedBlockByHash(blockHash);
220
+ }
221
+ getCheckpointedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined> {
222
+ return this.#blockStore.getCheckpointedBlockByArchive(archive);
223
+ }
224
+ getBlock(number: BlockNumber): Promise<L2BlockNew | undefined> {
225
+ return this.#blockStore.getBlock(number);
226
+ }
227
+ getBlockByHash(blockHash: Fr): Promise<L2BlockNew | undefined> {
208
228
  return this.#blockStore.getBlockByHash(L2BlockHash.fromField(blockHash));
209
229
  }
210
-
211
- getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined> {
230
+ getBlockByArchive(archive: Fr): Promise<L2BlockNew | undefined> {
212
231
  return this.#blockStore.getBlockByArchive(archive);
213
232
  }
233
+ getBlocks(from: BlockNumber, limit: BlockNumber): Promise<L2BlockNew[]> {
234
+ return toArray(this.#blockStore.getBlocks(from, limit));
235
+ }
214
236
 
215
- /**
216
- * Gets up to `limit` amount of L2 blocks starting from `from`.
217
- *
218
- * @param start - Number of the first block to return (inclusive).
219
- * @param limit - The number of blocks to return.
220
- * @returns The requested L2 blocks
221
- */
222
- getPublishedBlocks(start: number, limit: number): Promise<PublishedL2Block[]> {
223
- return toArray(this.#blockStore.getBlocks(start, limit));
237
+ getCheckpointedBlocks(from: BlockNumber, limit: number): Promise<CheckpointedL2Block[]> {
238
+ return toArray(this.#blockStore.getCheckpointedBlocks(from, limit));
224
239
  }
225
240
 
226
241
  /**
@@ -230,7 +245,7 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
230
245
  * @param limit - The number of blocks to return.
231
246
  * @returns The requested L2 blocks
232
247
  */
233
- getBlockHeaders(start: number, limit: number): Promise<BlockHeader[]> {
248
+ getBlockHeaders(start: BlockNumber, limit: number): Promise<BlockHeader[]> {
234
249
  return toArray(this.#blockStore.getBlockHeaders(start, limit));
235
250
  }
236
251
 
@@ -265,11 +280,11 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
265
280
  * @param blocks - The blocks for which to add the logs.
266
281
  * @returns True if the operation is successful.
267
282
  */
268
- addLogs(blocks: L2Block[]): Promise<boolean> {
283
+ addLogs(blocks: L2BlockNew[]): Promise<boolean> {
269
284
  return this.#logStore.addLogs(blocks);
270
285
  }
271
286
 
272
- deleteLogs(blocks: L2Block[]): Promise<boolean> {
287
+ deleteLogs(blocks: L2BlockNew[]): Promise<boolean> {
273
288
  return this.#logStore.deleteLogs(blocks);
274
289
  }
275
290
 
@@ -299,34 +314,25 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
299
314
  }
300
315
 
301
316
  /**
302
- * Gets L1 to L2 message (to be) included in a given block.
303
- * @param blockNumber - L2 block number to get messages for.
317
+ * Gets L1 to L2 message (to be) included in a given checkpoint.
318
+ * @param checkpointNumber - Checkpoint number to get messages for.
304
319
  * @returns The L1 to L2 messages/leaves of the messages subtree (throws if not found).
305
320
  */
306
- getL1ToL2Messages(blockNumber: number): Promise<Fr[]> {
307
- return this.#messageStore.getL1ToL2Messages(blockNumber);
321
+ getL1ToL2Messages(checkpointNumber: CheckpointNumber): Promise<Fr[]> {
322
+ return this.#messageStore.getL1ToL2Messages(checkpointNumber);
308
323
  }
309
324
 
310
- /**
311
- * Retrieves all private logs from up to `limit` blocks, starting from the block number `from`.
312
- * @param from - The block number from which to begin retrieving logs.
313
- * @param limit - The maximum number of blocks to retrieve logs from.
314
- * @returns An array of private logs from the specified range of blocks.
315
- */
316
- getPrivateLogs(from: number, limit: number): Promise<PrivateLog[]> {
317
- return this.#logStore.getPrivateLogs(from, limit);
325
+ getPrivateLogsByTags(tags: SiloedTag[]): Promise<TxScopedL2Log[][]> {
326
+ try {
327
+ return this.#logStore.getPrivateLogsByTags(tags);
328
+ } catch (err) {
329
+ return Promise.reject(err);
330
+ }
318
331
  }
319
332
 
320
- /**
321
- * Gets all logs that match any of the received tags (i.e. logs with their first field equal to a tag).
322
- * @param tags - The tags to filter the logs by.
323
- * @param logsPerTag - How many logs to return per tag. Default returns everything
324
- * @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
325
- * that tag.
326
- */
327
- getLogsByTags(tags: Fr[], logsPerTag?: number): Promise<TxScopedL2Log[][]> {
333
+ getPublicLogsByTagsFromContract(contractAddress: AztecAddress, tags: Tag[]): Promise<TxScopedL2Log[][]> {
328
334
  try {
329
- return this.#logStore.getLogsByTags(tags, logsPerTag);
335
+ return this.#logStore.getPublicLogsByTagsFromContract(contractAddress, tags);
330
336
  } catch (err) {
331
337
  return Promise.reject(err);
332
338
  }
@@ -358,20 +364,12 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
358
364
  }
359
365
  }
360
366
 
361
- /**
362
- * Gets the number of the latest L2 block processed.
363
- * @returns The number of the latest L2 block processed.
364
- */
365
- getSynchedL2BlockNumber(): Promise<number> {
366
- return this.#blockStore.getSynchedL2BlockNumber();
367
+ getProvenCheckpointNumber(): Promise<CheckpointNumber> {
368
+ return this.#blockStore.getProvenCheckpointNumber();
367
369
  }
368
370
 
369
- getProvenL2BlockNumber(): Promise<number> {
370
- return this.#blockStore.getProvenL2BlockNumber();
371
- }
372
-
373
- async setProvenL2BlockNumber(blockNumber: number) {
374
- await this.#blockStore.setProvenL2BlockNumber(blockNumber);
371
+ async setProvenCheckpointNumber(checkpointNumber: CheckpointNumber) {
372
+ await this.#blockStore.setProvenCheckpointNumber(checkpointNumber);
375
373
  }
376
374
 
377
375
  async setBlockSynchedL1BlockNumber(l1BlockNumber: bigint) {
@@ -382,6 +380,10 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
382
380
  await this.#messageStore.setSynchedL1Block(l1Block);
383
381
  }
384
382
 
383
+ getProvenBlockNumber(): Promise<BlockNumber> {
384
+ return this.#blockStore.getProvenBlockNumber();
385
+ }
386
+
385
387
  /**
386
388
  * Gets the last L1 block number processed by the archiver
387
389
  */
@@ -400,8 +402,8 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
400
402
  return this.db.estimateSize();
401
403
  }
402
404
 
403
- public rollbackL1ToL2MessagesToL2Block(targetBlockNumber: number): Promise<void> {
404
- return this.#messageStore.rollbackL1ToL2MessagesToL2Block(targetBlockNumber);
405
+ public rollbackL1ToL2MessagesToCheckpoint(targetCheckpointNumber: CheckpointNumber): Promise<void> {
406
+ return this.#messageStore.rollbackL1ToL2MessagesToCheckpoint(targetCheckpointNumber);
405
407
  }
406
408
 
407
409
  public iterateL1ToL2Messages(range: CustomRange<bigint> = {}): AsyncIterableIterator<InboxMessage> {
@@ -412,11 +414,29 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
412
414
  return this.#messageStore.removeL1ToL2Messages(startIndex);
413
415
  }
414
416
 
415
- public getPendingChainValidationStatus(): Promise<ValidateBlockResult | undefined> {
417
+ public getPendingChainValidationStatus(): Promise<ValidateCheckpointResult | undefined> {
416
418
  return this.#blockStore.getPendingChainValidationStatus();
417
419
  }
418
420
 
419
- public setPendingChainValidationStatus(status: ValidateBlockResult | undefined): Promise<void> {
421
+ public setPendingChainValidationStatus(status: ValidateCheckpointResult | undefined): Promise<void> {
420
422
  return this.#blockStore.setPendingChainValidationStatus(status);
421
423
  }
424
+
425
+ public getCheckpointedL2BlockNumber(): Promise<BlockNumber> {
426
+ return this.#blockStore.getCheckpointedL2BlockNumber();
427
+ }
428
+ public getSynchedCheckpointNumber(): Promise<CheckpointNumber> {
429
+ return this.#blockStore.getLatestCheckpointNumber();
430
+ }
431
+ async setCheckpointSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<void> {
432
+ await this.#blockStore.setSynchedL1BlockNumber(l1BlockNumber);
433
+ }
434
+
435
+ getBlocksForCheckpoint(checkpointNumber: CheckpointNumber): Promise<L2BlockNew[] | undefined> {
436
+ return this.#blockStore.getBlocksForCheckpoint(checkpointNumber);
437
+ }
438
+
439
+ getCheckpointData(checkpointNumber: CheckpointNumber): Promise<CheckpointData | undefined> {
440
+ return this.#blockStore.getCheckpointData(checkpointNumber);
441
+ }
422
442
  }