@aztec/archiver 0.0.1-commit.1142ef1 → 0.0.1-commit.11bf3dd6e

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 (214) hide show
  1. package/README.md +162 -22
  2. package/dest/archiver.d.ts +140 -0
  3. package/dest/archiver.d.ts.map +1 -0
  4. package/dest/archiver.js +750 -0
  5. package/dest/config.d.ts +30 -0
  6. package/dest/config.d.ts.map +1 -0
  7. package/dest/{archiver/config.js → config.js} +12 -2
  8. package/dest/errors.d.ts +65 -0
  9. package/dest/errors.d.ts.map +1 -0
  10. package/dest/errors.js +91 -0
  11. package/dest/factory.d.ts +8 -7
  12. package/dest/factory.d.ts.map +1 -1
  13. package/dest/factory.js +96 -13
  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 +403 -0
  26. package/dest/l1/data_retrieval.d.ts +88 -0
  27. package/dest/l1/data_retrieval.d.ts.map +1 -0
  28. package/dest/{archiver/l1 → l1}/data_retrieval.js +59 -77
  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 +13 -9
  41. package/dest/modules/data_source_base.d.ts +91 -0
  42. package/dest/modules/data_source_base.d.ts.map +1 -0
  43. package/dest/modules/data_source_base.js +222 -0
  44. package/dest/modules/data_store_updater.d.ts +86 -0
  45. package/dest/modules/data_store_updater.d.ts.map +1 -0
  46. package/dest/modules/data_store_updater.js +333 -0
  47. package/dest/modules/instrumentation.d.ts +52 -0
  48. package/dest/modules/instrumentation.d.ts.map +1 -0
  49. package/dest/{archiver → modules}/instrumentation.js +53 -18
  50. package/dest/modules/l1_synchronizer.d.ts +73 -0
  51. package/dest/modules/l1_synchronizer.d.ts.map +1 -0
  52. package/dest/modules/l1_synchronizer.js +1154 -0
  53. package/dest/{archiver → modules}/validation.d.ts +1 -1
  54. package/dest/modules/validation.d.ts.map +1 -0
  55. package/dest/{archiver → modules}/validation.js +8 -2
  56. package/dest/store/block_store.d.ts +230 -0
  57. package/dest/store/block_store.d.ts.map +1 -0
  58. package/dest/store/block_store.js +942 -0
  59. package/dest/store/contract_class_store.d.ts +17 -0
  60. package/dest/store/contract_class_store.d.ts.map +1 -0
  61. package/dest/store/contract_class_store.js +64 -0
  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 +7 -3
  65. package/dest/store/kv_archiver_store.d.ts +377 -0
  66. package/dest/store/kv_archiver_store.d.ts.map +1 -0
  67. package/dest/store/kv_archiver_store.js +494 -0
  68. package/dest/store/l2_tips_cache.d.ts +20 -0
  69. package/dest/store/l2_tips_cache.d.ts.map +1 -0
  70. package/dest/store/l2_tips_cache.js +109 -0
  71. package/dest/store/log_store.d.ts +57 -0
  72. package/dest/store/log_store.d.ts.map +1 -0
  73. package/dest/store/log_store.js +531 -0
  74. package/dest/store/message_store.d.ts +44 -0
  75. package/dest/store/message_store.d.ts.map +1 -0
  76. package/dest/{archiver/kv_archiver_store → store}/message_store.js +21 -9
  77. package/dest/{archiver/structs → structs}/data_retrieval.d.ts +1 -1
  78. package/dest/structs/data_retrieval.d.ts.map +1 -0
  79. package/dest/structs/inbox_message.d.ts +15 -0
  80. package/dest/structs/inbox_message.d.ts.map +1 -0
  81. package/dest/{archiver/structs → structs}/published.d.ts +1 -1
  82. package/dest/structs/published.d.ts.map +1 -0
  83. package/dest/test/fake_l1_state.d.ts +210 -0
  84. package/dest/test/fake_l1_state.d.ts.map +1 -0
  85. package/dest/test/fake_l1_state.js +490 -0
  86. package/dest/test/index.d.ts +2 -1
  87. package/dest/test/index.d.ts.map +1 -1
  88. package/dest/test/index.js +4 -1
  89. package/dest/test/mock_archiver.d.ts +2 -2
  90. package/dest/test/mock_archiver.d.ts.map +1 -1
  91. package/dest/test/mock_archiver.js +3 -3
  92. package/dest/test/mock_l1_to_l2_message_source.d.ts +1 -1
  93. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
  94. package/dest/test/mock_l1_to_l2_message_source.js +2 -1
  95. package/dest/test/mock_l2_block_source.d.ts +43 -19
  96. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  97. package/dest/test/mock_l2_block_source.js +211 -80
  98. package/dest/test/mock_structs.d.ts +81 -3
  99. package/dest/test/mock_structs.d.ts.map +1 -1
  100. package/dest/test/mock_structs.js +152 -7
  101. package/dest/test/noop_l1_archiver.d.ts +26 -0
  102. package/dest/test/noop_l1_archiver.d.ts.map +1 -0
  103. package/dest/test/noop_l1_archiver.js +71 -0
  104. package/package.json +16 -17
  105. package/src/archiver.ts +510 -0
  106. package/src/{archiver/config.ts → config.ts} +20 -2
  107. package/src/errors.ts +146 -0
  108. package/src/factory.ts +152 -16
  109. package/src/index.ts +11 -3
  110. package/src/interfaces.ts +9 -0
  111. package/src/l1/README.md +55 -0
  112. package/src/{archiver/l1 → l1}/bin/retrieve-calldata.ts +45 -33
  113. package/src/l1/calldata_retriever.ts +512 -0
  114. package/src/{archiver/l1 → l1}/data_retrieval.ts +79 -102
  115. package/src/{archiver/l1 → l1}/spire_proposer.ts +7 -15
  116. package/src/{archiver/l1 → l1}/validate_trace.ts +24 -6
  117. package/src/modules/data_source_base.ts +347 -0
  118. package/src/modules/data_store_updater.ts +437 -0
  119. package/src/{archiver → modules}/instrumentation.ts +64 -20
  120. package/src/modules/l1_synchronizer.ts +961 -0
  121. package/src/{archiver → modules}/validation.ts +7 -2
  122. package/src/store/block_store.ts +1245 -0
  123. package/src/store/contract_class_store.ts +82 -0
  124. package/src/{archiver/kv_archiver_store → store}/contract_instance_store.ts +9 -6
  125. package/src/store/kv_archiver_store.ts +713 -0
  126. package/src/store/l2_tips_cache.ts +134 -0
  127. package/src/store/log_store.ts +733 -0
  128. package/src/{archiver/kv_archiver_store → store}/message_store.ts +27 -10
  129. package/src/{archiver/structs → structs}/inbox_message.ts +1 -1
  130. package/src/test/fake_l1_state.ts +747 -0
  131. package/src/test/index.ts +4 -0
  132. package/src/test/mock_archiver.ts +4 -3
  133. package/src/test/mock_l1_to_l2_message_source.ts +1 -0
  134. package/src/test/mock_l2_block_source.ts +269 -94
  135. package/src/test/mock_structs.ts +283 -8
  136. package/src/test/noop_l1_archiver.ts +114 -0
  137. package/dest/archiver/archiver.d.ts +0 -307
  138. package/dest/archiver/archiver.d.ts.map +0 -1
  139. package/dest/archiver/archiver.js +0 -2102
  140. package/dest/archiver/archiver_store.d.ts +0 -315
  141. package/dest/archiver/archiver_store.d.ts.map +0 -1
  142. package/dest/archiver/archiver_store.js +0 -4
  143. package/dest/archiver/archiver_store_test_suite.d.ts +0 -8
  144. package/dest/archiver/archiver_store_test_suite.d.ts.map +0 -1
  145. package/dest/archiver/archiver_store_test_suite.js +0 -2770
  146. package/dest/archiver/config.d.ts +0 -22
  147. package/dest/archiver/config.d.ts.map +0 -1
  148. package/dest/archiver/errors.d.ts +0 -36
  149. package/dest/archiver/errors.d.ts.map +0 -1
  150. package/dest/archiver/errors.js +0 -54
  151. package/dest/archiver/index.d.ts +0 -7
  152. package/dest/archiver/index.d.ts.map +0 -1
  153. package/dest/archiver/index.js +0 -4
  154. package/dest/archiver/instrumentation.d.ts +0 -37
  155. package/dest/archiver/instrumentation.d.ts.map +0 -1
  156. package/dest/archiver/kv_archiver_store/block_store.d.ts +0 -164
  157. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +0 -1
  158. package/dest/archiver/kv_archiver_store/block_store.js +0 -626
  159. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +0 -18
  160. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +0 -1
  161. package/dest/archiver/kv_archiver_store/contract_class_store.js +0 -120
  162. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +0 -24
  163. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +0 -1
  164. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +0 -159
  165. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +0 -1
  166. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +0 -316
  167. package/dest/archiver/kv_archiver_store/log_store.d.ts +0 -45
  168. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +0 -1
  169. package/dest/archiver/kv_archiver_store/log_store.js +0 -401
  170. package/dest/archiver/kv_archiver_store/message_store.d.ts +0 -40
  171. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +0 -1
  172. package/dest/archiver/l1/bin/retrieve-calldata.d.ts.map +0 -1
  173. package/dest/archiver/l1/calldata_retriever.d.ts +0 -112
  174. package/dest/archiver/l1/calldata_retriever.d.ts.map +0 -1
  175. package/dest/archiver/l1/calldata_retriever.js +0 -471
  176. package/dest/archiver/l1/data_retrieval.d.ts +0 -90
  177. package/dest/archiver/l1/data_retrieval.d.ts.map +0 -1
  178. package/dest/archiver/l1/debug_tx.d.ts.map +0 -1
  179. package/dest/archiver/l1/spire_proposer.d.ts.map +0 -1
  180. package/dest/archiver/l1/trace_tx.d.ts.map +0 -1
  181. package/dest/archiver/l1/types.d.ts +0 -12
  182. package/dest/archiver/l1/types.d.ts.map +0 -1
  183. package/dest/archiver/l1/validate_trace.d.ts.map +0 -1
  184. package/dest/archiver/structs/data_retrieval.d.ts.map +0 -1
  185. package/dest/archiver/structs/inbox_message.d.ts +0 -15
  186. package/dest/archiver/structs/inbox_message.d.ts.map +0 -1
  187. package/dest/archiver/structs/published.d.ts.map +0 -1
  188. package/dest/archiver/validation.d.ts.map +0 -1
  189. package/dest/rpc/index.d.ts +0 -9
  190. package/dest/rpc/index.d.ts.map +0 -1
  191. package/dest/rpc/index.js +0 -15
  192. package/src/archiver/archiver.ts +0 -2265
  193. package/src/archiver/archiver_store.ts +0 -380
  194. package/src/archiver/archiver_store_test_suite.ts +0 -2842
  195. package/src/archiver/errors.ts +0 -90
  196. package/src/archiver/index.ts +0 -6
  197. package/src/archiver/kv_archiver_store/block_store.ts +0 -850
  198. package/src/archiver/kv_archiver_store/contract_class_store.ts +0 -176
  199. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +0 -442
  200. package/src/archiver/kv_archiver_store/log_store.ts +0 -516
  201. package/src/archiver/l1/README.md +0 -98
  202. package/src/archiver/l1/calldata_retriever.ts +0 -641
  203. package/src/rpc/index.ts +0 -16
  204. /package/dest/{archiver/l1 → l1}/debug_tx.js +0 -0
  205. /package/dest/{archiver/l1 → l1}/trace_tx.js +0 -0
  206. /package/dest/{archiver/l1 → l1}/types.js +0 -0
  207. /package/dest/{archiver/structs → structs}/data_retrieval.js +0 -0
  208. /package/dest/{archiver/structs → structs}/inbox_message.js +0 -0
  209. /package/dest/{archiver/structs → structs}/published.js +0 -0
  210. /package/src/{archiver/l1 → l1}/debug_tx.ts +0 -0
  211. /package/src/{archiver/l1 → l1}/trace_tx.ts +0 -0
  212. /package/src/{archiver/l1 → l1}/types.ts +0 -0
  213. /package/src/{archiver/structs → structs}/data_retrieval.ts +0 -0
  214. /package/src/{archiver/structs → structs}/published.ts +0 -0
