@aztec/archiver 0.62.0 → 0.63.0

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 (50) hide show
  1. package/dest/archiver/archiver.d.ts +11 -2
  2. package/dest/archiver/archiver.d.ts.map +1 -1
  3. package/dest/archiver/archiver.js +43 -19
  4. package/dest/archiver/archiver_store.d.ts +8 -2
  5. package/dest/archiver/archiver_store.d.ts.map +1 -1
  6. package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
  7. package/dest/archiver/archiver_store_test_suite.js +64 -25
  8. package/dest/archiver/config.d.ts +2 -6
  9. package/dest/archiver/config.d.ts.map +1 -1
  10. package/dest/archiver/config.js +3 -6
  11. package/dest/archiver/epoch_helpers.d.ts +10 -10
  12. package/dest/archiver/epoch_helpers.d.ts.map +1 -1
  13. package/dest/archiver/epoch_helpers.js +9 -10
  14. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +8 -2
  15. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
  16. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +14 -1
  17. package/dest/archiver/kv_archiver_store/log_store.d.ts +8 -2
  18. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
  19. package/dest/archiver/kv_archiver_store/log_store.js +144 -57
  20. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +13 -4
  21. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -1
  22. package/dest/archiver/memory_archiver_store/memory_archiver_store.js +136 -31
  23. package/dest/factory.d.ts +5 -2
  24. package/dest/factory.d.ts.map +1 -1
  25. package/dest/factory.js +2 -2
  26. package/dest/rpc/index.d.ts +3 -2
  27. package/dest/rpc/index.d.ts.map +1 -1
  28. package/dest/rpc/index.js +10 -3
  29. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  30. package/dest/test/mock_l2_block_source.js +4 -2
  31. package/package.json +10 -10
  32. package/src/archiver/archiver.ts +54 -24
  33. package/src/archiver/archiver_store.ts +9 -2
  34. package/src/archiver/archiver_store_test_suite.ts +85 -26
  35. package/src/archiver/config.ts +11 -12
  36. package/src/archiver/epoch_helpers.ts +16 -12
  37. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +15 -2
  38. package/src/archiver/kv_archiver_store/log_store.ts +176 -58
  39. package/src/archiver/memory_archiver_store/memory_archiver_store.ts +152 -27
  40. package/src/factory.ts +6 -3
  41. package/src/rpc/index.ts +11 -2
  42. package/src/test/mock_l2_block_source.ts +3 -1
  43. package/dest/rpc/archiver_client.d.ts +0 -3
  44. package/dest/rpc/archiver_client.d.ts.map +0 -1
  45. package/dest/rpc/archiver_client.js +0 -12
  46. package/dest/rpc/archiver_server.d.ts +0 -9
  47. package/dest/rpc/archiver_server.d.ts.map +0 -1
  48. package/dest/rpc/archiver_server.js +0 -20
  49. package/src/rpc/archiver_client.ts +0 -29
  50. package/src/rpc/archiver_server.ts +0 -35
