@aztec/archiver 0.0.1-commit.03f7ef2 → 0.0.1-commit.0658669b3

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 (204) hide show
  1. package/README.md +156 -22
  2. package/dest/archiver.d.ts +139 -0
  3. package/dest/archiver.d.ts.map +1 -0
  4. package/dest/archiver.js +699 -0
  5. package/dest/{archiver/config.d.ts → config.d.ts} +9 -1
  6. package/dest/config.d.ts.map +1 -0
  7. package/dest/{archiver/config.js → config.js} +11 -2
  8. package/dest/errors.d.ts +41 -0
  9. package/dest/errors.d.ts.map +1 -0
  10. package/dest/{archiver/errors.js → errors.js} +8 -0
  11. package/dest/factory.d.ts +9 -7
  12. package/dest/factory.d.ts.map +1 -1
  13. package/dest/factory.js +91 -11
  14. package/dest/index.d.ts +11 -4
  15. package/dest/index.d.ts.map +1 -1
  16. package/dest/index.js +9 -3
  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/{archiver/l1 → l1}/bin/retrieve-calldata.d.ts +1 -1
  21. package/dest/l1/bin/retrieve-calldata.d.ts.map +1 -0
  22. package/dest/{archiver/l1 → l1}/bin/retrieve-calldata.js +35 -32
  23. package/dest/l1/calldata_retriever.d.ts +135 -0
  24. package/dest/l1/calldata_retriever.d.ts.map +1 -0
  25. package/dest/l1/calldata_retriever.js +402 -0
  26. package/dest/l1/data_retrieval.d.ts +85 -0
  27. package/dest/l1/data_retrieval.d.ts.map +1 -0
  28. package/dest/{archiver/l1 → l1}/data_retrieval.js +43 -66
  29. package/dest/{archiver/l1 → l1}/debug_tx.d.ts +1 -1
  30. package/dest/l1/debug_tx.d.ts.map +1 -0
  31. package/dest/{archiver/l1 → l1}/spire_proposer.d.ts +5 -5
  32. package/dest/l1/spire_proposer.d.ts.map +1 -0
  33. package/dest/{archiver/l1 → l1}/spire_proposer.js +9 -17
  34. package/dest/{archiver/l1 → l1}/trace_tx.d.ts +1 -1
  35. package/dest/l1/trace_tx.d.ts.map +1 -0
  36. package/dest/l1/types.d.ts +12 -0
  37. package/dest/l1/types.d.ts.map +1 -0
  38. package/dest/{archiver/l1 → l1}/validate_trace.d.ts +6 -3
  39. package/dest/l1/validate_trace.d.ts.map +1 -0
  40. package/dest/{archiver/l1 → l1}/validate_trace.js +14 -10
  41. package/dest/modules/data_source_base.d.ts +89 -0
  42. package/dest/modules/data_source_base.d.ts.map +1 -0
  43. package/dest/modules/data_source_base.js +216 -0
  44. package/dest/modules/data_store_updater.d.ts +80 -0
  45. package/dest/modules/data_store_updater.d.ts.map +1 -0
  46. package/dest/modules/data_store_updater.js +323 -0
  47. package/dest/modules/instrumentation.d.ts +50 -0
  48. package/dest/modules/instrumentation.d.ts.map +1 -0
  49. package/dest/{archiver → modules}/instrumentation.js +44 -68
  50. package/dest/modules/l1_synchronizer.d.ts +71 -0
  51. package/dest/modules/l1_synchronizer.d.ts.map +1 -0
  52. package/dest/modules/l1_synchronizer.js +1117 -0
  53. package/dest/modules/validation.d.ts +17 -0
  54. package/dest/modules/validation.d.ts.map +1 -0
  55. package/dest/{archiver → modules}/validation.js +7 -1
  56. package/dest/store/block_store.d.ts +196 -0
  57. package/dest/store/block_store.d.ts.map +1 -0
  58. package/dest/{archiver/kv_archiver_store → store}/block_store.js +228 -62
  59. package/dest/store/contract_class_store.d.ts +18 -0
  60. package/dest/store/contract_class_store.d.ts.map +1 -0
  61. package/dest/{archiver/kv_archiver_store → store}/contract_class_store.js +12 -8
  62. package/dest/store/contract_instance_store.d.ts +24 -0
  63. package/dest/store/contract_instance_store.d.ts.map +1 -0
  64. package/dest/{archiver/kv_archiver_store → store}/contract_instance_store.js +1 -1
  65. package/dest/store/kv_archiver_store.d.ts +354 -0
  66. package/dest/store/kv_archiver_store.d.ts.map +1 -0
  67. package/dest/store/kv_archiver_store.js +464 -0
  68. package/dest/store/l2_tips_cache.d.ts +19 -0
  69. package/dest/store/l2_tips_cache.d.ts.map +1 -0
  70. package/dest/store/l2_tips_cache.js +89 -0
  71. package/dest/store/log_store.d.ts +54 -0
  72. package/dest/store/log_store.d.ts.map +1 -0
  73. package/dest/{archiver/kv_archiver_store → store}/log_store.js +156 -104
  74. package/dest/{archiver/kv_archiver_store → store}/message_store.d.ts +1 -1
  75. package/dest/store/message_store.d.ts.map +1 -0
  76. package/dest/{archiver/structs → structs}/data_retrieval.d.ts +1 -1
  77. package/dest/structs/data_retrieval.d.ts.map +1 -0
  78. package/dest/structs/inbox_message.d.ts +15 -0
  79. package/dest/structs/inbox_message.d.ts.map +1 -0
  80. package/dest/{archiver/structs → structs}/published.d.ts +1 -1
  81. package/dest/structs/published.d.ts.map +1 -0
  82. package/dest/test/fake_l1_state.d.ts +195 -0
  83. package/dest/test/fake_l1_state.d.ts.map +1 -0
  84. package/dest/test/fake_l1_state.js +421 -0
  85. package/dest/test/index.d.ts +2 -1
  86. package/dest/test/index.d.ts.map +1 -1
  87. package/dest/test/index.js +4 -1
  88. package/dest/test/mock_archiver.d.ts +2 -2
  89. package/dest/test/mock_archiver.d.ts.map +1 -1
  90. package/dest/test/mock_archiver.js +3 -3
  91. package/dest/test/mock_l1_to_l2_message_source.d.ts +2 -2
  92. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
  93. package/dest/test/mock_l1_to_l2_message_source.js +12 -3
  94. package/dest/test/mock_l2_block_source.d.ts +39 -17
  95. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  96. package/dest/test/mock_l2_block_source.js +232 -83
  97. package/dest/test/mock_structs.d.ts +78 -3
  98. package/dest/test/mock_structs.d.ts.map +1 -1
  99. package/dest/test/mock_structs.js +140 -7
  100. package/dest/test/noop_l1_archiver.d.ts +23 -0
  101. package/dest/test/noop_l1_archiver.d.ts.map +1 -0
  102. package/dest/test/noop_l1_archiver.js +68 -0
  103. package/package.json +16 -17
  104. package/src/archiver.ts +443 -0
  105. package/src/{archiver/config.ts → config.ts} +13 -2
  106. package/src/{archiver/errors.ts → errors.ts} +12 -0
  107. package/src/factory.ts +139 -11
  108. package/src/index.ts +11 -3
  109. package/src/interfaces.ts +9 -0
  110. package/src/l1/README.md +55 -0
  111. package/src/{archiver/l1 → l1}/bin/retrieve-calldata.ts +45 -33
  112. package/src/l1/calldata_retriever.ts +511 -0
  113. package/src/{archiver/l1 → l1}/data_retrieval.ts +61 -88
  114. package/src/{archiver/l1 → l1}/spire_proposer.ts +7 -15
  115. package/src/{archiver/l1 → l1}/validate_trace.ts +25 -7
  116. package/src/modules/data_source_base.ts +328 -0
  117. package/src/modules/data_store_updater.ts +448 -0
  118. package/src/{archiver → modules}/instrumentation.ts +53 -70
  119. package/src/modules/l1_synchronizer.ts +933 -0
  120. package/src/{archiver → modules}/validation.ts +11 -6
  121. package/src/{archiver/kv_archiver_store → store}/block_store.ts +293 -100
  122. package/src/{archiver/kv_archiver_store → store}/contract_class_store.ts +12 -8
  123. package/src/{archiver/kv_archiver_store → store}/contract_instance_store.ts +1 -1
  124. package/src/{archiver/kv_archiver_store → store}/kv_archiver_store.ts +273 -40
  125. package/src/store/l2_tips_cache.ts +89 -0
  126. package/src/{archiver/kv_archiver_store → store}/log_store.ts +256 -141
  127. package/src/test/fake_l1_state.ts +657 -0
  128. package/src/test/index.ts +4 -0
  129. package/src/test/mock_archiver.ts +4 -3
  130. package/src/test/mock_l1_to_l2_message_source.ts +10 -4
  131. package/src/test/mock_l2_block_source.ts +276 -90
  132. package/src/test/mock_structs.ts +269 -8
  133. package/src/test/noop_l1_archiver.ts +109 -0
  134. package/dest/archiver/archiver.d.ts +0 -304
  135. package/dest/archiver/archiver.d.ts.map +0 -1
  136. package/dest/archiver/archiver.js +0 -1645
  137. package/dest/archiver/archiver_store.d.ts +0 -308
  138. package/dest/archiver/archiver_store.d.ts.map +0 -1
  139. package/dest/archiver/archiver_store.js +0 -4
  140. package/dest/archiver/archiver_store_test_suite.d.ts +0 -8
  141. package/dest/archiver/archiver_store_test_suite.d.ts.map +0 -1
  142. package/dest/archiver/archiver_store_test_suite.js +0 -2790
  143. package/dest/archiver/config.d.ts.map +0 -1
  144. package/dest/archiver/errors.d.ts +0 -36
  145. package/dest/archiver/errors.d.ts.map +0 -1
  146. package/dest/archiver/index.d.ts +0 -7
  147. package/dest/archiver/index.d.ts.map +0 -1
  148. package/dest/archiver/index.js +0 -4
  149. package/dest/archiver/instrumentation.d.ts +0 -37
  150. package/dest/archiver/instrumentation.d.ts.map +0 -1
  151. package/dest/archiver/kv_archiver_store/block_store.d.ts +0 -157
  152. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +0 -1
  153. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +0 -18
  154. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +0 -1
  155. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +0 -24
  156. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +0 -1
  157. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +0 -158
  158. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +0 -1
  159. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +0 -313
  160. package/dest/archiver/kv_archiver_store/log_store.d.ts +0 -45
  161. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +0 -1
  162. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +0 -1
  163. package/dest/archiver/l1/bin/retrieve-calldata.d.ts.map +0 -1
  164. package/dest/archiver/l1/calldata_retriever.d.ts +0 -112
  165. package/dest/archiver/l1/calldata_retriever.d.ts.map +0 -1
  166. package/dest/archiver/l1/calldata_retriever.js +0 -471
  167. package/dest/archiver/l1/data_retrieval.d.ts +0 -90
  168. package/dest/archiver/l1/data_retrieval.d.ts.map +0 -1
  169. package/dest/archiver/l1/debug_tx.d.ts.map +0 -1
  170. package/dest/archiver/l1/spire_proposer.d.ts.map +0 -1
  171. package/dest/archiver/l1/trace_tx.d.ts.map +0 -1
  172. package/dest/archiver/l1/types.d.ts +0 -12
  173. package/dest/archiver/l1/types.d.ts.map +0 -1
  174. package/dest/archiver/l1/validate_trace.d.ts.map +0 -1
  175. package/dest/archiver/structs/data_retrieval.d.ts.map +0 -1
  176. package/dest/archiver/structs/inbox_message.d.ts +0 -15
  177. package/dest/archiver/structs/inbox_message.d.ts.map +0 -1
  178. package/dest/archiver/structs/published.d.ts.map +0 -1
  179. package/dest/archiver/validation.d.ts +0 -17
  180. package/dest/archiver/validation.d.ts.map +0 -1
  181. package/dest/rpc/index.d.ts +0 -9
  182. package/dest/rpc/index.d.ts.map +0 -1
  183. package/dest/rpc/index.js +0 -15
  184. package/src/archiver/archiver.ts +0 -2157
  185. package/src/archiver/archiver_store.ts +0 -372
  186. package/src/archiver/archiver_store_test_suite.ts +0 -2863
  187. package/src/archiver/index.ts +0 -6
  188. package/src/archiver/l1/README.md +0 -98
  189. package/src/archiver/l1/calldata_retriever.ts +0 -641
  190. package/src/rpc/index.ts +0 -16
  191. /package/dest/{archiver/l1 → l1}/debug_tx.js +0 -0
  192. /package/dest/{archiver/l1 → l1}/trace_tx.js +0 -0
  193. /package/dest/{archiver/l1 → l1}/types.js +0 -0
  194. /package/dest/{archiver/kv_archiver_store → store}/message_store.js +0 -0
  195. /package/dest/{archiver/structs → structs}/data_retrieval.js +0 -0
  196. /package/dest/{archiver/structs → structs}/inbox_message.js +0 -0
  197. /package/dest/{archiver/structs → structs}/published.js +0 -0
  198. /package/src/{archiver/l1 → l1}/debug_tx.ts +0 -0
  199. /package/src/{archiver/l1 → l1}/trace_tx.ts +0 -0
  200. /package/src/{archiver/l1 → l1}/types.ts +0 -0
  201. /package/src/{archiver/kv_archiver_store → store}/message_store.ts +0 -0
  202. /package/src/{archiver/structs → structs}/data_retrieval.ts +0 -0
  203. /package/src/{archiver/structs → structs}/inbox_message.ts +0 -0
  204. /package/src/{archiver/structs → structs}/published.ts +0 -0
