@aztec/archiver 0.0.0-test.0 → 0.0.1-commit.023c3e5

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 (225) hide show
  1. package/README.md +164 -9
  2. package/dest/archiver.d.ts +136 -0
  3. package/dest/archiver.d.ts.map +1 -0
  4. package/dest/archiver.js +781 -0
  5. package/dest/config.d.ts +30 -0
  6. package/dest/config.d.ts.map +1 -0
  7. package/dest/config.js +71 -0
  8. package/dest/errors.d.ts +41 -0
  9. package/dest/errors.d.ts.map +1 -0
  10. package/dest/errors.js +62 -0
  11. package/dest/factory.d.ts +13 -16
  12. package/dest/factory.d.ts.map +1 -1
  13. package/dest/factory.js +103 -55
  14. package/dest/index.d.ts +10 -4
  15. package/dest/index.d.ts.map +1 -1
  16. package/dest/index.js +8 -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/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 +149 -0
  23. package/dest/l1/calldata_retriever.d.ts +112 -0
  24. package/dest/l1/calldata_retriever.d.ts.map +1 -0
  25. package/dest/l1/calldata_retriever.js +471 -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/l1/data_retrieval.js +312 -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 +157 -0
  35. package/dest/l1/trace_tx.d.ts +97 -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_trace.d.ts +32 -0
  42. package/dest/l1/validate_trace.d.ts.map +1 -0
  43. package/dest/l1/validate_trace.js +154 -0
  44. package/dest/modules/data_source_base.d.ts +84 -0
  45. package/dest/modules/data_source_base.d.ts.map +1 -0
  46. package/dest/modules/data_source_base.js +260 -0
  47. package/dest/modules/data_store_updater.d.ts +73 -0
  48. package/dest/modules/data_store_updater.d.ts.map +1 -0
  49. package/dest/modules/data_store_updater.js +302 -0
  50. package/dest/modules/instrumentation.d.ts +37 -0
  51. package/dest/modules/instrumentation.d.ts.map +1 -0
  52. package/dest/modules/instrumentation.js +110 -0
  53. package/dest/modules/l1_synchronizer.d.ts +75 -0
  54. package/dest/modules/l1_synchronizer.d.ts.map +1 -0
  55. package/dest/modules/l1_synchronizer.js +1112 -0
  56. package/dest/modules/validation.d.ts +17 -0
  57. package/dest/modules/validation.d.ts.map +1 -0
  58. package/dest/modules/validation.js +104 -0
  59. package/dest/store/block_store.d.ts +192 -0
  60. package/dest/store/block_store.d.ts.map +1 -0
  61. package/dest/store/block_store.js +721 -0
  62. package/dest/store/contract_class_store.d.ts +18 -0
  63. package/dest/store/contract_class_store.d.ts.map +1 -0
  64. package/dest/{archiver/kv_archiver_store → store}/contract_class_store.js +25 -27
  65. package/dest/store/contract_instance_store.d.ts +24 -0
  66. package/dest/store/contract_instance_store.d.ts.map +1 -0
  67. package/dest/store/contract_instance_store.js +77 -0
  68. package/dest/store/kv_archiver_store.d.ts +340 -0
  69. package/dest/store/kv_archiver_store.d.ts.map +1 -0
  70. package/dest/store/kv_archiver_store.js +446 -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/store/log_store.js +436 -0
  74. package/dest/store/message_store.d.ts +40 -0
  75. package/dest/store/message_store.d.ts.map +1 -0
  76. package/dest/store/message_store.js +188 -0
  77. package/dest/structs/data_retrieval.d.ts +27 -0
  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/structs/inbox_message.js +39 -0
  82. package/dest/structs/published.d.ts +2 -0
  83. package/dest/structs/published.d.ts.map +1 -0
  84. package/dest/structs/published.js +1 -0
  85. package/dest/test/fake_l1_state.d.ts +190 -0
  86. package/dest/test/fake_l1_state.d.ts.map +1 -0
  87. package/dest/test/fake_l1_state.js +383 -0
  88. package/dest/test/index.d.ts +2 -1
  89. package/dest/test/index.d.ts.map +1 -1
  90. package/dest/test/index.js +4 -1
  91. package/dest/test/mock_archiver.d.ts +16 -8
  92. package/dest/test/mock_archiver.d.ts.map +1 -1
  93. package/dest/test/mock_archiver.js +18 -14
  94. package/dest/test/mock_l1_to_l2_message_source.d.ts +9 -6
  95. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
  96. package/dest/test/mock_l1_to_l2_message_source.js +30 -7
  97. package/dest/test/mock_l2_block_source.d.ts +62 -16
  98. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  99. package/dest/test/mock_l2_block_source.js +263 -32
  100. package/dest/test/mock_structs.d.ts +85 -0
  101. package/dest/test/mock_structs.d.ts.map +1 -0
  102. package/dest/test/mock_structs.js +171 -0
  103. package/dest/test/noop_l1_archiver.d.ts +23 -0
  104. package/dest/test/noop_l1_archiver.d.ts.map +1 -0
  105. package/dest/test/noop_l1_archiver.js +68 -0
  106. package/package.json +31 -33
  107. package/src/archiver.ts +543 -0
  108. package/src/config.ts +95 -0
  109. package/src/errors.ts +102 -0
  110. package/src/factory.ts +144 -71
  111. package/src/index.ts +10 -3
  112. package/src/interfaces.ts +9 -0
  113. package/src/l1/README.md +98 -0
  114. package/src/l1/bin/retrieve-calldata.ts +187 -0
  115. package/src/l1/calldata_retriever.ts +641 -0
  116. package/src/l1/data_retrieval.ts +495 -0
  117. package/src/l1/debug_tx.ts +99 -0
  118. package/src/l1/spire_proposer.ts +160 -0
  119. package/src/l1/trace_tx.ts +128 -0
  120. package/src/l1/types.ts +13 -0
  121. package/src/l1/validate_trace.ts +229 -0
  122. package/src/modules/data_source_base.ts +367 -0
  123. package/src/modules/data_store_updater.ts +423 -0
  124. package/src/modules/instrumentation.ts +157 -0
  125. package/src/modules/l1_synchronizer.ts +930 -0
  126. package/src/modules/validation.ts +129 -0
  127. package/src/store/block_store.ts +966 -0
  128. package/src/{archiver/kv_archiver_store → store}/contract_class_store.ts +26 -32
  129. package/src/{archiver/kv_archiver_store → store}/contract_instance_store.ts +37 -29
  130. package/src/store/kv_archiver_store.ts +639 -0
  131. package/src/store/log_store.ts +575 -0
  132. package/src/store/message_store.ts +261 -0
  133. package/src/structs/inbox_message.ts +41 -0
  134. package/src/structs/published.ts +1 -0
  135. package/src/test/fake_l1_state.ts +599 -0
  136. package/src/test/fixtures/debug_traceTransaction-multicall3.json +88 -0
  137. package/src/test/fixtures/debug_traceTransaction-multiplePropose.json +153 -0
  138. package/src/test/fixtures/debug_traceTransaction-proxied.json +122 -0
  139. package/src/test/fixtures/trace_transaction-multicall3.json +65 -0
  140. package/src/test/fixtures/trace_transaction-multiplePropose.json +319 -0
  141. package/src/test/fixtures/trace_transaction-proxied.json +128 -0
  142. package/src/test/fixtures/trace_transaction-randomRevert.json +216 -0
  143. package/src/test/index.ts +4 -0
  144. package/src/test/mock_archiver.ts +22 -16
  145. package/src/test/mock_l1_to_l2_message_source.ts +26 -8
  146. package/src/test/mock_l2_block_source.ts +313 -42
  147. package/src/test/mock_structs.ts +311 -0
  148. package/src/test/noop_l1_archiver.ts +109 -0
  149. package/dest/archiver/archiver.d.ts +0 -197
  150. package/dest/archiver/archiver.d.ts.map +0 -1
  151. package/dest/archiver/archiver.js +0 -900
  152. package/dest/archiver/archiver_store.d.ts +0 -220
  153. package/dest/archiver/archiver_store.d.ts.map +0 -1
  154. package/dest/archiver/archiver_store.js +0 -4
  155. package/dest/archiver/archiver_store_test_suite.d.ts +0 -8
  156. package/dest/archiver/archiver_store_test_suite.d.ts.map +0 -1
  157. package/dest/archiver/archiver_store_test_suite.js +0 -794
  158. package/dest/archiver/config.d.ts +0 -37
  159. package/dest/archiver/config.d.ts.map +0 -1
  160. package/dest/archiver/config.js +0 -46
  161. package/dest/archiver/data_retrieval.d.ts +0 -74
  162. package/dest/archiver/data_retrieval.d.ts.map +0 -1
  163. package/dest/archiver/data_retrieval.js +0 -283
  164. package/dest/archiver/errors.d.ts +0 -4
  165. package/dest/archiver/errors.d.ts.map +0 -1
  166. package/dest/archiver/errors.js +0 -5
  167. package/dest/archiver/index.d.ts +0 -8
  168. package/dest/archiver/index.d.ts.map +0 -1
  169. package/dest/archiver/index.js +0 -5
  170. package/dest/archiver/instrumentation.d.ts +0 -29
  171. package/dest/archiver/instrumentation.d.ts.map +0 -1
  172. package/dest/archiver/instrumentation.js +0 -99
  173. package/dest/archiver/kv_archiver_store/block_store.d.ts +0 -87
  174. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +0 -1
  175. package/dest/archiver/kv_archiver_store/block_store.js +0 -217
  176. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +0 -18
  177. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +0 -1
  178. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +0 -21
  179. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +0 -1
  180. package/dest/archiver/kv_archiver_store/contract_instance_store.js +0 -63
  181. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +0 -153
  182. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +0 -1
  183. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +0 -254
  184. package/dest/archiver/kv_archiver_store/log_store.d.ts +0 -49
  185. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +0 -1
  186. package/dest/archiver/kv_archiver_store/log_store.js +0 -364
  187. package/dest/archiver/kv_archiver_store/message_store.d.ts +0 -33
  188. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +0 -1
  189. package/dest/archiver/kv_archiver_store/message_store.js +0 -85
  190. package/dest/archiver/kv_archiver_store/nullifier_store.d.ts +0 -12
  191. package/dest/archiver/kv_archiver_store/nullifier_store.d.ts.map +0 -1
  192. package/dest/archiver/kv_archiver_store/nullifier_store.js +0 -73
  193. package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +0 -23
  194. package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts.map +0 -1
  195. package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.js +0 -49
  196. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +0 -175
  197. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +0 -1
  198. package/dest/archiver/memory_archiver_store/memory_archiver_store.js +0 -636
  199. package/dest/archiver/structs/data_retrieval.d.ts +0 -27
  200. package/dest/archiver/structs/data_retrieval.d.ts.map +0 -1
  201. package/dest/archiver/structs/published.d.ts +0 -11
  202. package/dest/archiver/structs/published.d.ts.map +0 -1
  203. package/dest/archiver/structs/published.js +0 -1
  204. package/dest/rpc/index.d.ts +0 -10
  205. package/dest/rpc/index.d.ts.map +0 -1
  206. package/dest/rpc/index.js +0 -18
  207. package/src/archiver/archiver.ts +0 -1181
  208. package/src/archiver/archiver_store.ts +0 -263
  209. package/src/archiver/archiver_store_test_suite.ts +0 -810
  210. package/src/archiver/config.ts +0 -92
  211. package/src/archiver/data_retrieval.ts +0 -422
  212. package/src/archiver/errors.ts +0 -5
  213. package/src/archiver/index.ts +0 -7
  214. package/src/archiver/instrumentation.ts +0 -132
  215. package/src/archiver/kv_archiver_store/block_store.ts +0 -283
  216. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +0 -358
  217. package/src/archiver/kv_archiver_store/log_store.ts +0 -444
  218. package/src/archiver/kv_archiver_store/message_store.ts +0 -102
  219. package/src/archiver/kv_archiver_store/nullifier_store.ts +0 -97
  220. package/src/archiver/memory_archiver_store/l1_to_l2_message_store.ts +0 -61
  221. package/src/archiver/memory_archiver_store/memory_archiver_store.ts +0 -801
  222. package/src/archiver/structs/published.ts +0 -11
  223. package/src/rpc/index.ts +0 -20
  224. /package/dest/{archiver/structs → structs}/data_retrieval.js +0 -0
  225. /package/src/{archiver/structs → structs}/data_retrieval.ts +0 -0
