@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
@@ -1,10 +1,13 @@
1
- import { INITIAL_L2_BLOCK_NUM, MAX_NOTE_HASHES_PER_TX } from '@aztec/constants';
1
+ import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
2
2
  import { BlockNumber } from '@aztec/foundation/branded-types';
3
+ import { filterAsync } from '@aztec/foundation/collection';
3
4
  import { Fr } from '@aztec/foundation/curves/bn254';
4
5
  import { createLogger } from '@aztec/foundation/log';
5
6
  import { BufferReader, numToUInt32BE } from '@aztec/foundation/serialize';
6
- import { L2BlockHash } from '@aztec/stdlib/block';
7
+ import { BlockHash } from '@aztec/stdlib/block';
8
+ import { MAX_LOGS_PER_TAG } from '@aztec/stdlib/interfaces/api-limit';
7
9
  import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, PublicLog, TxScopedL2Log } from '@aztec/stdlib/logs';
10
+ import { TxHash } from '@aztec/stdlib/tx';
8
11
  /**
9
12
  * A store for logs
10
13
  */ export class LogStore {
@@ -37,32 +40,29 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
37
40
  *
38
41
  * @param block - The L2 block to extract logs from.
39
42
  * @returns An object containing the private and public tagged logs for the block.
40
- */ async #extractTaggedLogsFromBlock(block) {
41
- const blockHash = L2BlockHash.fromField(await block.hash());
43
+ */ #extractTaggedLogsFromBlock(block) {
42
44
  // SiloedTag (as string) -> array of log buffers.
43
45
  const privateTaggedLogs = new Map();
44
46
  // "{contractAddress}_{tag}" (as string) -> array of log buffers.
45
47
  const publicTaggedLogs = new Map();
46
- const dataStartIndexForBlock = block.header.state.partial.noteHashTree.nextAvailableLeafIndex - block.body.txEffects.length * MAX_NOTE_HASHES_PER_TX;
47
- block.body.txEffects.forEach((txEffect, txIndex)=>{
48
+ block.body.txEffects.forEach((txEffect)=>{
48
49
  const txHash = txEffect.txHash;
49
- const dataStartIndexForTx = dataStartIndexForBlock + txIndex * MAX_NOTE_HASHES_PER_TX;
50
- txEffect.privateLogs.forEach((log, logIndex)=>{
50
+ txEffect.privateLogs.forEach((log)=>{
51
51
  // Private logs use SiloedTag (already siloed by kernel)
52
52
  const tag = log.fields[0];
53
53
  this.#log.debug(`Found private log with tag ${tag.toString()} in block ${block.number}`);
54
54
  const currentLogs = privateTaggedLogs.get(tag.toString()) ?? [];
55
- currentLogs.push(new TxScopedL2Log(txHash, dataStartIndexForTx, logIndex, block.number, blockHash, block.timestamp, log).toBuffer());
55
+ currentLogs.push(new TxScopedL2Log(txHash, block.number, block.timestamp, log.getEmittedFields(), txEffect.noteHashes, txEffect.nullifiers[0]).toBuffer());
56
56
  privateTaggedLogs.set(tag.toString(), currentLogs);
57
57
  });
58
- txEffect.publicLogs.forEach((log, logIndex)=>{
58
+ txEffect.publicLogs.forEach((log)=>{
59
59
  // Public logs use Tag directly (not siloed) and are stored with contract address
60
60
  const tag = log.fields[0];
61
61
  const contractAddress = log.contractAddress;
62
62
  const key = `${contractAddress.toString()}_${tag.toString()}`;
63
63
  this.#log.debug(`Found public log with tag ${tag.toString()} from contract ${contractAddress.toString()} in block ${block.number}`);
64
64
  const currentLogs = publicTaggedLogs.get(key) ?? [];
65
- currentLogs.push(new TxScopedL2Log(txHash, dataStartIndexForTx, logIndex, block.number, blockHash, block.timestamp, log).toBuffer());
65
+ currentLogs.push(new TxScopedL2Log(txHash, block.number, block.timestamp, log.getEmittedFields(), txEffect.noteHashes, txEffect.nullifiers[0]).toBuffer());
66
66
  publicTaggedLogs.set(key, currentLogs);
67
67
  });
68
68
  });
@@ -76,8 +76,8 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
76
76
  * @param blocks - The blocks to extract logs from.
77
77
  * @returns A map from tag (as string) to an array of serialized private logs belonging to that tag, and a map from
78
78
  * "{contractAddress}_{tag}" (as string) to an array of serialized public logs belonging to that key.
79
- */ async #extractTaggedLogs(blocks) {
80
- const taggedLogsInBlocks = await Promise.all(blocks.map((block)=>this.#extractTaggedLogsFromBlock(block)));
79
+ */ #extractTaggedLogs(blocks) {
80
+ const taggedLogsInBlocks = blocks.map((block)=>this.#extractTaggedLogsFromBlock(block));
81
81
  // Now we merge the maps from each block into a single map.
82
82
  const privateTaggedLogs = taggedLogsInBlocks.reduce((acc, { privateTaggedLogs })=>{
83
83
  for (const [tag, logs] of privateTaggedLogs.entries()){
@@ -98,60 +98,82 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
98
98
  publicTaggedLogs
99
99
  };
100
100
  }
101
+ async #addPrivateLogs(blocks) {
102
+ const newBlocks = await filterAsync(blocks, async (block)=>!await this.#privateLogKeysByBlock.hasAsync(block.number));
103
+ const { privateTaggedLogs } = this.#extractTaggedLogs(newBlocks);
104
+ const keysOfPrivateLogsToUpdate = Array.from(privateTaggedLogs.keys());
105
+ const currentPrivateTaggedLogs = await Promise.all(keysOfPrivateLogsToUpdate.map(async (key)=>({
106
+ tag: key,
107
+ logBuffers: await this.#privateLogsByTag.getAsync(key)
108
+ })));
109
+ for (const taggedLogBuffer of currentPrivateTaggedLogs){
110
+ if (taggedLogBuffer.logBuffers && taggedLogBuffer.logBuffers.length > 0) {
111
+ privateTaggedLogs.set(taggedLogBuffer.tag, taggedLogBuffer.logBuffers.concat(privateTaggedLogs.get(taggedLogBuffer.tag)));
112
+ }
113
+ }
114
+ for (const block of newBlocks){
115
+ const privateTagsInBlock = [];
116
+ for (const [tag, logs] of privateTaggedLogs.entries()){
117
+ await this.#privateLogsByTag.set(tag, logs);
118
+ privateTagsInBlock.push(tag);
119
+ }
120
+ await this.#privateLogKeysByBlock.set(block.number, privateTagsInBlock);
121
+ }
122
+ }
123
+ async #addPublicLogs(blocks) {
124
+ const newBlocks = await filterAsync(blocks, async (block)=>!await this.#publicLogKeysByBlock.hasAsync(block.number));
125
+ const { publicTaggedLogs } = this.#extractTaggedLogs(newBlocks);
126
+ const keysOfPublicLogsToUpdate = Array.from(publicTaggedLogs.keys());
127
+ const currentPublicTaggedLogs = await Promise.all(keysOfPublicLogsToUpdate.map(async (key)=>({
128
+ tag: key,
129
+ logBuffers: await this.#publicLogsByContractAndTag.getAsync(key)
130
+ })));
131
+ for (const taggedLogBuffer of currentPublicTaggedLogs){
132
+ if (taggedLogBuffer.logBuffers && taggedLogBuffer.logBuffers.length > 0) {
133
+ publicTaggedLogs.set(taggedLogBuffer.tag, taggedLogBuffer.logBuffers.concat(publicTaggedLogs.get(taggedLogBuffer.tag)));
134
+ }
135
+ }
136
+ for (const block of newBlocks){
137
+ const blockHash = await block.hash();
138
+ const publicTagsInBlock = [];
139
+ for (const [tag, logs] of publicTaggedLogs.entries()){
140
+ await this.#publicLogsByContractAndTag.set(tag, logs);
141
+ publicTagsInBlock.push(tag);
142
+ }
143
+ await this.#publicLogKeysByBlock.set(block.number, publicTagsInBlock);
144
+ const publicLogsInBlock = block.body.txEffects.map((txEffect, txIndex)=>[
145
+ numToUInt32BE(txIndex),
146
+ txEffect.txHash.toBuffer(),
147
+ numToUInt32BE(txEffect.publicLogs.length),
148
+ txEffect.publicLogs.map((log)=>log.toBuffer())
149
+ ].flat()).flat();
150
+ await this.#publicLogsByBlock.set(block.number, this.#packWithBlockHash(blockHash, publicLogsInBlock));
151
+ }
152
+ }
153
+ async #addContractClassLogs(blocks) {
154
+ const newBlocks = await filterAsync(blocks, async (block)=>!await this.#contractClassLogsByBlock.hasAsync(block.number));
155
+ for (const block of newBlocks){
156
+ const blockHash = await block.hash();
157
+ const contractClassLogsInBlock = block.body.txEffects.map((txEffect, txIndex)=>[
158
+ numToUInt32BE(txIndex),
159
+ txEffect.txHash.toBuffer(),
160
+ numToUInt32BE(txEffect.contractClassLogs.length),
161
+ txEffect.contractClassLogs.map((log)=>log.toBuffer())
162
+ ].flat()).flat();
163
+ await this.#contractClassLogsByBlock.set(block.number, this.#packWithBlockHash(blockHash, contractClassLogsInBlock));
164
+ }
165
+ }
101
166
  /**
102
167
  * Append new logs to the store's list.
103
168
  * @param blocks - The blocks for which to add the logs.
104
169
  * @returns True if the operation is successful.
105
- */ async addLogs(blocks) {
106
- const { privateTaggedLogs, publicTaggedLogs } = await this.#extractTaggedLogs(blocks);
107
- const keysOfPrivateLogsToUpdate = Array.from(privateTaggedLogs.keys());
108
- const keysOfPublicLogsToUpdate = Array.from(publicTaggedLogs.keys());
170
+ */ addLogs(blocks) {
109
171
  return this.db.transactionAsync(async ()=>{
110
- const currentPrivateTaggedLogs = await Promise.all(keysOfPrivateLogsToUpdate.map(async (key)=>({
111
- tag: key,
112
- logBuffers: await this.#privateLogsByTag.getAsync(key)
113
- })));
114
- currentPrivateTaggedLogs.forEach((taggedLogBuffer)=>{
115
- if (taggedLogBuffer.logBuffers && taggedLogBuffer.logBuffers.length > 0) {
116
- privateTaggedLogs.set(taggedLogBuffer.tag, taggedLogBuffer.logBuffers.concat(privateTaggedLogs.get(taggedLogBuffer.tag)));
117
- }
118
- });
119
- const currentPublicTaggedLogs = await Promise.all(keysOfPublicLogsToUpdate.map(async (key)=>({
120
- key,
121
- logBuffers: await this.#publicLogsByContractAndTag.getAsync(key)
122
- })));
123
- currentPublicTaggedLogs.forEach((taggedLogBuffer)=>{
124
- if (taggedLogBuffer.logBuffers && taggedLogBuffer.logBuffers.length > 0) {
125
- publicTaggedLogs.set(taggedLogBuffer.key, taggedLogBuffer.logBuffers.concat(publicTaggedLogs.get(taggedLogBuffer.key)));
126
- }
127
- });
128
- for (const block of blocks){
129
- const blockHash = await block.hash();
130
- const privateTagsInBlock = [];
131
- for (const [tag, logs] of privateTaggedLogs.entries()){
132
- await this.#privateLogsByTag.set(tag, logs);
133
- privateTagsInBlock.push(tag);
134
- }
135
- await this.#privateLogKeysByBlock.set(block.number, privateTagsInBlock);
136
- const publicKeysInBlock = [];
137
- for (const [key, logs] of publicTaggedLogs.entries()){
138
- await this.#publicLogsByContractAndTag.set(key, logs);
139
- publicKeysInBlock.push(key);
140
- }
141
- await this.#publicLogKeysByBlock.set(block.number, publicKeysInBlock);
142
- const publicLogsInBlock = block.body.txEffects.map((txEffect, txIndex)=>[
143
- numToUInt32BE(txIndex),
144
- numToUInt32BE(txEffect.publicLogs.length),
145
- txEffect.publicLogs.map((log)=>log.toBuffer())
146
- ].flat()).flat();
147
- const contractClassLogsInBlock = block.body.txEffects.map((txEffect, txIndex)=>[
148
- numToUInt32BE(txIndex),
149
- numToUInt32BE(txEffect.contractClassLogs.length),
150
- txEffect.contractClassLogs.map((log)=>log.toBuffer())
151
- ].flat()).flat();
152
- await this.#publicLogsByBlock.set(block.number, this.#packWithBlockHash(blockHash, publicLogsInBlock));
153
- await this.#contractClassLogsByBlock.set(block.number, this.#packWithBlockHash(blockHash, contractClassLogsInBlock));
154
- }
172
+ await Promise.all([
173
+ this.#addPrivateLogs(blocks),
174
+ this.#addPublicLogs(blocks),
175
+ this.#addContractClassLogs(blocks)
176
+ ]);
155
177
  return true;
156
178
  });
157
179
  }
@@ -166,7 +188,7 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
166
188
  if (!blockHash) {
167
189
  throw new Error('Failed to read block hash from log entry buffer');
168
190
  }
169
- return L2BlockHash.fromField(blockHash);
191
+ return new BlockHash(blockHash);
170
192
  }
171
193
  deleteLogs(blocks) {
172
194
  return this.db.transactionAsync(async ()=>{
@@ -188,21 +210,34 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
188
210
  });
189
211
  }
190
212
  /**
191
- * Gets all private logs that match any of the `tags`. For each tag, an array of matching logs is returned. An empty
213
+ * Gets private logs that match any of the `tags`. For each tag, an array of matching logs is returned. An empty
192
214
  * array implies no logs match that tag.
193
- */ async getPrivateLogsByTags(tags) {
215
+ * @param tags - The tags to search for.
216
+ * @param page - The page number (0-indexed) for pagination.
217
+ * @returns An array of log arrays, one per tag. Returns at most MAX_LOGS_PER_TAG logs per tag per page. If
218
+ * MAX_LOGS_PER_TAG logs are returned for a tag, the caller should fetch the next page to check for more logs.
219
+ */ async getPrivateLogsByTags(tags, page = 0) {
194
220
  const logs = await Promise.all(tags.map((tag)=>this.#privateLogsByTag.getAsync(tag.toString())));
195
- return logs.map((logBuffers)=>logBuffers?.map((logBuffer)=>TxScopedL2Log.fromBuffer(logBuffer)) ?? []);
221
+ const start = page * MAX_LOGS_PER_TAG;
222
+ const end = start + MAX_LOGS_PER_TAG;
223
+ return logs.map((logBuffers)=>logBuffers?.slice(start, end).map((logBuffer)=>TxScopedL2Log.fromBuffer(logBuffer)) ?? []);
196
224
  }
197
225
  /**
198
- * Gets all public logs that match any of the `tags` from the specified contract. For each tag, an array of matching
226
+ * Gets public logs that match any of the `tags` from the specified contract. For each tag, an array of matching
199
227
  * logs is returned. An empty array implies no logs match that tag.
200
- */ async getPublicLogsByTagsFromContract(contractAddress, tags) {
228
+ * @param contractAddress - The contract address to search logs for.
229
+ * @param tags - The tags to search for.
230
+ * @param page - The page number (0-indexed) for pagination.
231
+ * @returns An array of log arrays, one per tag. Returns at most MAX_LOGS_PER_TAG logs per tag per page. If
232
+ * MAX_LOGS_PER_TAG logs are returned for a tag, the caller should fetch the next page to check for more logs.
233
+ */ async getPublicLogsByTagsFromContract(contractAddress, tags, page = 0) {
201
234
  const logs = await Promise.all(tags.map((tag)=>{
202
235
  const key = `${contractAddress.toString()}_${tag.value.toString()}`;
203
236
  return this.#publicLogsByContractAndTag.getAsync(key);
204
237
  }));
205
- return logs.map((logBuffers)=>logBuffers?.map((logBuffer)=>TxScopedL2Log.fromBuffer(logBuffer)) ?? []);
238
+ const start = page * MAX_LOGS_PER_TAG;
239
+ const end = start + MAX_LOGS_PER_TAG;
240
+ return logs.map((logBuffers)=>logBuffers?.slice(start, end).map((logBuffer)=>TxScopedL2Log.fromBuffer(logBuffer)) ?? []);
206
241
  }
207
242
  /**
208
243
  * Gets public logs based on the provided filter.
@@ -229,22 +264,24 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
229
264
  };
230
265
  }
231
266
  const buffer = await this.#publicLogsByBlock.getAsync(blockNumber) ?? Buffer.alloc(0);
232
- const publicLogsInBlock = [
233
- []
234
- ];
267
+ const publicLogsInBlock = [];
235
268
  const reader = new BufferReader(buffer);
236
269
  const blockHash = this.#unpackBlockHash(reader);
237
270
  while(reader.remainingBytes() > 0){
238
271
  const indexOfTx = reader.readNumber();
272
+ const txHash = reader.readObject(TxHash);
239
273
  const numLogsInTx = reader.readNumber();
240
- publicLogsInBlock[indexOfTx] = [];
274
+ publicLogsInBlock[indexOfTx] = {
275
+ txHash,
276
+ logs: []
277
+ };
241
278
  for(let i = 0; i < numLogsInTx; i++){
242
- publicLogsInBlock[indexOfTx].push(reader.readObject(PublicLog));
279
+ publicLogsInBlock[indexOfTx].logs.push(reader.readObject(PublicLog));
243
280
  }
244
281
  }
245
- const txLogs = publicLogsInBlock[txIndex];
282
+ const txData = publicLogsInBlock[txIndex];
246
283
  const logs = [];
247
- const maxLogsHit = this.#accumulateLogs(logs, blockNumber, blockHash, txIndex, txLogs, filter);
284
+ const maxLogsHit = this.#accumulatePublicLogs(logs, blockNumber, blockHash, txIndex, txData.txHash, txData.logs, filter);
248
285
  return {
249
286
  logs,
250
287
  maxLogsHit
@@ -265,22 +302,24 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
265
302
  start,
266
303
  end
267
304
  })){
268
- const publicLogsInBlock = [
269
- []
270
- ];
305
+ const publicLogsInBlock = [];
271
306
  const reader = new BufferReader(logBuffer);
272
307
  const blockHash = this.#unpackBlockHash(reader);
273
308
  while(reader.remainingBytes() > 0){
274
309
  const indexOfTx = reader.readNumber();
310
+ const txHash = reader.readObject(TxHash);
275
311
  const numLogsInTx = reader.readNumber();
276
- publicLogsInBlock[indexOfTx] = [];
312
+ publicLogsInBlock[indexOfTx] = {
313
+ txHash,
314
+ logs: []
315
+ };
277
316
  for(let i = 0; i < numLogsInTx; i++){
278
- publicLogsInBlock[indexOfTx].push(reader.readObject(PublicLog));
317
+ publicLogsInBlock[indexOfTx].logs.push(reader.readObject(PublicLog));
279
318
  }
280
319
  }
281
320
  for(let txIndex = filter.afterLog?.txIndex ?? 0; txIndex < publicLogsInBlock.length; txIndex++){
282
- const txLogs = publicLogsInBlock[txIndex];
283
- maxLogsHit = this.#accumulateLogs(logs, blockNumber, blockHash, txIndex, txLogs, filter);
321
+ const txData = publicLogsInBlock[txIndex];
322
+ maxLogsHit = this.#accumulatePublicLogs(logs, blockNumber, blockHash, txIndex, txData.txHash, txData.logs, filter);
284
323
  if (maxLogsHit) {
285
324
  this.#log.debug(`Max logs hit at block ${blockNumber}`);
286
325
  break loopOverBlocks;
@@ -317,22 +356,24 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
317
356
  };
318
357
  }
319
358
  const contractClassLogsBuffer = await this.#contractClassLogsByBlock.getAsync(blockNumber) ?? Buffer.alloc(0);
320
- const contractClassLogsInBlock = [
321
- []
322
- ];
359
+ const contractClassLogsInBlock = [];
323
360
  const reader = new BufferReader(contractClassLogsBuffer);
324
361
  const blockHash = this.#unpackBlockHash(reader);
325
362
  while(reader.remainingBytes() > 0){
326
363
  const indexOfTx = reader.readNumber();
364
+ const txHash = reader.readObject(TxHash);
327
365
  const numLogsInTx = reader.readNumber();
328
- contractClassLogsInBlock[indexOfTx] = [];
366
+ contractClassLogsInBlock[indexOfTx] = {
367
+ txHash,
368
+ logs: []
369
+ };
329
370
  for(let i = 0; i < numLogsInTx; i++){
330
- contractClassLogsInBlock[indexOfTx].push(reader.readObject(ContractClassLog));
371
+ contractClassLogsInBlock[indexOfTx].logs.push(reader.readObject(ContractClassLog));
331
372
  }
332
373
  }
333
- const txLogs = contractClassLogsInBlock[txIndex];
374
+ const txData = contractClassLogsInBlock[txIndex];
334
375
  const logs = [];
335
- const maxLogsHit = this.#accumulateLogs(logs, blockNumber, blockHash, txIndex, txLogs, filter);
376
+ const maxLogsHit = this.#accumulateContractClassLogs(logs, blockNumber, blockHash, txIndex, txData.txHash, txData.logs, filter);
336
377
  return {
337
378
  logs,
338
379
  maxLogsHit
@@ -353,22 +394,24 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
353
394
  start,
354
395
  end
355
396
  })){
356
- const contractClassLogsInBlock = [
357
- []
358
- ];
397
+ const contractClassLogsInBlock = [];
359
398
  const reader = new BufferReader(logBuffer);
360
399
  const blockHash = this.#unpackBlockHash(reader);
361
400
  while(reader.remainingBytes() > 0){
362
401
  const indexOfTx = reader.readNumber();
402
+ const txHash = reader.readObject(TxHash);
363
403
  const numLogsInTx = reader.readNumber();
364
- contractClassLogsInBlock[indexOfTx] = [];
404
+ contractClassLogsInBlock[indexOfTx] = {
405
+ txHash,
406
+ logs: []
407
+ };
365
408
  for(let i = 0; i < numLogsInTx; i++){
366
- contractClassLogsInBlock[indexOfTx].push(reader.readObject(ContractClassLog));
409
+ contractClassLogsInBlock[indexOfTx].logs.push(reader.readObject(ContractClassLog));
367
410
  }
368
411
  }
369
412
  for(let txIndex = filter.afterLog?.txIndex ?? 0; txIndex < contractClassLogsInBlock.length; txIndex++){
370
- const txLogs = contractClassLogsInBlock[txIndex];
371
- maxLogsHit = this.#accumulateLogs(logs, blockNumber, blockHash, txIndex, txLogs, filter);
413
+ const txData = contractClassLogsInBlock[txIndex];
414
+ maxLogsHit = this.#accumulateContractClassLogs(logs, blockNumber, blockHash, txIndex, txData.txHash, txData.logs, filter);
372
415
  if (maxLogsHit) {
373
416
  this.#log.debug(`Max logs hit at block ${blockNumber}`);
374
417
  break loopOverBlocks;
@@ -380,19 +423,28 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
380
423
  maxLogsHit
381
424
  };
382
425
  }
383
- #accumulateLogs(results, blockNumber, blockHash, txIndex, txLogs, filter = {}) {
426
+ #accumulatePublicLogs(results, blockNumber, blockHash, txIndex, txHash, txLogs, filter = {}) {
384
427
  let maxLogsHit = false;
385
428
  let logIndex = typeof filter.afterLog?.logIndex === 'number' ? filter.afterLog.logIndex + 1 : 0;
386
429
  for(; logIndex < txLogs.length; logIndex++){
387
430
  const log = txLogs[logIndex];
388
431
  if (!filter.contractAddress || log.contractAddress.equals(filter.contractAddress)) {
389
- if (log instanceof ContractClassLog) {
390
- results.push(new ExtendedContractClassLog(new LogId(BlockNumber(blockNumber), blockHash, txIndex, logIndex), log));
391
- } else if (log instanceof PublicLog) {
392
- results.push(new ExtendedPublicLog(new LogId(BlockNumber(blockNumber), blockHash, txIndex, logIndex), log));
393
- } else {
394
- throw new Error('Unknown log type');
432
+ results.push(new ExtendedPublicLog(new LogId(BlockNumber(blockNumber), blockHash, txHash, txIndex, logIndex), log));
433
+ if (results.length >= this.#logsMaxPageSize) {
434
+ maxLogsHit = true;
435
+ break;
395
436
  }
437
+ }
438
+ }
439
+ return maxLogsHit;
440
+ }
441
+ #accumulateContractClassLogs(results, blockNumber, blockHash, txIndex, txHash, txLogs, filter = {}) {
442
+ let maxLogsHit = false;
443
+ let logIndex = typeof filter.afterLog?.logIndex === 'number' ? filter.afterLog.logIndex + 1 : 0;
444
+ for(; logIndex < txLogs.length; logIndex++){
445
+ const log = txLogs[logIndex];
446
+ if (!filter.contractAddress || log.contractAddress.equals(filter.contractAddress)) {
447
+ results.push(new ExtendedContractClassLog(new LogId(BlockNumber(blockNumber), blockHash, txHash, txIndex, logIndex), log));
396
448
  if (results.length >= this.#logsMaxPageSize) {
397
449
  maxLogsHit = true;
398
450
  break;
@@ -37,4 +37,4 @@ export declare class MessageStore {
37
37
  private leafToIndexKey;
38
38
  private increaseTotalMessageCount;
39
39
  }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZV9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FyY2hpdmVyL2t2X2FyY2hpdmVyX3N0b3JlL21lc3NhZ2Vfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSXBELE9BQU8sRUFDTCxLQUFLLGlCQUFpQixFQUd0QixLQUFLLFdBQVcsRUFFakIsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixPQUFPLEVBQ0wsS0FBSyxZQUFZLEVBSWxCLE1BQU0sNkJBQTZCLENBQUM7QUFFckMscUJBQWEsaUJBQWtCLFNBQVEsS0FBSzthQUd4QixZQUFZLEVBQUUsWUFBWTtJQUY1QyxZQUNFLE9BQU8sRUFBRSxNQUFNLEVBQ0MsWUFBWSxFQUFFLFlBQVksRUFJM0M7Q0FDRjtBQUVELHFCQUFhLFlBQVk7O0lBWVgsT0FBTyxDQUFDLEVBQUU7SUFBdEIsWUFBb0IsRUFBRSxFQUFFLGlCQUFpQixFQUt4QztJQUVZLDBCQUEwQixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFekQ7SUFFRCxxQ0FBcUM7SUFDeEIsaUJBQWlCLElBQUksT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FRL0Q7SUFFRCxvQ0FBb0M7SUFDdkIsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBR2hFO0lBRUQ7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBNkZoRTtJQUVEOzs7O09BSUc7SUFDSSxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRTNFO0lBRVksY0FBYyxJQUFJLE9BQU8sQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLENBRy9EO0lBRVksaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBdUJoRjtJQUVhLHFCQUFxQixDQUFDLEtBQUssR0FBRSxXQUFXLENBQUMsTUFBTSxDQUFNLEdBQUcscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBS3hHO0lBRU0sb0JBQW9CLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBZ0I3RDtJQUVNLGtDQUFrQyxDQUFDLHNCQUFzQixFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FJakc7SUFFRCxPQUFPLENBQUMsVUFBVTtJQUlsQixPQUFPLENBQUMsY0FBYztZQUlSLHlCQUF5QjtDQVN4QyJ9
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZV9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JlL21lc3NhZ2Vfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSXBELE9BQU8sRUFDTCxLQUFLLGlCQUFpQixFQUd0QixLQUFLLFdBQVcsRUFFakIsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixPQUFPLEVBQ0wsS0FBSyxZQUFZLEVBSWxCLE1BQU0sNkJBQTZCLENBQUM7QUFFckMscUJBQWEsaUJBQWtCLFNBQVEsS0FBSzthQUd4QixZQUFZLEVBQUUsWUFBWTtJQUY1QyxZQUNFLE9BQU8sRUFBRSxNQUFNLEVBQ0MsWUFBWSxFQUFFLFlBQVksRUFJM0M7Q0FDRjtBQUVELHFCQUFhLFlBQVk7O0lBWVgsT0FBTyxDQUFDLEVBQUU7SUFBdEIsWUFBb0IsRUFBRSxFQUFFLGlCQUFpQixFQUt4QztJQUVZLDBCQUEwQixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFekQ7SUFFRCxxQ0FBcUM7SUFDeEIsaUJBQWlCLElBQUksT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FRL0Q7SUFFRCxvQ0FBb0M7SUFDdkIsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBR2hFO0lBRUQ7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBNkZoRTtJQUVEOzs7O09BSUc7SUFDSSxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBRTNFO0lBRVksY0FBYyxJQUFJLE9BQU8sQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLENBRy9EO0lBRVksaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBdUJoRjtJQUVhLHFCQUFxQixDQUFDLEtBQUssR0FBRSxXQUFXLENBQUMsTUFBTSxDQUFNLEdBQUcscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBS3hHO0lBRU0sb0JBQW9CLENBQUMsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBZ0I3RDtJQUVNLGtDQUFrQyxDQUFDLHNCQUFzQixFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FJakc7SUFFRCxPQUFPLENBQUMsVUFBVTtJQUlsQixPQUFPLENBQUMsY0FBYztZQUlSLHlCQUF5QjtDQVN4QyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message_store.d.ts","sourceRoot":"","sources":["../../src/store/message_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAIpD,OAAO,EACL,KAAK,iBAAiB,EAGtB,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,6BAA6B,CAAC;AAErC,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,YAAY,EAAE,YAAY;IAF5C,YACE,OAAO,EAAE,MAAM,EACC,YAAY,EAAE,YAAY,EAI3C;CACF;AAED,qBAAa,YAAY;;IAYX,OAAO,CAAC,EAAE;IAAtB,YAAoB,EAAE,EAAE,iBAAiB,EAKxC;IAEY,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAEzD;IAED,qCAAqC;IACxB,iBAAiB,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAQ/D;IAED,oCAAoC;IACvB,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhE;IAED;;;;OAIG;IACI,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FhE;IAED;;;;OAIG;IACI,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE3E;IAEY,cAAc,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAG/D;IAEY,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAuBhF;IAEa,qBAAqB,CAAC,KAAK,GAAE,WAAW,CAAC,MAAM,CAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAKxG;IAEM,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB7D;IAEM,kCAAkC,CAAC,sBAAsB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjG;IAED,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,cAAc;YAIR,yBAAyB;CASxC"}
@@ -24,4 +24,4 @@ export type SingletonDataRetrieval<T> = {
24
24
  */
25
25
  retrievedData: T;
26
26
  };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9yZXRyaWV2YWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcmNoaXZlci9zdHJ1Y3RzL2RhdGFfcmV0cmlldmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxNQUFNLGFBQWEsQ0FBQyxDQUFDLElBQUk7SUFDN0I7O09BRUc7SUFDSCwwQkFBMEIsRUFBRSxNQUFNLENBQUM7SUFDbkM7O09BRUc7SUFDSCxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUM7Q0FDcEIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxNQUFNLHNCQUFzQixDQUFDLENBQUMsSUFBSTtJQUN0Qzs7T0FFRztJQUNILDBCQUEwQixFQUFFLE1BQU0sQ0FBQztJQUNuQzs7T0FFRztJQUNILGFBQWEsRUFBRSxDQUFDLENBQUM7Q0FDbEIsQ0FBQyJ9
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9yZXRyaWV2YWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJ1Y3RzL2RhdGFfcmV0cmlldmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxNQUFNLGFBQWEsQ0FBQyxDQUFDLElBQUk7SUFDN0I7O09BRUc7SUFDSCwwQkFBMEIsRUFBRSxNQUFNLENBQUM7SUFDbkM7O09BRUc7SUFDSCxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUM7Q0FDcEIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxNQUFNLHNCQUFzQixDQUFDLENBQUMsSUFBSTtJQUN0Qzs7T0FFRztJQUNILDBCQUEwQixFQUFFLE1BQU0sQ0FBQztJQUNuQzs7T0FFRztJQUNILGFBQWEsRUFBRSxDQUFDLENBQUM7Q0FDbEIsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data_retrieval.d.ts","sourceRoot":"","sources":["../../src/structs/data_retrieval.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B;;OAEG;IACH,0BAA0B,EAAE,MAAM,CAAC;IACnC;;OAEG;IACH,aAAa,EAAE,CAAC,EAAE,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;IACtC;;OAEG;IACH,0BAA0B,EAAE,MAAM,CAAC;IACnC;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC;CAClB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { CheckpointNumber } from '@aztec/foundation/branded-types';
2
+ import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
+ export type InboxMessage = {
5
+ index: bigint;
6
+ leaf: Fr;
7
+ checkpointNumber: CheckpointNumber;
8
+ l1BlockNumber: bigint;
9
+ l1BlockHash: Buffer32;
10
+ rollingHash: Buffer16;
11
+ };
12
+ export declare function updateRollingHash(currentRollingHash: Buffer16, leaf: Fr): Buffer16;
13
+ export declare function serializeInboxMessage(message: InboxMessage): Buffer;
14
+ export declare function deserializeInboxMessage(buffer: Buffer): InboxMessage;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3hfbWVzc2FnZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cnVjdHMvaW5ib3hfbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdwRCxNQUFNLE1BQU0sWUFBWSxHQUFHO0lBQ3pCLEtBQUssRUFBRSxNQUFNLENBQUM7SUFDZCxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ1QsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDbkMsYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUN0QixXQUFXLEVBQUUsUUFBUSxDQUFDO0lBQ3RCLFdBQVcsRUFBRSxRQUFRLENBQUM7Q0FDdkIsQ0FBQztBQUVGLHdCQUFnQixpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxRQUFRLENBR2xGO0FBRUQsd0JBQWdCLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsTUFBTSxDQVNuRTtBQUVELHdCQUFnQix1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksQ0FTcEUifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox_message.d.ts","sourceRoot":"","sources":["../../src/structs/inbox_message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,EAAE,CAAC;IACT,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,QAAQ,CAAC;IACtB,WAAW,EAAE,QAAQ,CAAC;CACvB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,QAAQ,CAGlF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CASnE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CASpE"}
@@ -1,2 +1,2 @@
1
1
  export type { L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJjaGl2ZXIvc3RydWN0cy9wdWJsaXNoZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDIn0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RydWN0cy9wdWJsaXNoZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"published.d.ts","sourceRoot":"","sources":["../../src/structs/published.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}