@aztec/archiver 3.0.0-devnet.6 → 3.0.0-devnet.6-patch.1

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 (127) hide show
  1. package/dest/archiver/archiver.d.ts +67 -60
  2. package/dest/archiver/archiver.d.ts.map +1 -1
  3. package/dest/archiver/archiver.js +391 -262
  4. package/dest/archiver/archiver_store.d.ts +21 -27
  5. package/dest/archiver/archiver_store.d.ts.map +1 -1
  6. package/dest/archiver/archiver_store_test_suite.d.ts +1 -1
  7. package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
  8. package/dest/archiver/archiver_store_test_suite.js +125 -140
  9. package/dest/archiver/config.d.ts +3 -2
  10. package/dest/archiver/config.d.ts.map +1 -1
  11. package/dest/archiver/config.js +13 -1
  12. package/dest/archiver/errors.d.ts +1 -1
  13. package/dest/archiver/errors.d.ts.map +1 -1
  14. package/dest/archiver/index.d.ts +1 -1
  15. package/dest/archiver/instrumentation.d.ts +5 -3
  16. package/dest/archiver/instrumentation.d.ts.map +1 -1
  17. package/dest/archiver/instrumentation.js +11 -0
  18. package/dest/archiver/kv_archiver_store/block_store.d.ts +10 -9
  19. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
  20. package/dest/archiver/kv_archiver_store/block_store.js +9 -8
  21. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +2 -2
  22. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
  23. package/dest/archiver/kv_archiver_store/contract_class_store.js +1 -1
  24. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +2 -2
  25. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
  26. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +23 -29
  27. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
  28. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +7 -15
  29. package/dest/archiver/kv_archiver_store/log_store.d.ts +3 -10
  30. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
  31. package/dest/archiver/kv_archiver_store/log_store.js +4 -26
  32. package/dest/archiver/kv_archiver_store/message_store.d.ts +6 -5
  33. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
  34. package/dest/archiver/kv_archiver_store/message_store.js +15 -14
  35. package/dest/archiver/l1/bin/retrieve-calldata.d.ts +3 -0
  36. package/dest/archiver/l1/bin/retrieve-calldata.d.ts.map +1 -0
  37. package/dest/archiver/l1/bin/retrieve-calldata.js +147 -0
  38. package/dest/archiver/l1/calldata_retriever.d.ts +98 -0
  39. package/dest/archiver/l1/calldata_retriever.d.ts.map +1 -0
  40. package/dest/archiver/l1/calldata_retriever.js +403 -0
  41. package/dest/archiver/l1/data_retrieval.d.ts +87 -0
  42. package/dest/archiver/l1/data_retrieval.d.ts.map +1 -0
  43. package/dest/archiver/l1/data_retrieval.js +318 -0
  44. package/dest/archiver/l1/debug_tx.d.ts +19 -0
  45. package/dest/archiver/l1/debug_tx.d.ts.map +1 -0
  46. package/dest/archiver/l1/debug_tx.js +73 -0
  47. package/dest/archiver/l1/spire_proposer.d.ts +70 -0
  48. package/dest/archiver/l1/spire_proposer.d.ts.map +1 -0
  49. package/dest/archiver/l1/spire_proposer.js +157 -0
  50. package/dest/archiver/l1/trace_tx.d.ts +97 -0
  51. package/dest/archiver/l1/trace_tx.d.ts.map +1 -0
  52. package/dest/archiver/l1/trace_tx.js +91 -0
  53. package/dest/archiver/l1/types.d.ts +12 -0
  54. package/dest/archiver/l1/types.d.ts.map +1 -0
  55. package/dest/archiver/l1/types.js +3 -0
  56. package/dest/archiver/l1/validate_trace.d.ts +29 -0
  57. package/dest/archiver/l1/validate_trace.d.ts.map +1 -0
  58. package/dest/archiver/l1/validate_trace.js +150 -0
  59. package/dest/archiver/structs/data_retrieval.d.ts +1 -1
  60. package/dest/archiver/structs/inbox_message.d.ts +4 -4
  61. package/dest/archiver/structs/inbox_message.d.ts.map +1 -1
  62. package/dest/archiver/structs/inbox_message.js +6 -5
  63. package/dest/archiver/structs/published.d.ts +3 -2
  64. package/dest/archiver/structs/published.d.ts.map +1 -1
  65. package/dest/archiver/validation.d.ts +10 -4
  66. package/dest/archiver/validation.d.ts.map +1 -1
  67. package/dest/archiver/validation.js +29 -21
  68. package/dest/factory.d.ts +3 -5
  69. package/dest/factory.d.ts.map +1 -1
  70. package/dest/factory.js +3 -2
  71. package/dest/index.d.ts +2 -2
  72. package/dest/index.d.ts.map +1 -1
  73. package/dest/index.js +1 -1
  74. package/dest/rpc/index.d.ts +2 -2
  75. package/dest/test/index.d.ts +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 +10 -9
  82. package/dest/test/mock_l2_block_source.d.ts +15 -10
  83. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  84. package/dest/test/mock_l2_block_source.js +22 -9
  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 +18 -17
  89. package/src/archiver/archiver.ts +531 -345
  90. package/src/archiver/archiver_store.ts +24 -27
  91. package/src/archiver/archiver_store_test_suite.ts +151 -128
  92. package/src/archiver/config.ts +13 -7
  93. package/src/archiver/instrumentation.ts +16 -2
  94. package/src/archiver/kv_archiver_store/block_store.ts +18 -17
  95. package/src/archiver/kv_archiver_store/contract_class_store.ts +1 -1
  96. package/src/archiver/kv_archiver_store/contract_instance_store.ts +1 -1
  97. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +23 -32
  98. package/src/archiver/kv_archiver_store/log_store.ts +4 -30
  99. package/src/archiver/kv_archiver_store/message_store.ts +21 -18
  100. package/src/archiver/l1/README.md +98 -0
  101. package/src/archiver/l1/bin/retrieve-calldata.ts +182 -0
  102. package/src/archiver/l1/calldata_retriever.ts +531 -0
  103. package/src/archiver/{data_retrieval.ts → l1/data_retrieval.ts} +196 -250
  104. package/src/archiver/l1/debug_tx.ts +99 -0
  105. package/src/archiver/l1/spire_proposer.ts +160 -0
  106. package/src/archiver/l1/trace_tx.ts +128 -0
  107. package/src/archiver/l1/types.ts +13 -0
  108. package/src/archiver/l1/validate_trace.ts +211 -0
  109. package/src/archiver/structs/inbox_message.ts +8 -8
  110. package/src/archiver/structs/published.ts +2 -1
  111. package/src/archiver/validation.ts +52 -27
  112. package/src/factory.ts +4 -5
  113. package/src/index.ts +1 -1
  114. package/src/test/fixtures/debug_traceTransaction-multicall3.json +88 -0
  115. package/src/test/fixtures/debug_traceTransaction-multiplePropose.json +153 -0
  116. package/src/test/fixtures/debug_traceTransaction-proxied.json +122 -0
  117. package/src/test/fixtures/trace_transaction-multicall3.json +65 -0
  118. package/src/test/fixtures/trace_transaction-multiplePropose.json +319 -0
  119. package/src/test/fixtures/trace_transaction-proxied.json +128 -0
  120. package/src/test/fixtures/trace_transaction-randomRevert.json +216 -0
  121. package/src/test/mock_archiver.ts +22 -16
  122. package/src/test/mock_l1_to_l2_message_source.ts +10 -9
  123. package/src/test/mock_l2_block_source.ts +32 -15
  124. package/src/test/mock_structs.ts +10 -9
  125. package/dest/archiver/data_retrieval.d.ts +0 -79
  126. package/dest/archiver/data_retrieval.d.ts.map +0 -1
  127. package/dest/archiver/data_retrieval.js +0 -362
