@aztec-labs/archiver 6.0.0-nightly.20260829

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 (174) hide show
  1. package/README.md +178 -0
  2. package/dest/archiver.d.ts +194 -0
  3. package/dest/archiver.d.ts.map +1 -0
  4. package/dest/archiver.js +948 -0
  5. package/dest/config.d.ts +34 -0
  6. package/dest/config.d.ts.map +1 -0
  7. package/dest/config.js +100 -0
  8. package/dest/errors.d.ts +97 -0
  9. package/dest/errors.d.ts.map +1 -0
  10. package/dest/errors.js +141 -0
  11. package/dest/factory.d.ts +32 -0
  12. package/dest/factory.d.ts.map +1 -0
  13. package/dest/factory.js +183 -0
  14. package/dest/index.d.ts +20 -0
  15. package/dest/index.d.ts.map +1 -0
  16. package/dest/index.js +18 -0
  17. package/dest/interfaces.d.ts +9 -0
  18. package/dest/interfaces.d.ts.map +1 -0
  19. package/dest/interfaces.js +3 -0
  20. package/dest/l1/bin/retrieve-calldata.d.ts +3 -0
  21. package/dest/l1/bin/retrieve-calldata.d.ts.map +1 -0
  22. package/dest/l1/bin/retrieve-calldata.js +152 -0
  23. package/dest/l1/calldata_retriever.d.ts +143 -0
  24. package/dest/l1/calldata_retriever.d.ts.map +1 -0
  25. package/dest/l1/calldata_retriever.js +413 -0
  26. package/dest/l1/data_retrieval.d.ts +102 -0
  27. package/dest/l1/data_retrieval.d.ts.map +1 -0
  28. package/dest/l1/data_retrieval.js +308 -0
  29. package/dest/l1/debug_tx.d.ts +19 -0
  30. package/dest/l1/debug_tx.d.ts.map +1 -0
  31. package/dest/l1/debug_tx.js +73 -0
  32. package/dest/l1/spire_proposer.d.ts +70 -0
  33. package/dest/l1/spire_proposer.d.ts.map +1 -0
  34. package/dest/l1/spire_proposer.js +149 -0
  35. package/dest/l1/trace_tx.d.ts +43 -0
  36. package/dest/l1/trace_tx.d.ts.map +1 -0
  37. package/dest/l1/trace_tx.js +91 -0
  38. package/dest/l1/types.d.ts +12 -0
  39. package/dest/l1/types.d.ts.map +1 -0
  40. package/dest/l1/types.js +3 -0
  41. package/dest/l1/validate_historical_logs.d.ts +23 -0
  42. package/dest/l1/validate_historical_logs.d.ts.map +1 -0
  43. package/dest/l1/validate_historical_logs.js +108 -0
  44. package/dest/l1/validate_trace.d.ts +32 -0
  45. package/dest/l1/validate_trace.d.ts.map +1 -0
  46. package/dest/l1/validate_trace.js +154 -0
  47. package/dest/modules/contract_data_source_adapter.d.ts +25 -0
  48. package/dest/modules/contract_data_source_adapter.d.ts.map +1 -0
  49. package/dest/modules/contract_data_source_adapter.js +32 -0
  50. package/dest/modules/data_source_base.d.ts +116 -0
  51. package/dest/modules/data_source_base.d.ts.map +1 -0
  52. package/dest/modules/data_source_base.js +334 -0
  53. package/dest/modules/data_store_updater.d.ts +105 -0
  54. package/dest/modules/data_store_updater.d.ts.map +1 -0
  55. package/dest/modules/data_store_updater.js +392 -0
  56. package/dest/modules/instrumentation.d.ts +63 -0
  57. package/dest/modules/instrumentation.d.ts.map +1 -0
  58. package/dest/modules/instrumentation.js +166 -0
  59. package/dest/modules/l1_synchronizer.d.ts +77 -0
  60. package/dest/modules/l1_synchronizer.d.ts.map +1 -0
  61. package/dest/modules/l1_synchronizer.js +1369 -0
  62. package/dest/modules/outbox_trees_resolver.d.ts +64 -0
  63. package/dest/modules/outbox_trees_resolver.d.ts.map +1 -0
  64. package/dest/modules/outbox_trees_resolver.js +184 -0
  65. package/dest/modules/validation.d.ts +40 -0
  66. package/dest/modules/validation.d.ts.map +1 -0
  67. package/dest/modules/validation.js +122 -0
  68. package/dest/store/block_store.d.ts +304 -0
  69. package/dest/store/block_store.d.ts.map +1 -0
  70. package/dest/store/block_store.js +1252 -0
  71. package/dest/store/contract_class_store.d.ts +31 -0
  72. package/dest/store/contract_class_store.d.ts.map +1 -0
  73. package/dest/store/contract_class_store.js +98 -0
  74. package/dest/store/contract_instance_store.d.ts +51 -0
  75. package/dest/store/contract_instance_store.d.ts.map +1 -0
  76. package/dest/store/contract_instance_store.js +129 -0
  77. package/dest/store/data_stores.d.ts +68 -0
  78. package/dest/store/data_stores.d.ts.map +1 -0
  79. package/dest/store/data_stores.js +54 -0
  80. package/dest/store/function_names_cache.d.ts +17 -0
  81. package/dest/store/function_names_cache.d.ts.map +1 -0
  82. package/dest/store/function_names_cache.js +30 -0
  83. package/dest/store/l2_tips_cache.d.ts +25 -0
  84. package/dest/store/l2_tips_cache.d.ts.map +1 -0
  85. package/dest/store/l2_tips_cache.js +26 -0
  86. package/dest/store/log_store.d.ts +59 -0
  87. package/dest/store/log_store.d.ts.map +1 -0
  88. package/dest/store/log_store.js +310 -0
  89. package/dest/store/log_store_codec.d.ts +78 -0
  90. package/dest/store/log_store_codec.d.ts.map +1 -0
  91. package/dest/store/log_store_codec.js +110 -0
  92. package/dest/store/message_store.d.ts +111 -0
  93. package/dest/store/message_store.d.ts.map +1 -0
  94. package/dest/store/message_store.js +522 -0
  95. package/dest/structs/data_retrieval.d.ts +27 -0
  96. package/dest/structs/data_retrieval.d.ts.map +1 -0
  97. package/dest/structs/data_retrieval.js +5 -0
  98. package/dest/structs/inbox_message.d.ts +17 -0
  99. package/dest/structs/inbox_message.d.ts.map +1 -0
  100. package/dest/structs/inbox_message.js +33 -0
  101. package/dest/structs/published.d.ts +2 -0
  102. package/dest/structs/published.d.ts.map +1 -0
  103. package/dest/structs/published.js +1 -0
  104. package/dest/test/fake_l1_state.d.ts +220 -0
  105. package/dest/test/fake_l1_state.d.ts.map +1 -0
  106. package/dest/test/fake_l1_state.js +565 -0
  107. package/dest/test/index.d.ts +5 -0
  108. package/dest/test/index.d.ts.map +1 -0
  109. package/dest/test/index.js +6 -0
  110. package/dest/test/mock_archiver.d.ts +35 -0
  111. package/dest/test/mock_archiver.d.ts.map +1 -0
  112. package/dest/test/mock_archiver.js +93 -0
  113. package/dest/test/mock_l1_to_l2_message_source.d.ts +24 -0
  114. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -0
  115. package/dest/test/mock_l1_to_l2_message_source.js +79 -0
  116. package/dest/test/mock_l2_block_source.d.ts +139 -0
  117. package/dest/test/mock_l2_block_source.d.ts.map +1 -0
  118. package/dest/test/mock_l2_block_source.js +489 -0
  119. package/dest/test/mock_structs.d.ts +92 -0
  120. package/dest/test/mock_structs.d.ts.map +1 -0
  121. package/dest/test/mock_structs.js +188 -0
  122. package/dest/test/noop_l1_archiver.d.ts +34 -0
  123. package/dest/test/noop_l1_archiver.d.ts.map +1 -0
  124. package/dest/test/noop_l1_archiver.js +88 -0
  125. package/package.json +108 -0
  126. package/src/archiver.ts +785 -0
  127. package/src/config.ts +133 -0
  128. package/src/errors.ts +211 -0
  129. package/src/factory.ts +262 -0
  130. package/src/index.ts +29 -0
  131. package/src/interfaces.ts +9 -0
  132. package/src/l1/README.md +55 -0
  133. package/src/l1/bin/retrieve-calldata.ts +194 -0
  134. package/src/l1/calldata_retriever.ts +529 -0
  135. package/src/l1/data_retrieval.ts +498 -0
  136. package/src/l1/debug_tx.ts +98 -0
  137. package/src/l1/spire_proposer.ts +151 -0
  138. package/src/l1/trace_tx.ts +127 -0
  139. package/src/l1/types.ts +12 -0
  140. package/src/l1/validate_historical_logs.ts +140 -0
  141. package/src/l1/validate_trace.ts +228 -0
  142. package/src/modules/contract_data_source_adapter.ts +46 -0
  143. package/src/modules/data_source_base.ts +482 -0
  144. package/src/modules/data_store_updater.ts +520 -0
  145. package/src/modules/instrumentation.ts +217 -0
  146. package/src/modules/l1_synchronizer.ts +1296 -0
  147. package/src/modules/outbox_trees_resolver.ts +220 -0
  148. package/src/modules/validation.ts +186 -0
  149. package/src/store/block_store.ts +1604 -0
  150. package/src/store/contract_class_store.ts +126 -0
  151. package/src/store/contract_instance_store.ts +178 -0
  152. package/src/store/data_stores.ts +103 -0
  153. package/src/store/function_names_cache.ts +37 -0
  154. package/src/store/l2_tips_cache.ts +35 -0
  155. package/src/store/log_store.ts +380 -0
  156. package/src/store/log_store_codec.ts +143 -0
  157. package/src/store/message_store.ts +621 -0
  158. package/src/structs/data_retrieval.ts +27 -0
  159. package/src/structs/inbox_message.ts +48 -0
  160. package/src/structs/published.ts +1 -0
  161. package/src/test/fake_l1_state.ts +807 -0
  162. package/src/test/fixtures/debug_traceTransaction-multicall3.json +88 -0
  163. package/src/test/fixtures/debug_traceTransaction-multiplePropose.json +153 -0
  164. package/src/test/fixtures/debug_traceTransaction-proxied.json +122 -0
  165. package/src/test/fixtures/trace_transaction-multicall3.json +65 -0
  166. package/src/test/fixtures/trace_transaction-multiplePropose.json +319 -0
  167. package/src/test/fixtures/trace_transaction-proxied.json +128 -0
  168. package/src/test/fixtures/trace_transaction-randomRevert.json +216 -0
  169. package/src/test/index.ts +7 -0
  170. package/src/test/mock_archiver.ts +122 -0
  171. package/src/test/mock_l1_to_l2_message_source.ts +81 -0
  172. package/src/test/mock_l2_block_source.ts +620 -0
  173. package/src/test/mock_structs.ts +317 -0
  174. package/src/test/noop_l1_archiver.ts +157 -0
