@aztec/archiver 0.0.1-commit.f295ac2 → 0.0.1-commit.f2ce05ee
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/README.md +9 -0
- package/dest/archiver.d.ts +6 -5
- package/dest/archiver.d.ts.map +1 -1
- package/dest/archiver.js +34 -22
- package/dest/errors.d.ts +6 -1
- package/dest/errors.d.ts.map +1 -1
- package/dest/errors.js +8 -0
- package/dest/factory.d.ts +5 -2
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +11 -8
- package/dest/l1/bin/retrieve-calldata.js +17 -18
- package/dest/l1/data_retrieval.d.ts +1 -1
- package/dest/l1/data_retrieval.d.ts.map +1 -1
- package/dest/l1/data_retrieval.js +3 -3
- package/dest/l1/validate_trace.d.ts +6 -3
- package/dest/l1/validate_trace.d.ts.map +1 -1
- package/dest/l1/validate_trace.js +13 -9
- package/dest/modules/data_source_base.d.ts +19 -20
- package/dest/modules/data_source_base.d.ts.map +1 -1
- package/dest/modules/data_source_base.js +25 -56
- package/dest/modules/data_store_updater.d.ts +23 -19
- package/dest/modules/data_store_updater.d.ts.map +1 -1
- package/dest/modules/data_store_updater.js +47 -49
- package/dest/modules/instrumentation.d.ts +3 -3
- package/dest/modules/instrumentation.d.ts.map +1 -1
- package/dest/modules/instrumentation.js +17 -10
- package/dest/modules/l1_synchronizer.d.ts +1 -1
- package/dest/modules/l1_synchronizer.d.ts.map +1 -1
- package/dest/modules/l1_synchronizer.js +9 -10
- package/dest/store/block_store.d.ts +35 -21
- package/dest/store/block_store.d.ts.map +1 -1
- package/dest/store/block_store.js +81 -40
- package/dest/store/contract_class_store.d.ts +1 -1
- package/dest/store/contract_class_store.d.ts.map +1 -1
- package/dest/store/contract_class_store.js +11 -7
- package/dest/store/kv_archiver_store.d.ts +37 -28
- package/dest/store/kv_archiver_store.d.ts.map +1 -1
- package/dest/store/kv_archiver_store.js +31 -23
- package/dest/store/log_store.d.ts +17 -8
- package/dest/store/log_store.d.ts.map +1 -1
- package/dest/store/log_store.js +77 -43
- package/dest/test/fake_l1_state.d.ts +4 -4
- package/dest/test/fake_l1_state.d.ts.map +1 -1
- package/dest/test/index.js +3 -1
- package/dest/test/mock_archiver.js +1 -1
- package/dest/test/mock_l2_block_source.d.ts +20 -20
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +40 -41
- package/dest/test/mock_structs.d.ts +3 -2
- package/dest/test/mock_structs.d.ts.map +1 -1
- package/dest/test/mock_structs.js +11 -9
- package/dest/test/noop_l1_archiver.d.ts +23 -0
- package/dest/test/noop_l1_archiver.d.ts.map +1 -0
- package/dest/test/noop_l1_archiver.js +68 -0
- package/package.json +14 -13
- package/src/archiver.ts +46 -28
- package/src/errors.ts +12 -0
- package/src/factory.ts +23 -13
- package/src/l1/bin/retrieve-calldata.ts +16 -17
- package/src/l1/data_retrieval.ts +4 -4
- package/src/l1/validate_trace.ts +24 -6
- package/src/modules/data_source_base.ts +34 -81
- package/src/modules/data_store_updater.ts +59 -55
- package/src/modules/instrumentation.ts +17 -12
- package/src/modules/l1_synchronizer.ts +11 -12
- package/src/store/block_store.ts +107 -60
- package/src/store/contract_class_store.ts +11 -7
- package/src/store/kv_archiver_store.ts +52 -35
- package/src/store/log_store.ts +134 -49
- package/src/test/fake_l1_state.ts +2 -2
- package/src/test/index.ts +3 -0
- package/src/test/mock_archiver.ts +1 -1
- package/src/test/mock_l2_block_source.ts +54 -64
- package/src/test/mock_structs.ts +26 -10
- package/src/test/noop_l1_archiver.ts +109 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { toArray } from '@aztec/foundation/iterable';
|
|
2
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { FunctionSelector } from '@aztec/stdlib/abi';
|
|
4
|
-
import { L2BlockHash } from '@aztec/stdlib/block';
|
|
5
4
|
import { join } from 'path';
|
|
6
5
|
import { BlockStore } from './block_store.js';
|
|
7
6
|
import { ContractClassStore } from './contract_class_store.js';
|
|
@@ -24,11 +23,11 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
24
23
|
#contractInstanceStore;
|
|
25
24
|
functionNames;
|
|
26
25
|
#log;
|
|
27
|
-
constructor(db, logsMaxPageSize = 1000){
|
|
26
|
+
constructor(db, logsMaxPageSize = 1000, l1Constants){
|
|
28
27
|
this.db = db;
|
|
29
28
|
this.functionNames = new Map();
|
|
30
29
|
this.#log = createLogger('archiver:data-store');
|
|
31
|
-
this.#blockStore = new BlockStore(db);
|
|
30
|
+
this.#blockStore = new BlockStore(db, l1Constants);
|
|
32
31
|
this.#logStore = new LogStore(db, this.#blockStore, logsMaxPageSize);
|
|
33
32
|
this.#messageStore = new MessageStore(db);
|
|
34
33
|
this.#contractClassStore = new ContractClassStore(db);
|
|
@@ -52,6 +51,9 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
52
51
|
/** Closes the underlying data store. */ close() {
|
|
53
52
|
return this.db.close();
|
|
54
53
|
}
|
|
54
|
+
/** Computes the finalized block number based on the proven block number. */ getFinalizedL2BlockNumber() {
|
|
55
|
+
return this.#blockStore.getFinalizedL2BlockNumber();
|
|
56
|
+
}
|
|
55
57
|
/** Looks up a public function name given a selector. */ getDebugFunctionName(_address, selector) {
|
|
56
58
|
return Promise.resolve(this.functionNames.get(selector.toString()));
|
|
57
59
|
}
|
|
@@ -129,11 +131,13 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
129
131
|
return (await Promise.all(data.map((update, logIndex)=>this.#contractInstanceStore.deleteContractInstanceUpdate(update, timestamp, logIndex)))).every(Boolean);
|
|
130
132
|
}
|
|
131
133
|
/**
|
|
132
|
-
* Append new blocks to the store's list.
|
|
133
|
-
*
|
|
134
|
+
* Append new proposed blocks to the store's list.
|
|
135
|
+
* These are uncheckpointed blocks that have been proposed by the sequencer but not yet included in a checkpoint on L1.
|
|
136
|
+
* For checkpointed blocks (already published to L1), use addCheckpoints() instead.
|
|
137
|
+
* @param blocks - The proposed L2 blocks to be added to the store.
|
|
134
138
|
* @returns True if the operation is successful.
|
|
135
|
-
*/
|
|
136
|
-
return this.#blockStore.
|
|
139
|
+
*/ addProposedBlocks(blocks, opts = {}) {
|
|
140
|
+
return this.#blockStore.addProposedBlocks(blocks, opts);
|
|
137
141
|
}
|
|
138
142
|
/**
|
|
139
143
|
* Returns an array of checkpoint objects
|
|
@@ -150,13 +154,11 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
150
154
|
return this.#blockStore.getLatestBlockNumber();
|
|
151
155
|
}
|
|
152
156
|
/**
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
*/ unwindCheckpoints(from, checkpointsToUnwind) {
|
|
159
|
-
return this.#blockStore.unwindCheckpoints(from, checkpointsToUnwind);
|
|
157
|
+
* Removes all checkpoints with checkpoint number > checkpointNumber.
|
|
158
|
+
* Also removes ALL blocks (both checkpointed and uncheckpointed) after the last block of the given checkpoint.
|
|
159
|
+
* @param checkpointNumber - Remove all checkpoints strictly after this one.
|
|
160
|
+
*/ removeCheckpointsAfter(checkpointNumber) {
|
|
161
|
+
return this.#blockStore.removeCheckpointsAfter(checkpointNumber);
|
|
160
162
|
}
|
|
161
163
|
/**
|
|
162
164
|
* Appends new checkpoints, and their blocks to the store's collection
|
|
@@ -193,7 +195,7 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
193
195
|
* Returns the block for the given hash, or undefined if not exists.
|
|
194
196
|
* @param blockHash - The block hash to return.
|
|
195
197
|
*/ getBlockByHash(blockHash) {
|
|
196
|
-
return this.#blockStore.getBlockByHash(
|
|
198
|
+
return this.#blockStore.getBlockByHash(blockHash);
|
|
197
199
|
}
|
|
198
200
|
/**
|
|
199
201
|
* Returns the block for the given archive root, or undefined if not exists.
|
|
@@ -229,7 +231,7 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
229
231
|
* Returns the block header for the given hash, or undefined if not exists.
|
|
230
232
|
* @param blockHash - The block hash to return.
|
|
231
233
|
*/ getBlockHeaderByHash(blockHash) {
|
|
232
|
-
return this.#blockStore.getBlockHeaderByHash(
|
|
234
|
+
return this.#blockStore.getBlockHeaderByHash(blockHash);
|
|
233
235
|
}
|
|
234
236
|
/**
|
|
235
237
|
* Returns the block header for the given archive root, or undefined if not exists.
|
|
@@ -292,21 +294,26 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
292
294
|
return this.#messageStore.getL1ToL2Messages(checkpointNumber);
|
|
293
295
|
}
|
|
294
296
|
/**
|
|
295
|
-
* Gets
|
|
297
|
+
* Gets private logs that match any of the `tags`. For each tag, an array of matching logs is returned. An empty
|
|
296
298
|
* array implies no logs match that tag.
|
|
297
|
-
|
|
299
|
+
* @param tags - The tags to search for.
|
|
300
|
+
* @param page - The page number (0-indexed) for pagination. Returns at most 10 logs per tag per page.
|
|
301
|
+
*/ getPrivateLogsByTags(tags, page) {
|
|
298
302
|
try {
|
|
299
|
-
return this.#logStore.getPrivateLogsByTags(tags);
|
|
303
|
+
return this.#logStore.getPrivateLogsByTags(tags, page);
|
|
300
304
|
} catch (err) {
|
|
301
305
|
return Promise.reject(err);
|
|
302
306
|
}
|
|
303
307
|
}
|
|
304
308
|
/**
|
|
305
|
-
* Gets
|
|
309
|
+
* Gets public logs that match any of the `tags` from the specified contract. For each tag, an array of matching
|
|
306
310
|
* logs is returned. An empty array implies no logs match that tag.
|
|
307
|
-
|
|
311
|
+
* @param contractAddress - The contract address to search logs for.
|
|
312
|
+
* @param tags - The tags to search for.
|
|
313
|
+
* @param page - The page number (0-indexed) for pagination. Returns at most 10 logs per tag per page.
|
|
314
|
+
*/ getPublicLogsByTagsFromContract(contractAddress, tags, page) {
|
|
308
315
|
try {
|
|
309
|
-
return this.#logStore.getPublicLogsByTagsFromContract(contractAddress, tags);
|
|
316
|
+
return this.#logStore.getPublicLogsByTagsFromContract(contractAddress, tags, page);
|
|
310
317
|
} catch (err) {
|
|
311
318
|
return Promise.reject(err);
|
|
312
319
|
}
|
|
@@ -430,9 +437,10 @@ export const MAX_FUNCTION_NAME_LEN = 256;
|
|
|
430
437
|
}
|
|
431
438
|
/**
|
|
432
439
|
* Removes all blocks with block number > blockNumber.
|
|
440
|
+
* Does not remove any associated checkpoints.
|
|
433
441
|
* @param blockNumber - The block number to remove after.
|
|
434
442
|
* @returns The removed blocks (for event emission).
|
|
435
443
|
*/ removeBlocksAfter(blockNumber) {
|
|
436
|
-
return this.#blockStore.
|
|
444
|
+
return this.#blockStore.removeBlocksAfter(blockNumber);
|
|
437
445
|
}
|
|
438
446
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
-
import {
|
|
3
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
4
4
|
import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
|
|
5
5
|
import { type LogFilter, type SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
6
6
|
import type { BlockStore } from './block_store.js';
|
|
@@ -17,18 +17,27 @@ export declare class LogStore {
|
|
|
17
17
|
* @param blocks - The blocks for which to add the logs.
|
|
18
18
|
* @returns True if the operation is successful.
|
|
19
19
|
*/
|
|
20
|
-
addLogs(blocks:
|
|
21
|
-
deleteLogs(blocks:
|
|
20
|
+
addLogs(blocks: L2Block[]): Promise<boolean>;
|
|
21
|
+
deleteLogs(blocks: L2Block[]): Promise<boolean>;
|
|
22
22
|
/**
|
|
23
|
-
* Gets
|
|
23
|
+
* Gets private logs that match any of the `tags`. For each tag, an array of matching logs is returned. An empty
|
|
24
24
|
* array implies no logs match that tag.
|
|
25
|
+
* @param tags - The tags to search for.
|
|
26
|
+
* @param page - The page number (0-indexed) for pagination.
|
|
27
|
+
* @returns An array of log arrays, one per tag. Returns at most MAX_LOGS_PER_TAG logs per tag per page. If
|
|
28
|
+
* MAX_LOGS_PER_TAG logs are returned for a tag, the caller should fetch the next page to check for more logs.
|
|
25
29
|
*/
|
|
26
|
-
getPrivateLogsByTags(tags: SiloedTag[]): Promise<TxScopedL2Log[][]>;
|
|
30
|
+
getPrivateLogsByTags(tags: SiloedTag[], page?: number): Promise<TxScopedL2Log[][]>;
|
|
27
31
|
/**
|
|
28
|
-
* Gets
|
|
32
|
+
* Gets public logs that match any of the `tags` from the specified contract. For each tag, an array of matching
|
|
29
33
|
* logs is returned. An empty array implies no logs match that tag.
|
|
34
|
+
* @param contractAddress - The contract address to search logs for.
|
|
35
|
+
* @param tags - The tags to search for.
|
|
36
|
+
* @param page - The page number (0-indexed) for pagination.
|
|
37
|
+
* @returns An array of log arrays, one per tag. Returns at most MAX_LOGS_PER_TAG logs per tag per page. If
|
|
38
|
+
* MAX_LOGS_PER_TAG logs are returned for a tag, the caller should fetch the next page to check for more logs.
|
|
30
39
|
*/
|
|
31
|
-
getPublicLogsByTagsFromContract(contractAddress: AztecAddress, tags: Tag[]): Promise<TxScopedL2Log[][]>;
|
|
40
|
+
getPublicLogsByTagsFromContract(contractAddress: AztecAddress, tags: Tag[], page?: number): Promise<TxScopedL2Log[][]>;
|
|
32
41
|
/**
|
|
33
42
|
* Gets public logs based on the provided filter.
|
|
34
43
|
* @param filter - The filter to apply to the logs.
|
|
@@ -42,4 +51,4 @@ export declare class LogStore {
|
|
|
42
51
|
*/
|
|
43
52
|
getContractClassLogs(filter: LogFilter): Promise<GetContractClassLogsResponse>;
|
|
44
53
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nX3N0b3JlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmUvbG9nX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBYSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNHLE9BQU8sRUFJTCxLQUFLLFNBQVMsRUFHZCxLQUFLLFNBQVMsRUFDZCxHQUFHLEVBQ0gsYUFBYSxFQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxxQkFBYSxRQUFROztJQWFqQixPQUFPLENBQUMsRUFBRTtJQUNWLE9BQU8sQ0FBQyxVQUFVO0lBRnBCLFlBQ1UsRUFBRSxFQUFFLGlCQUFpQixFQUNyQixVQUFVLEVBQUUsVUFBVSxFQUM5QixlQUFlLEdBQUUsTUFBYSxFQVUvQjtJQThNRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBUzNDO0lBZ0JELFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQTJCOUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0csb0JBQW9CLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksR0FBRSxNQUFVLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FRMUY7SUFFRDs7Ozs7Ozs7T0FRRztJQUNHLCtCQUErQixDQUNuQyxlQUFlLEVBQUUsWUFBWSxFQUM3QixJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQ1gsSUFBSSxHQUFFLE1BQVUsR0FDZixPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQWE1QjtJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsTUFBTSxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FRL0Q7SUErRkQ7Ozs7T0FJRztJQUNILG9CQUFvQixDQUFDLE1BQU0sRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBUTdFO0NBc0pGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log_store.d.ts","sourceRoot":"","sources":["../../src/store/log_store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,
|
|
1
|
+
{"version":3,"file":"log_store.d.ts","sourceRoot":"","sources":["../../src/store/log_store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAa,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,EAIL,KAAK,SAAS,EAGd,KAAK,SAAS,EACd,GAAG,EACH,aAAa,EACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,qBAAa,QAAQ;;IAajB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,UAAU;IAFpB,YACU,EAAE,EAAE,iBAAiB,EACrB,UAAU,EAAE,UAAU,EAC9B,eAAe,GAAE,MAAa,EAU/B;IA8MD;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAS3C;IAgBD,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CA2B9C;IAED;;;;;;;OAOG;IACG,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAQ1F;IAED;;;;;;;;OAQG;IACG,+BAA+B,CACnC,eAAe,EAAE,YAAY,EAC7B,IAAI,EAAE,GAAG,EAAE,EACX,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAa5B;IAED;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAQ/D;IA+FD;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAQ7E;CAsJF"}
|
package/dest/store/log_store.js
CHANGED
|
@@ -4,8 +4,10 @@ import { filterAsync } from '@aztec/foundation/collection';
|
|
|
4
4
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
5
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
6
|
import { BufferReader, numToUInt32BE } from '@aztec/foundation/serialize';
|
|
7
|
-
import {
|
|
7
|
+
import { BlockHash } from '@aztec/stdlib/block';
|
|
8
|
+
import { MAX_LOGS_PER_TAG } from '@aztec/stdlib/interfaces/api-limit';
|
|
8
9
|
import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, PublicLog, TxScopedL2Log } from '@aztec/stdlib/logs';
|
|
10
|
+
import { TxHash } from '@aztec/stdlib/tx';
|
|
9
11
|
/**
|
|
10
12
|
* A store for logs
|
|
11
13
|
*/ export class LogStore {
|
|
@@ -141,6 +143,7 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
|
|
|
141
143
|
await this.#publicLogKeysByBlock.set(block.number, publicTagsInBlock);
|
|
142
144
|
const publicLogsInBlock = block.body.txEffects.map((txEffect, txIndex)=>[
|
|
143
145
|
numToUInt32BE(txIndex),
|
|
146
|
+
txEffect.txHash.toBuffer(),
|
|
144
147
|
numToUInt32BE(txEffect.publicLogs.length),
|
|
145
148
|
txEffect.publicLogs.map((log)=>log.toBuffer())
|
|
146
149
|
].flat()).flat();
|
|
@@ -153,6 +156,7 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
|
|
|
153
156
|
const blockHash = await block.hash();
|
|
154
157
|
const contractClassLogsInBlock = block.body.txEffects.map((txEffect, txIndex)=>[
|
|
155
158
|
numToUInt32BE(txIndex),
|
|
159
|
+
txEffect.txHash.toBuffer(),
|
|
156
160
|
numToUInt32BE(txEffect.contractClassLogs.length),
|
|
157
161
|
txEffect.contractClassLogs.map((log)=>log.toBuffer())
|
|
158
162
|
].flat()).flat();
|
|
@@ -184,7 +188,7 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
|
|
|
184
188
|
if (!blockHash) {
|
|
185
189
|
throw new Error('Failed to read block hash from log entry buffer');
|
|
186
190
|
}
|
|
187
|
-
return
|
|
191
|
+
return new BlockHash(blockHash);
|
|
188
192
|
}
|
|
189
193
|
deleteLogs(blocks) {
|
|
190
194
|
return this.db.transactionAsync(async ()=>{
|
|
@@ -206,21 +210,34 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
|
|
|
206
210
|
});
|
|
207
211
|
}
|
|
208
212
|
/**
|
|
209
|
-
* Gets
|
|
213
|
+
* Gets private logs that match any of the `tags`. For each tag, an array of matching logs is returned. An empty
|
|
210
214
|
* array implies no logs match that tag.
|
|
211
|
-
|
|
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) {
|
|
212
220
|
const logs = await Promise.all(tags.map((tag)=>this.#privateLogsByTag.getAsync(tag.toString())));
|
|
213
|
-
|
|
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)) ?? []);
|
|
214
224
|
}
|
|
215
225
|
/**
|
|
216
|
-
* Gets
|
|
226
|
+
* Gets public logs that match any of the `tags` from the specified contract. For each tag, an array of matching
|
|
217
227
|
* logs is returned. An empty array implies no logs match that tag.
|
|
218
|
-
|
|
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) {
|
|
219
234
|
const logs = await Promise.all(tags.map((tag)=>{
|
|
220
235
|
const key = `${contractAddress.toString()}_${tag.value.toString()}`;
|
|
221
236
|
return this.#publicLogsByContractAndTag.getAsync(key);
|
|
222
237
|
}));
|
|
223
|
-
|
|
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)) ?? []);
|
|
224
241
|
}
|
|
225
242
|
/**
|
|
226
243
|
* Gets public logs based on the provided filter.
|
|
@@ -247,22 +264,24 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
|
|
|
247
264
|
};
|
|
248
265
|
}
|
|
249
266
|
const buffer = await this.#publicLogsByBlock.getAsync(blockNumber) ?? Buffer.alloc(0);
|
|
250
|
-
const publicLogsInBlock = [
|
|
251
|
-
[]
|
|
252
|
-
];
|
|
267
|
+
const publicLogsInBlock = [];
|
|
253
268
|
const reader = new BufferReader(buffer);
|
|
254
269
|
const blockHash = this.#unpackBlockHash(reader);
|
|
255
270
|
while(reader.remainingBytes() > 0){
|
|
256
271
|
const indexOfTx = reader.readNumber();
|
|
272
|
+
const txHash = reader.readObject(TxHash);
|
|
257
273
|
const numLogsInTx = reader.readNumber();
|
|
258
|
-
publicLogsInBlock[indexOfTx] =
|
|
274
|
+
publicLogsInBlock[indexOfTx] = {
|
|
275
|
+
txHash,
|
|
276
|
+
logs: []
|
|
277
|
+
};
|
|
259
278
|
for(let i = 0; i < numLogsInTx; i++){
|
|
260
|
-
publicLogsInBlock[indexOfTx].push(reader.readObject(PublicLog));
|
|
279
|
+
publicLogsInBlock[indexOfTx].logs.push(reader.readObject(PublicLog));
|
|
261
280
|
}
|
|
262
281
|
}
|
|
263
|
-
const
|
|
282
|
+
const txData = publicLogsInBlock[txIndex];
|
|
264
283
|
const logs = [];
|
|
265
|
-
const maxLogsHit = this.#
|
|
284
|
+
const maxLogsHit = this.#accumulatePublicLogs(logs, blockNumber, blockHash, txIndex, txData.txHash, txData.logs, filter);
|
|
266
285
|
return {
|
|
267
286
|
logs,
|
|
268
287
|
maxLogsHit
|
|
@@ -283,22 +302,24 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
|
|
|
283
302
|
start,
|
|
284
303
|
end
|
|
285
304
|
})){
|
|
286
|
-
const publicLogsInBlock = [
|
|
287
|
-
[]
|
|
288
|
-
];
|
|
305
|
+
const publicLogsInBlock = [];
|
|
289
306
|
const reader = new BufferReader(logBuffer);
|
|
290
307
|
const blockHash = this.#unpackBlockHash(reader);
|
|
291
308
|
while(reader.remainingBytes() > 0){
|
|
292
309
|
const indexOfTx = reader.readNumber();
|
|
310
|
+
const txHash = reader.readObject(TxHash);
|
|
293
311
|
const numLogsInTx = reader.readNumber();
|
|
294
|
-
publicLogsInBlock[indexOfTx] =
|
|
312
|
+
publicLogsInBlock[indexOfTx] = {
|
|
313
|
+
txHash,
|
|
314
|
+
logs: []
|
|
315
|
+
};
|
|
295
316
|
for(let i = 0; i < numLogsInTx; i++){
|
|
296
|
-
publicLogsInBlock[indexOfTx].push(reader.readObject(PublicLog));
|
|
317
|
+
publicLogsInBlock[indexOfTx].logs.push(reader.readObject(PublicLog));
|
|
297
318
|
}
|
|
298
319
|
}
|
|
299
320
|
for(let txIndex = filter.afterLog?.txIndex ?? 0; txIndex < publicLogsInBlock.length; txIndex++){
|
|
300
|
-
const
|
|
301
|
-
maxLogsHit = this.#
|
|
321
|
+
const txData = publicLogsInBlock[txIndex];
|
|
322
|
+
maxLogsHit = this.#accumulatePublicLogs(logs, blockNumber, blockHash, txIndex, txData.txHash, txData.logs, filter);
|
|
302
323
|
if (maxLogsHit) {
|
|
303
324
|
this.#log.debug(`Max logs hit at block ${blockNumber}`);
|
|
304
325
|
break loopOverBlocks;
|
|
@@ -335,22 +356,24 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
|
|
|
335
356
|
};
|
|
336
357
|
}
|
|
337
358
|
const contractClassLogsBuffer = await this.#contractClassLogsByBlock.getAsync(blockNumber) ?? Buffer.alloc(0);
|
|
338
|
-
const contractClassLogsInBlock = [
|
|
339
|
-
[]
|
|
340
|
-
];
|
|
359
|
+
const contractClassLogsInBlock = [];
|
|
341
360
|
const reader = new BufferReader(contractClassLogsBuffer);
|
|
342
361
|
const blockHash = this.#unpackBlockHash(reader);
|
|
343
362
|
while(reader.remainingBytes() > 0){
|
|
344
363
|
const indexOfTx = reader.readNumber();
|
|
364
|
+
const txHash = reader.readObject(TxHash);
|
|
345
365
|
const numLogsInTx = reader.readNumber();
|
|
346
|
-
contractClassLogsInBlock[indexOfTx] =
|
|
366
|
+
contractClassLogsInBlock[indexOfTx] = {
|
|
367
|
+
txHash,
|
|
368
|
+
logs: []
|
|
369
|
+
};
|
|
347
370
|
for(let i = 0; i < numLogsInTx; i++){
|
|
348
|
-
contractClassLogsInBlock[indexOfTx].push(reader.readObject(ContractClassLog));
|
|
371
|
+
contractClassLogsInBlock[indexOfTx].logs.push(reader.readObject(ContractClassLog));
|
|
349
372
|
}
|
|
350
373
|
}
|
|
351
|
-
const
|
|
374
|
+
const txData = contractClassLogsInBlock[txIndex];
|
|
352
375
|
const logs = [];
|
|
353
|
-
const maxLogsHit = this.#
|
|
376
|
+
const maxLogsHit = this.#accumulateContractClassLogs(logs, blockNumber, blockHash, txIndex, txData.txHash, txData.logs, filter);
|
|
354
377
|
return {
|
|
355
378
|
logs,
|
|
356
379
|
maxLogsHit
|
|
@@ -371,22 +394,24 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
|
|
|
371
394
|
start,
|
|
372
395
|
end
|
|
373
396
|
})){
|
|
374
|
-
const contractClassLogsInBlock = [
|
|
375
|
-
[]
|
|
376
|
-
];
|
|
397
|
+
const contractClassLogsInBlock = [];
|
|
377
398
|
const reader = new BufferReader(logBuffer);
|
|
378
399
|
const blockHash = this.#unpackBlockHash(reader);
|
|
379
400
|
while(reader.remainingBytes() > 0){
|
|
380
401
|
const indexOfTx = reader.readNumber();
|
|
402
|
+
const txHash = reader.readObject(TxHash);
|
|
381
403
|
const numLogsInTx = reader.readNumber();
|
|
382
|
-
contractClassLogsInBlock[indexOfTx] =
|
|
404
|
+
contractClassLogsInBlock[indexOfTx] = {
|
|
405
|
+
txHash,
|
|
406
|
+
logs: []
|
|
407
|
+
};
|
|
383
408
|
for(let i = 0; i < numLogsInTx; i++){
|
|
384
|
-
contractClassLogsInBlock[indexOfTx].push(reader.readObject(ContractClassLog));
|
|
409
|
+
contractClassLogsInBlock[indexOfTx].logs.push(reader.readObject(ContractClassLog));
|
|
385
410
|
}
|
|
386
411
|
}
|
|
387
412
|
for(let txIndex = filter.afterLog?.txIndex ?? 0; txIndex < contractClassLogsInBlock.length; txIndex++){
|
|
388
|
-
const
|
|
389
|
-
maxLogsHit = this.#
|
|
413
|
+
const txData = contractClassLogsInBlock[txIndex];
|
|
414
|
+
maxLogsHit = this.#accumulateContractClassLogs(logs, blockNumber, blockHash, txIndex, txData.txHash, txData.logs, filter);
|
|
390
415
|
if (maxLogsHit) {
|
|
391
416
|
this.#log.debug(`Max logs hit at block ${blockNumber}`);
|
|
392
417
|
break loopOverBlocks;
|
|
@@ -398,19 +423,28 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
|
|
|
398
423
|
maxLogsHit
|
|
399
424
|
};
|
|
400
425
|
}
|
|
401
|
-
#
|
|
426
|
+
#accumulatePublicLogs(results, blockNumber, blockHash, txIndex, txHash, txLogs, filter = {}) {
|
|
402
427
|
let maxLogsHit = false;
|
|
403
428
|
let logIndex = typeof filter.afterLog?.logIndex === 'number' ? filter.afterLog.logIndex + 1 : 0;
|
|
404
429
|
for(; logIndex < txLogs.length; logIndex++){
|
|
405
430
|
const log = txLogs[logIndex];
|
|
406
431
|
if (!filter.contractAddress || log.contractAddress.equals(filter.contractAddress)) {
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
} else {
|
|
412
|
-
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;
|
|
413
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));
|
|
414
448
|
if (results.length >= this.#logsMaxPageSize) {
|
|
415
449
|
maxLogsHit = true;
|
|
416
450
|
break;
|
|
@@ -6,7 +6,7 @@ import { CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
|
6
6
|
import { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
7
7
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
8
8
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
9
|
-
import {
|
|
9
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
10
10
|
import { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
11
11
|
import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
|
|
12
12
|
import { type MockProxy } from 'jest-mock-extended';
|
|
@@ -34,7 +34,7 @@ type AddCheckpointOptions = {
|
|
|
34
34
|
/** Number of L2 blocks in the checkpoint. Default: 1 */
|
|
35
35
|
numBlocks?: number;
|
|
36
36
|
/** Or the actual blocks for the checkpoint */
|
|
37
|
-
blocks?:
|
|
37
|
+
blocks?: L2Block[];
|
|
38
38
|
/** Number of transactions per block. Default: 4 */
|
|
39
39
|
txsPerBlock?: number;
|
|
40
40
|
/** Max number of effects per tx (for generating large blobs). Default: undefined */
|
|
@@ -106,7 +106,7 @@ export declare class FakeL1State {
|
|
|
106
106
|
* Useful for creating blocks to pass to addBlock() for testing provisional block handling.
|
|
107
107
|
* Returns the blocks directly.
|
|
108
108
|
*/
|
|
109
|
-
makeBlocks(checkpointNumber: CheckpointNumber, options: Partial<AddCheckpointOptions>): Promise<
|
|
109
|
+
makeBlocks(checkpointNumber: CheckpointNumber, options: Partial<AddCheckpointOptions>): Promise<L2Block[]>;
|
|
110
110
|
/**
|
|
111
111
|
* Creates and adds a checkpoint with its L1-to-L2 messages.
|
|
112
112
|
* Returns both the checkpoint and the message leaves.
|
|
@@ -187,4 +187,4 @@ export declare class FakeL1State {
|
|
|
187
187
|
private makeBlobsFromCheckpoint;
|
|
188
188
|
}
|
|
189
189
|
export {};
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZV9sMV9zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvZmFrZV9sMV9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLElBQUksRUFBcUQsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRixPQUFPLEtBQUssRUFBeUIsYUFBYSxFQUFrQixjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV0SCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUF5RCxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFRdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0QsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFLMUQsMkNBQTJDO0FBQzNDLE1BQU0sTUFBTSxpQkFBaUIsR0FBRztJQUM5Qiw0QkFBNEI7SUFDNUIsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO0lBQ3ZCLDZCQUE2QjtJQUM3QixZQUFZLEVBQUUsTUFBTSxDQUFDO0lBQ3JCLGtDQUFrQztJQUNsQyxhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLHlDQUF5QztJQUN6QyxvQkFBb0IsRUFBRSxNQUFNLENBQUM7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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake_l1_state.d.ts","sourceRoot":"","sources":["../../src/test/fake_l1_state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,KAAK,IAAI,EAAqD,MAAM,iBAAiB,CAAC;AAC/F,OAAO,KAAK,EAAyB,aAAa,EAAkB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEtH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAoB,gBAAgB,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAEjG,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAyD,
|
|
1
|
+
{"version":3,"file":"fake_l1_state.d.ts","sourceRoot":"","sources":["../../src/test/fake_l1_state.ts"],"names":[],"mappings":"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"}
|
package/dest/test/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * from './mock_structs.js';
|
|
2
2
|
export * from './mock_l2_block_source.js';
|
|
3
3
|
export * from './mock_l1_to_l2_message_source.js';
|
|
4
|
-
export * from './mock_archiver.js';
|
|
4
|
+
export * from './mock_archiver.js'; // NOTE: noop_l1_archiver.js is intentionally NOT exported here because it imports
|
|
5
|
+
// jest-mock-extended, which depends on @jest/globals and can only run inside Jest.
|
|
6
|
+
// Import it directly: import { NoopL1Archiver } from '@aztec/archiver/test/noop-l1';
|
|
@@ -38,7 +38,7 @@ import { MockL2BlockSource } from './mock_l2_block_source.js';
|
|
|
38
38
|
}
|
|
39
39
|
const fromBlock = this.l2Blocks.length;
|
|
40
40
|
// TODO: Add L2 blocks and checkpoints separately once archiver has the apis for that.
|
|
41
|
-
this.
|
|
41
|
+
this.addProposedBlocks(this.prefilled.slice(fromBlock, fromBlock + numBlocks).flatMap((c)=>c.blocks));
|
|
42
42
|
return Promise.resolve();
|
|
43
43
|
}
|
|
44
44
|
}
|