@aztec/archiver 0.0.1-commit.03f7ef2 → 0.0.1-commit.1142ef1

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 (49) hide show
  1. package/README.md +14 -14
  2. package/dest/archiver/archiver.d.ts +13 -10
  3. package/dest/archiver/archiver.d.ts.map +1 -1
  4. package/dest/archiver/archiver.js +514 -57
  5. package/dest/archiver/archiver_store.d.ts +11 -4
  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 +16 -36
  10. package/dest/archiver/config.js +2 -2
  11. package/dest/archiver/instrumentation.d.ts +1 -1
  12. package/dest/archiver/instrumentation.d.ts.map +1 -1
  13. package/dest/archiver/instrumentation.js +15 -63
  14. package/dest/archiver/kv_archiver_store/block_store.d.ts +11 -4
  15. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
  16. package/dest/archiver/kv_archiver_store/block_store.js +22 -3
  17. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +5 -4
  18. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
  19. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +3 -0
  20. package/dest/archiver/kv_archiver_store/log_store.d.ts +1 -1
  21. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
  22. package/dest/archiver/kv_archiver_store/log_store.js +11 -14
  23. package/dest/archiver/l1/calldata_retriever.d.ts +2 -2
  24. package/dest/archiver/l1/calldata_retriever.d.ts.map +1 -1
  25. package/dest/archiver/l1/calldata_retriever.js +2 -2
  26. package/dest/archiver/l1/validate_trace.js +1 -1
  27. package/dest/archiver/validation.d.ts +4 -4
  28. package/dest/archiver/validation.d.ts.map +1 -1
  29. package/dest/archiver/validation.js +1 -1
  30. package/dest/test/mock_l1_to_l2_message_source.d.ts +2 -2
  31. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
  32. package/dest/test/mock_l1_to_l2_message_source.js +12 -3
  33. package/dest/test/mock_l2_block_source.d.ts +8 -4
  34. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  35. package/dest/test/mock_l2_block_source.js +65 -19
  36. package/package.json +13 -13
  37. package/src/archiver/archiver.ts +179 -71
  38. package/src/archiver/archiver_store.ts +11 -3
  39. package/src/archiver/archiver_store_test_suite.ts +22 -43
  40. package/src/archiver/config.ts +2 -2
  41. package/src/archiver/instrumentation.ts +14 -63
  42. package/src/archiver/kv_archiver_store/block_store.ts +35 -7
  43. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +7 -3
  44. package/src/archiver/kv_archiver_store/log_store.ts +18 -24
  45. package/src/archiver/l1/calldata_retriever.ts +2 -2
  46. package/src/archiver/l1/validate_trace.ts +1 -1
  47. package/src/archiver/validation.ts +6 -6
  48. package/src/test/mock_l1_to_l2_message_source.ts +10 -4
  49. package/src/test/mock_l2_block_source.ts +76 -18
@@ -8,13 +8,14 @@ import { createLogger } from '@aztec/foundation/log';
8
8
  import type { FunctionSelector } from '@aztec/stdlib/abi';
9
9
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
10
10
  import {
11
+ CheckpointedL2Block,
11
12
  L2Block,
12
13
  L2BlockHash,
13
14
  L2BlockNew,
14
15
  type L2BlockSource,
15
16
  type L2Tips,
16
17
  PublishedL2Block,
17
- type ValidateBlockResult,
18
+ type ValidateCheckpointResult,
18
19
  } from '@aztec/stdlib/block';
19
20
  import { type Checkpoint, L1PublishedData } from '@aztec/stdlib/checkpoint';
20
21
  import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
@@ -30,6 +31,7 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
30
31
 
31
32
  private provenBlockNumber: number = 0;
32
33
  private finalizedBlockNumber: number = 0;
34
+ private checkpointedBlockNumber: number = 0;
33
35
 
34
36
  private log = createLogger('archiver:mock_l2_block_source');
35
37
 
@@ -64,6 +66,10 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
64
66
  this.finalizedBlockNumber = finalizedBlockNumber;
65
67
  }
66
68
 
