@aztec/archiver 0.0.1-commit.2ed92850 → 0.0.1-commit.358457c

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 (90) hide show
  1. package/dest/archiver.d.ts +7 -3
  2. package/dest/archiver.d.ts.map +1 -1
  3. package/dest/archiver.js +24 -93
  4. package/dest/factory.d.ts +3 -1
  5. package/dest/factory.d.ts.map +1 -1
  6. package/dest/factory.js +11 -10
  7. package/dest/index.d.ts +2 -1
  8. package/dest/index.d.ts.map +1 -1
  9. package/dest/index.js +1 -0
  10. package/dest/l1/bin/retrieve-calldata.js +36 -33
  11. package/dest/l1/calldata_retriever.d.ts +73 -50
  12. package/dest/l1/calldata_retriever.d.ts.map +1 -1
  13. package/dest/l1/calldata_retriever.js +190 -259
  14. package/dest/l1/data_retrieval.d.ts +4 -7
  15. package/dest/l1/data_retrieval.d.ts.map +1 -1
  16. package/dest/l1/data_retrieval.js +10 -14
  17. package/dest/l1/spire_proposer.d.ts +5 -5
  18. package/dest/l1/spire_proposer.d.ts.map +1 -1
  19. package/dest/l1/spire_proposer.js +9 -17
  20. package/dest/l1/validate_trace.d.ts +6 -3
  21. package/dest/l1/validate_trace.d.ts.map +1 -1
  22. package/dest/l1/validate_trace.js +13 -9
  23. package/dest/modules/data_source_base.d.ts +11 -6
  24. package/dest/modules/data_source_base.d.ts.map +1 -1
  25. package/dest/modules/data_source_base.js +28 -72
  26. package/dest/modules/data_store_updater.d.ts +9 -2
  27. package/dest/modules/data_store_updater.d.ts.map +1 -1
  28. package/dest/modules/data_store_updater.js +40 -19
  29. package/dest/modules/instrumentation.d.ts +15 -2
  30. package/dest/modules/instrumentation.d.ts.map +1 -1
  31. package/dest/modules/instrumentation.js +36 -12
  32. package/dest/modules/l1_synchronizer.d.ts +4 -8
  33. package/dest/modules/l1_synchronizer.d.ts.map +1 -1
  34. package/dest/modules/l1_synchronizer.js +16 -12
  35. package/dest/store/block_store.d.ts +21 -17
  36. package/dest/store/block_store.d.ts.map +1 -1
  37. package/dest/store/block_store.js +71 -19
  38. package/dest/store/contract_class_store.d.ts +1 -1
  39. package/dest/store/contract_class_store.d.ts.map +1 -1
  40. package/dest/store/contract_class_store.js +11 -7
  41. package/dest/store/kv_archiver_store.d.ts +21 -7
  42. package/dest/store/kv_archiver_store.d.ts.map +1 -1
  43. package/dest/store/kv_archiver_store.js +20 -3
  44. package/dest/store/l2_tips_cache.d.ts +19 -0
  45. package/dest/store/l2_tips_cache.d.ts.map +1 -0
  46. package/dest/store/l2_tips_cache.js +89 -0
  47. package/dest/store/log_store.d.ts +1 -1
  48. package/dest/store/log_store.d.ts.map +1 -1
  49. package/dest/store/log_store.js +57 -37
  50. package/dest/test/fake_l1_state.d.ts +6 -1
  51. package/dest/test/fake_l1_state.d.ts.map +1 -1
  52. package/dest/test/fake_l1_state.js +56 -18
  53. package/dest/test/index.js +3 -1
  54. package/dest/test/mock_archiver.d.ts +1 -1
  55. package/dest/test/mock_archiver.d.ts.map +1 -1
  56. package/dest/test/mock_archiver.js +3 -2
  57. package/dest/test/mock_l2_block_source.d.ts +22 -7
  58. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  59. package/dest/test/mock_l2_block_source.js +127 -84
  60. package/dest/test/mock_structs.d.ts +3 -2
  61. package/dest/test/mock_structs.d.ts.map +1 -1
  62. package/dest/test/mock_structs.js +7 -5
  63. package/dest/test/noop_l1_archiver.d.ts +23 -0
  64. package/dest/test/noop_l1_archiver.d.ts.map +1 -0
  65. package/dest/test/noop_l1_archiver.js +68 -0
  66. package/package.json +14 -13
  67. package/src/archiver.ts +32 -112
  68. package/src/factory.ts +26 -12
  69. package/src/index.ts +1 -0
  70. package/src/l1/README.md +25 -68
  71. package/src/l1/bin/retrieve-calldata.ts +46 -39
  72. package/src/l1/calldata_retriever.ts +249 -379
  73. package/src/l1/data_retrieval.ts +7 -17
  74. package/src/l1/spire_proposer.ts +7 -15
  75. package/src/l1/validate_trace.ts +24 -6
  76. package/src/modules/data_source_base.ts +56 -95
  77. package/src/modules/data_store_updater.ts +43 -18
  78. package/src/modules/instrumentation.ts +44 -12
  79. package/src/modules/l1_synchronizer.ts +17 -15
  80. package/src/store/block_store.ts +90 -41
  81. package/src/store/contract_class_store.ts +11 -7
  82. package/src/store/kv_archiver_store.ts +40 -8
  83. package/src/store/l2_tips_cache.ts +89 -0
  84. package/src/store/log_store.ts +98 -36
  85. package/src/test/fake_l1_state.ts +75 -17
  86. package/src/test/index.ts +3 -0
  87. package/src/test/mock_archiver.ts +3 -2
  88. package/src/test/mock_l2_block_source.ts +164 -84
  89. package/src/test/mock_structs.ts +22 -6
  90. package/src/test/noop_l1_archiver.ts +109 -0