@@ -1,13 +1,14 @@
1
1
  import { INITIAL_L2_BLOCK_NUM, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PRIVATE_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
2
2
  import { makeTuple } from '@aztec/foundation/array';
3
+ import { BlockNumber, CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
3
4
  import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
4
5
  import { times, timesParallel } from '@aztec/foundation/collection';
5
- import { randomInt } from '@aztec/foundation/crypto';
6
- import { Fr } from '@aztec/foundation/fields';
6
+ import { randomInt } from '@aztec/foundation/crypto/random';
7
+ import { Fr } from '@aztec/foundation/curves/bn254';
7
8
  import { toArray } from '@aztec/foundation/iterable';
8
9
  import { sleep } from '@aztec/foundation/sleep';
9
10
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
10
- import { CommitteeAttestation, EthAddress, L2Block, L2BlockHash, PublishedL2Block, randomBlockInfo, wrapInBlock } from '@aztec/stdlib/block';
11
+ import { CommitteeAttestation, EthAddress, L2Block, L2BlockHash, PublishedL2Block, randomBlockInfo, wrapDataInBlock } from '@aztec/stdlib/block';
11
12
  import { SerializableContractInstance, computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
12
13
  import { LogId, PrivateLog, PublicLog } from '@aztec/stdlib/logs';
13
14
  import { InboxLeaf } from '@aztec/stdlib/messaging';
@@ -73,7 +74,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
73
74
  };
74
75
  beforeEach(async ()=>{
75
76
  store = await getStore();
76
- blocks = await timesParallel(10, async (i)=>makePublished(await L2Block.random(i + 1), i + 10));
77
+ blocks = await timesParallel(10, async (i)=>makePublished(await L2Block.random(BlockNumber(i + 1)), i + 10));
77
78
  });
78
79
  describe('addBlocks', ()=>{
79
80
  it('returns success when adding blocks', async ()=>{
@@ -84,19 +85,19 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
84
85
  await expect(store.addBlocks(blocks)).resolves.toBe(true);
85
86
  });
86
87
  it('throws an error if the previous block does not exist in the store', async ()=>{
87
- const block = makePublished(await L2Block.random(2), 2);
88
+ const block = makePublished(await L2Block.random(BlockNumber(2)), 2);
88
89
  await expect(store.addBlocks([
89
90
  block
90
91
  ])).rejects.toThrow(InitialBlockNumberNotSequentialError);
91
- await expect(store.getPublishedBlocks(1, 10)).resolves.toEqual([]);
92
+ await expect(store.getPublishedBlocks(BlockNumber(1), 10)).resolves.toEqual([]);
92
93
  });
93
94
  it('throws an error if there is a gap in the blocks being added', async ()=>{
94
95
  const blocks = [
95
- makePublished(await L2Block.random(1), 1),
96
- makePublished(await L2Block.random(3), 3)
96
+ makePublished(await L2Block.random(BlockNumber(1)), 1),
97
+ makePublished(await L2Block.random(BlockNumber(3)), 3)
97
98
  ];
98
99
  await expect(store.addBlocks(blocks)).rejects.toThrow(BlockNumberNotSequentialError);
99
- await expect(store.getPublishedBlocks(1, 10)).resolves.toEqual([]);
100
+ await expect(store.getPublishedBlocks(BlockNumber(1), 10)).resolves.toEqual([]);
100
101
  });
101
102
  });
102
103
  describe('unwindBlocks', ()=>{
@@ -111,12 +112,12 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
111
112
  expect(await store.getPublishedBlocks(blockNumber, 1)).toEqual([]);
112
113
  });
113
114
  it('can unwind multiple empty blocks', async ()=>{
114
- const emptyBlocks = await timesParallel(10, async (i)=>makePublished(await L2Block.random(i + 1, 0), i + 10));
115
+ const emptyBlocks = await timesParallel(10, async (i)=>makePublished(await L2Block.random(BlockNumber(i + 1), 0), i + 10));
115
116
  await store.addBlocks(emptyBlocks);
116
117
  expect(await store.getSynchedL2BlockNumber()).toBe(10);
117
- await store.unwindBlocks(10, 3);
118
+ await store.unwindBlocks(BlockNumber(10), 3);
118
119
  expect(await store.getSynchedL2BlockNumber()).toBe(7);
119
- expect((await store.getPublishedBlocks(1, 10)).map((b)=>b.block.number)).toEqual([
120
+ expect((await store.getPublishedBlocks(BlockNumber(1), 10)).map((b)=>b.block.number)).toEqual([
120
121
  1,
121
122
  2,
122
123
  3,
@@ -128,7 +129,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
128
129
  });
129
130
  it('refuses to unwind blocks if the tip is not the last block', async ()=>{
130
131
  await store.addBlocks(blocks);
131
- await expect(store.unwindBlocks(5, 1)).rejects.toThrow(/can only unwind blocks from the tip/i);
132
+ await expect(store.unwindBlocks(BlockNumber(5), 1)).rejects.toThrow(/can only unwind blocks from the tip/i);
132
133
  });
133
134
  it('unwound blocks and headers cannot be retrieved by hash or archive', async ()=>{
134
135
  await store.addBlocks(blocks);
@@ -154,33 +155,33 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
154
155
  await store.addBlocks(blocks);
155
156
  });
156
157
  it.each(blockTests)('retrieves previously stored blocks', async (start, limit, getExpectedBlocks)=>{
157
- expectBlocksEqual(await store.getPublishedBlocks(start, limit), getExpectedBlocks());
158
+ expectBlocksEqual(await store.getPublishedBlocks(BlockNumber(start), limit), getExpectedBlocks());
158
159
  });
159
160
  it('returns an empty array if no blocks are found', async ()=>{
160
- await expect(store.getPublishedBlocks(12, 1)).resolves.toEqual([]);
161
+ await expect(store.getPublishedBlocks(BlockNumber(12), 1)).resolves.toEqual([]);
161
162
  });
162
163
  it('throws an error if limit is invalid', async ()=>{
163
- await expect(store.getPublishedBlocks(1, 0)).rejects.toThrow('Invalid limit: 0');
164
+ await expect(store.getPublishedBlocks(BlockNumber(1), 0)).rejects.toThrow('Invalid limit: 0');
164
165
  });
165
166
  it('throws an error if `from` it is out of range', async ()=>{
166
167
  await expect(store.getPublishedBlocks(INITIAL_L2_BLOCK_NUM - 100, 1)).rejects.toThrow('Invalid start: -99');
167
168
  });
168
169
  it('throws an error if unexpected initial block number is found', async ()=>{
169
170
  await store.addBlocks([
170
- makePublished(await L2Block.random(21), 31)
171
+ makePublished(await L2Block.random(BlockNumber(21)), 31)
171
172
  ], {
172
173
  force: true
173
174
  });
174
- await expect(store.getPublishedBlocks(20, 1)).rejects.toThrow(`mismatch`);
175
+ await expect(store.getPublishedBlocks(BlockNumber(20), 1)).rejects.toThrow(`mismatch`);
175
176
  });
176
177
  it('throws an error if a gap is found', async ()=>{
177
178
  await store.addBlocks([
178
- makePublished(await L2Block.random(20), 30),
179
- makePublished(await L2Block.random(22), 32)
179
+ makePublished(await L2Block.random(BlockNumber(20)), 30),
180
+ makePublished(await L2Block.random(BlockNumber(22)), 32)
180
181
  ], {
181
182
  force: true
182
183
  });
183
- await expect(store.getPublishedBlocks(20, 2)).rejects.toThrow(`mismatch`);
184
+ await expect(store.getPublishedBlocks(BlockNumber(20), 2)).rejects.toThrow(`mismatch`);
184
185
  });
185
186
  });
186
187
  describe('getPublishedBlockByHash', ()=>{
@@ -330,41 +331,24 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
330
331
  ])).resolves.toEqual(true);
331
332
  });
332
333
  });