69
+ public setCheckpointedBlockNumber(checkpointedBlockNumber: number) {
70
+ this.checkpointedBlockNumber = checkpointedBlockNumber;
71
+ }
72
+
67
73
  /**
68
74
  * Method to fetch the rollup contract address at the base-layer.
69
75
  * @returns The rollup address.
@@ -92,9 +98,40 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
92
98
  return Promise.resolve(BlockNumber(this.provenBlockNumber));
93
99
  }
94
100
 
95
- public getCheckpointedBlock(_number: BlockNumber) {
96
- // In this mock, we don't track checkpointed blocks separately
97
- return Promise.resolve(undefined);
101
+ public getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined> {
102
+ if (number > this.checkpointedBlockNumber) {
103
+ return Promise.resolve(undefined);
104
+ }
105
+ const block = this.l2Blocks[number - 1];
106
+ if (!block) {
107
+ return Promise.resolve(undefined);
108
+ }
109
+ const checkpointedBlock = new CheckpointedL2Block(
110
+ CheckpointNumber(number),
111
+ block.toL2Block(),
112
+ new L1PublishedData(BigInt(number), BigInt(number), `0x${number.toString(16).padStart(64, '0')}`),
113
+ [],
114
+ );
115
+ return Promise.resolve(checkpointedBlock);
116
+ }
117
+
118
+ public async getCheckpointedBlocks(
119
+ from: BlockNumber,
120
+ limit: number,
121
+ _proven?: boolean,
122
+ ): Promise<CheckpointedL2Block[]> {
123
+ const result: CheckpointedL2Block[] = [];
124
+ for (let i = 0; i < limit; i++) {
125
+ const blockNum = from + i;
126
+ if (blockNum > this.checkpointedBlockNumber) {
127
+ break;
128
+ }
129
+ const block = await this.getCheckpointedBlock(BlockNumber(blockNum));
130
+ if (block) {
131
+ result.push(block);
132
+ }
133
+ }
134
+ return result;
98
135
  }
99
136
 
100
137
  /**
@@ -151,6 +188,11 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
151
188
  );
152
189
  }
153
190
 
191
+ async getL2BlocksNew(from: BlockNumber, limit: number, proven?: boolean): Promise<L2BlockNew[]> {
192
+ const blocks = await this.getBlocks(from, limit, proven);
193
+ return blocks.map(x => x.toL2Block());
194
+ }
195
+
154
196
  public async getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined> {
155
197
  for (const block of this.l2Blocks) {
156
198
  const hash = await block.hash();
@@ -263,29 +305,45 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
263
305
  }
264
306
 
265
307
  async getL2Tips(): Promise<L2Tips> {
266
- const [latest, proven, finalized] = [
308
+ const [latest, proven, finalized, checkpointed] = [
267
309
  await this.getBlockNumber(),
268
310
  await this.getProvenBlockNumber(),
269
311
  this.finalizedBlockNumber,
312
+ this.checkpointedBlockNumber,
270
313
  ] as const;
271
314
 
272
315
  const latestBlock = this.l2Blocks[latest - 1];
273
316
  const provenBlock = this.l2Blocks[proven - 1];
274
317
  const finalizedBlock = this.l2Blocks[finalized - 1];
318
+ const checkpointedBlock = this.l2Blocks[checkpointed - 1];
319
+
320
+ const latestBlockId = {
321
+ number: BlockNumber(latest),
322
+ hash: (await latestBlock?.hash())?.toString(),
323
+ };
324
+ const provenBlockId = {
325
+ number: BlockNumber(proven),
326
+ hash: (await provenBlock?.hash())?.toString(),
327
+ };
328
+ const finalizedBlockId = {
329
+ number: BlockNumber(finalized),
330
+ hash: (await finalizedBlock?.hash())?.toString(),
331
+ };
332
+ const checkpointedBlockId = {
333
+ number: BlockNumber(checkpointed),
334
+ hash: (await checkpointedBlock?.hash())?.toString(),
335
+ };
336
+
337
+ const makeTipId = (blockId: typeof latestBlockId) => ({
338
+ block: blockId,
339
+ checkpoint: { number: CheckpointNumber(blockId.number), hash: blockId.hash },
340
+ });
275
341
 
276
342
  return {
277
- latest: {
278
- number: BlockNumber(latest),
279
- hash: (await latestBlock?.hash())?.toString(),
280
- },
281
- proven: {
282
- number: BlockNumber(proven),
283
- hash: (await provenBlock?.hash())?.toString(),
284
- },
285
- finalized: {
286
- number: BlockNumber(finalized),
287
- hash: (await finalizedBlock?.hash())?.toString(),
288
- },
343
+ proposed: latestBlockId,
344
+ checkpointed: makeTipId(checkpointedBlockId),
345
+ proven: makeTipId(provenBlockId),
346
+ finalized: makeTipId(finalizedBlockId),
289
347
  };
290
348
  }
291
349
 
@@ -363,7 +421,7 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
363
421
  return Promise.resolve(false);
364
422
  }
365
423
 
366
- getPendingChainValidationStatus(): Promise<ValidateBlockResult> {
424
+ getPendingChainValidationStatus(): Promise<ValidateCheckpointResult> {
367
425
  return Promise.resolve({ valid: true });
368
426
  }
369
427
  }