@@ -0,0 +1,93 @@
1
+ import { Fr } from '@aztec-labs/foundation/curves/bn254';
2
+ import { MockL1ToL2MessageSource } from './mock_l1_to_l2_message_source.js';
3
+ import { MockL2BlockSource } from './mock_l2_block_source.js';
4
+ /**
5
+ * A mocked implementation of the archiver that implements L2BlockSource and L1ToL2MessageSource.
6
+ */ export class MockArchiver extends MockL2BlockSource {
7
+ messageSource = new MockL1ToL2MessageSource(0);
8
+ setInboxBucket(bucket, msgs = []) {
9
+ this.messageSource.setInboxBucket(bucket, msgs);
10
+ }
11
+ getL1ToL2MessageIndex(_l1ToL2Message) {
12
+ return this.messageSource.getL1ToL2MessageIndex(_l1ToL2Message);
13
+ }
14
+ getLatestInboxBucketAtOrBefore(timestamp) {
15
+ return this.messageSource.getLatestInboxBucketAtOrBefore(timestamp);
16
+ }
17
+ getInboxBucket(seq) {
18
+ return this.messageSource.getInboxBucket(seq);
19
+ }
20
+ getInboxBucketByTotalMsgCount(totalMsgCount) {
21
+ return this.messageSource.getInboxBucketByTotalMsgCount(totalMsgCount);
22
+ }
23
+ getL1ToL2MessagesBetweenBuckets(fromExclusive, toInclusive) {
24
+ return this.messageSource.getL1ToL2MessagesBetweenBuckets(fromExclusive, toInclusive);
25
+ }
26
+ getL1ToL2MessagesBetweenLeafCounts(startLeafCount, endLeafCount) {
27
+ return this.messageSource.getL1ToL2MessagesBetweenLeafCounts(startLeafCount, endLeafCount);
28
+ }
29
+ }
30
+ /**
31
+ * A mocked implementation of the archiver with a set of precomputed blocks and messages.
32
+ */ export class MockPrefilledArchiver extends MockArchiver {
33
+ prefilled = [];
34
+ prefilledMessages = [];
35
+ constructor(prefilled){
36
+ super();
37
+ this.setPrefilled(prefilled);
38
+ }
39
+ setPrefilled(prefilled) {
40
+ for (const { checkpoint } of prefilled){
41
+ this.prefilled[checkpoint.number - 1] = checkpoint;
42
+ if (checkpoint.blocks.length !== 1) {
43
+ throw new Error('Prefilled checkpoint must only have 1 block at the moment.');
44
+ }
45
+ }
46
+ for (const { checkpoint, messages } of prefilled){
47
+ this.prefilledMessages[checkpoint.number - 1] = messages;
48
+ }
49
+ // Register the Inbox buckets the streaming world-state synchronizer reconstructs each block's consumed
50
+ // message bundle from: a genesis sentinel (totalMsgCount 0) so a leaf count of 0
51
+ // resolves to a bucket, plus one bucket per message-carrying checkpoint whose cumulative totalMsgCount
52
+ // matches the block's post-insertion L1-to-L2 leaf count. Rebuilt from the full prefilled chain (not just
53
+ // this call's checkpoints) so a reorg re-prefill that replaces a suffix keeps the cumulative aligned.
54
+ // Without these the synchronizer derives an empty bundle and the reconstructed block state diverges.
55
+ this.setInboxBucket({
56
+ seq: 0n,
57
+ inboxRollingHash: Fr.ZERO,
58
+ totalMsgCount: 0n,
59
+ timestamp: 0n,
60
+ msgCount: 0,
61
+ lastMessageIndex: 0n
62
+ }, []);
63
+ let bucketSeq = 0n;
64
+ let totalMsgCount = 0n;
65
+ for(let i = 0; i < this.prefilled.length; i++){
66
+ const messages = this.prefilledMessages[i] ?? [];
67
+ if (messages.length === 0) {
68
+ continue;
69
+ }
70
+ bucketSeq += 1n;
71
+ totalMsgCount += BigInt(messages.length);
72
+ this.setInboxBucket({
73
+ seq: bucketSeq,
74
+ inboxRollingHash: Fr.ZERO,
75
+ totalMsgCount,
76
+ timestamp: bucketSeq,
77
+ msgCount: messages.length,
78
+ lastMessageIndex: totalMsgCount - 1n
79
+ }, messages);
80
+ }
81
+ }
82
+ createBlocks(numBlocks) {
83
+ const flattenedBlocks = this.prefilled.flatMap((c)=>c.blocks);
84
+ if (this.l2Blocks.length + numBlocks > flattenedBlocks.length) {
85
+ throw new Error(`Not enough precomputed blocks to create ${numBlocks} more blocks (already at ${this.l2Blocks.length})`);
86
+ }
87
+ const fromBlock = this.l2Blocks.length;
88
+ const checkpointsToAdd = this.prefilled.slice(fromBlock, fromBlock + numBlocks);
89
+ this.addProposedBlocks(checkpointsToAdd.flatMap((c)=>c.blocks));
90
+ this.checkpointList.push(...checkpointsToAdd);
91
+ return Promise.resolve();
92
+ }
93
+ }
@@ -0,0 +1,24 @@
1
+ import { BlockNumber } from '@aztec-labs/foundation/branded-types';
2
+ import { Fr } from '@aztec-labs/foundation/curves/bn254';
3
+ import type { L2Tips } from '@aztec-labs/stdlib/block';
4
+ import type { InboxBucket, L1ToL2MessageSource } from '@aztec-labs/stdlib/messaging';
5
+ /**
6
+ * A mocked implementation of L1ToL2MessageSource to be used in tests.
7
+ */
8
+ export declare class MockL1ToL2MessageSource implements L1ToL2MessageSource {
9
+ private blockNumber;
10
+ private buckets;
11
+ private messagesPerBucket;
12
+ constructor(blockNumber: number);
13
+ setInboxBucket(bucket: InboxBucket, msgs?: Fr[]): void;
14
+ setBlockNumber(blockNumber: number): void;
15
+ getL1ToL2MessageIndex(_l1ToL2Message: Fr): Promise<bigint | undefined>;
16
+ getInboxBucket(seq: bigint): Promise<InboxBucket | undefined>;
17
+ getInboxBucketByTotalMsgCount(totalMsgCount: bigint): Promise<InboxBucket | undefined>;
18
+ getLatestInboxBucketAtOrBefore(timestamp: bigint): Promise<InboxBucket | undefined>;
19
+ getL1ToL2MessagesBetweenBuckets(fromExclusive: bigint, toInclusive: bigint): Promise<Fr[]>;
20
+ getL1ToL2MessagesBetweenLeafCounts(startLeafCount: bigint, endLeafCount: bigint): Promise<Fr[]>;
21
+ getBlockNumber(): Promise<BlockNumber>;
22
+ getL2Tips(): Promise<L2Tips>;
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMV90b19sMl9tZXNzYWdlX3NvdXJjZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvbW9ja19sMV90b19sMl9tZXNzYWdlX3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFvQixNQUFNLHNDQUFzQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBb0MsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekYsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFckY7O0dBRUc7QUFDSCxxQkFBYSx1QkFBd0IsWUFBVyxtQkFBbUI7SUFJckQsT0FBTyxDQUFDLFdBQVc7SUFIL0IsT0FBTyxDQUFDLE9BQU8sQ0FBa0M7SUFDakQsT0FBTyxDQUFDLGlCQUFpQixDQUEyQjtJQUVwRCxZQUFvQixXQUFXLEVBQUUsTUFBTSxFQUFJO0lBRXBDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksR0FBRSxFQUFFLEVBQU8sUUFHekQ7SUFFTSxjQUFjLENBQUMsV0FBVyxFQUFFLE1BQU0sUUFFeEM7SUFFRCxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRXJFO0lBRUQsY0FBYyxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsQ0FFNUQ7SUFFRCw2QkFBNkIsQ0FBQyxhQUFhLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBS3JGO0lBRUQsOEJBQThCLENBQUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUtsRjtJQUVELCtCQUErQixDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FLekY7SUFFSyxrQ0FBa0MsQ0FBQyxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBT3BHO0lBRUQsY0FBYyx5QkFFYjtJQUVELFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBYzNCO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock_l1_to_l2_message_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l1_to_l2_message_source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAoB,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAC;AACzD,OAAO,KAAK,EAAoC,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAErF;;GAEG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAIrD,OAAO,CAAC,WAAW;IAH/B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,iBAAiB,CAA2B;IAEpD,YAAoB,WAAW,EAAE,MAAM,EAAI;IAEpC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,GAAE,EAAE,EAAO,QAGzD;IAEM,cAAc,CAAC,WAAW,EAAE,MAAM,QAExC;IAED,qBAAqB,CAAC,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAErE;IAED,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAE5D;IAED,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAKrF;IAED,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAKlF;IAED,+BAA+B,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAKzF;IAEK,kCAAkC,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAOpG;IAED,cAAc,yBAEb;IAED,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAc3B;CACF"}
@@ -0,0 +1,79 @@
1
+ import { BlockNumber, CheckpointNumber } from '@aztec-labs/foundation/branded-types';
2
+ import { Fr } from '@aztec-labs/foundation/curves/bn254';
3
+ /**
4
+ * A mocked implementation of L1ToL2MessageSource to be used in tests.
5
+ */ export class MockL1ToL2MessageSource {
6
+ blockNumber;
7
+ buckets;
8
+ messagesPerBucket;
9
+ constructor(blockNumber){
10
+ this.blockNumber = blockNumber;
11
+ this.buckets = new Map();
12
+ this.messagesPerBucket = new Map();
13
+ }
14
+ setInboxBucket(bucket, msgs = []) {
15
+ this.buckets.set(bucket.seq, bucket);
16
+ this.messagesPerBucket.set(bucket.seq, msgs);
17
+ }
18
+ setBlockNumber(blockNumber) {
19
+ this.blockNumber = blockNumber;
20
+ }
21
+ getL1ToL2MessageIndex(_l1ToL2Message) {
22
+ throw new Error('Method not implemented.');
23
+ }
24
+ getInboxBucket(seq) {
25
+ return Promise.resolve(this.buckets.get(seq));
26
+ }
27
+ getInboxBucketByTotalMsgCount(totalMsgCount) {
28
+ if (totalMsgCount === 0n) {
29
+ return Promise.resolve(this.buckets.get(0n));
30
+ }
31
+ return Promise.resolve([
32
+ ...this.buckets.values()
33
+ ].find((bucket)=>bucket.totalMsgCount === totalMsgCount));
34
+ }
35
+ getLatestInboxBucketAtOrBefore(timestamp) {
36
+ const atOrBefore = [
37
+ ...this.buckets.values()
38
+ ].filter((bucket)=>bucket.timestamp <= timestamp).sort((a, b)=>Number(a.seq - b.seq));
39
+ return Promise.resolve(atOrBefore.at(-1));
40
+ }
41
+ getL1ToL2MessagesBetweenBuckets(fromExclusive, toInclusive) {
42
+ const seqs = [
43
+ ...this.messagesPerBucket.keys()
44
+ ].filter((seq)=>seq > fromExclusive && seq <= toInclusive).sort((a, b)=>Number(a - b));
45
+ return Promise.resolve(seqs.flatMap((seq)=>this.messagesPerBucket.get(seq) ?? []));
46
+ }
47
+ async getL1ToL2MessagesBetweenLeafCounts(startLeafCount, endLeafCount) {
48
+ const startBucket = await this.getInboxBucketByTotalMsgCount(startLeafCount);
49
+ const endBucket = await this.getInboxBucketByTotalMsgCount(endLeafCount);
50
+ if (startBucket === undefined || endBucket === undefined) {
51
+ throw new Error(`No mocked Inbox bucket boundary at ${startLeafCount} or ${endLeafCount}`);
52
+ }
53
+ return this.getL1ToL2MessagesBetweenBuckets(startBucket.seq, endBucket.seq);
54
+ }
55
+ getBlockNumber() {
56
+ return Promise.resolve(BlockNumber(this.blockNumber));
57
+ }
58
+ getL2Tips() {
59
+ const number = this.blockNumber;
60
+ const blockId = {
61
+ number: BlockNumber(number),
62
+ hash: new Fr(number).toString()
63
+ };
64
+ const checkpointId = {
65
+ number: CheckpointNumber(number),
66
+ hash: new Fr(number + 1).toString()
67
+ };
68
+ const tip = {
69
+ block: blockId,
70
+ checkpoint: checkpointId
71
+ };
72
+ return Promise.resolve({
73
+ proposed: blockId,
74
+ checkpointed: tip,
75
+ proven: tip,
76
+ finalized: tip
77
+ });
78
+ }
79
+ }
@@ -0,0 +1,139 @@
1
+ import { BlockNumber, CheckpointNumber, EpochNumber, SlotNumber } from '@aztec-labs/foundation/branded-types';
2
+ import { Fr } from '@aztec-labs/foundation/curves/bn254';
3
+ import { EthAddress } from '@aztec-labs/foundation/eth-address';
4
+ import type { FunctionSelector } from '@aztec-labs/stdlib/abi';
5
+ import type { AztecAddress } from '@aztec-labs/stdlib/aztec-address';
6
+ import { type BlockData, type BlockHash, type BlockQuery, type BlocksQuery, type CheckpointQuery, type CheckpointsQuery, L2Block, type L2BlockSource, type L2Tips, type ProposedCheckpointQuery, type ValidateCheckpointResult } from '@aztec-labs/stdlib/block';
7
+ import { Checkpoint, type CheckpointData, type ProposedCheckpointData, PublishedCheckpoint } from '@aztec-labs/stdlib/checkpoint';
8
+ import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec-labs/stdlib/contract';
9
+ import { type L1RollupConstants } from '@aztec-labs/stdlib/epoch-helpers';
10
+ import { BlockHeader, TxHash } from '@aztec-labs/stdlib/tx';
11
+ import type { UInt64 } from '@aztec-labs/stdlib/types';
12
+ /**
13
+ * A mocked implementation of L2BlockSource to be used in tests.
14
+ */
15
+ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSource {
16
+ protected l2Blocks: L2Block[];
17
+ protected checkpointList: Checkpoint[];
18
+ private provenBlockNumber;
19
+ private finalizedBlockNumber;
20
+ private checkpointedBlockNumber;
21
+ private initialHeader;
22
+ private initialHeaderHash;
23
+ private genesisArchiveRoot?;
24
+ private genesisBlock?;
25
+ private log;
26
+ /** Returns the initial header used to synthesize block 0. */
27
+ getInitialHeader(): BlockHeader;
28
+ /**
29
+ * Sets the initial header used to synthesize block 0. Tests that wire up a real
30
+ * world-state should call this with `worldState.getInitialHeader()` so the L2BlockStream
31
+ * agrees on the genesis hash on both sides. Precomputes and caches the header hash so
32
+ * `getGenesisBlockHash()` can return synchronously.
33
+ */
34
+ setInitialHeader(header: BlockHeader): Promise<void>;
35
+ /**
36
+ * Returns the precomputed hash of the genesis block header. Defaults to the static
37
+ * {@link GENESIS_BLOCK_HEADER_HASH} unless {@link setInitialHeader} has been called with a
38
+ * custom header.
39
+ */
40
+ getGenesisBlockHash(): BlockHash;
41
+ /**
42
+ * Sets the post-genesis archive root used to synthesize block 0. Mirrors the real archiver,
43
+ * whose synthetic block 0 carries `new AppendOnlyTreeSnapshot(genesisArchiveRoot, 1)` rather
44
+ * than `AppendOnlyTreeSnapshot.empty()`. Tests wiring up a real world-state should set this so
45
+ * archive-based block lookups against the mock match production semantics.
46
+ */
47
+ setGenesisArchiveRoot(root: Fr): void;
48
+ private getGenesisBlock;
49
+ /** Creates blocks grouped into single-block checkpoints. */
50
+ createBlocks(numBlocks: number): Promise<void>;
51
+ getCheckpointNumber(): Promise<CheckpointNumber>;
52
+ /** Creates checkpoints, each containing `blocksPerCheckpoint` blocks. */
53
+ createCheckpoints(numCheckpoints: number, blocksPerCheckpoint?: number): Promise<void>;
54
+ addProposedBlocks(blocks: L2Block[]): void;
55
+ removeBlocks(numBlocks: number): void;
56
+ setProvenBlockNumber(provenBlockNumber: number): void;
57
+ setFinalizedBlockNumber(finalizedBlockNumber: number): void;
58
+ setCheckpointedBlockNumber(checkpointedBlockNumber: number): void;
59
+ /**
60
+ * Method to fetch the rollup contract address at the base-layer.
61
+ * @returns The rollup address.
62
+ */
63
+ getRollupAddress(): Promise<EthAddress>;
64
+ /**
65
+ * Method to fetch the registry contract address at the base-layer.
66
+ * @returns The registry address.
67
+ */
68
+ getRegistryAddress(): Promise<EthAddress>;
69
+ /**
70
+ * Gets the number of the latest L2 block processed by the block source implementation.
71
+ * @returns In this mock instance, returns the number of L2 blocks that we've mocked.
72
+ */
73
+ getBlockNumber(): Promise<BlockNumber>;
74
+ getBlockNumber(query: BlockQuery): Promise<BlockNumber | undefined>;
75
+ getCheckpoint(query: CheckpointQuery): Promise<PublishedCheckpoint | undefined>;
76
+ getCheckpoints(query: CheckpointsQuery): Promise<PublishedCheckpoint[]>;
77
+ getCheckpointByArchive(archive: Fr): Promise<Checkpoint | undefined>;
78
+ getCheckpointData(query: CheckpointQuery): Promise<CheckpointData | undefined>;
79
+ getCheckpointsData(query: CheckpointsQuery): Promise<CheckpointData[]>;
80
+ private checkpointToData;
81
+ private resolveCheckpointQuery;
82
+ private resolveCheckpointsQuery;
83
+ getBlocksForSlot(slotNumber: SlotNumber): Promise<L2Block[]>;
84
+ /**
85
+ * Gets a tx effect.
86
+ * @param txHash - The hash of the tx corresponding to the tx effect.
87
+ * @returns The requested tx effect with block info (or undefined if not found).
88
+ */
89
+ getTxEffect(txHash: TxHash): Promise<{
90
+ data: import("@aztec-labs/stdlib/tx").TxEffect;
91
+ l2BlockNumber: BlockNumber;
92
+ l2BlockHash: BlockHash;
93
+ txIndexInBlock: number;
94
+ slotNumber: SlotNumber;
95
+ } | undefined>;
96
+ getL2ToL1MembershipWitness(): Promise<undefined>;
97
+ getL2Tips(): Promise<L2Tips>;
98
+ getSyncedL2EpochNumber(): Promise<EpochNumber>;
99
+ getSyncedL2SlotNumber(): Promise<SlotNumber>;
100
+ isEpochComplete(_epochNumber: EpochNumber): Promise<boolean>;
101
+ getL1Constants(): Promise<L1RollupConstants>;
102
+ isPruneDueAtSlot(_slot: SlotNumber): Promise<boolean>;
103
+ getGenesisValues(): Promise<{
104
+ genesisArchiveRoot: Fr;
105
+ }>;
106
+ getL1Timestamp(): Promise<bigint>;
107
+ /**
108
+ * Starts the block source. In this mock implementation, this is a noop.
109
+ * @returns A promise that signals the initialization of the l2 block source on completion.
110
+ */
111
+ start(): Promise<void>;
112
+ /**
113
+ * Stops the block source. In this mock implementation, this is a noop.
114
+ * @returns A promise that signals the l2 block source is now stopped.
115
+ */
116
+ stop(): Promise<void>;
117
+ getContractClass(_id: Fr): Promise<ContractClassPublic | undefined>;
118
+ getBytecodeCommitment(_id: Fr): Promise<Fr | undefined>;
119
+ getContract(_address: AztecAddress, _timestamp?: UInt64): Promise<ContractInstanceWithAddress | undefined>;
120
+ getContractClassIds(): Promise<Fr[]>;
121
+ getDebugFunctionName(_address: AztecAddress, _selector: FunctionSelector): Promise<string | undefined>;
122
+ registerContractFunctionSignatures(_signatures: string[]): Promise<void>;
123
+ syncImmediate(): Promise<void>;
124
+ getBlock(query: BlockQuery): Promise<L2Block | undefined>;
125
+ private resolveBlockTag;
126
+ getBlocks(query: BlocksQuery): Promise<L2Block[]>;
127
+ getBlockData(query: BlockQuery): Promise<BlockData | undefined>;
128
+ getBlocksData(query: BlocksQuery): Promise<BlockData[]>;
129
+ isPendingChainInvalid(): Promise<boolean>;
130
+ getPendingChainValidationStatus(): Promise<ValidateCheckpointResult>;
131
+ getProposedCheckpointData(_query?: ProposedCheckpointQuery): Promise<ProposedCheckpointData | undefined>;
132
+ /** Returns checkpoints whose slot falls within the given epoch. */
133
+ private getCheckpointsInEpoch;
134
+ /** Creates a mock L1PublishedData for a checkpoint. */
135
+ private mockL1DataForCheckpoint;
136
+ /** Finds the checkpoint number for a block, or undefined if the block is not in any checkpoint. */
137
+ private findCheckpointNumberForBlock;
138
+ }
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19sMl9ibG9ja19zb3VyY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L21vY2tfbDJfYmxvY2tfc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFFWCxVQUFVLEVBQ1gsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUNMLEtBQUssU0FBUyxFQUNkLEtBQUssU0FBUyxFQUNkLEtBQUssVUFBVSxFQUVmLEtBQUssV0FBVyxFQUVoQixLQUFLLGVBQWUsRUFDcEIsS0FBSyxnQkFBZ0IsRUFHckIsT0FBTyxFQUNQLEtBQUssYUFBYSxFQUNsQixLQUFLLE1BQU0sRUFDWCxLQUFLLHVCQUF1QixFQUM1QixLQUFLLHdCQUF3QixFQUM5QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsS0FBSyxjQUFjLEVBRW5CLEtBQUssc0JBQXNCLEVBQzNCLG1CQUFtQixFQUNwQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEgsT0FBTyxFQUEwQixLQUFLLGlCQUFpQixFQUF3QixNQUFNLGtDQUFrQyxDQUFDO0FBSXhILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsTUFBTSxF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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"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"}