@@ -5,27 +5,39 @@ import { Buffer32 } from '@aztec/foundation/buffer';
5
5
  import { Fr } from '@aztec/foundation/curves/bn254';
6
6
  import { EthAddress } from '@aztec/foundation/eth-address';
7
7
  import { createLogger } from '@aztec/foundation/log';
8
- import { CheckpointedL2Block, L2Block, L2BlockHash } from '@aztec/stdlib/block';
8
+ import { CheckpointedL2Block } from '@aztec/stdlib/block';
9
9
  import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
10
10
  import { EmptyL1RollupConstants, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
11
+ import { computeCheckpointOutHash } from '@aztec/stdlib/messaging';
12
+ import { CheckpointHeader } from '@aztec/stdlib/rollup';
11
13
  import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
12
14
  /**
13
15
  * A mocked implementation of L2BlockSource to be used in tests.
14
16
  */ export class MockL2BlockSource {
15
17
  l2Blocks = [];
18
+ checkpointList = [];
16
19
  provenBlockNumber = 0;
17
20
  finalizedBlockNumber = 0;
18
21
  checkpointedBlockNumber = 0;
19
22
  log = createLogger('archiver:mock_l2_block_source');
20
- async createBlocks(numBlocks) {
21
- for(let i = 0; i < numBlocks; i++){
22
- const blockNum = this.l2Blocks.length + 1;
23
- const block = await L2Block.random(BlockNumber(blockNum), {
24
- slotNumber: SlotNumber(blockNum)
23
+ /** Creates blocks grouped into single-block checkpoints. */ async createBlocks(numBlocks) {
24
+ await this.createCheckpoints(numBlocks, 1);
25
+ }
26
+ /** Creates checkpoints, each containing `blocksPerCheckpoint` blocks. */ async createCheckpoints(numCheckpoints, blocksPerCheckpoint = 1) {
27
+ for(let c = 0; c < numCheckpoints; c++){
28
+ const checkpointNum = CheckpointNumber(this.checkpointList.length + 1);
29
+ const startBlockNum = this.l2Blocks.length + 1;
30
+ const slotNumber = SlotNumber(Number(checkpointNum));
31
+ const checkpoint = await Checkpoint.random(checkpointNum, {
32
+ numBlocks: blocksPerCheckpoint,
33
+ startBlockNumber: startBlockNum,
34
+ slotNumber,
35
+ checkpointNumber: checkpointNum
25
36
  });
26
- this.l2Blocks.push(block);
37
+ this.checkpointList.push(checkpoint);
38
+ this.l2Blocks.push(...checkpoint.blocks);
27
39
  }
28
- this.log.verbose(`Created ${numBlocks} blocks in the mock L2 block source`);
40
+ this.log.verbose(`Created ${numCheckpoints} checkpoints with ${blocksPerCheckpoint} blocks each in the mock L2 block source`);
29
41
  }
30
42
  addProposedBlocks(blocks) {
31
43
  this.l2Blocks.push(...blocks);
@@ -33,6 +45,16 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
33
45
  }
34
46
  removeBlocks(numBlocks) {
35
47
  this.l2Blocks = this.l2Blocks.slice(0, -numBlocks);
48
+ const maxBlockNum = this.l2Blocks.length;
49
+ // Remove any checkpoint whose last block is beyond the remaining blocks.
50
+ this.checkpointList = this.checkpointList.filter((c)=>{
51
+ const lastBlockNum = c.blocks[0].number + c.blocks.length - 1;
52
+ return lastBlockNum <= maxBlockNum;
53
+ });
54
+ // Keep tip numbers consistent with remaining blocks.
55
+ this.checkpointedBlockNumber = Math.min(this.checkpointedBlockNumber, maxBlockNum);
56
+ this.provenBlockNumber = Math.min(this.provenBlockNumber, maxBlockNum);
57
+ this.finalizedBlockNumber = Math.min(this.finalizedBlockNumber, maxBlockNum);
36
58
  this.log.verbose(`Removed ${numBlocks} blocks from the mock L2 block source`);
37
59
  }
38
60
  setProvenBlockNumber(provenBlockNumber) {
@@ -45,7 +67,32 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
45
67
  this.finalizedBlockNumber = finalizedBlockNumber;
46
68
  }
47
69
  setCheckpointedBlockNumber(checkpointedBlockNumber) {
70
+ const prevCheckpointed = this.checkpointedBlockNumber;
48
71
  this.checkpointedBlockNumber = checkpointedBlockNumber;
72
+ // Auto-create single-block checkpoints for newly checkpointed blocks that don't have one yet.
73
+ // This handles blocks added via addProposedBlocks that are now being marked as checkpointed.
74
+ const newCheckpoints = [];
75
+ for(let blockNum = prevCheckpointed + 1; blockNum <= checkpointedBlockNumber; blockNum++){
76
+ const block = this.l2Blocks[blockNum - 1];
77
+ if (!block) {
78
+ continue;
79
+ }
80
+ if (this.checkpointList.some((c)=>c.blocks.some((b)=>b.number === block.number))) {
81
+ continue;
82
+ }
83
+ const checkpointNum = CheckpointNumber(this.checkpointList.length + newCheckpoints.length + 1);
84
+ const checkpoint = new Checkpoint(block.archive, CheckpointHeader.random({
85
+ slotNumber: block.header.globalVariables.slotNumber
86
+ }), [
87
+ block
88
+ ], checkpointNum);
89
+ newCheckpoints.push(checkpoint);
90
+ }
91
+ // Insert new checkpoints in order by number.
92
+ if (newCheckpoints.length > 0) {
93
+ this.checkpointList.push(...newCheckpoints);
94
+ this.checkpointList.sort((a, b)=>a.number - b.number);
95
+ }
49
96
  }
50
97
  /**
51
98
  * Method to fetch the rollup contract address at the base-layer.
@@ -82,8 +129,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
82
129
  if (!block) {
83
130
  return Promise.resolve(undefined);
84
131
  }
85
- const checkpointedBlock = new CheckpointedL2Block(CheckpointNumber.fromBlockNumber(number), block, new L1PublishedData(BigInt(number), BigInt(number), `0x${number.toString(16).padStart(64, '0')}`), []);
86
- return Promise.resolve(checkpointedBlock);
132
+ return Promise.resolve(this.toCheckpointedBlock(block));
87
133
  }
88
134
  async getCheckpointedBlocks(from, limit) {
89
135
  const result = [];
@@ -124,44 +170,18 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
124
170
  return Promise.resolve(this.l2Blocks.slice(from - 1, from - 1 + limit));
125
171
  }
126
172
  getCheckpoints(from, limit) {
127
- // TODO(mbps): Implement this properly. This only works when we have one block per checkpoint.
128
- const blocks = this.l2Blocks.slice(from - 1, from - 1 + limit);
129
- return Promise.all(blocks.map(async (block)=>{
130
- // Create a checkpoint from the block - manually construct since L2Block doesn't have toCheckpoint()
131
- const checkpoint = await Checkpoint.random(block.checkpointNumber, {
132
- numBlocks: 1
133
- });
134
- checkpoint.blocks = [
135
- block
136
- ];
137
- return new PublishedCheckpoint(checkpoint, new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()), []);
138
- }));
173
+ const checkpoints = this.checkpointList.slice(from - 1, from - 1 + limit);
174
+ return Promise.resolve(checkpoints.map((checkpoint)=>new PublishedCheckpoint(checkpoint, this.mockL1DataForCheckpoint(checkpoint), [])));
139
175
  }
140
- async getCheckpointByArchive(archive) {
141
- // TODO(mbps): Implement this properly. This only works when we have one block per checkpoint.
142
- const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
143
- if (!block) {
144
- return undefined;
145
- }
146
- // Create a checkpoint from the block - manually construct since L2Block doesn't have toCheckpoint()
147
- const checkpoint = await Checkpoint.random(block.checkpointNumber, {
148
- numBlocks: 1
149
- });
150
- checkpoint.blocks = [
151
- block
152
- ];
153
- return checkpoint;
176
+ getCheckpointByArchive(archive) {
177
+ const checkpoint = this.checkpointList.find((c)=>c.archive.root.equals(archive));
178
+ return Promise.resolve(checkpoint);
154
179
  }
155
180
  async getCheckpointedBlockByHash(blockHash) {
156
181
  for (const block of this.l2Blocks){
157
182
  const hash = await block.hash();
158
183
  if (hash.equals(blockHash)) {
159
- return CheckpointedL2Block.fromFields({
160
- checkpointNumber: CheckpointNumber.fromBlockNumber(block.number),
161
- block,
162
- l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
163
- attestations: []
164
- });
184
+ return this.toCheckpointedBlock(block);
165
185
  }
166
186
  }
167
187
  return undefined;
@@ -171,12 +191,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
171
191
  if (!block) {
172
192
  return Promise.resolve(undefined);
173
193
  }
174
- return Promise.resolve(CheckpointedL2Block.fromFields({
175
- checkpointNumber: CheckpointNumber.fromBlockNumber(block.number),
176
- block,
177
- l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
178
- attestations: []
179
- }));
194
+ return Promise.resolve(this.toCheckpointedBlock(block));
180
195
  }
181
196
  async getL2BlockByHash(blockHash) {
182
197
  for (const block of this.l2Blocks){
@@ -204,45 +219,54 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
204
219
  const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
205
220
  return Promise.resolve(block?.header);
206
221
  }
222
+ async getBlockData(number) {
223
+ const block = this.l2Blocks[number - 1];
224
+ if (!block) {
225
+ return undefined;
226
+ }
227
+ return {
228
+ header: block.header,
229
+ archive: block.archive,
230
+ blockHash: await block.hash(),
231
+ checkpointNumber: block.checkpointNumber,
232
+ indexWithinCheckpoint: block.indexWithinCheckpoint
233
+ };
234
+ }
235
+ async getBlockDataByArchive(archive) {
236
+ const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
237
+ if (!block) {
238
+ return undefined;
239
+ }
240
+ return {
241
+ header: block.header,
242
+ archive: block.archive,
243
+ blockHash: await block.hash(),
244
+ checkpointNumber: block.checkpointNumber,
245
+ indexWithinCheckpoint: block.indexWithinCheckpoint
246
+ };
247
+ }
207
248
  getBlockHeader(number) {
208
249
  return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.header);
209
250
  }
210
251
  getCheckpointsForEpoch(epochNumber) {
211
- // TODO(mbps): Implement this properly. This only works when we have one block per checkpoint.
212
- const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
213
- const [start, end] = getSlotRangeForEpoch(epochNumber, {
214
- epochDuration
215
- });
216
- const blocks = this.l2Blocks.filter((b)=>{
217
- const slot = b.header.globalVariables.slotNumber;
218
- return slot >= start && slot <= end;
219
- });
220
- // Create checkpoints from blocks - manually construct since L2Block doesn't have toCheckpoint()
221
- return Promise.all(blocks.map(async (block)=>{
222
- const checkpoint = await Checkpoint.random(block.checkpointNumber, {
223
- numBlocks: 1
224
- });
225
- checkpoint.blocks = [
226
- block
227
- ];
228
- return checkpoint;
229
- }));
252
+ return Promise.resolve(this.getCheckpointsInEpoch(epochNumber));
253
+ }
254
+ getCheckpointsDataForEpoch(epochNumber) {
255
+ const checkpoints = this.getCheckpointsInEpoch(epochNumber);
256
+ return Promise.resolve(checkpoints.map((checkpoint)=>({
257
+ checkpointNumber: checkpoint.number,
258
+ header: checkpoint.header,
259
+ archive: checkpoint.archive,
260
+ checkpointOutHash: computeCheckpointOutHash(checkpoint.blocks.map((b)=>b.body.txEffects.map((tx)=>tx.l2ToL1Msgs))),
261
+ startBlock: checkpoint.blocks[0].number,
262
+ blockCount: checkpoint.blocks.length,
263
+ attestations: [],
264
+ l1: this.mockL1DataForCheckpoint(checkpoint)
265
+ })));
230
266
  }
231
267
  getCheckpointedBlocksForEpoch(epochNumber) {
232
- const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
233
- const [start, end] = getSlotRangeForEpoch(epochNumber, {
234
- epochDuration
235
- });
236
- const blocks = this.l2Blocks.filter((b)=>{
237
- const slot = b.header.globalVariables.slotNumber;
238
- return slot >= start && slot <= end;
239
- });
240
- return Promise.resolve(blocks.map((block)=>CheckpointedL2Block.fromFields({
241
- checkpointNumber: CheckpointNumber.fromBlockNumber(block.number),
242
- block,
243
- l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
244
- attestations: []
245
- })));
268
+ const checkpoints = this.getCheckpointsInEpoch(epochNumber);
269
+ return Promise.resolve(checkpoints.flatMap((checkpoint)=>checkpoint.blocks.map((block)=>this.toCheckpointedBlock(block))));
246
270
  }
247
271
  getBlocksForSlot(slotNumber) {
248
272
  const blocks = this.l2Blocks.filter((b)=>b.header.globalVariables.slotNumber === slotNumber);
@@ -268,7 +292,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
268
292
  return {
269
293
  data: txEffect,
270
294
  l2BlockNumber: block.number,
271
- l2BlockHash: L2BlockHash.fromField(await block.hash()),
295
+ l2BlockHash: await block.hash(),
272
296
  txIndexInBlock: block.body.txEffects.indexOf(txEffect)
273
297
  };
274
298
  }
@@ -281,7 +305,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
281
305
  for (const txEffect of block.body.txEffects){
282
306
  if (txEffect.txHash.equals(txHash)) {
283
307
  // In mock, assume all txs are checkpointed with successful execution
284
- return new TxReceipt(txHash, TxStatus.CHECKPOINTED, TxExecutionResult.SUCCESS, undefined, txEffect.transactionFee.toBigInt(), L2BlockHash.fromField(await block.hash()), block.number);
308
+ return new TxReceipt(txHash, TxStatus.CHECKPOINTED, TxExecutionResult.SUCCESS, undefined, txEffect.transactionFee.toBigInt(), await block.hash(), block.number);
285
309
  }
286
310
  }
287
311
  }
@@ -317,7 +341,7 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
317
341
  const makeTipId = (blockId)=>({
318
342
  block: blockId,
319
343
  checkpoint: {
320
- number: CheckpointNumber.fromBlockNumber(blockId.number),
344
+ number: this.findCheckpointNumberForBlock(blockId.number) ?? CheckpointNumber(0),
321
345
  hash: blockId.hash
322
346
  }
323
347
  });
@@ -391,4 +415,23 @@ import { TxExecutionResult, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
391
415
  valid: true
392
416
  });
393
417
  }
418
+ /** Returns checkpoints whose slot falls within the given epoch. */ getCheckpointsInEpoch(epochNumber) {
419
+ const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
420
+ const [start, end] = getSlotRangeForEpoch(epochNumber, {
421
+ epochDuration
422
+ });
423
+ return this.checkpointList.filter((c)=>c.header.slotNumber >= start && c.header.slotNumber <= end);
424
+ }
425
+ /** Creates a mock L1PublishedData for a checkpoint. */ mockL1DataForCheckpoint(checkpoint) {
426
+ return new L1PublishedData(BigInt(checkpoint.number), BigInt(checkpoint.number), Buffer32.random().toString());
427
+ }
428
+ /** Creates a CheckpointedL2Block from a block using stored checkpoint info. */ toCheckpointedBlock(block) {
429
+ const checkpoint = this.checkpointList.find((c)=>c.blocks.some((b)=>b.number === block.number));
430
+ const checkpointNumber = checkpoint?.number ?? block.checkpointNumber;
431
+ return new CheckpointedL2Block(checkpointNumber, block, new L1PublishedData(BigInt(block.number), BigInt(block.number), `0x${block.number.toString(16).padStart(64, '0')}`), []);
432
+ }
433
+ /** Finds the checkpoint number for a block, or undefined if the block is not in any checkpoint. */ findCheckpointNumberForBlock(blockNumber) {
434
+ const checkpoint = this.checkpointList.find((c)=>c.blocks.some((b)=>b.number === blockNumber));
435
+ return checkpoint?.number;
436
+ }
394
437
  }
@@ -9,9 +9,10 @@ import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
9
9
  import { StateReference } from '@aztec/stdlib/tx';
10
10
  import { type InboxMessage } from '../structs/inbox_message.js';
11
11
  export declare function makeInboxMessage(previousRollingHash?: Buffer16, overrides?: Partial<InboxMessage>): InboxMessage;
12
- export declare function makeInboxMessages(count: number, opts?: {
12
+ export declare function makeInboxMessages(totalCount: number, opts?: {
13
13
  initialHash?: Buffer16;
14
14
  initialCheckpointNumber?: CheckpointNumber;
15
+ messagesPerCheckpoint?: number;
15
16
  overrideFn?: (msg: InboxMessage, index: number) => InboxMessage;
16
17
  }): InboxMessage[];
17
18
  /** Creates inbox messages distributed across multiple blocks with proper checkpoint numbering. */
@@ -81,4 +82,4 @@ export interface MockCheckpointWithLogsOptions {
81
82
  }
82
83
  /** Creates a checkpoint with specified logs on each tx effect. */
83
84
  export declare function makeCheckpointWithLogs(blockNumber: number, options?: MockCheckpointWithLogsOptions): Promise<PublishedCheckpoint>;
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdHJ1Y3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3N0cnVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFlLGdCQUFnQixFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBeUIsY0FBYyxFQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFFbkYsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRW5GLHdCQUFnQixnQkFBZ0IsQ0FDOUIsbUJBQW1CLFdBQWdCLEVBQ25DLFNBQVMsR0FBRSxPQUFPLENBQUMsWUFBWSxDQUFNLEdBQ3BDLFlBQVksQ0FnQmQ7QUFFRCx3QkFBZ0IsaUJBQWlCLENBQy9CLEtBQUssRUFBRSxNQUFNLEVBQ2IsSUFBSSxHQUFFO0lBQ0osV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQ3ZCLHVCQUF1QixDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0MsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEtBQUss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
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdHJ1Y3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3N0cnVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFlLGdCQUFnQixFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBeUIsY0FBYyxFQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFFbkYsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRW5GLHdCQUFnQixnQkFBZ0IsQ0FDOUIsbUJBQW1CLFdBQWdCLEVBQ25DLFNBQVMsR0FBRSxPQUFPLENBQUMsWUFBWSxDQUFNLEdBQ3BDLFlBQVksQ0FnQmQ7QUFFRCx3QkFBZ0IsaUJBQWlCLENBQy9CLFVBQVUsRUFBRSxNQUFNLEVBQ2xCLElBQUksR0FBRTtJQUNKLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQztJQUN2Qix1QkFBdUIsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0lBQzNDLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQy9CLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxF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
@@ -1 +1 @@
1
- {"version":3,"file":"mock_structs.d.ts","sourceRoot":"","sources":["../../src/test/mock_structs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock_structs.d.ts","sourceRoot":"","sources":["../../src/test/mock_structs.ts"],"names":[],"mappings":"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"}
@@ -32,16 +32,18 @@ export function makeInboxMessage(previousRollingHash = Buffer16.ZERO, overrides
32
32
  rollingHash
33
33
  };
34
34
  }
35
- export function makeInboxMessages(count, opts = {}) {
36
- const { initialHash = Buffer16.ZERO, overrideFn = (msg)=>msg, initialCheckpointNumber = 1 } = opts;
35
+ export function makeInboxMessages(totalCount, opts = {}) {
36
+ const { initialHash = Buffer16.ZERO, overrideFn = (msg)=>msg, initialCheckpointNumber = CheckpointNumber(1), messagesPerCheckpoint = 1 } = opts;
37
37
  const messages = [];
38
38
  let rollingHash = initialHash;
39
- for(let i = 0; i < count; i++){
39
+ for(let i = 0; i < totalCount; i++){
40
+ const msgIndex = i % messagesPerCheckpoint;
41
+ const checkpointNumber = CheckpointNumber.fromBigInt(BigInt(initialCheckpointNumber) + BigInt(i) / BigInt(messagesPerCheckpoint));
40
42
  const leaf = Fr.random();
41
- const checkpointNumber = CheckpointNumber(i + initialCheckpointNumber);
42
43
  const message = overrideFn(makeInboxMessage(rollingHash, {
43
44
  leaf,
44
- checkpointNumber
45
+ checkpointNumber,
46
+ index: InboxLeaf.smallestIndexForCheckpoint(checkpointNumber) + BigInt(msgIndex)
45
47
  }), i);
46
48
  rollingHash = message.rollingHash;
47
49
  messages.push(message);
@@ -0,0 +1,23 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
3
+ import { type TelemetryClient } from '@aztec/telemetry-client';
4
+ import { Archiver } from '../archiver.js';
5
+ import { ArchiverInstrumentation } from '../modules/instrumentation.js';
6
+ import type { KVArchiverDataStore } from '../store/kv_archiver_store.js';
7
+ /**
8
+ * Archiver with mocked L1 connectivity for testing.
9
+ * Uses mock L1 clients and a noop synchronizer, enabling tests that
10
+ * don't require real Ethereum connectivity.
11
+ */
12
+ export declare class NoopL1Archiver extends Archiver {
13
+ constructor(dataStore: KVArchiverDataStore, l1Constants: L1RollupConstants & {
14
+ genesisArchiveRoot: Fr;
15
+ }, instrumentation: ArchiverInstrumentation);
16
+ /** Override start to skip L1 validation checks. */
17
+ start(_blockUntilSynced?: boolean): Promise<void>;
18
+ }
19
+ /** Creates an archiver with mocked L1 connectivity for testing. */
20
+ export declare function createNoopL1Archiver(dataStore: KVArchiverDataStore, l1Constants: L1RollupConstants & {
21
+ genesisArchiveRoot: Fr;
22
+ }, telemetry?: TelemetryClient): Promise<NoopL1Archiver>;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcF9sMV9hcmNoaXZlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Qvbm9vcF9sMV9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQW1DLE1BQU0seUJBQXlCLENBQUM7QUFLaEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXhFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUF5QnpFOzs7O0dBSUc7QUFDSCxxQkFBYSxjQUFlLFNBQVEsUUFBUTtJQUMxQyxZQUNFLFNBQVMsRUFBRSxtQkFBbUIsRUFDOUIsV0FBVyxFQUFFLGlCQUFpQixHQUFHO1FBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUFBO0tBQUUsRUFDM0QsZUFBZSxFQUFFLHVCQUF1QixFQXVDekM7SUFFRCxtREFBbUQ7SUFDbkMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FJaEU7Q0FDRjtBQUVELG1FQUFtRTtBQUNuRSx3QkFBc0Isb0JBQW9CLENBQ3hDLFNBQVMsRUFBRSxtQkFBbUIsRUFDOUIsV0FBVyxFQUFFLGlCQUFpQixHQUFHO0lBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUFBO0NBQUUsRUFDM0QsU0FBUyxHQUFFLGVBQXNDLEdBQ2hELE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FHekIifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop_l1_archiver.d.ts","sourceRoot":"","sources":["../../src/test/noop_l1_archiver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAIpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,KAAK,eAAe,EAAmC,MAAM,yBAAyB,CAAC;AAKhG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAyBzE;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,YACE,SAAS,EAAE,mBAAmB,EAC9B,WAAW,EAAE,iBAAiB,GAAG;QAAE,kBAAkB,EAAE,EAAE,CAAA;KAAE,EAC3D,eAAe,EAAE,uBAAuB,EAuCzC;IAED,mDAAmD;IACnC,KAAK,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhE;CACF;AAED,mEAAmE;AACnE,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,mBAAmB,EAC9B,WAAW,EAAE,iBAAiB,GAAG;IAAE,kBAAkB,EAAE,EAAE,CAAA;CAAE,EAC3D,SAAS,GAAE,eAAsC,GAChD,OAAO,CAAC,cAAc,CAAC,CAGzB"}
@@ -0,0 +1,68 @@
1
+ import { Buffer32 } from '@aztec/foundation/buffer';
2
+ import { EthAddress } from '@aztec/foundation/eth-address';
3
+ import { getTelemetryClient } from '@aztec/telemetry-client';
4
+ import { mock } from 'jest-mock-extended';
5
+ import { EventEmitter } from 'node:events';
6
+ import { Archiver } from '../archiver.js';
7
+ import { ArchiverInstrumentation } from '../modules/instrumentation.js';
8
+ /** Noop L1 synchronizer for testing without L1 connectivity. */ class NoopL1Synchronizer {
9
+ tracer;
10
+ constructor(tracer){
11
+ this.tracer = tracer;
12
+ }
13
+ setConfig(_config) {}
14
+ getL1BlockNumber() {
15
+ return 0n;
16
+ }
17
+ getL1Timestamp() {
18
+ return 0n;
19
+ }
20
+ testEthereumNodeSynced() {
21
+ return Promise.resolve();
22
+ }
23
+ syncFromL1(_initialSyncComplete) {
24
+ return Promise.resolve();
25
+ }
26
+ }
27
+ /**
28
+ * Archiver with mocked L1 connectivity for testing.
29
+ * Uses mock L1 clients and a noop synchronizer, enabling tests that
30
+ * don't require real Ethereum connectivity.
31
+ */ export class NoopL1Archiver extends Archiver {
32
+ constructor(dataStore, l1Constants, instrumentation){
33
+ // Create mocks for L1 clients
34
+ const publicClient = mock();
35
+ const debugClient = mock();
36
+ const rollup = mock();
37
+ const blobClient = mock();
38
+ // Mock methods called during start()
39
+ blobClient.testSources.mockResolvedValue();
40
+ publicClient.getBlockNumber.mockResolvedValue(1n);
41
+ const events = new EventEmitter();
42
+ const synchronizer = new NoopL1Synchronizer(instrumentation.tracer);
43
+ super(publicClient, debugClient, rollup, {
44
+ registryAddress: EthAddress.ZERO,
45
+ governanceProposerAddress: EthAddress.ZERO,
46
+ slashFactoryAddress: EthAddress.ZERO,
47
+ slashingProposerAddress: EthAddress.ZERO
48
+ }, dataStore, {
49
+ pollingIntervalMs: 1000,
50
+ batchSize: 100,
51
+ skipValidateCheckpointAttestations: true,
52
+ maxAllowedEthClientDriftSeconds: 300,
53
+ ethereumAllowNoDebugHosts: true
54
+ }, blobClient, instrumentation, {
55
+ ...l1Constants,
56
+ l1StartBlockHash: Buffer32.random()
57
+ }, synchronizer, events);
58
+ }
59
+ /** Override start to skip L1 validation checks. */ start(_blockUntilSynced) {
60
+ // Just start the running promise without L1 checks
61
+ this.runningPromise.start();
62
+ return Promise.resolve();
63
+ }
64
+ }
65
+ /** Creates an archiver with mocked L1 connectivity for testing. */ export async function createNoopL1Archiver(dataStore, l1Constants, telemetry = getTelemetryClient()) {
66
+ const instrumentation = await ArchiverInstrumentation.new(telemetry, ()=>dataStore.estimateSize());
67
+ return new NoopL1Archiver(dataStore, l1Constants, instrumentation);
68
+ }
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@aztec/archiver",
3
- "version": "0.0.1-commit.2ed92850",
3
+ "version": "0.0.1-commit.358457c",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
7
7
  "./test": "./dest/test/index.js",
8
+ "./test/noop-l1": "./dest/test/noop_l1_archiver.js",
8
9
  "./config": "./dest/config.js"
9
10
  },
10
11
  "typedocOptions": {
@@ -64,18 +65,18 @@
64
65
  ]
65
66
  },
66
67
  "dependencies": {
67
- "@aztec/blob-client": "0.0.1-commit.2ed92850",
68
- "@aztec/blob-lib": "0.0.1-commit.2ed92850",
69
- "@aztec/constants": "0.0.1-commit.2ed92850",
70
- "@aztec/epoch-cache": "0.0.1-commit.2ed92850",
71
- "@aztec/ethereum": "0.0.1-commit.2ed92850",
72
- "@aztec/foundation": "0.0.1-commit.2ed92850",
73
- "@aztec/kv-store": "0.0.1-commit.2ed92850",
74
- "@aztec/l1-artifacts": "0.0.1-commit.2ed92850",
75
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.2ed92850",
76
- "@aztec/protocol-contracts": "0.0.1-commit.2ed92850",
77
- "@aztec/stdlib": "0.0.1-commit.2ed92850",
78
- "@aztec/telemetry-client": "0.0.1-commit.2ed92850",
68
+ "@aztec/blob-client": "0.0.1-commit.358457c",
69
+ "@aztec/blob-lib": "0.0.1-commit.358457c",
70
+ "@aztec/constants": "0.0.1-commit.358457c",
71
+ "@aztec/epoch-cache": "0.0.1-commit.358457c",
72
+ "@aztec/ethereum": "0.0.1-commit.358457c",
73
+ "@aztec/foundation": "0.0.1-commit.358457c",
74
+ "@aztec/kv-store": "0.0.1-commit.358457c",
75
+ "@aztec/l1-artifacts": "0.0.1-commit.358457c",
76
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.358457c",
77
+ "@aztec/protocol-contracts": "0.0.1-commit.358457c",
78
+ "@aztec/stdlib": "0.0.1-commit.358457c",
79
+ "@aztec/telemetry-client": "0.0.1-commit.358457c",
79
80
  "lodash.groupby": "^4.6.0",
80
81
  "lodash.omit": "^4.5.0",
81
82
  "tslib": "^2.5.0",