@@ -14,6 +14,7 @@ import {
14
14
  } from '@aztec/kv-store';
15
15
  import { InboxLeaf } from '@aztec/stdlib/messaging';
16
16
 
17
+ import { L1ToL2MessagesNotReadyError } from '../errors.js';
17
18
  import {
18
19
  type InboxMessage,
19
20
  deserializeInboxMessage,
@@ -40,6 +41,8 @@ export class MessageStore {
40
41
  #lastSynchedL1Block: AztecAsyncSingleton<Buffer>;
41
42
  /** Stores total messages stored */
42
43
  #totalMessageCount: AztecAsyncSingleton<bigint>;
44
+ /** Stores the checkpoint number whose message tree is currently being filled on L1. */
45
+ #inboxTreeInProgress: AztecAsyncSingleton<bigint>;
43
46
 
44
47
  #log = createLogger('archiver:message_store');
45
48
 
@@ -48,6 +51,7 @@ export class MessageStore {
48
51
  this.#l1ToL2MessageIndices = db.openMap('archiver_l1_to_l2_message_indices');
49
52
  this.#lastSynchedL1Block = db.openSingleton('archiver_last_l1_block_id');
50
53
  this.#totalMessageCount = db.openSingleton('archiver_l1_to_l2_message_count');
54
+ this.#inboxTreeInProgress = db.openSingleton('archiver_inbox_tree_in_progress');
51
55
  }
52
56
 
53
57
  public async getTotalL1ToL2MessageCount(): Promise<bigint> {
@@ -137,7 +141,7 @@ export class MessageStore {
137
141
  );
138
142
  }
139
143
 
140
- // Check the first message in a block has the correct index.
144
+ // Check the first message in a checkpoint has the correct index.
141
145
  if (
142
146
  (!lastMessage || message.checkpointNumber > lastMessage.checkpointNumber) &&
143
147
  message.index !== expectedStart
@@ -157,15 +161,6 @@ export class MessageStore {
157
161
  lastMessage = message;
158
162
  }
159
163
 
160
- // Update the L1 sync point to that of the last message added.
161
- const currentSyncPoint = await this.getSynchedL1Block();
162
- if (!currentSyncPoint || currentSyncPoint.l1BlockNumber < lastMessage!.l1BlockNumber) {
163
- await this.setSynchedL1Block({
164
- l1BlockNumber: lastMessage!.l1BlockNumber,
165
- l1BlockHash: lastMessage!.l1BlockHash,
166
- });
167
- }
168
-
169
164
  // Update total message count with the number of inserted messages.
170
165
  await this.increaseTotalMessageCount(messageCount);
171
166
  });
@@ -185,7 +180,29 @@ export class MessageStore {
185
180
  return msg ? deserializeInboxMessage(msg) : undefined;
186
181
  }
187
182
 
183
+ /** Returns the inbox tree-in-progress checkpoint number from L1, or undefined if not yet set. */
184
+ public getInboxTreeInProgress(): Promise<bigint | undefined> {
185
+ return this.#inboxTreeInProgress.getAsync();
186
+ }
187
+
188
+ /** Atomically updates the message sync state: the L1 sync point and the inbox tree-in-progress marker. */
189
+ public setMessageSyncState(l1Block: L1BlockId, treeInProgress: bigint | undefined): Promise<void> {
190
+ return this.db.transactionAsync(async () => {
191
+ await this.setSynchedL1Block(l1Block);
192
+ if (treeInProgress !== undefined) {
193
+ await this.#inboxTreeInProgress.set(treeInProgress);
194
+ } else {
195
+ await this.#inboxTreeInProgress.delete();
196
+ }
197
+ });
198
+ }
199
+
188
200
  public async getL1ToL2Messages(checkpointNumber: CheckpointNumber): Promise<Fr[]> {
201
+ const treeInProgress = await this.#inboxTreeInProgress.getAsync();
202
+ if (treeInProgress !== undefined && BigInt(checkpointNumber) >= treeInProgress) {
203
+ throw new L1ToL2MessagesNotReadyError(checkpointNumber, treeInProgress);
204
+ }
205
+
189
206
  const messages: Fr[] = [];
190
207
 
191
208
  const [startIndex, endIndex] = InboxLeaf.indexRangeForCheckpoint(checkpointNumber);
@@ -8,7 +8,7 @@ export type InboxMessage = {
8
8
  index: bigint;
9
9
  leaf: Fr;
10
10
  checkpointNumber: CheckpointNumber;
11
- l1BlockNumber: bigint; // L1 block number - NOT Aztec L2
11
+ l1BlockNumber: bigint;
12
12
  l1BlockHash: Buffer32;
13
13
  rollingHash: Buffer16;
14
14
  };