@@ -0,0 +1,89 @@
1
+ import { GENESIS_BLOCK_HEADER_HASH, INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
2
+ import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
3
+ import { type BlockData, type CheckpointId, GENESIS_CHECKPOINT_HEADER_HASH, type L2Tips } from '@aztec/stdlib/block';
4
+
5
+ import type { BlockStore } from './block_store.js';
6
+
7
+ /**
8
+ * In-memory cache for L2 chain tips (proposed, checkpointed, proven, finalized).
9
+ * Populated from the BlockStore on first access, then kept up-to-date by the ArchiverDataStoreUpdater.
10
+ * Refresh calls should happen within the store transaction that mutates block data to ensure consistency.
11
+ */
12
+ export class L2TipsCache {
13
+ #tipsPromise: Promise<L2Tips> | undefined;
14
+
15
+ constructor(private blockStore: BlockStore) {}
16
+
17
+ /** Returns the cached L2 tips. Loads from the block store on first call. */
18
+ public getL2Tips(): Promise<L2Tips> {
19
+ return (this.#tipsPromise ??= this.loadFromStore());
20
+ }
21
+
22
+ /** Reloads the L2 tips from the block store. Should be called within the store transaction that mutates data. */
23
+ public async refresh(): Promise<void> {
24
+ this.#tipsPromise = this.loadFromStore();
25
+ await this.#tipsPromise;
26
+ }
27
+
28
+ private async loadFromStore(): Promise<L2Tips> {
29
+ const [latestBlockNumber, provenBlockNumber, checkpointedBlockNumber, finalizedBlockNumber] = await Promise.all([
30
+ this.blockStore.getLatestBlockNumber(),
31
+ this.blockStore.getProvenBlockNumber(),
32
+ this.blockStore.getCheckpointedL2BlockNumber(),
33
+ this.blockStore.getFinalizedL2BlockNumber(),
34
+ ]);
35
+
36
+ const genesisBlockHeader = {
37
+ blockHash: GENESIS_BLOCK_HEADER_HASH,
38
+ checkpointNumber: CheckpointNumber.ZERO,
39
+ } as const;
40
+ const beforeInitialBlockNumber = BlockNumber(INITIAL_L2_BLOCK_NUM - 1);
41
+
42
+ const getBlockData = (blockNumber: BlockNumber) =>
43
+ blockNumber > beforeInitialBlockNumber ? this.blockStore.getBlockData(blockNumber) : genesisBlockHeader;
44
+
45
+ const [latestBlockData, provenBlockData, checkpointedBlockData, finalizedBlockData] = await Promise.all(
46
+ [latestBlockNumber, provenBlockNumber, checkpointedBlockNumber, finalizedBlockNumber].map(getBlockData),
47
+ );
48
+
49
+ if (!latestBlockData || !provenBlockData || !finalizedBlockData || !checkpointedBlockData) {
50
+ throw new Error('Failed to load block data for L2 tips');
51
+ }
52
+
53
+ const [provenCheckpointId, finalizedCheckpointId, checkpointedCheckpointId] = await Promise.all([
54
+ this.getCheckpointIdForBlock(provenBlockData),
55
+ this.getCheckpointIdForBlock(finalizedBlockData),
56
+ this.getCheckpointIdForBlock(checkpointedBlockData),
57
+ ]);
58
+
59
+ return {
60
+ proposed: { number: latestBlockNumber, hash: latestBlockData.blockHash.toString() },
61
+ proven: {
62
+ block: { number: provenBlockNumber, hash: provenBlockData.blockHash.toString() },
63
+ checkpoint: provenCheckpointId,
64
+ },
65
+ finalized: {
66
+ block: { number: finalizedBlockNumber, hash: finalizedBlockData.blockHash.toString() },
67
+ checkpoint: finalizedCheckpointId,
68
+ },
69
+ checkpointed: {
70
+ block: { number: checkpointedBlockNumber, hash: checkpointedBlockData.blockHash.toString() },
71
+ checkpoint: checkpointedCheckpointId,
72
+ },
73
+ };
74
+ }
75
+
76
+ private async getCheckpointIdForBlock(blockData: Pick<BlockData, 'checkpointNumber'>): Promise<CheckpointId> {
77
+ const checkpointData = await this.blockStore.getCheckpointData(blockData.checkpointNumber);
78
+ if (!checkpointData) {
79
+ return {
80
+ number: CheckpointNumber.ZERO,
81
+ hash: GENESIS_CHECKPOINT_HEADER_HASH.toString(),
82
+ };
83
+ }
84
+ return {
85
+ number: checkpointData.checkpointNumber,
86
+ hash: checkpointData.header.hash().toString(),
87
+ };
88
+ }
89
+ }