@@ -1 +1 @@
1
- {"version":3,"file":"log_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/log_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAGlB,KAAK,WAAW,EAChB,KAAK,0BAA0B,EAC/B,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,SAAS,EAEd,OAAO,EAGR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAGxC,OAAO,EAAE,KAAK,YAAY,EAAqC,MAAM,iBAAiB,CAAC;AAEvF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,qBAAa,QAAQ;;IAUP,OAAO,CAAC,EAAE;IAAgB,OAAO,CAAC,UAAU;gBAApC,EAAE,EAAE,YAAY,EAAU,UAAU,EAAE,UAAU,EAAE,eAAe,GAAE,MAAa;IAWpG;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAkCtC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BrD;;;;;;OAMG;IACF,OAAO,CAAC,QAAQ,SAAS,OAAO,EAC/B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,QAAQ,GAChB,gBAAgB,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IA6BzD;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;IAgB1D;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,0BAA0B;CAqHlE"}
1
+ {"version":3,"file":"log_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/log_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,0BAA0B,EAC/B,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,SAAS,EAEd,OAAO,EACP,aAAa,EAGd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAGxC,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,qBAAa,QAAQ;;IAUP,OAAO,CAAC,EAAE;IAAgB,OAAO,CAAC,UAAU;gBAApC,EAAE,EAAE,YAAY,EAAU,UAAU,EAAE,UAAU,EAAE,eAAe,GAAE,MAAa;IAmEpG;;;;OAIG;IACG,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IA2C5C,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBrD;;;;;;OAMG;IACF,OAAO,CAAC,QAAQ,SAAS,OAAO,EAC/B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,QAAQ,GAChB,gBAAgB,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IA6BzD;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;IAQrD;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,0BAA0B;IA2DjE;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,0BAA0B;CAuHpE"}
@@ -1,8 +1,8 @@
1
- var _LogStore_instances, _LogStore_noteEncryptedLogsByBlock, _LogStore_noteEncryptedLogsByHash, _LogStore_noteEncryptedLogHashesByTag, _LogStore_noteEncryptedLogTagsByBlock, _LogStore_encryptedLogsByBlock, _LogStore_unencryptedLogsByBlock, _LogStore_logsMaxPageSize, _LogStore_log, _LogStore_filterUnencryptedLogsOfTx, _LogStore_filterUnencryptedLogsBetweenBlocks, _LogStore_accumulateLogs, _LogStore_getBlockLogs;
1
+ var _LogStore_instances, _LogStore_noteEncryptedLogsByBlock, _LogStore_logsByTag, _LogStore_logTagsByBlock, _LogStore_encryptedLogsByBlock, _LogStore_unencryptedLogsByBlock, _LogStore_contractClassLogsByBlock, _LogStore_logsMaxPageSize, _LogStore_log, _LogStore_extractTaggedLogs, _LogStore_filterUnencryptedLogsOfTx, _LogStore_filterUnencryptedLogsBetweenBlocks, _LogStore_filterContractClassLogsOfTx, _LogStore_filterContractClassLogsBetweenBlocks, _LogStore_accumulateLogs, _LogStore_getBlockLogs;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { EncryptedL2BlockL2Logs, EncryptedL2NoteLog, EncryptedNoteL2BlockL2Logs, ExtendedUnencryptedL2Log, LogId, LogType, UnencryptedL2BlockL2Logs, } from '@aztec/circuit-types';
3
+ import { ContractClass2BlockL2Logs, EncryptedL2BlockL2Logs, EncryptedNoteL2BlockL2Logs, ExtendedUnencryptedL2Log, LogId, LogType, TxScopedL2Log, UnencryptedL2BlockL2Logs, } from '@aztec/circuit-types';
4
4
  import { Fr } from '@aztec/circuits.js';
5
- import { INITIAL_L2_BLOCK_NUM } from '@aztec/circuits.js/constants';
5
+ import { INITIAL_L2_BLOCK_NUM, MAX_NOTE_HASHES_PER_TX } from '@aztec/circuits.js/constants';
6
6
  import { createDebugLogger } from '@aztec/foundation/log';