333
- describe('deleteLogs', ()=>{
334
- it('deletes private & public logs', async ()=>{
335
- const block = blocks[0].block;
336
- await store.addBlocks([
337
- blocks[0]
338
- ]);
339
- await expect(store.addLogs([
340
- block
341
- ])).resolves.toEqual(true);
342
- expect((await store.getPrivateLogs(1, 1)).length).toEqual(block.body.txEffects.map((txEffect)=>txEffect.privateLogs).flat().length);
343
- expect((await store.getPublicLogs({
344
- fromBlock: 1
345
- })).logs.length).toEqual(block.body.txEffects.map((txEffect)=>txEffect.publicLogs).flat().length);
346
- // This one is a pain for memory as we would never want to just delete memory in the middle.
347
- await store.deleteLogs([
348
- block
349
- ]);
350
- expect((await store.getPrivateLogs(1, 1)).length).toEqual(0);
351
- expect((await store.getPublicLogs({
352
- fromBlock: 1
353
- })).logs.length).toEqual(0);
354
- });
355
- });
356
- describe('getPrivateLogs', ()=>{
357
- it('gets added private logs', async ()=>{
358
- const block = blocks[0].block;
359
- await store.addBlocks([
360
- blocks[0]
361
- ]);
362
- await store.addLogs([
363
- block
364
- ]);
365
- const privateLogs = await store.getPrivateLogs(1, 1);
366
- expect(privateLogs).toEqual(block.body.txEffects.map((txEffect)=>txEffect.privateLogs).flat());
367
- });
334
+ it('deleteLogs', async ()=>{
335
+ const block = blocks[0].block;
336
+ await store.addBlocks([
337
+ blocks[0]
338
+ ]);
339
+ await expect(store.addLogs([
340
+ block
341
+ ])).resolves.toEqual(true);
342
+ expect((await store.getPublicLogs({
343
+ fromBlock: BlockNumber(1)
344
+ })).logs.length).toEqual(block.body.txEffects.map((txEffect)=>txEffect.publicLogs).flat().length);
345
+ // This one is a pain for memory as we would never want to just delete memory in the middle.
346
+ await store.deleteLogs([
347
+ block
348
+ ]);
349
+ expect((await store.getPublicLogs({
350
+ fromBlock: BlockNumber(1)
351
+ })).logs.length).toEqual(0);
368
352
  });
369
353
  describe('getTxEffect', ()=>{
370
354
  beforeEach(async ()=>{
@@ -412,13 +396,13 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
412
396
  await expect(store.getTxEffect(TxHash.random())).resolves.toBeUndefined();
413
397
  });
414
398
  it.each([
415
- ()=>wrapInBlock(blocks[0].block.body.txEffects[0], blocks[0].block),
416
- ()=>wrapInBlock(blocks[9].block.body.txEffects[3], blocks[9].block),
417
- ()=>wrapInBlock(blocks[3].block.body.txEffects[1], blocks[3].block),
418
- ()=>wrapInBlock(blocks[5].block.body.txEffects[2], blocks[5].block),
419
- ()=>wrapInBlock(blocks[1].block.body.txEffects[0], blocks[1].block)
399
+ ()=>wrapDataInBlock(blocks[0].block.body.txEffects[0], blocks[0].block),
400
+ ()=>wrapDataInBlock(blocks[9].block.body.txEffects[3], blocks[9].block),
401
+ ()=>wrapDataInBlock(blocks[3].block.body.txEffects[1], blocks[3].block),
402
+ ()=>wrapDataInBlock(blocks[5].block.body.txEffects[2], blocks[5].block),
403
+ ()=>wrapDataInBlock(blocks[1].block.body.txEffects[0], blocks[1].block)
420
404
  ])('tries to retrieves a previously stored transaction after deleted', async (getExpectedTx)=>{
421
- await store.unwindBlocks(blocks.length, blocks.length);
405
+ await store.unwindBlocks(BlockNumber(blocks.length), blocks.length);
422
406
  const expectedTx = await getExpectedTx();
423
407
  const actualTx = await store.getTxEffect(expectedTx.data.txHash);
424
408
  expect(actualTx).toEqual(undefined);
@@ -427,7 +411,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
427
411
  await expect(store.getTxEffect(TxHash.random())).resolves.toBeUndefined();
428
412
  });
429
413
  it('does not fail if the block is unwound while requesting a tx', async ()=>{
430
- const expectedTx = await wrapInBlock(blocks[1].block.body.txEffects[0], blocks[1].block);
414
+ const expectedTx = await wrapDataInBlock(blocks[1].block.body.txEffects[0], blocks[1].block);
431
415
  let done = false;
432
416
  void (async ()=>{
433
417
  while(!done){
@@ -435,13 +419,13 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
435
419
  await sleep(1);
436
420
  }
437
421
  })();
438
- await store.unwindBlocks(blocks.length, blocks.length);
422
+ await store.unwindBlocks(BlockNumber(blocks.length), blocks.length);
439
423
  done = true;
440
424
  expect(await store.getTxEffect(expectedTx.data.txHash)).toEqual(undefined);
441
425
  });
442
426
  });
443
427
  describe('L1 to L2 Messages', ()=>{
444
- const initialL2BlockNumber = 13;
428
+ const initialCheckpointNumber = CheckpointNumber(13);
445
429
  const checkMessages = async (msgs)=>{
446
430
  expect(await store.getLastL1ToL2Message()).toEqual(msgs.at(-1));
447
431
  expect(await toArray(store.iterateL1ToL2Messages())).toEqual(msgs);
@@ -449,11 +433,11 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
449
433
  };
450
434
  const makeInboxMessagesWithFullBlocks = (blockCount, opts = {})=>makeInboxMessages(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP * blockCount, {
451
435
  overrideFn: (msg, i)=>{
452
- const l2BlockNumber = (opts.initialL2BlockNumber ?? initialL2BlockNumber) + Math.floor(i / NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
453
- const index = InboxLeaf.smallestIndexFromL2Block(l2BlockNumber) + BigInt(i % NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
436
+ const checkpointNumber = CheckpointNumber((opts.initialCheckpointNumber ?? initialCheckpointNumber) + Math.floor(i / NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP));
437
+ const index = InboxLeaf.smallestIndexForCheckpoint(checkpointNumber) + BigInt(i % NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
454
438
  return {
455
439
  ...msg,
456
- l2BlockNumber,
440
+ checkpointNumber,
457
441
  index
458
442
  };
459
443
  }
@@ -461,7 +445,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
461
445
  it('stores first message ever', async ()=>{
462
446
  const msg = makeInboxMessage(Buffer16.ZERO, {
463
447
  index: 0n,
464
- l2BlockNumber: 1
448
+ checkpointNumber: CheckpointNumber(1)
465
449
  });
466
450
  await store.addL1ToL2Messages([
467
451
  msg
@@ -469,13 +453,13 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
469
453
  await checkMessages([
470
454
  msg
471
455
  ]);
472
- expect(await store.getL1ToL2Messages(1)).toEqual([
456
+ expect(await store.getL1ToL2Messages(CheckpointNumber(1))).toEqual([
473
457
  msg.leaf
474
458
  ]);
475
459
  });
476
460
  it('stores single message', async ()=>{
477
461
  const msg = makeInboxMessage(Buffer16.ZERO, {
478
- l2BlockNumber: 2
462
+ checkpointNumber: CheckpointNumber(2)
479
463
  });
480
464
  await store.addL1ToL2Messages([
481
465
  msg
@@ -483,23 +467,23 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
483
467
  await checkMessages([
484
468
  msg
485
469
  ]);
486
- expect(await store.getL1ToL2Messages(2)).toEqual([
470
+ expect(await store.getL1ToL2Messages(CheckpointNumber(2))).toEqual([
487
471
  msg.leaf
488
472
  ]);
489
473
  });
490
474
  it('stores and returns messages across different blocks', async ()=>{
491
475
  const msgs = makeInboxMessages(5, {
492
- initialL2BlockNumber
476
+ initialCheckpointNumber
493
477
  });
494
478
  await store.addL1ToL2Messages(msgs);
495
479
  await checkMessages(msgs);
496
- expect(await store.getL1ToL2Messages(initialL2BlockNumber + 2)).toEqual([
480
+ expect(await store.getL1ToL2Messages(CheckpointNumber(initialCheckpointNumber + 2))).toEqual([
497
481
  msgs[2]
498
482
  ].map((m)=>m.leaf));
499
483
  });
500
484
  it('stores the same messages again', async ()=>{
501
485
  const msgs = makeInboxMessages(5, {
502
- initialL2BlockNumber
486
+ initialCheckpointNumber
503
487
  });
504
488
  await store.addL1ToL2Messages(msgs);
505
489
  await store.addL1ToL2Messages(msgs.slice(2));
@@ -507,10 +491,10 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
507
491
  });
508
492
  it('stores and returns messages across different blocks with gaps', async ()=>{
509
493
  const msgs1 = makeInboxMessages(3, {
510
- initialL2BlockNumber: 1
494
+ initialCheckpointNumber: CheckpointNumber(1)
511
495
  });
512
496
  const msgs2 = makeInboxMessages(3, {
513
- initialL2BlockNumber: 20,
497
+ initialCheckpointNumber: CheckpointNumber(20),
514
498
  initialHash: msgs1.at(-1).rollingHash
515
499
  });
516
500
  await store.addL1ToL2Messages(msgs1);
@@ -519,22 +503,22 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
519
503
  ...msgs1,
520
504
  ...msgs2
521
505
  ]);
522
- expect(await store.getL1ToL2Messages(1)).toEqual([
506
+ expect(await store.getL1ToL2Messages(CheckpointNumber(1))).toEqual([
523
507
  msgs1[0].leaf
524
508
  ]);
525
- expect(await store.getL1ToL2Messages(4)).toEqual([]);
526
- expect(await store.getL1ToL2Messages(20)).toEqual([
509
+ expect(await store.getL1ToL2Messages(CheckpointNumber(4))).toEqual([]);
510
+ expect(await store.getL1ToL2Messages(CheckpointNumber(20))).toEqual([
527
511
  msgs2[0].leaf
528
512
  ]);
529
- expect(await store.getL1ToL2Messages(24)).toEqual([]);
513
+ expect(await store.getL1ToL2Messages(CheckpointNumber(24))).toEqual([]);
530
514
  });
531
515
  it('stores and returns messages with block numbers larger than a byte', async ()=>{
532
516
  const msgs = makeInboxMessages(5, {
533
- initialL2BlockNumber: 1000
517
+ initialCheckpointNumber: CheckpointNumber(1000)
534
518
  });
535
519
  await store.addL1ToL2Messages(msgs);
536
520
  await checkMessages(msgs);
537
- expect(await store.getL1ToL2Messages(1002)).toEqual([
521
+ expect(await store.getL1ToL2Messages(CheckpointNumber(1002))).toEqual([
538
522
  msgs[2]
539
523
  ].map((m)=>m.leaf));
540
524
  });
@@ -542,27 +526,27 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
542
526
  const msgs = makeInboxMessagesWithFullBlocks(4);
543
527
  await store.addL1ToL2Messages(msgs);
544
528
  await checkMessages(msgs);
545
- const blockMessages = await store.getL1ToL2Messages(initialL2BlockNumber + 1);
529
+ const blockMessages = await store.getL1ToL2Messages(CheckpointNumber(initialCheckpointNumber + 1));
546
530
  expect(blockMessages).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
547
531
  expect(blockMessages).toEqual(msgs.slice(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP * 2).map((m)=>m.leaf));
548
532
  });
549
533
  it('stores messages in multiple operations', async ()=>{
550
534
  const msgs = makeInboxMessages(20, {
551
- initialL2BlockNumber
535
+ initialCheckpointNumber
552
536
  });
553
537
  await store.addL1ToL2Messages(msgs.slice(0, 10));
554
538
  await store.addL1ToL2Messages(msgs.slice(10, 20));
555
- expect(await store.getL1ToL2Messages(initialL2BlockNumber + 2)).toEqual([
539
+ expect(await store.getL1ToL2Messages(CheckpointNumber(initialCheckpointNumber + 2))).toEqual([
556
540
  msgs[2]
557
541
  ].map((m)=>m.leaf));
558
- expect(await store.getL1ToL2Messages(initialL2BlockNumber + 12)).toEqual([
542
+ expect(await store.getL1ToL2Messages(CheckpointNumber(initialCheckpointNumber + 12))).toEqual([
559
543
  msgs[12]
560
544
  ].map((m)=>m.leaf));
561
545
  await checkMessages(msgs);
562
546
  });
563
547
  it('iterates over messages from start index', async ()=>{
564
548
  const msgs = makeInboxMessages(10, {
565
- initialL2BlockNumber
549
+ initialCheckpointNumber
566
550
  });
567
551
  await store.addL1ToL2Messages(msgs);
568
552
  const iterated = await toArray(store.iterateL1ToL2Messages({
@@ -572,9 +556,10 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
572
556
  });
573
557
  it('iterates over messages in reverse', async ()=>{
574
558
  const msgs = makeInboxMessages(10, {
575
- initialL2BlockNumber
559
+ initialCheckpointNumber
576
560
  });
577
561
  await store.addL1ToL2Messages(msgs);
562
+ initialCheckpointNumber;
578
563
  const iterated = await toArray(store.iterateL1ToL2Messages({
579
564
  reverse: true,
580
565
  end: msgs[3].index
@@ -592,9 +577,9 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
592
577
  });
593
578
  it('throws if block number for the first message is out of order', async ()=>{
594
579
  const msgs = makeInboxMessages(4, {
595
- initialL2BlockNumber
580
+ initialCheckpointNumber
596
581
  });
597
- msgs[2].l2BlockNumber = initialL2BlockNumber - 1;
582
+ msgs[2].checkpointNumber = CheckpointNumber(initialCheckpointNumber - 1);
598
583
  await store.addL1ToL2Messages(msgs.slice(0, 2));
599
584
  await expect(store.addL1ToL2Messages(msgs.slice(2, 4))).rejects.toThrow(MessageStoreError);
600
585
  });
@@ -606,29 +591,29 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
606
591
  it('throws if rolling hash for first message is not correct', async ()=>{
607
592
  const msgs = makeInboxMessages(4);
608
593
  msgs[2].rollingHash = Buffer16.random();
609
- await store.addL1ToL2Messages(msgs.slice(0, 2));
594
+ await store.addL1ToL2Messages(msgs.slice(0, CheckpointNumber(2)));
610
595
  await expect(store.addL1ToL2Messages(msgs.slice(2, 4))).rejects.toThrow(MessageStoreError);
611
596
  });
612
597
  it('throws if index is not in the correct range', async ()=>{
613
598
  const msgs = makeInboxMessages(5, {
614
- initialL2BlockNumber
599
+ initialCheckpointNumber
615
600
  });
616
601
  msgs.at(-1).index += 100n;
617
602
  await expect(store.addL1ToL2Messages(msgs)).rejects.toThrow(MessageStoreError);
618
603
  });
619
604
  it('throws if first index in block has gaps', async ()=>{
620
605
  const msgs = makeInboxMessages(4, {
621
- initialL2BlockNumber
606
+ initialCheckpointNumber
622
607
  });
623
608
  msgs[2].index++;
624
609
  await expect(store.addL1ToL2Messages(msgs)).rejects.toThrow(MessageStoreError);
625
610
  });
626
611
  it('throws if index does not follow previous one', async ()=>{
627
612
  const msgs = makeInboxMessages(2, {
628
- initialL2BlockNumber,
613
+ initialCheckpointNumber,
629
614
  overrideFn: (msg, i)=>({
630
615
  ...msg,
631
- l2BlockNumber: 2,
616
+ checkpointNumber: CheckpointNumber(2),
632
617
  index: BigInt(i + NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP * 2)
633
618
  })
634
619
  });
@@ -637,24 +622,24 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
637
622
  });
638
623
  it('removes messages up to the given block number', async ()=>{
639
624
  const msgs = makeInboxMessagesWithFullBlocks(4, {
640
- initialL2BlockNumber: 1
625
+ initialCheckpointNumber: CheckpointNumber(1)
641
626
  });
642
627
  await store.addL1ToL2Messages(msgs);
643
628
  await checkMessages(msgs);
644
- expect(await store.getL1ToL2Messages(1)).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
645
- expect(await store.getL1ToL2Messages(2)).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
646
- expect(await store.getL1ToL2Messages(3)).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
647
- expect(await store.getL1ToL2Messages(4)).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
648
- await store.rollbackL1ToL2MessagesToL2Block(2);
649
- expect(await store.getL1ToL2Messages(1)).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
650
- expect(await store.getL1ToL2Messages(2)).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
651
- expect(await store.getL1ToL2Messages(3)).toHaveLength(0);
652
- expect(await store.getL1ToL2Messages(4)).toHaveLength(0);
629
+ expect(await store.getL1ToL2Messages(CheckpointNumber(1))).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
630
+ expect(await store.getL1ToL2Messages(CheckpointNumber(2))).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
631
+ expect(await store.getL1ToL2Messages(CheckpointNumber(3))).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
632
+ expect(await store.getL1ToL2Messages(CheckpointNumber(4))).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
633
+ await store.rollbackL1ToL2MessagesToCheckpoint(CheckpointNumber(2));
634
+ expect(await store.getL1ToL2Messages(CheckpointNumber(1))).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
635
+ expect(await store.getL1ToL2Messages(CheckpointNumber(2))).toHaveLength(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
636
+ expect(await store.getL1ToL2Messages(CheckpointNumber(3))).toHaveLength(0);
637
+ expect(await store.getL1ToL2Messages(CheckpointNumber(4))).toHaveLength(0);
653
638
  await checkMessages(msgs.slice(0, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP * 2));
654
639
  });
655
640
  it('removes messages starting with the given index', async ()=>{
656
641
  const msgs = makeInboxMessagesWithFullBlocks(4, {
657
- initialL2BlockNumber: 1
642
+ initialCheckpointNumber: CheckpointNumber(1)
658
643
  });
659
644
  await store.addL1ToL2Messages(msgs);
660
645
  await store.removeL1ToL2Messages(msgs[13].index);
@@ -677,7 +662,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
677
662
  };
678
663
  await store.addContractInstances([
679
664
  contractInstance
680
- ], blockNum);
665
+ ], BlockNumber(blockNum));
681
666
  });
682
667
  it('returns previously stored contract instances', async ()=>{
683
668
  await expect(store.getContractInstance(contractInstance.address, timestamp)).resolves.toMatchObject(contractInstance);
@@ -688,7 +673,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
688
673
  it('returns undefined if previously stored contract instances was deleted', async ()=>{
689
674
  await store.deleteContractInstances([
690
675
  contractInstance
691
- ], blockNum);
676
+ ], BlockNumber(blockNum));
692
677
  await expect(store.getContractInstance(contractInstance.address, timestamp)).resolves.toBeUndefined();
693
678
  });
694
679
  });
@@ -710,7 +695,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
710
695
  };
711
696
  await store.addContractInstances([
712
697
  contractInstance
713
- ], 1);
698
+ ], BlockNumber(1));
714
699
  await store.addContractInstanceUpdates([
715
700
  {
716
701
  prevContractClassId: classId,
@@ -747,7 +732,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
747
732
  };
748
733
  await store.addContractInstances([
749
734
  otherContractInstance
750
- ], 1);
735
+ ], BlockNumber(1));
751
736
  const fetchedInstance = await store.getContractInstance(otherContractInstance.address, timestampOfChange + 1n);
752
737
  expect(fetchedInstance?.originalContractClassId).toEqual(otherClassId);
753
738
  expect(fetchedInstance?.currentContractClassId).toEqual(otherClassId);
@@ -765,7 +750,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
765
750
  };
766
751
  await store.addContractInstances([
767
752
  otherContractInstance
768
- ], 1);
753
+ ], BlockNumber(1));
769
754
  await store.addContractInstanceUpdates([
770
755
  {
771
756
  prevContractClassId: otherClassId,
@@ -788,7 +773,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
788
773
  contractClass
789
774
  ], [
790
775
  await computePublicBytecodeCommitment(contractClass.packedBytecode)
791
- ], blockNum);
776
+ ], BlockNumber(blockNum));
792
777
  });
793
778
  it('returns previously stored contract class', async ()=>{
794
779
  await expect(store.getContractClass(contractClass.id)).resolves.toMatchObject(contractClass);
@@ -796,7 +781,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
796
781
  it('returns undefined if the initial deployed contract class was deleted', async ()=>{
797
782
  await store.deleteContractClasses([
798
783
  contractClass
799
- ], blockNum);
784
+ ], BlockNumber(blockNum));
800
785
  await expect(store.getContractClass(contractClass.id)).resolves.toBeUndefined();
801
786
  });
802
787
  it('returns contract class if later "deployment" class was deleted', async ()=>{
@@ -804,10 +789,10 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
804
789
  contractClass
805
790
  ], [
806
791
  await computePublicBytecodeCommitment(contractClass.packedBytecode)
807
- ], blockNum + 1);
792
+ ], BlockNumber(blockNum + 1));
808
793
  await store.deleteContractClasses([
809
794
  contractClass
810
- ], blockNum + 1);
795
+ ], BlockNumber(blockNum + 1));
811
796
  await expect(store.getContractClass(contractClass.id)).resolves.toMatchObject(contractClass);
812
797
  });
813
798
  it('returns undefined if contract class is not found', async ()=>{
@@ -870,8 +855,8 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
870
855
  });
871
856
  };
872
857
  const mockBlockWithLogs = async (blockNumber)=>{
873
- const block = await L2Block.random(blockNumber);
874
- block.header.globalVariables.blockNumber = blockNumber;
858
+ const block = await L2Block.random(BlockNumber(blockNumber));
859
+ block.header.globalVariables.blockNumber = BlockNumber(blockNumber);
875
860
  block.body.txEffects = await timesParallel(numTxsPerBlock, async (txIndex)=>{
876
861
  const txEffect = await TxEffect.random();
877
862
  txEffect.privateLogs = mockPrivateLogs(blockNumber, txIndex);
@@ -995,7 +980,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
995
980
  let blocks;
996
981
  beforeEach(async ()=>{
997
982
  blocks = await timesParallel(numBlocks, async (index)=>PublishedL2Block.fromFields({
998
- block: await L2Block.random(index + 1, txsPerBlock, numPublicFunctionCalls, numPublicLogs),
983
+ block: await L2Block.random(BlockNumber(index + 1), txsPerBlock, numPublicFunctionCalls, numPublicLogs),
999
984
  l1: {
1000
985
  blockNumber: BigInt(index),
1001
986
  blockHash: makeBlockHash(index),
@@ -1012,7 +997,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
1012
997
  const targetTxIndex = randomInt(txsPerBlock);
1013
998
  const targetTxHash = blocks[targetBlockIndex].block.body.txEffects[targetTxIndex].txHash;
1014
999
  await Promise.all([
1015
- store.unwindBlocks(blocks.length, blocks.length),
1000
+ store.unwindBlocks(BlockNumber(blocks.length), blocks.length),
1016
1001
  store.deleteLogs(blocks.map((b)=>b.block))
1017
1002
  ]);
1018
1003
  const response = await store.getPublicLogs({
@@ -1077,7 +1062,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
1077
1062
  const targetBlockIndex = randomInt(numBlocks);
1078
1063
  const targetTxIndex = randomInt(txsPerBlock);
1079
1064
  const targetLogIndex = randomInt(numPublicLogs);
1080
- const afterLog = new LogId(targetBlockIndex + INITIAL_L2_BLOCK_NUM, targetTxIndex, targetLogIndex);
1065
+ const afterLog = new LogId(BlockNumber(targetBlockIndex + INITIAL_L2_BLOCK_NUM), targetTxIndex, targetLogIndex);
1081
1066
  const response = await store.getPublicLogs({
1082
1067
  afterLog
1083
1068
  });
@@ -1097,7 +1082,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
1097
1082
  it('"txHash" filter param is ignored when "afterLog" is set', async ()=>{
1098
1083
  // Get random txHash
1099
1084
  const txHash = TxHash.random();
1100
- const afterLog = new LogId(1, 0, 0);
1085
+ const afterLog = new LogId(BlockNumber(1), 0, 0);
1101
1086
  const response = await store.getPublicLogs({
1102
1087
  txHash,
1103
1088
  afterLog
@@ -1113,7 +1098,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
1113
1098
  // "fromBlock" gets correctly trimmed to range and "toBlock" is exclusive
1114
1099
  logs = (await store.getPublicLogs({
1115
1100
  fromBlock: -10,
1116
- toBlock: 5
1101
+ toBlock: BlockNumber(5)
1117
1102
  })).logs;
1118
1103
  let blockNumbers = new Set(logs.map((log)=>log.id.blockNumber));
1119
1104
  expect(blockNumbers).toEqual(new Set([
@@ -1124,13 +1109,13 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
1124
1109
  ]));
1125
1110
  // "toBlock" should be exclusive
1126
1111
  logs = (await store.getPublicLogs({
1127
- fromBlock: 1,
1128
- toBlock: 1
1112
+ fromBlock: BlockNumber(1),
1113
+ toBlock: BlockNumber(1)
1129
1114
  })).logs;
1130
1115
  expect(logs.length).toBe(0);
1131
1116
  logs = (await store.getPublicLogs({
1132
- fromBlock: 10,
1133
- toBlock: 5
1117
+ fromBlock: BlockNumber(10),
1118
+ toBlock: BlockNumber(5)
1134
1119
  })).logs;
1135
1120
  expect(logs.length).toBe(0);
1136
1121
  // both "fromBlock" and "toBlock" get correctly capped to range and logs from all blocks are returned
@@ -1142,23 +1127,23 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
1142
1127
  expect(blockNumbers.size).toBe(numBlocks);
1143
1128
  // intersecting with "afterLog" works
1144
1129
  logs = (await store.getPublicLogs({
1145
- fromBlock: 2,
1146
- toBlock: 5,
1147
- afterLog: new LogId(4, 0, 0)
1130
+ fromBlock: BlockNumber(2),
1131
+ toBlock: BlockNumber(5),
1132
+ afterLog: new LogId(BlockNumber(4), 0, 0)
1148
1133
  })).logs;
1149
1134
  blockNumbers = new Set(logs.map((log)=>log.id.blockNumber));
1150
1135
  expect(blockNumbers).toEqual(new Set([
1151
1136
  4
1152
1137
  ]));
1153
1138
  logs = (await store.getPublicLogs({
1154
- toBlock: 5,
1155
- afterLog: new LogId(5, 1, 0)
1139
+ toBlock: BlockNumber(5),
1140
+ afterLog: new LogId(BlockNumber(5), 1, 0)
1156
1141
  })).logs;
1157
1142
  expect(logs.length).toBe(0);
1158
1143
  logs = (await store.getPublicLogs({
1159
- fromBlock: 2,
1160
- toBlock: 5,
1161
- afterLog: new LogId(100, 0, 0)
1144
+ fromBlock: BlockNumber(2),
1145
+ toBlock: BlockNumber(5),
1146
+ afterLog: new LogId(BlockNumber(100), 0, 0)
1162
1147
  })).logs;
1163
1148
  expect(logs.length).toBe(0);
1164
1149
  });
@@ -1167,7 +1152,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
1167
1152
  const targetBlockIndex = randomInt(numBlocks);
1168
1153
  const targetTxIndex = randomInt(txsPerBlock);
1169
1154
  const targetLogIndex = randomInt(numPublicLogs);
1170
- const afterLog = new LogId(targetBlockIndex + INITIAL_L2_BLOCK_NUM, targetTxIndex, targetLogIndex);
1155
+ const afterLog = new LogId(BlockNumber(targetBlockIndex + INITIAL_L2_BLOCK_NUM), targetTxIndex, targetLogIndex);
1171
1156
  const response = await store.getPublicLogs({
1172
1157
  afterLog,
1173
1158
  fromBlock: afterLog.blockNumber
@@ -1207,7 +1192,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
1207
1192
  EthAddress.random(),
1208
1193
  EthAddress.random()
1209
1194
  ],
1210
- epoch: 123n,
1195
+ epoch: EpochNumber(123),
1211
1196
  seed: 456n,
1212
1197
  attestors: [
1213
1198
  EthAddress.random()
@@ -1231,7 +1216,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
1231
1216
  attestors: [
1232
1217
  EthAddress.random()
1233
1218
  ],
1234
- epoch: 789n,
1219
+ epoch: EpochNumber(789),
1235
1220
  seed: 101n,
1236
1221
  attestations: [
1237
1222
  CommitteeAttestation.random()
@@ -1253,7 +1238,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
1253
1238
  committee: [
1254
1239
  EthAddress.random()
1255
1240
  ],
1256
- epoch: 999n,
1241
+ epoch: EpochNumber(999),
1257
1242
  seed: 888n,
1258
1243
  attestors: [
1259
1244
  EthAddress.random()
@@ -1273,7 +1258,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
1273
1258
  valid: false,
1274
1259
  block: randomBlockInfo(4),
1275
1260
  committee: [],
1276
- epoch: 0n,
1261
+ epoch: EpochNumber(0),
1277
1262
  seed: 0n,
1278
1263
  attestors: [],
1279
1264
  attestations: [],