@aztec/archiver 0.61.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.
- package/dest/archiver/archiver.d.ts +13 -5
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +49 -26
- package/dest/archiver/archiver_store.d.ts +10 -5
- package/dest/archiver/archiver_store.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +64 -36
- package/dest/archiver/config.d.ts +2 -6
- package/dest/archiver/config.d.ts.map +1 -1
- package/dest/archiver/config.js +3 -6
- package/dest/archiver/epoch_helpers.d.ts +10 -10
- package/dest/archiver/epoch_helpers.d.ts.map +1 -1
- package/dest/archiver/epoch_helpers.js +9 -10
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +10 -5
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +17 -5
- package/dest/archiver/kv_archiver_store/log_store.d.ts +8 -2
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.js +144 -57
- package/dest/archiver/kv_archiver_store/message_store.d.ts +2 -3
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/message_store.js +7 -12
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts +2 -3
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.d.ts.map +1 -1
- package/dest/archiver/memory_archiver_store/l1_to_l2_message_store.js +4 -9
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +15 -7
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -1
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +139 -35
- package/dest/factory.d.ts +5 -2
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +2 -2
- package/dest/rpc/index.d.ts +3 -2
- package/dest/rpc/index.d.ts.map +1 -1
- package/dest/rpc/index.js +10 -3
- package/dest/test/mock_archiver.d.ts +1 -1
- package/dest/test/mock_archiver.d.ts.map +1 -1
- package/dest/test/mock_archiver.js +3 -3
- package/dest/test/mock_l1_to_l2_message_source.d.ts +1 -1
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
- package/dest/test/mock_l1_to_l2_message_source.js +2 -2
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +6 -4
- package/package.json +10 -10
- package/src/archiver/archiver.ts +60 -31
- package/src/archiver/archiver_store.ts +11 -5
- package/src/archiver/archiver_store_test_suite.ts +85 -40
- package/src/archiver/config.ts +11 -12
- package/src/archiver/epoch_helpers.ts +16 -12
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +18 -6
- package/src/archiver/kv_archiver_store/log_store.ts +176 -58
- package/src/archiver/kv_archiver_store/message_store.ts +6 -12
- package/src/archiver/memory_archiver_store/l1_to_l2_message_store.ts +3 -8
- package/src/archiver/memory_archiver_store/memory_archiver_store.ts +155 -31
- package/src/factory.ts +6 -3
- package/src/rpc/index.ts +11 -2
- package/src/test/mock_archiver.ts +2 -2
- package/src/test/mock_l1_to_l2_message_source.ts +1 -1
- package/src/test/mock_l2_block_source.ts +5 -3
- package/dest/rpc/archiver_client.d.ts +0 -3
- package/dest/rpc/archiver_client.d.ts.map +0 -1
- package/dest/rpc/archiver_client.js +0 -12
- package/dest/rpc/archiver_server.d.ts +0 -9
- package/dest/rpc/archiver_server.d.ts.map +0 -1
- package/dest/rpc/archiver_server.js +0 -20
- package/src/rpc/archiver_client.ts +0 -29
- package/src/rpc/archiver_server.ts +0 -35
|
@@ -145,13 +145,12 @@ export class KVArchiverDataStore {
|
|
|
145
145
|
return Promise.resolve(__classPrivateFieldGet(this, _KVArchiverDataStore_messageStore, "f").addL1ToL2Messages(messages));
|
|
146
146
|
}
|
|
147
147
|
/**
|
|
148
|
-
* Gets the
|
|
148
|
+
* Gets the L1 to L2 message index in the L1 to L2 message tree.
|
|
149
149
|
* @param l1ToL2Message - The L1 to L2 message.
|
|
150
|
-
* @param startIndex - The index to start searching from.
|
|
151
150
|
* @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
|
|
152
151
|
*/
|
|
153
|
-
getL1ToL2MessageIndex(l1ToL2Message
|
|
154
|
-
return Promise.resolve(__classPrivateFieldGet(this, _KVArchiverDataStore_messageStore, "f").getL1ToL2MessageIndex(l1ToL2Message
|
|
152
|
+
getL1ToL2MessageIndex(l1ToL2Message) {
|
|
153
|
+
return Promise.resolve(__classPrivateFieldGet(this, _KVArchiverDataStore_messageStore, "f").getL1ToL2MessageIndex(l1ToL2Message));
|
|
155
154
|
}
|
|
156
155
|
/**
|
|
157
156
|
* Gets L1 to L2 message (to be) included in a given block.
|
|
@@ -208,6 +207,19 @@ export class KVArchiverDataStore {
|
|
|
208
207
|
return Promise.reject(err);
|
|
209
208
|
}
|
|
210
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Gets contract class logs based on the provided filter.
|
|
212
|
+
* @param filter - The filter to apply to the logs.
|
|
213
|
+
* @returns The requested logs.
|
|
214
|
+
*/
|
|
215
|
+
getContractClassLogs(filter) {
|
|
216
|
+
try {
|
|
217
|
+
return Promise.resolve(__classPrivateFieldGet(this, _KVArchiverDataStore_logStore, "f").getContractClassLogs(filter));
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
return Promise.reject(err);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
211
223
|
/**
|
|
212
224
|
* Gets the number of the latest L2 block processed.
|
|
213
225
|
* @returns The number of the latest L2 block processed.
|
|
@@ -248,4 +260,4 @@ export class KVArchiverDataStore {
|
|
|
248
260
|
}
|
|
249
261
|
}
|
|
250
262
|
_KVArchiverDataStore_blockStore = new WeakMap(), _KVArchiverDataStore_logStore = new WeakMap(), _KVArchiverDataStore_messageStore = new WeakMap(), _KVArchiverDataStore_contractClassStore = new WeakMap(), _KVArchiverDataStore_contractInstanceStore = new WeakMap(), _KVArchiverDataStore_contractArtifactStore = new WeakMap(), _KVArchiverDataStore_log = new WeakMap();
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3ZfYXJjaGl2ZXJfc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJjaGl2ZXIva3ZfYXJjaGl2ZXJfc3RvcmUva3ZfYXJjaGl2ZXJfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1QkEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFNMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBVTlCLFlBQVksRUFBZ0IsRUFBRSxrQkFBMEIsSUFBSTtRQVQ1RCxrREFBd0I7UUFDeEIsZ0RBQW9CO1FBQ3BCLG9EQUE0QjtRQUM1QiwwREFBd0M7UUFDeEMsNkRBQThDO1FBQzlDLDZEQUErQztRQUUvQyxtQ0FBTyxpQkFBaUIsQ0FBQywyQkFBMkIsQ0FBQyxFQUFDO1FBR3BELHVCQUFBLElBQUksbUNBQWUsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLE1BQUEsQ0FBQztRQUN0Qyx1QkFBQSxJQUFJLGlDQUFhLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSx1QkFBQSxJQUFJLHVDQUFZLEVBQUUsZUFBZSxDQUFDLE1BQUEsQ0FBQztRQUNyRSx1QkFBQSxJQUFJLHFDQUFpQixJQUFJLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBQSxDQUFDO1FBQzFDLHVCQUFBLElBQUksMkNBQXVCLElBQUksa0JBQWtCLENB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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type FromLogType, type GetUnencryptedLogsResponse, type L2Block, type L2BlockL2Logs, type LogFilter, LogType, TxScopedL2Log } from '@aztec/circuit-types';
|
|
2
2
|
import { Fr } from '@aztec/circuits.js';
|
|
3
3
|
import { type AztecKVStore } from '@aztec/kv-store';
|
|
4
4
|
import { type BlockStore } from './block_store.js';
|
|
@@ -31,12 +31,18 @@ export declare class LogStore {
|
|
|
31
31
|
* @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
|
|
32
32
|
* that tag.
|
|
33
33
|
*/
|
|
34
|
-
getLogsByTags(tags: Fr[]): Promise<
|
|
34
|
+
getLogsByTags(tags: Fr[]): Promise<TxScopedL2Log[][]>;
|
|
35
35
|
/**
|
|
36
36
|
* Gets unencrypted logs based on the provided filter.
|
|
37
37
|
* @param filter - The filter to apply to the logs.
|
|
38
38
|
* @returns The requested logs.
|
|
39
39
|
*/
|
|
40
40
|
getUnencryptedLogs(filter: LogFilter): GetUnencryptedLogsResponse;
|
|
41
|
+
/**
|
|
42
|
+
* Gets contract class logs based on the provided filter.
|
|
43
|
+
* @param filter - The filter to apply to the logs.
|
|
44
|
+
* @returns The requested logs.
|
|
45
|
+
*/
|
|
46
|
+
getContractClassLogs(filter: LogFilter): GetUnencryptedLogsResponse;
|
|
41
47
|
}
|
|
42
48
|
//# sourceMappingURL=log_store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/log_store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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,
|
|
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 {
|
|
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
|
-
|
|
17
|
-
|
|
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,
|
|
25
|
-
__classPrivateFieldSet(this,
|
|
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
|
|
71
|
-
return blocks.flatMap(block =>
|
|
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,
|
|
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
|
-
|
|
87
|
-
void __classPrivateFieldGet(this,
|
|
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
|
-
|
|
136
|
-
|
|
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(),
|
|
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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
|
|
@@ -23,12 +23,11 @@ export declare class MessageStore {
|
|
|
23
23
|
*/
|
|
24
24
|
addL1ToL2Messages(messages: DataRetrieval<InboxLeaf>): Promise<boolean>;
|
|
25
25
|
/**
|
|
26
|
-
* Gets the
|
|
26
|
+
* Gets the L1 to L2 message index in the L1 to L2 message tree.
|
|
27
27
|
* @param l1ToL2Message - The L1 to L2 message.
|
|
28
|
-
* @param startIndex - The index to start searching from.
|
|
29
28
|
* @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
|
|
30
29
|
*/
|
|
31
|
-
getL1ToL2MessageIndex(l1ToL2Message: Fr
|
|
30
|
+
getL1ToL2MessageIndex(l1ToL2Message: Fr): Promise<bigint | undefined>;
|
|
32
31
|
getL1ToL2Messages(blockNumber: bigint): Fr[];
|
|
33
32
|
}
|
|
34
33
|
//# sourceMappingURL=message_store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/message_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,EAAE,EAA+B,MAAM,oBAAoB,CAAC;AAErE,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,iBAAiB,CAAC;AAExF,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE;;GAEG;AACH,qBAAa,YAAY;;IAUX,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,YAAY;IAOpC,0BAA0B,IAAI,MAAM;IAIpC;;;OAGG;IACH,uBAAuB,IAAI,MAAM,GAAG,SAAS;IAI7C,uBAAuB,CAAC,aAAa,EAAE,MAAM;IAI7C;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"message_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/message_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,EAAE,EAA+B,MAAM,oBAAoB,CAAC;AAErE,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,iBAAiB,CAAC;AAExF,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE;;GAEG;AACH,qBAAa,YAAY;;IAUX,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,YAAY;IAOpC,0BAA0B,IAAI,MAAM;IAIpC;;;OAGG;IACH,uBAAuB,IAAI,MAAM,GAAG,SAAS;IAI7C,uBAAuB,CAAC,aAAa,EAAE,MAAM;IAI7C;;;;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;IAIrE,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,EAAE,EAAE;CAqB7C"}
|
|
@@ -10,7 +10,7 @@ export class MessageStore {
|
|
|
10
10
|
constructor(db) {
|
|
11
11
|
this.db = db;
|
|
12
12
|
_MessageStore_l1ToL2Messages.set(this, void 0);
|
|
13
|
-
_MessageStore_l1ToL2MessageIndices.set(this, void 0);
|
|
13
|
+
_MessageStore_l1ToL2MessageIndices.set(this, void 0);
|
|
14
14
|
_MessageStore_lastSynchedL1Block.set(this, void 0);
|
|
15
15
|
_MessageStore_totalMessageCount.set(this, void 0);
|
|
16
16
|
_MessageStore_log.set(this, createDebugLogger('aztec:archiver:message_store'));
|
|
@@ -47,10 +47,8 @@ export class MessageStore {
|
|
|
47
47
|
void __classPrivateFieldGet(this, _MessageStore_lastSynchedL1Block, "f").set(messages.lastProcessedL1BlockNumber);
|
|
48
48
|
for (const message of messages.retrievedData) {
|
|
49
49
|
const key = `${message.index}`;
|
|
50
|
-
void __classPrivateFieldGet(this, _MessageStore_l1ToL2Messages, "f").
|
|
51
|
-
|
|
52
|
-
indices.push(message.index);
|
|
53
|
-
void __classPrivateFieldGet(this, _MessageStore_l1ToL2MessageIndices, "f").set(message.leaf.toString(), indices);
|
|
50
|
+
void __classPrivateFieldGet(this, _MessageStore_l1ToL2Messages, "f").set(key, message.leaf.toBuffer());
|
|
51
|
+
void __classPrivateFieldGet(this, _MessageStore_l1ToL2MessageIndices, "f").set(message.leaf.toString(), message.index);
|
|
54
52
|
}
|
|
55
53
|
const lastTotalMessageCount = this.getTotalL1ToL2MessageCount();
|
|
56
54
|
void __classPrivateFieldGet(this, _MessageStore_totalMessageCount, "f").set(lastTotalMessageCount + BigInt(messages.retrievedData.length));
|
|
@@ -58,15 +56,12 @@ export class MessageStore {
|
|
|
58
56
|
});
|
|
59
57
|
}
|
|
60
58
|
/**
|
|
61
|
-
* Gets the
|
|
59
|
+
* Gets the L1 to L2 message index in the L1 to L2 message tree.
|
|
62
60
|
* @param l1ToL2Message - The L1 to L2 message.
|
|
63
|
-
* @param startIndex - The index to start searching from.
|
|
64
61
|
* @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
|
|
65
62
|
*/
|
|
66
|
-
getL1ToL2MessageIndex(l1ToL2Message
|
|
67
|
-
|
|
68
|
-
const index = indices.find(i => i >= startIndex);
|
|
69
|
-
return Promise.resolve(index);
|
|
63
|
+
getL1ToL2MessageIndex(l1ToL2Message) {
|
|
64
|
+
return Promise.resolve(__classPrivateFieldGet(this, _MessageStore_l1ToL2MessageIndices, "f").get(l1ToL2Message.toString()));
|
|
70
65
|
}
|
|
71
66
|
getL1ToL2Messages(blockNumber) {
|
|
72
67
|
const messages = [];
|
|
@@ -92,4 +87,4 @@ export class MessageStore {
|
|
|
92
87
|
}
|
|
93
88
|
}
|
|
94
89
|
_MessageStore_l1ToL2Messages = new WeakMap(), _MessageStore_l1ToL2MessageIndices = new WeakMap(), _MessageStore_lastSynchedL1Block = new WeakMap(), _MessageStore_totalMessageCount = new WeakMap(), _MessageStore_log = new WeakMap(), _MessageStore_l1ToL2MessagesSubtreeSize = new WeakMap();
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZV9zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcmNoaXZlci9rdl9hcmNoaXZlcl9zdG9yZS9tZXNzYWdlX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxFQUFFLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUsxRDs7R0FFRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBVXZCLFlBQW9CLEVBQWdCO1FBQWhCLE9BQUUsR0FBRixFQUFFLENBQWM7UUFUcEMsK0NBQTBDO1FBQzFDLHFEQUFnRDtRQUNoRCxtREFBNEM7UUFDNUMsa0RBQTJDO1FBRTNDLDRCQUFPLGlCQUFpQixDQUFDLDhCQUE4QixDQUFDLEVBQUM7UUFFekQsa0RBQTZCLENBQUMsSUFBSSwyQkFBMkIsRUFBQztRQUc1RCx1QkFBQSxJQUFJLGdDQUFtQixFQUFFLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLE1BQUEsQ0FBQztRQUNoRSx1QkFBQSxJQUFJLHNDQUF5QixFQUFFLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLE1BQUEsQ0FBQztRQUM3RSx1QkFBQSxJQUFJLG9DQUF1QixFQUFFLENBQUMsYUFBYSxDQUFDLHFDQUFxQyxDQUFDLE1BQUEsQ0FBQztRQUNuRix1QkFBQSxJQUFJLG1DQUFzQixFQUFFLENBQUMsYUFBYSxDQUFDLGlDQUFpQyxDQUFDLE1BQUEsQ0FBQztJQUNoRixDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLE9BQU8sdUJBQUEsSUFBSSx1Q0FBbUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILHVCQUF1QjtRQUNyQixPQUFPLHVCQUFBLElBQUksd0NBQW9CLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELHVCQUF1QixDQUFDLGFBQXFCO1FBQzNDLEtBQUssdUJBQUEsSUFBSSx3Q0FBb0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxRQUFrQztRQUNsRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUM5QixNQUFNLGlCQUFpQixHQUFHLHVCQUFBLElBQUksd0NBQW9CLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQy9ELElBQUksaUJBQWlCLElBQUksUUFBUSxDQUFDLDBCQUEwQixFQUFFLENBQUM7Z0JBQzdELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELEtBQUssdUJBQUEsSUFBSSx3Q0FBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFFdkUsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzdDLE1BQU0sR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMvQixLQUFLLHVCQUFBLElBQUksb0NBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzVELEtBQUssdUJBQUEsSUFBSSwwQ0FBc0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUUsQ0FBQztZQUVELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDaEUsS0FBSyx1QkFBQSxJQUFJLHVDQUFtQixDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRWhHLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHFCQUFxQixDQUFDLGFBQWlCO1FBQ3JDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBQSxJQUFJLDBDQUFzQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxXQUFtQjtRQUNuQyxNQUFNLFFBQVEsR0FBUyxFQUFFLENBQUM7UUFDMUIsSUFBSSxxQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDbEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzNFLEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsR0FBRyxVQUFVLEdBQUcsdUJBQUEsSUFBSSwrQ0FBMkIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9FLGlEQUFpRDtZQUNqRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25CLE1BQU0sT0FBTyxHQUFHLHVCQUFBLElBQUksb0NBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxxQkFBcUIsRUFBRSxDQUFDO29CQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RSxDQUFDO2dCQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixxQkFBcUIsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLDhHQUE4RztnQkFDOUcsbUZBQW1GO1lBQ3JGLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIn0=
|
|
@@ -14,11 +14,10 @@ export declare class L1ToL2MessageStore {
|
|
|
14
14
|
addMessage(message: InboxLeaf): void;
|
|
15
15
|
getMessages(blockNumber: bigint): Fr[];
|
|
16
16
|
/**
|
|
17
|
-
* Gets the
|
|
17
|
+
* Gets the L1 to L2 message index in the L1 to L2 message tree.
|
|
18
18
|
* @param l1ToL2Message - The L1 to L2 message.
|
|
19
|
-
* @param startIndex - The index to start searching from.
|
|
20
19
|
* @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
|
|
21
20
|
*/
|
|
22
|
-
getMessageIndex(l1ToL2Message: Fr
|
|
21
|
+
getMessageIndex(l1ToL2Message: Fr): bigint | undefined;
|
|
23
22
|
}
|
|
24
23
|
//# sourceMappingURL=l1_to_l2_message_store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD;;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
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD;;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"}
|
|
@@ -41,23 +41,18 @@ export class L1ToL2MessageStore {
|
|
|
41
41
|
return messages;
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
|
-
* Gets the
|
|
44
|
+
* Gets the L1 to L2 message index in the L1 to L2 message tree.
|
|
45
45
|
* @param l1ToL2Message - The L1 to L2 message.
|
|
46
|
-
* @param startIndex - The index to start searching from.
|
|
47
46
|
* @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
|
|
48
47
|
*/
|
|
49
|
-
getMessageIndex(l1ToL2Message
|
|
48
|
+
getMessageIndex(l1ToL2Message) {
|
|
50
49
|
for (const [key, message] of this.store.entries()) {
|
|
51
50
|
if (message.equals(l1ToL2Message)) {
|
|
52
|
-
|
|
53
|
-
if (indexInTheWholeTree < startIndex) {
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
return indexInTheWholeTree;
|
|
51
|
+
return BigInt(key);
|
|
57
52
|
}
|
|
58
53
|
}
|
|
59
54
|
return undefined;
|
|
60
55
|
}
|
|
61
56
|
}
|
|
62
57
|
_L1ToL2MessageStore_l1ToL2MessagesSubtreeSize = new WeakMap();
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdG9fbDJfbWVzc2FnZV9zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcmNoaXZlci9tZW1vcnlfYXJjaGl2ZXJfc3RvcmUvbDFfdG9fbDJfbWVzc2FnZV9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUczRTs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFRN0I7UUFQQTs7V0FFRztRQUNPLFVBQUssR0FBb0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUU3Qyx3REFBNkIsQ0FBQyxJQUFJLDJCQUEyQixFQUFDO0lBRS9DLENBQUM7SUFFaEIsMEJBQTBCO1FBQ3hCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFrQjtRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFdBQVcsQ0FBQyxXQUFtQjtRQUM3QixNQUFNLFFBQVEsR0FBUyxFQUFFLENBQUM7UUFDMUIsSUFBSSxxQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDbEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBRTNFLEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsR0FBRyxVQUFVLEdBQUcsdUJBQUEsSUFBSSxxREFBMkIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9FLGlEQUFpRDtZQUNqRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixJQUFJLHFCQUFxQixFQUFFLENBQUM7b0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBQ3hFLENBQUM7Z0JBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04scUJBQXFCLEdBQUcsSUFBSSxDQUFDO2dCQUM3Qiw4R0FBOEc7Z0JBQzlHLG1GQUFtRjtZQUNyRixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLGFBQWlCO1FBQy9CLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDbEQsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGIn0=
|