7
7
  /**
8
8
  * A store for logs
@@ -13,19 +13,19 @@ export class LogStore {
13
13
  this.db = db;
14
14
  this.blockStore = blockStore;
15
15
  _LogStore_noteEncryptedLogsByBlock.set(this, void 0);
16
- _LogStore_noteEncryptedLogsByHash.set(this, void 0);
17
- _LogStore_noteEncryptedLogHashesByTag.set(this, void 0);
18
- _LogStore_noteEncryptedLogTagsByBlock.set(this, void 0);
16
+ _LogStore_logsByTag.set(this, void 0);
17
+ _LogStore_logTagsByBlock.set(this, void 0);
19
18
  _LogStore_encryptedLogsByBlock.set(this, void 0);
20
19
  _LogStore_unencryptedLogsByBlock.set(this, void 0);
20
+ _LogStore_contractClassLogsByBlock.set(this, void 0);
21
21
  _LogStore_logsMaxPageSize.set(this, void 0);
22
22
  _LogStore_log.set(this, createDebugLogger('aztec:archiver:log_store'));
23
23
  __classPrivateFieldSet(this, _LogStore_noteEncryptedLogsByBlock, db.openMap('archiver_note_encrypted_logs_by_block'), "f");
24
- __classPrivateFieldSet(this, _LogStore_noteEncryptedLogsByHash, db.openMap('archiver_note_encrypted_logs_by_hash'), "f");
25
- __classPrivateFieldSet(this, _LogStore_noteEncryptedLogHashesByTag, db.openMultiMap('archiver_tagged_note_encrypted_log_hashes_by_tag'), "f");
26
- __classPrivateFieldSet(this, _LogStore_noteEncryptedLogTagsByBlock, db.openMultiMap('archiver_note_encrypted_log_tags_by_block'), "f");
24
+ __classPrivateFieldSet(this, _LogStore_logsByTag, db.openMap('archiver_tagged_logs_by_tag'), "f");
25
+ __classPrivateFieldSet(this, _LogStore_logTagsByBlock, db.openMap('archiver_log_tags_by_block'), "f");
27
26
  __classPrivateFieldSet(this, _LogStore_encryptedLogsByBlock, db.openMap('archiver_encrypted_logs_by_block'), "f");
28
27
  __classPrivateFieldSet(this, _LogStore_unencryptedLogsByBlock, db.openMap('archiver_unencrypted_logs_by_block'), "f");
28
+ __classPrivateFieldSet(this, _LogStore_contractClassLogsByBlock, db.openMap('archiver_contract_class_logs_by_block'), "f");
29
29
  __classPrivateFieldSet(this, _LogStore_logsMaxPageSize, logsMaxPageSize, "f");
30
30
  }
31
31
  /**
@@ -33,58 +33,55 @@ export class LogStore {
33
33
  * @param blocks - The blocks for which to add the logs.
34
34
  * @returns True if the operation is successful.
35
35
  */