@@ -1,33 +0,0 @@
1
- import { Fr } from '@aztec/foundation/fields';
2
- import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
- import { InboxLeaf } from '@aztec/stdlib/messaging';
4
- import type { DataRetrieval } from '../structs/data_retrieval.js';
5
- /**
6
- * LMDB implementation of the ArchiverDataStore interface.
7
- */
8
- export declare class MessageStore {
9
- #private;
10
- private db;
11
- constructor(db: AztecAsyncKVStore);
12
- getTotalL1ToL2MessageCount(): Promise<bigint>;
13
- /**
14
- * Gets the last L1 block number that emitted new messages.
15
- * @returns The last L1 block number processed
16
- */
17
- getSynchedL1BlockNumber(): Promise<bigint | undefined>;
18
- setSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<void>;
19
- /**
20
- * Append L1 to L2 messages to the store.
21
- * @param messages - The L1 to L2 messages to be added to the store and the last processed L1 block.
22
- * @returns True if the operation is successful.
23
- */
24
- addL1ToL2Messages(messages: DataRetrieval<InboxLeaf>): Promise<boolean>;
25
- /**
26
- * Gets the L1 to L2 message index in the L1 to L2 message tree.
27
- * @param l1ToL2Message - The L1 to L2 message.
28
- * @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
29
- */
30
- getL1ToL2MessageIndex(l1ToL2Message: Fr): Promise<bigint | undefined>;
31
- getL1ToL2Messages(blockNumber: bigint): Promise<Fr[]>;
32
- }
33
- //# sourceMappingURL=message_store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/message_store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,iBAAiB,EAAsC,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE;;GAEG;AACH,qBAAa,YAAY;;IAUX,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,iBAAiB;IAOnC,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC;IAInD;;;OAGG;IACH,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIhD,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBvE;;;;OAIG;IACH,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/D,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;CAqB5D"}
@@ -1,85 +0,0 @@
1
- import { L1_TO_L2_MSG_SUBTREE_HEIGHT } from '@aztec/constants';
2
- import { Fr } from '@aztec/foundation/fields';
3
- import { createLogger } from '@aztec/foundation/log';
4
- import { InboxLeaf } from '@aztec/stdlib/messaging';
5
- /**
6
- * LMDB implementation of the ArchiverDataStore interface.
7
- */ export class MessageStore {
8
- db;
9
- #l1ToL2Messages;
10
- #l1ToL2MessageIndices;
11
- #lastSynchedL1Block;
12
- #totalMessageCount;
13
- #log;
14
- #l1ToL2MessagesSubtreeSize;
15
- constructor(db){
16
- this.db = db;
17
- this.#log = createLogger('archiver:message_store');
18
- this.#l1ToL2MessagesSubtreeSize = 2 ** L1_TO_L2_MSG_SUBTREE_HEIGHT;
19
- this.#l1ToL2Messages = db.openMap('archiver_l1_to_l2_messages');
20
- this.#l1ToL2MessageIndices = db.openMap('archiver_l1_to_l2_message_indices');
21
- this.#lastSynchedL1Block = db.openSingleton('archiver_last_l1_block_new_messages');
22
- this.#totalMessageCount = db.openSingleton('archiver_l1_to_l2_message_count');
23
- }
24
- async getTotalL1ToL2MessageCount() {
25
- return await this.#totalMessageCount.getAsync() ?? 0n;
26
- }
27
- /**
28
- * Gets the last L1 block number that emitted new messages.
29
- * @returns The last L1 block number processed
30
- */ getSynchedL1BlockNumber() {
31
- return this.#lastSynchedL1Block.getAsync();
32
- }
33
- async setSynchedL1BlockNumber(l1BlockNumber) {
34
- await this.#lastSynchedL1Block.set(l1BlockNumber);
35
- }
36
- /**
37
- * Append L1 to L2 messages to the store.
38
- * @param messages - The L1 to L2 messages to be added to the store and the last processed L1 block.
39
- * @returns True if the operation is successful.
40
- */ addL1ToL2Messages(messages) {
41
- return this.db.transactionAsync(async ()=>{
42
- const lastL1BlockNumber = await this.#lastSynchedL1Block.getAsync() ?? 0n;
43
- if (lastL1BlockNumber >= messages.lastProcessedL1BlockNumber) {
44
- return false;
45
- }
46
- await this.#lastSynchedL1Block.set(messages.lastProcessedL1BlockNumber);
47
- for (const message of messages.retrievedData){
48
- const key = `${message.index}`;
49
- await this.#l1ToL2Messages.set(key, message.leaf.toBuffer());
50
- await this.#l1ToL2MessageIndices.set(message.leaf.toString(), message.index);
51
- }
52
- const lastTotalMessageCount = await this.getTotalL1ToL2MessageCount();
53
- await this.#totalMessageCount.set(lastTotalMessageCount + BigInt(messages.retrievedData.length));
54
- return true;
55
- });
56
- }
57
- /**
58
- * Gets the L1 to L2 message index in the L1 to L2 message tree.
59
- * @param l1ToL2Message - The L1 to L2 message.
60
- * @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
61
- */ getL1ToL2MessageIndex(l1ToL2Message) {
62
- return this.#l1ToL2MessageIndices.getAsync(l1ToL2Message.toString());
63
- }
64
- async getL1ToL2Messages(blockNumber) {
65
- const messages = [];
66
- let undefinedMessageFound = false;
67
- const startIndex = Number(InboxLeaf.smallestIndexFromL2Block(blockNumber));
68
- for(let i = startIndex; i < startIndex + this.#l1ToL2MessagesSubtreeSize; i++){
69
- // This is inefficient but probably fine for now.
70
- const key = `${i}`;
71
- const message = await this.#l1ToL2Messages.getAsync(key);
72
- if (message) {
73
- if (undefinedMessageFound) {
74
- throw new Error(`L1 to L2 message gap found in block ${blockNumber}`);
75
- }
76
- messages.push(Fr.fromBuffer(message));
77
- } else {
78
- undefinedMessageFound = true;
79
- // We continue iterating over messages here to verify that there are no more messages after the undefined one.
80
- // --> If this was the case this would imply there is some issue with log fetching.
81
- }
82
- }
83
- return messages;
84
- }
85
- }
@@ -1,12 +0,0 @@
1
- import type { Fr } from '@aztec/foundation/fields';
2
- import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
- import type { InBlock, L2Block } from '@aztec/stdlib/block';
4
- export declare class NullifierStore {
5
- #private;
6
- private db;
7
- constructor(db: AztecAsyncKVStore);
8
- addNullifiers(blocks: L2Block[]): Promise<boolean>;
9
- deleteNullifiers(blocks: L2Block[]): Promise<boolean>;
10
- findNullifiersIndexesWithBlock(blockNumber: number, nullifiers: Fr[]): Promise<(InBlock<bigint> | undefined)[]>;
11
- }
12
- //# sourceMappingURL=nullifier_store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nullifier_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/nullifier_store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE5D,qBAAa,cAAc;;IAMb,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,iBAAiB;IAMnC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BlD,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAerD,8BAA8B,CAClC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,EAAE,EAAE,GACf,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;CAkC5C"}
@@ -1,73 +0,0 @@
1
- import { MAX_NULLIFIERS_PER_TX } from '@aztec/constants';
2
- import { createLogger } from '@aztec/foundation/log';
3
- export class NullifierStore {
4
- db;
5
- #nullifiersToBlockNumber;
6
- #nullifiersToBlockHash;
7
- #nullifiersToIndex;
8
- #log;
9
- constructor(db){
10
- this.db = db;
11
- this.#log = createLogger('archiver:log_store');
12
- this.#nullifiersToBlockNumber = db.openMap('archiver_nullifiers_to_block_number');
13
- this.#nullifiersToBlockHash = db.openMap('archiver_nullifiers_to_block_hash');
14
- this.#nullifiersToIndex = db.openMap('archiver_nullifiers_to_index');
15
- }
16
- async addNullifiers(blocks) {
17
- const blockHashes = await Promise.all(blocks.map((block)=>block.hash()));
18
- await this.db.transactionAsync(async ()=>{
19
- await Promise.all(blocks.map((block, i)=>{
20
- const dataStartIndexForBlock = block.header.state.partial.nullifierTree.nextAvailableLeafIndex - block.body.txEffects.length * MAX_NULLIFIERS_PER_TX;
21
- return Promise.all(block.body.txEffects.map((txEffects, txIndex)=>{
22
- const dataStartIndexForTx = dataStartIndexForBlock + txIndex * MAX_NULLIFIERS_PER_TX;
23
- return Promise.all(txEffects.nullifiers.map(async (nullifier, nullifierIndex)=>{
24
- await this.#nullifiersToBlockNumber.set(nullifier.toString(), block.number);
25
- await this.#nullifiersToBlockHash.set(nullifier.toString(), blockHashes[i].toString());
26
- await this.#nullifiersToIndex.set(nullifier.toString(), dataStartIndexForTx + nullifierIndex);
27
- }));
28
- }));
29
- }));
30
- });
31
- return true;
32
- }
33
- async deleteNullifiers(blocks) {
34
- await this.db.transactionAsync(async ()=>{
35
- for (const block of blocks){
36
- for (const nullifier of block.body.txEffects.flatMap((tx)=>tx.nullifiers)){
37
- await Promise.all([
38
- this.#nullifiersToBlockNumber.delete(nullifier.toString()),
39
- this.#nullifiersToBlockHash.delete(nullifier.toString()),
40
- this.#nullifiersToIndex.delete(nullifier.toString())
41
- ]);
42
- }
43
- }
44
- });
45
- return true;
46
- }
47
- async findNullifiersIndexesWithBlock(blockNumber, nullifiers) {
48
- const asStrings = nullifiers.map((x)=>x.toString());
49
- const maybeNullifiers = await Promise.all(asStrings.map(async (nullifier)=>{
50
- const [data, l2BlockNumber, l2BlockHash] = await Promise.all([
51
- this.#nullifiersToIndex.getAsync(nullifier),
52
- this.#nullifiersToBlockNumber.getAsync(nullifier),
53
- this.#nullifiersToBlockHash.getAsync(nullifier)
54
- ]);
55
- return {
56
- data,
57
- l2BlockNumber,
58
- l2BlockHash
59
- };
60
- }));
61
- return maybeNullifiers.map(({ data, l2BlockNumber, l2BlockHash })=>{
62
- if (data === undefined || l2BlockNumber === undefined || l2BlockHash === undefined || l2BlockNumber > blockNumber) {
63
- return undefined;
64
- } else {
65
- return {
66
- data: BigInt(data),
67
- l2BlockNumber,
68
- l2BlockHash
69
- };
70
- }
71
- });
72
- }
73
- }
@@ -1,23 +0,0 @@
1
- import type { Fr } from '@aztec/foundation/fields';
2
- import { InboxLeaf } from '@aztec/stdlib/messaging';
3
- /**
4
- * A simple in-memory implementation of an L1 to L2 message store.
5
- */
6
- export declare class L1ToL2MessageStore {
7
- #private;
8
- /**
9
- * A map pointing from a key in a "messageIndex" format to the corresponding L1 to L2 message hash.
10
- */
11
- protected store: Map<string, Fr>;
12
- constructor();
13
- getTotalL1ToL2MessageCount(): bigint;
14
- addMessage(message: InboxLeaf): void;
15
- getMessages(blockNumber: bigint): Fr[];
16
- /**
17
- * Gets the L1 to L2 message index in the L1 to L2 message tree.
18
- * @param l1ToL2Message - The L1 to L2 message.
19
- * @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
20
- */
21
- getMessageIndex(l1ToL2Message: Fr): bigint | undefined;
22
- }
23
- //# sourceMappingURL=l1_to_l2_message_store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"l1_to_l2_message_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/memory_archiver_store/l1_to_l2_message_store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD;;GAEG;AACH,qBAAa,kBAAkB;;IAC7B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAa;;IAM7C,0BAA0B,IAAI,MAAM;IAIpC,UAAU,CAAC,OAAO,EAAE,SAAS;IAI7B,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,EAAE,EAAE;IAsBtC;;;;OAIG;IACH,eAAe,CAAC,aAAa,EAAE,EAAE,GAAG,MAAM,GAAG,SAAS;CAQvD"}
@@ -1,49 +0,0 @@
1
- import { L1_TO_L2_MSG_SUBTREE_HEIGHT } from '@aztec/constants';
2
- import { InboxLeaf } from '@aztec/stdlib/messaging';
3
- /**
4
- * A simple in-memory implementation of an L1 to L2 message store.
5
- */ export class L1ToL2MessageStore {
6
- /**
7
- * A map pointing from a key in a "messageIndex" format to the corresponding L1 to L2 message hash.
8
- */ store = new Map();
9
- #l1ToL2MessagesSubtreeSize = 2 ** L1_TO_L2_MSG_SUBTREE_HEIGHT;
10
- constructor(){}
11
- getTotalL1ToL2MessageCount() {
12
- return BigInt(this.store.size);
13
- }
14
- addMessage(message) {
15
- this.store.set(`${message.index}`, message.leaf);
16
- }
17
- getMessages(blockNumber) {
18
- const messages = [];
19
- let undefinedMessageFound = false;
20
- const startIndex = Number(InboxLeaf.smallestIndexFromL2Block(blockNumber));
21
- for(let i = startIndex; i < startIndex + this.#l1ToL2MessagesSubtreeSize; i++){
22
- // This is inefficient but probably fine for now.
23
- const message = this.store.get(`${i}`);
24
- if (message) {
25
- if (undefinedMessageFound) {
26
- throw new Error(`L1 to L2 message gap found in block ${blockNumber}`);
27
- }
28
- messages.push(message);
29
- } else {
30
- undefinedMessageFound = true;
31
- // We continue iterating over messages here to verify that there are no more messages after the undefined one.
32
- // --> If this was the case this would imply there is some issue with log fetching.
33
- }
34
- }
35
- return messages;
36
- }
37
- /**
38
- * Gets the L1 to L2 message index in the L1 to L2 message tree.
39
- * @param l1ToL2Message - The L1 to L2 message.
40
- * @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
41
- */ getMessageIndex(l1ToL2Message) {
42
- for (const [key, message] of this.store.entries()){
43
- if (message.equals(l1ToL2Message)) {
44
- return BigInt(key);
45
- }
46
- }
47
- return undefined;
48
- }
49
- }
@@ -1,175 +0,0 @@
1
- import { Fr } from '@aztec/foundation/fields';
2
- import { FunctionSelector } from '@aztec/stdlib/abi';
3
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- import { type InBlock, type L2Block } from '@aztec/stdlib/block';
5
- import type { ContractClassPublic, ContractInstanceUpdateWithAddress, ContractInstanceWithAddress, ExecutablePrivateFunctionWithMembershipProof, UnconstrainedFunctionWithMembershipProof } from '@aztec/stdlib/contract';
6
- import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
7
- import { type LogFilter, type PrivateLog, TxScopedL2Log } from '@aztec/stdlib/logs';
8
- import type { InboxLeaf } from '@aztec/stdlib/messaging';
9
- import { type BlockHeader, TxEffect, TxHash, TxReceipt } from '@aztec/stdlib/tx';
10
- import type { ArchiverDataStore, ArchiverL1SynchPoint } from '../archiver_store.js';
11
- import type { DataRetrieval } from '../structs/data_retrieval.js';
12
- import type { L1Published } from '../structs/published.js';
13
- /**
14
- * Simple, in-memory implementation of an archiver data store.
15
- */
16
- export declare class MemoryArchiverStore implements ArchiverDataStore {
17
- #private;
18
- /** The max number of logs that can be obtained in 1 "getPublicLogs" call. */
19
- readonly maxLogs: number;
20
- /**
21
- * An array containing all the L2 blocks that have been fetched so far.
22
- */
23
- private l2Blocks;
24
- /**
25
- * An array containing all the tx effects in the L2 blocks that have been fetched so far.
26
- */
27
- private txEffects;
28
- private taggedLogs;
29
- private logTagsPerBlock;
30
- private privateLogsPerBlock;
31
- private publicLogsPerBlock;
32
- private contractClassLogsPerBlock;
33
- private blockScopedNullifiers;
34
- /**
35
- * Contains all L1 to L2 messages.
36
- */
37
- private l1ToL2Messages;
38
- private contractClasses;
39
- private bytecodeCommitments;
40
- private privateFunctions;
41
- private unconstrainedFunctions;
42
- private contractInstances;
43
- private contractInstanceUpdates;
44
- private lastL1BlockNewBlocks;
45
- private lastL1BlockNewMessages;
46
- private lastProvenL2BlockNumber;
47
- private lastProvenL2EpochNumber;
48
- private functionNames;
49
- constructor(
50
- /** The max number of logs that can be obtained in 1 "getPublicLogs" call. */
51
- maxLogs: number);
52
- getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
53
- getContractClassIds(): Promise<Fr[]>;
54
- getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
55
- getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined>;
56
- addFunctions(contractClassId: Fr, newPrivateFunctions: ExecutablePrivateFunctionWithMembershipProof[], newUnconstrainedFunctions: UnconstrainedFunctionWithMembershipProof[]): Promise<boolean>;
57
- addContractClasses(data: ContractClassPublic[], bytecodeCommitments: Fr[], blockNumber: number): Promise<boolean>;
58
- deleteContractClasses(data: ContractClassPublic[], blockNumber: number): Promise<boolean>;
59
- addContractInstances(data: ContractInstanceWithAddress[], _blockNumber: number): Promise<boolean>;
60
- deleteContractInstances(data: ContractInstanceWithAddress[], _blockNumber: number): Promise<boolean>;
61
- addContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], blockNumber: number): Promise<boolean>;
62
- deleteContractInstanceUpdates(data: ContractInstanceUpdateWithAddress[], blockNumber: number): Promise<boolean>;
63
- /**
64
- * Append new blocks to the store's list.
65
- * @param blocks - The L2 blocks to be added to the store and the last processed L1 block.
66
- * @returns True if the operation is successful.
67
- */
68
- addBlocks(blocks: L1Published<L2Block>[]): Promise<boolean>;
69
- /**
70
- * Unwinds blocks from the database
71
- * @param from - The tip of the chain, passed for verification purposes,
72
- * ensuring that we don't end up deleting something we did not intend
73
- * @param blocksToUnwind - The number of blocks we are to unwind
74
- * @returns True if the operation is successful
75
- */
76
- unwindBlocks(from: number, blocksToUnwind: number): Promise<boolean>;
77
- /**
78
- * Append new logs to the store's list.
79
- * @param block - The block for which to add the logs.
80
- * @returns True if the operation is successful.
81
- */
82
- addLogs(blocks: L2Block[]): Promise<boolean>;
83
- deleteLogs(blocks: L2Block[]): Promise<boolean>;
84
- addNullifiers(blocks: L2Block[]): Promise<boolean>;
85
- deleteNullifiers(blocks: L2Block[]): Promise<boolean>;
86
- findNullifiersIndexesWithBlock(blockNumber: number, nullifiers: Fr[]): Promise<(InBlock<bigint> | undefined)[]>;
87
- getTotalL1ToL2MessageCount(): Promise<bigint>;
88
- /**
89
- * Append L1 to L2 messages to the store.
90
- * @param messages - The L1 to L2 messages to be added to the store and the last processed L1 block.
91
- * @returns True if the operation is successful.
92
- */
93
- addL1ToL2Messages(messages: DataRetrieval<InboxLeaf>): Promise<boolean>;
94
- /**
95
- * Gets the L1 to L2 message index in the L1 to L2 message tree.
96
- * @param l1ToL2Message - The L1 to L2 message.
97
- * @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
98
- */
99
- getL1ToL2MessageIndex(l1ToL2Message: Fr): Promise<bigint | undefined>;
100
- /**
101
- * Gets up to `limit` amount of L2 blocks starting from `from`.
102
- * @param from - Number of the first block to return (inclusive).
103
- * @param limit - The number of blocks to return.
104
- * @returns The requested L2 blocks.
105
- * @remarks When "from" is smaller than genesis block number, blocks from the beginning are returned.
106
- */
107
- getBlocks(from: number, limit: number): Promise<L1Published<L2Block>[]>;
108
- getBlockHeaders(from: number, limit: number): Promise<BlockHeader[]>;
109
- /**
110
- * Gets a tx effect.
111
- * @param txHash - The txHash of the tx effect.
112
- * @returns The requested tx effect.
113
- */
114
- getTxEffect(txHash: TxHash): Promise<InBlock<TxEffect> | undefined>;
115
- /**
116
- * Gets a receipt of a settled tx.
117
- * @param txHash - The hash of a tx we try to get the receipt for.
118
- * @returns The requested tx receipt (or undefined if not found).
119
- */
120
- getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
121
- /**
122
- * Gets L1 to L2 message (to be) included in a given block.
123
- * @param blockNumber - L2 block number to get messages for.
124
- * @returns The L1 to L2 messages/leaves of the messages subtree (throws if not found).
125
- */
126
- getL1ToL2Messages(blockNumber: bigint): Promise<Fr[]>;
127
- /**
128
- * Retrieves all private logs from up to `limit` blocks, starting from the block number `from`.
129
- * @param from - The block number from which to begin retrieving logs.
130
- * @param limit - The maximum number of blocks to retrieve logs from.
131
- * @returns An array of private logs from the specified range of blocks.
132
- */
133
- getPrivateLogs(from: number, limit: number): Promise<PrivateLog[]>;
134
- /**
135
- * Gets all logs that match any of the received tags (i.e. logs with their first field equal to a tag).
136
- * @param tags - The tags to filter the logs by.
137
- * @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
138
- * that tag.
139
- */
140
- getLogsByTags(tags: Fr[]): Promise<TxScopedL2Log[][]>;
141
- /**
142
- * Gets public logs based on the provided filter.
143
- * @param filter - The filter to apply to the logs.
144
- * @returns The requested logs.
145
- * @remarks Works by doing an intersection of all params in the filter.
146
- */
147
- getPublicLogs(filter: LogFilter): Promise<GetPublicLogsResponse>;
148
- /**
149
- * Gets contract class logs based on the provided filter.
150
- * NB: clone of the above fn, but for contract class logs
151
- * @param filter - The filter to apply to the logs.
152
- * @returns The requested logs.
153
- * @remarks Works by doing an intersection of all params in the filter.
154
- */
155
- getContractClassLogs(filter: LogFilter): Promise<GetContractClassLogsResponse>;
156
- getLastBlockNumber(): number;
157
- /**
158
- * Gets the number of the latest L2 block processed.
159
- * @returns The number of the latest L2 block processed.
160
- */
161
- getSynchedL2BlockNumber(): Promise<number>;
162
- getProvenL2BlockNumber(): Promise<number>;
163
- setProvenL2BlockNumber(l2BlockNumber: number): Promise<void>;
164
- setBlockSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<void>;
165
- setMessageSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<void>;
166
- getSynchPoint(): Promise<ArchiverL1SynchPoint>;
167
- getContractFunctionName(_address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
168
- registerContractFunctionSignatures(_address: AztecAddress, signatures: string[]): Promise<void>;
169
- estimateSize(): Promise<{
170
- mappingSize: number;
171
- actualSize: number;
172
- numItems: number;
173
- }>;
174
- }
175
- //# sourceMappingURL=memory_archiver_store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory_archiver_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/memory_archiver_store/memory_archiver_store.ts"],"names":[],"mappings":"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"}