36
- addLogs(blocks) {
36
+ async addLogs(blocks) {
37
+ const taggedLogsToAdd = blocks
38
+ .flatMap(block => [
39
+ __classPrivateFieldGet(this, _LogStore_instances, "m", _LogStore_extractTaggedLogs).call(this, block, 'noteEncryptedLogs'),
40
+ __classPrivateFieldGet(this, _LogStore_instances, "m", _LogStore_extractTaggedLogs).call(this, block, 'unencryptedLogs'),
41
+ ])
42
+ .reduce((acc, val) => {
43
+ for (const [tag, logs] of val.entries()) {
44
+ const currentLogs = acc.get(tag) ?? [];
45
+ acc.set(tag, currentLogs.concat(logs));
46
+ }
47
+ return acc;
48
+ });
49
+ const tagsToUpdate = Array.from(taggedLogsToAdd.keys());
50
+ const currentTaggedLogs = await this.db.transaction(() => tagsToUpdate.map(tag => ({ tag, logBuffers: __classPrivateFieldGet(this, _LogStore_logsByTag, "f").get(tag) })));
51
+ currentTaggedLogs.forEach(taggedLogBuffer => {
52
+ if (taggedLogBuffer.logBuffers && taggedLogBuffer.logBuffers.length > 0) {
53
+ taggedLogsToAdd.set(taggedLogBuffer.tag, taggedLogBuffer.logBuffers.concat(taggedLogsToAdd.get(taggedLogBuffer.tag)));
54
+ }
55
+ });
37
56
  return this.db.transaction(() => {
38
57
  blocks.forEach(block => {
58
+ const tagsInBlock = [];
59
+ for (const [tag, logs] of taggedLogsToAdd.entries()) {
60
+ void __classPrivateFieldGet(this, _LogStore_logsByTag, "f").set(tag, logs);
61
+ tagsInBlock.push(tag);
62
+ }
63
+ void __classPrivateFieldGet(this, _LogStore_logTagsByBlock, "f").set(block.number, tagsInBlock);
39
64
  void __classPrivateFieldGet(this, _LogStore_noteEncryptedLogsByBlock, "f").set(block.number, block.body.noteEncryptedLogs.toBuffer());
40
- block.body.noteEncryptedLogs.txLogs.forEach(txLogs => {
41
- const noteLogs = txLogs.unrollLogs();
42
- noteLogs.forEach(noteLog => {
43
- if (noteLog.data.length < 32) {
44
- __classPrivateFieldGet(this, _LogStore_log, "f").warn(`Skipping note log with invalid data length: ${noteLog.data.length}`);
45
- return;
46
- }
47
- try {
48
- const tag = new Fr(noteLog.data.subarray(0, 32));
49
- const hexHash = noteLog.hash().toString('hex');
50
- // Ideally we'd store all of the logs for a matching tag in an AztecMultiMap, but this type doesn't doesn't
51
- // handle storing buffers well. The 'ordered-binary' encoding returns an error trying to decode buffers
52
- // ('the number <> cannot be converted to a BigInt because it is not an integer'). We therefore store
53
- // instead the hashes of the logs.
54
- void __classPrivateFieldGet(this, _LogStore_noteEncryptedLogHashesByTag, "f").set(tag.toString(), hexHash);
55
- void __classPrivateFieldGet(this, _LogStore_noteEncryptedLogsByHash, "f").set(hexHash, noteLog.toBuffer());
56
- void __classPrivateFieldGet(this, _LogStore_noteEncryptedLogTagsByBlock, "f").set(block.number, tag.toString());
57
- }
58
- catch (err) {
59
- __classPrivateFieldGet(this, _LogStore_log, "f").warn(`Failed to add tagged note log to store: ${err}`);
60
- }
61
- });
62
- });
63
65
  void __classPrivateFieldGet(this, _LogStore_encryptedLogsByBlock, "f").set(block.number, block.body.encryptedLogs.toBuffer());
64
66
  void __classPrivateFieldGet(this, _LogStore_unencryptedLogsByBlock, "f").set(block.number, block.body.unencryptedLogs.toBuffer());
67
+ void __classPrivateFieldGet(this, _LogStore_contractClassLogsByBlock, "f").set(block.number, block.body.contractClassLogs.toBuffer());
65
68
  });
66
69
  return true;
67
70
  });
68
71
  }
69
72
  async deleteLogs(blocks) {
70
- const noteTagsToDelete = await this.db.transaction(() => {
71
- return blocks.flatMap(block => Array.from(__classPrivateFieldGet(this, _LogStore_noteEncryptedLogTagsByBlock, "f").getValues(block.number)));
72
- });
73
- const noteLogHashesToDelete = await this.db.transaction(() => {
74
- return noteTagsToDelete.flatMap(tag => Array.from(__classPrivateFieldGet(this, _LogStore_noteEncryptedLogHashesByTag, "f").getValues(tag)));
73
+ const tagsToDelete = await this.db.transaction(() => {
74
+ return blocks.flatMap(block => __classPrivateFieldGet(this, _LogStore_logTagsByBlock, "f").get(block.number)?.map(tag => tag.toString()) ?? []);
75
75
  });
76
76
  return this.db.transaction(() => {
77
77
  blocks.forEach(block => {
78
78
  void __classPrivateFieldGet(this, _LogStore_noteEncryptedLogsByBlock, "f").delete(block.number);
79
79
  void __classPrivateFieldGet(this, _LogStore_encryptedLogsByBlock, "f").delete(block.number);
80
80
  void __classPrivateFieldGet(this, _LogStore_unencryptedLogsByBlock, "f").delete(block.number);
81
- void __classPrivateFieldGet(this, _LogStore_noteEncryptedLogTagsByBlock, "f").delete(block.number);
82
- });
83
- noteTagsToDelete.forEach(tag => {
84
- void __classPrivateFieldGet(this, _LogStore_noteEncryptedLogHashesByTag, "f").delete(tag.toString());
81
+ void __classPrivateFieldGet(this, _LogStore_logTagsByBlock, "f").delete(block.number);
85
82
  });
86
- noteLogHashesToDelete.forEach(hash => {
87
- void __classPrivateFieldGet(this, _LogStore_noteEncryptedLogsByHash, "f").delete(hash);
83
+ tagsToDelete.forEach(tag => {
84
+ void __classPrivateFieldGet(this, _LogStore_logsByTag, "f").delete(tag.toString());
88
85
  });
89
86
  return true;
90
87
  });
@@ -131,17 +128,9 @@ export class LogStore {
131
128
  * that tag.
132
129
  */
133
130
  getLogsByTags(tags) {
134
- return this.db.transaction(() => {
135
- return tags.map(tag => {
136
- const logHashes = Array.from(__classPrivateFieldGet(this, _LogStore_noteEncryptedLogHashesByTag, "f").getValues(tag.toString()));
137
- return (logHashes
138
- .map(hash => __classPrivateFieldGet(this, _LogStore_noteEncryptedLogsByHash, "f").get(hash))
139
- // addLogs should ensure that we never have undefined logs, but we filter them out regardless to protect
140
- // ourselves from database corruption
141
- .filter(noteLogBuffer => noteLogBuffer != undefined)
142
- .map(noteLogBuffer => EncryptedL2NoteLog.fromBuffer(noteLogBuffer)));
143
- });
144
- });
131
+ return this.db.transaction(() => tags
132
+ .map(tag => __classPrivateFieldGet(this, _LogStore_logsByTag, "f").get(tag.toString()))
133
+ .map(noteLogBuffers => noteLogBuffers?.map(noteLogBuffer => TxScopedL2Log.fromBuffer(noteLogBuffer)) ?? []));
145
134
  }
146
135
  /**
147
136
  * Gets unencrypted logs based on the provided filter.
@@ -159,8 +148,67 @@ export class LogStore {
159
148
  return __classPrivateFieldGet(this, _LogStore_instances, "m", _LogStore_filterUnencryptedLogsBetweenBlocks).call(this, filter);
160
149
  }
161
150
  }
151
+ /**
152
+ * Gets contract class logs based on the provided filter.
153
+ * @param filter - The filter to apply to the logs.
154
+ * @returns The requested logs.
155
+ */
156
+ getContractClassLogs(filter) {
157
+ if (filter.afterLog) {
158
+ return __classPrivateFieldGet(this, _LogStore_instances, "m", _LogStore_filterContractClassLogsBetweenBlocks).call(this, filter);
159
+ }
160
+ else if (filter.txHash) {
161
+ return __classPrivateFieldGet(this, _LogStore_instances, "m", _LogStore_filterContractClassLogsOfTx).call(this, filter);
162
+ }
163
+ else {
164
+ return __classPrivateFieldGet(this, _LogStore_instances, "m", _LogStore_filterContractClassLogsBetweenBlocks).call(this, filter);
165
+ }
166
+ }
162
167
  }
163
- _LogStore_noteEncryptedLogsByBlock = new WeakMap(), _LogStore_noteEncryptedLogsByHash = new WeakMap(), _LogStore_noteEncryptedLogHashesByTag = new WeakMap(), _LogStore_noteEncryptedLogTagsByBlock = new WeakMap(), _LogStore_encryptedLogsByBlock = new WeakMap(), _LogStore_unencryptedLogsByBlock = new WeakMap(), _LogStore_logsMaxPageSize = new WeakMap(), _LogStore_log = new WeakMap(), _LogStore_instances = new WeakSet(), _LogStore_filterUnencryptedLogsOfTx = function _LogStore_filterUnencryptedLogsOfTx(filter) {
168
+ _LogStore_noteEncryptedLogsByBlock = new WeakMap(), _LogStore_logsByTag = new WeakMap(), _LogStore_logTagsByBlock = new WeakMap(), _LogStore_encryptedLogsByBlock = new WeakMap(), _LogStore_unencryptedLogsByBlock = new WeakMap(), _LogStore_contractClassLogsByBlock = new WeakMap(), _LogStore_logsMaxPageSize = new WeakMap(), _LogStore_log = new WeakMap(), _LogStore_instances = new WeakSet(), _LogStore_extractTaggedLogs = function _LogStore_extractTaggedLogs(block, logType) {
169
+ const taggedLogs = new Map();
170
+ const dataStartIndexForBlock = block.header.state.partial.noteHashTree.nextAvailableLeafIndex -
171
+ block.body.numberOfTxsIncludingPadded * MAX_NOTE_HASHES_PER_TX;
172
+ block.body[logType].txLogs.forEach((txLogs, txIndex) => {
173
+ const txHash = block.body.txEffects[txIndex].txHash;
174
+ const dataStartIndexForTx = dataStartIndexForBlock + txIndex * MAX_NOTE_HASHES_PER_TX;
175
+ const logs = txLogs.unrollLogs();
176
+ logs.forEach(log => {
177
+ if ((logType == 'noteEncryptedLogs' && log.data.length < 32) ||
178
+ // TODO remove when #9835 and #9836 are fixed
179
+ (logType === 'unencryptedLogs' && log.data.length < 32 * 33)) {
180
+ __classPrivateFieldGet(this, _LogStore_log, "f").warn(`Skipping log (${logType}) with invalid data length: ${log.data.length}`);
181
+ return;
182
+ }
183
+ try {
184
+ let tag = Fr.ZERO;
185
+ // TODO remove when #9835 and #9836 are fixed. The partial note logs are emitted as bytes, but encoded as Fields.
186
+ // This means that for every 32 bytes of payload, we only have 1 byte of data.
187
+ // Also, the tag is not stored in the first 32 bytes of the log, (that's the length of public fields now) but in the next 32.
188
+ if (logType === 'unencryptedLogs') {
189
+ const correctedBuffer = Buffer.alloc(32);
190
+ const initialOffset = 32;
191
+ for (let i = 0; i < 32; i++) {
192
+ const byte = Fr.fromBuffer(log.data.subarray(i * 32 + initialOffset, i * 32 + 32 + initialOffset)).toNumber();
193
+ correctedBuffer.writeUInt8(byte, i);
194
+ }
195
+ tag = new Fr(correctedBuffer);
196
+ }
197
+ else {
198
+ tag = new Fr(log.data.subarray(0, 32));
199
+ }
200
+ __classPrivateFieldGet(this, _LogStore_log, "f").verbose(`Found tagged (${logType}) log with tag ${tag.toString()} in block ${block.number}`);
201
+ const currentLogs = taggedLogs.get(tag.toString()) ?? [];
202
+ currentLogs.push(new TxScopedL2Log(txHash, dataStartIndexForTx, block.number, logType === 'unencryptedLogs', log.data).toBuffer());
203
+ taggedLogs.set(tag.toString(), currentLogs);
204
+ }
205
+ catch (err) {
206
+ __classPrivateFieldGet(this, _LogStore_log, "f").warn(`Failed to add tagged log to store: ${err}`);
207
+ }
208
+ });
209
+ });
210
+ return taggedLogs;
211
+ }, _LogStore_filterUnencryptedLogsOfTx = function _LogStore_filterUnencryptedLogsOfTx(filter) {
164
212
  if (!filter.txHash) {
165
213
  throw new Error('Missing txHash');
166
214
  }
@@ -196,6 +244,45 @@ _LogStore_noteEncryptedLogsByBlock = new WeakMap(), _LogStore_noteEncryptedLogsB
196
244
  }
197
245
  }
198
246
  return { logs, maxLogsHit };
247
+ }, _LogStore_filterContractClassLogsOfTx = function _LogStore_filterContractClassLogsOfTx(filter) {
248
+ if (!filter.txHash) {
249
+ throw new Error('Missing txHash');
250
+ }
251
+ const [blockNumber, txIndex] = this.blockStore.getTxLocation(filter.txHash) ?? [];
252
+ if (typeof blockNumber !== 'number' || typeof txIndex !== 'number') {
253
+ return { logs: [], maxLogsHit: false };
254
+ }
255
+ const contractClassLogsBuffer = __classPrivateFieldGet(this, _LogStore_contractClassLogsByBlock, "f").get(blockNumber);
256
+ const contractClassLogsInBlock = contractClassLogsBuffer
257
+ ? ContractClass2BlockL2Logs.fromBuffer(contractClassLogsBuffer)
258
+ : new ContractClass2BlockL2Logs([]);
259
+ const txLogs = contractClassLogsInBlock.txLogs[txIndex].unrollLogs();
260
+ const logs = [];
261
+ const maxLogsHit = __classPrivateFieldGet(this, _LogStore_instances, "m", _LogStore_accumulateLogs).call(this, logs, blockNumber, txIndex, txLogs, filter);
262
+ return { logs, maxLogsHit };
263
+ }, _LogStore_filterContractClassLogsBetweenBlocks = function _LogStore_filterContractClassLogsBetweenBlocks(filter) {
264
+ const start = filter.afterLog?.blockNumber ?? Math.max(filter.fromBlock ?? INITIAL_L2_BLOCK_NUM, INITIAL_L2_BLOCK_NUM);
265
+ const end = filter.toBlock;
266
+ if (typeof end === 'number' && end < start) {
267
+ return {
268
+ logs: [],
269
+ maxLogsHit: true,
270
+ };
271
+ }
272
+ const logs = [];
273
+ let maxLogsHit = false;
274
+ loopOverBlocks: for (const [blockNumber, logBuffer] of __classPrivateFieldGet(this, _LogStore_contractClassLogsByBlock, "f").entries({ start, end })) {
275
+ const contractClassLogsInBlock = ContractClass2BlockL2Logs.fromBuffer(logBuffer);
276
+ for (let txIndex = filter.afterLog?.txIndex ?? 0; txIndex < contractClassLogsInBlock.txLogs.length; txIndex++) {
277
+ const txLogs = contractClassLogsInBlock.txLogs[txIndex].unrollLogs();
278
+ maxLogsHit = __classPrivateFieldGet(this, _LogStore_instances, "m", _LogStore_accumulateLogs).call(this, logs, blockNumber, txIndex, txLogs, filter);
279
+ if (maxLogsHit) {
280
+ __classPrivateFieldGet(this, _LogStore_log, "f").debug(`Max logs hit at block ${blockNumber}`);
281
+ break loopOverBlocks;
282
+ }
283
+ }
284
+ }
285
+ return { logs, maxLogsHit };
199
286
  }, _LogStore_accumulateLogs = function _LogStore_accumulateLogs(results, blockNumber, txIndex, txLogs, filter) {
200
287
  let maxLogsHit = false;
201
288
  let logIndex = typeof filter.afterLog?.logIndex === 'number' ? filter.afterLog.logIndex + 1 : 0;
@@ -240,4 +327,4 @@ _LogStore_noteEncryptedLogsByBlock = new WeakMap(), _LogStore_noteEncryptedLogsB
240
327
  }
241
328
  return L2BlockL2Logs.fromBuffer(buffer);
242
329
  };
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nX3N0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FyY2hpdmVyL2t2X2FyY2hpdmVyX3N0b3JlL2xvZ19zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLDBCQUEwQixFQUMxQix3QkFBd0IsRUFNeEIsS0FBSyxFQUNMLE9BQU8sRUFDUCx3QkFBd0IsR0FFekIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLMUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQVVuQixZQUFvQixFQUFnQixFQUFVLFVBQXNCLEVBQUUsa0JBQTBCLElBQUk7O1FBQWhGLE9BQUUsR0FBRixFQUFFLENBQWM7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBVHBFLHFEQUFvRDtRQUNwRCxvREFBbUQ7UUFDbkQsd0RBQTREO1FBQzVELHdEQUE0RDtRQUM1RCxpREFBZ0Q7UUFDaEQsbURBQWtEO1FBQ2xELDRDQUF5QjtRQUN6Qix3QkFBTyxpQkFBaUIsQ0FBQywwQkFBMEIsQ0FBQyxFQUFDO1FBR25ELHVCQUFBLElBQUksc0NBQTZCLEVBQUUsQ0FBQyxPQUFPLENBQUMsdUNBQXVDLENBQUMsTUFBQSxDQUFDO1FBQ3JGLHVCQUFBLElBQUkscUNBQTRCLEVBQUUsQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsTUFBQSxDQUFDO1FBQ25GLHVCQUFBLElBQUkseUNBQWdDLEVBQUUsQ0FBQyxZQUFZLENBQUMsa0RBQWtELENBQUMsTUFBQSxDQUFDO1FBQ3hHLHVCQUFBLElBQUkseUNBQWdDLEVBQUUsQ0FBQyxZQUFZLENBQUMsMkNB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
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nX3N0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FyY2hpdmVyL2t2X2FyY2hpdmVyX3N0b3JlL2xvZ19zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCx5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLDBCQUEwQixFQUMxQix3QkFBd0IsRUFNeEIsS0FBSyxFQUNMLE9BQU8sRUFDUCxhQUFhLEVBQ2Isd0JBQXdCLEdBRXpCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSzFEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFVbkIsWUFBb0IsRUFBZ0IsRUFBVSxVQUFzQixFQUFFLGtCQUEwQixJQUFJOztRQUFoRixPQUFFLEdBQUYsRUFBRSxDQUFjO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVRwRSxxREFBb0Q7UUFDcEQsc0NBQXVDO1FBQ3ZDLDJDQUE0QztRQUM1QyxpREFBZ0Q7UUFDaEQsbURBQWtEO1FBQ2xELHFEQUFvRDtRQUNwRCw0Q0FBeUI7UUFDekIsd0JBQU8saUJBQWlCLENBQUMsMEJBQTBCLENBQUMsRUFBQztRQUduRCx1QkFBQSxJQUFJLHNDQUE2QixFQUFFLENBQUMsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLE1BQUEsQ0FBQztRQUNyRix1QkFBQSxJQUFJLHVCQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsTUFBQSxDQUFDO1FBQzVELHVCQUFBLElBQUksNEJBQW1CLEVBQUUsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsTUFBQSxDQUFDO1FBQ2hFLHVCQUFBLElBQUksa0NBQXlCLEVB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
@@ -1,4 +1,4 @@
1
- import { type EncryptedL2NoteLog, type FromLogType, type GetUnencryptedLogsResponse, type InboxLeaf, type L2Block, type L2BlockL2Logs, type LogFilter, LogType, type TxEffect, type TxHash, TxReceipt } from '@aztec/circuit-types';
1
+ import { type FromLogType, type GetUnencryptedLogsResponse, type InboxLeaf, type L2Block, type L2BlockL2Logs, type LogFilter, LogType, type TxEffect, type TxHash, TxReceipt, TxScopedL2Log } from '@aztec/circuit-types';
2
2
  import { type ContractClassPublic, type ContractInstanceWithAddress, type ExecutablePrivateFunctionWithMembershipProof, Fr, type Header, type UnconstrainedFunctionWithMembershipProof } from '@aztec/circuits.js';
3
3
  import { type ContractArtifact } from '@aztec/foundation/abi';
4
4
  import { type AztecAddress } from '@aztec/foundation/aztec-address';
@@ -21,10 +21,11 @@ export declare class MemoryArchiverStore implements ArchiverDataStore {
21
21
  */
22
22
  private txEffects;
23
23
  private noteEncryptedLogsPerBlock;
24
- private taggedNoteEncryptedLogs;
25
- private noteEncryptedLogTagsPerBlock;
24
+ private taggedLogs;
25
+ private logTagsPerBlock;
26
26
  private encryptedLogsPerBlock;
27
27
  private unencryptedLogsPerBlock;
28
+ private contractClassLogsPerBlock;
28
29
  /**
29
30
  * Contains all L1 to L2 messages.
30
31
  */
@@ -124,7 +125,7 @@ export declare class MemoryArchiverStore implements ArchiverDataStore {
124
125
  * @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
125
126
  * that tag.
126
127
  */
127
- getLogsByTags(tags: Fr[]): Promise<EncryptedL2NoteLog[][]>;
128
+ getLogsByTags(tags: Fr[]): Promise<TxScopedL2Log[][]>;
128
129
  /**
129
130
  * Gets unencrypted logs based on the provided filter.
130
131
  * @param filter - The filter to apply to the logs.
@@ -132,6 +133,14 @@ export declare class MemoryArchiverStore implements ArchiverDataStore {
132
133
  * @remarks Works by doing an intersection of all params in the filter.
133
134
  */
134
135
  getUnencryptedLogs(filter: LogFilter): Promise<GetUnencryptedLogsResponse>;
136
+ /**
137
+ * Gets contract class logs based on the provided filter.
138
+ * NB: clone of the above fn, but for contract class logs
139
+ * @param filter - The filter to apply to the logs.
140
+ * @returns The requested logs.
141
+ * @remarks Works by doing an intersection of all params in the filter.
142
+ */
143
+ getContractClassLogs(filter: LogFilter): Promise<GetUnencryptedLogsResponse>;
135
144
  /**
136
145
  * Gets the number of the latest L2 block processed.
137
146
  * @returns The number of the latest L2 block processed.
@@ -1 +1 @@
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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"}
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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"}