@aztec/archiver 3.0.0-nightly.20260102 → 3.0.0-nightly.20260104
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_store_test_suite.d.ts +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +10 -30
- package/dest/archiver/kv_archiver_store/log_store.d.ts +1 -1
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.js +11 -14
- package/package.json +13 -13
- package/src/archiver/archiver_store_test_suite.ts +10 -30
- package/src/archiver/kv_archiver_store/log_store.ts +18 -24
|
@@ -5,4 +5,4 @@ import type { ArchiverDataStore } from './archiver_store.js';
|
|
|
5
5
|
* @param getStore - Returns an instance of a store that's already been initialized.
|
|
6
6
|
*/
|
|
7
7
|
export declare function describeArchiverDataStore(testName: string, getStore: () => ArchiverDataStore | Promise<ArchiverDataStore>): void;
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZXJfc3RvcmVfdGVzdF9zdWl0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FyY2hpdmVyL2FyY2hpdmVyX3N0b3JlX3Rlc3Rfc3VpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0NBLE9BQU8sNEJBQTRCLENBQUM7QUFLcEMsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0scUJBQXFCLENBQUM7QUFhbkY7OztHQUdHO0FBQ0gsd0JBQWdCLHlCQUF5QixDQUN2QyxRQUFRLEVBQUUsTUFBTSxFQUNoQixRQUFRLEVBQUUsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsUUEwdEYvRCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver_store_test_suite.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store_test_suite.ts"],"names":[],"mappings":"AAwCA,OAAO,4BAA4B,CAAC;AAKpC,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAC;AAanF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"archiver_store_test_suite.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store_test_suite.ts"],"names":[],"mappings":"AAwCA,OAAO,4BAA4B,CAAC;AAKpC,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAC;AAanF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,QA0tF/D"}
|
|
@@ -2239,17 +2239,13 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
2239
2239
|
[
|
|
2240
2240
|
expect.objectContaining({
|
|
2241
2241
|
blockNumber: 2,
|
|
2242
|
-
|
|
2243
|
-
log: makePrivateLog(tags[0]),
|
|
2244
|
-
isFromPublic: false
|
|
2242
|
+
logData: makePrivateLog(tags[0]).getEmittedFields()
|
|
2245
2243
|
})
|
|
2246
2244
|
],
|
|
2247
2245
|
[
|
|
2248
2246
|
expect.objectContaining({
|
|
2249
2247
|
blockNumber: 1,
|
|
2250
|
-
|
|
2251
|
-
log: makePrivateLog(tags[1]),
|
|
2252
|
-
isFromPublic: false
|
|
2248
|
+
logData: makePrivateLog(tags[1]).getEmittedFields()
|
|
2253
2249
|
})
|
|
2254
2250
|
]
|
|
2255
2251
|
]);
|
|
@@ -2277,15 +2273,11 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
2277
2273
|
[
|
|
2278
2274
|
expect.objectContaining({
|
|
2279
2275
|
blockNumber: 1,
|
|
2280
|
-
|
|
2281
|
-
log: makePrivateLog(tags[0]),
|
|
2282
|
-
isFromPublic: false
|
|
2276
|
+
logData: makePrivateLog(tags[0]).getEmittedFields()
|
|
2283
2277
|
}),
|
|
2284
2278
|
expect.objectContaining({
|
|
2285
2279
|
blockNumber: newBlockNumber,
|
|
2286
|
-
|
|
2287
|
-
log: newLog,
|
|
2288
|
-
isFromPublic: false
|
|
2280
|
+
logData: newLog.getEmittedFields()
|
|
2289
2281
|
})
|
|
2290
2282
|
]
|
|
2291
2283
|
]);
|
|
@@ -2301,9 +2293,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
2301
2293
|
[
|
|
2302
2294
|
expect.objectContaining({
|
|
2303
2295
|
blockNumber: 1,
|
|
2304
|
-
|
|
2305
|
-
log: makePrivateLog(tags[1]),
|
|
2306
|
-
isFromPublic: false
|
|
2296
|
+
logData: makePrivateLog(tags[1]).getEmittedFields()
|
|
2307
2297
|
})
|
|
2308
2298
|
]
|
|
2309
2299
|
]);
|
|
@@ -2369,17 +2359,13 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
2369
2359
|
[
|
|
2370
2360
|
expect.objectContaining({
|
|
2371
2361
|
blockNumber: 2,
|
|
2372
|
-
|
|
2373
|
-
log: makePublicLog(tags[0]),
|
|
2374
|
-
isFromPublic: true
|
|
2362
|
+
logData: makePublicLog(tags[0]).getEmittedFields()
|
|
2375
2363
|
})
|
|
2376
2364
|
],
|
|
2377
2365
|
[
|
|
2378
2366
|
expect.objectContaining({
|
|
2379
2367
|
blockNumber: 1,
|
|
2380
|
-
|
|
2381
|
-
log: makePublicLog(tags[1]),
|
|
2382
|
-
isFromPublic: true
|
|
2368
|
+
logData: makePublicLog(tags[1]).getEmittedFields()
|
|
2383
2369
|
})
|
|
2384
2370
|
]
|
|
2385
2371
|
]);
|
|
@@ -2407,15 +2393,11 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
2407
2393
|
[
|
|
2408
2394
|
expect.objectContaining({
|
|
2409
2395
|
blockNumber: 1,
|
|
2410
|
-
|
|
2411
|
-
log: makePublicLog(tags[0]),
|
|
2412
|
-
isFromPublic: true
|
|
2396
|
+
logData: makePublicLog(tags[0]).getEmittedFields()
|
|
2413
2397
|
}),
|
|
2414
2398
|
expect.objectContaining({
|
|
2415
2399
|
blockNumber: newBlockNumber,
|
|
2416
|
-
|
|
2417
|
-
log: newLog,
|
|
2418
|
-
isFromPublic: true
|
|
2400
|
+
logData: newLog.getEmittedFields()
|
|
2419
2401
|
})
|
|
2420
2402
|
]
|
|
2421
2403
|
]);
|
|
@@ -2431,9 +2413,7 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
|
|
|
2431
2413
|
[
|
|
2432
2414
|
expect.objectContaining({
|
|
2433
2415
|
blockNumber: 1,
|
|
2434
|
-
|
|
2435
|
-
log: makePublicLog(tags[1]),
|
|
2436
|
-
isFromPublic: true
|
|
2416
|
+
logData: makePublicLog(tags[1]).getEmittedFields()
|
|
2437
2417
|
})
|
|
2438
2418
|
]
|
|
2439
2419
|
]);
|
|
@@ -42,4 +42,4 @@ export declare class LogStore {
|
|
|
42
42
|
*/
|
|
43
43
|
getContractClassLogs(filter: LogFilter): Promise<GetContractClassLogsResponse>;
|
|
44
44
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nX3N0b3JlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJjaGl2ZXIva3ZfYXJjaGl2ZXJfc3RvcmUvbG9nX3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNHLE9BQU8sRUFJTCxLQUFLLFNBQVMsRUFHZCxLQUFLLFNBQVMsRUFDZCxHQUFHLEVBQ0gsYUFBYSxFQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxxQkFBYSxRQUFROztJQWFqQixPQUFPLENBQUMsRUFBRTtJQUNWLE9BQU8sQ0FBQyxVQUFVO0lBRnBCLFlBQ1UsRUFBRSxFQUFFLGlCQUFpQixFQUNyQixVQUFVLEVBQUUsVUFBVSxFQUM5QixlQUFlLEdBQUUsTUFBYSxFQVUvQjtJQStGRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBbUY5QztJQWdCRCxVQUFVLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0EyQmpEO0lBRUQ7OztPQUdHO0lBQ0csb0JBQW9CLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBSXhFO0lBRUQ7OztPQUdHO0lBQ0csK0JBQStCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FRNUc7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLE1BQU0sRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBUS9EO0lBNkVEOzs7O09BSUc7SUFDSCxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQVE3RTtDQTZHRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/log_store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAe,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC9D,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;AAE5B,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;
|
|
1
|
+
{"version":3,"file":"log_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/log_store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAe,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC9D,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;AAE5B,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;IA+FD;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAmF9C;IAgBD,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BjD;IAED;;;OAGG;IACG,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAIxE;IAED;;;OAGG;IACG,+BAA+B,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAQ5G;IAED;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAQ/D;IA6ED;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAQ7E;CA6GF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { INITIAL_L2_BLOCK_NUM
|
|
1
|
+
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
2
2
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -37,32 +37,29 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
|
|
|
37
37
|
*
|
|
38
38
|
* @param block - The L2 block to extract logs from.
|
|
39
39
|
* @returns An object containing the private and public tagged logs for the block.
|
|
40
|
-
*/
|
|
41
|
-
const blockHash = L2BlockHash.fromField(await block.hash());
|
|
40
|
+
*/ #extractTaggedLogsFromBlock(block) {
|
|
42
41
|
// SiloedTag (as string) -> array of log buffers.
|
|
43
42
|
const privateTaggedLogs = new Map();
|
|
44
43
|
// "{contractAddress}_{tag}" (as string) -> array of log buffers.
|
|
45
44
|
const publicTaggedLogs = new Map();
|
|
46
|
-
|
|
47
|
-
block.body.txEffects.forEach((txEffect, txIndex)=>{
|
|
45
|
+
block.body.txEffects.forEach((txEffect)=>{
|
|
48
46
|
const txHash = txEffect.txHash;
|
|
49
|
-
|
|
50
|
-
txEffect.privateLogs.forEach((log, logIndex)=>{
|
|
47
|
+
txEffect.privateLogs.forEach((log)=>{
|
|
51
48
|
// Private logs use SiloedTag (already siloed by kernel)
|
|
52
49
|
const tag = log.fields[0];
|
|
53
50
|
this.#log.debug(`Found private log with tag ${tag.toString()} in block ${block.number}`);
|
|
54
51
|
const currentLogs = privateTaggedLogs.get(tag.toString()) ?? [];
|
|
55
|
-
currentLogs.push(new TxScopedL2Log(txHash,
|
|
52
|
+
currentLogs.push(new TxScopedL2Log(txHash, block.number, block.timestamp, log.getEmittedFields(), txEffect.noteHashes, txEffect.nullifiers[0]).toBuffer());
|
|
56
53
|
privateTaggedLogs.set(tag.toString(), currentLogs);
|
|
57
54
|
});
|
|
58
|
-
txEffect.publicLogs.forEach((log
|
|
55
|
+
txEffect.publicLogs.forEach((log)=>{
|
|
59
56
|
// Public logs use Tag directly (not siloed) and are stored with contract address
|
|
60
57
|
const tag = log.fields[0];
|
|
61
58
|
const contractAddress = log.contractAddress;
|
|
62
59
|
const key = `${contractAddress.toString()}_${tag.toString()}`;
|
|
63
60
|
this.#log.debug(`Found public log with tag ${tag.toString()} from contract ${contractAddress.toString()} in block ${block.number}`);
|
|
64
61
|
const currentLogs = publicTaggedLogs.get(key) ?? [];
|
|
65
|
-
currentLogs.push(new TxScopedL2Log(txHash,
|
|
62
|
+
currentLogs.push(new TxScopedL2Log(txHash, block.number, block.timestamp, log.getEmittedFields(), txEffect.noteHashes, txEffect.nullifiers[0]).toBuffer());
|
|
66
63
|
publicTaggedLogs.set(key, currentLogs);
|
|
67
64
|
});
|
|
68
65
|
});
|
|
@@ -76,8 +73,8 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
|
|
|
76
73
|
* @param blocks - The blocks to extract logs from.
|
|
77
74
|
* @returns A map from tag (as string) to an array of serialized private logs belonging to that tag, and a map from
|
|
78
75
|
* "{contractAddress}_{tag}" (as string) to an array of serialized public logs belonging to that key.
|
|
79
|
-
*/
|
|
80
|
-
const taggedLogsInBlocks =
|
|
76
|
+
*/ #extractTaggedLogs(blocks) {
|
|
77
|
+
const taggedLogsInBlocks = blocks.map((block)=>this.#extractTaggedLogsFromBlock(block));
|
|
81
78
|
// Now we merge the maps from each block into a single map.
|
|
82
79
|
const privateTaggedLogs = taggedLogsInBlocks.reduce((acc, { privateTaggedLogs })=>{
|
|
83
80
|
for (const [tag, logs] of privateTaggedLogs.entries()){
|
|
@@ -102,8 +99,8 @@ import { ContractClassLog, ExtendedContractClassLog, ExtendedPublicLog, LogId, P
|
|
|
102
99
|
* Append new logs to the store's list.
|
|
103
100
|
* @param blocks - The blocks for which to add the logs.
|
|
104
101
|
* @returns True if the operation is successful.
|
|
105
|
-
*/
|
|
106
|
-
const { privateTaggedLogs, publicTaggedLogs } =
|
|
102
|
+
*/ addLogs(blocks) {
|
|
103
|
+
const { privateTaggedLogs, publicTaggedLogs } = this.#extractTaggedLogs(blocks);
|
|
107
104
|
const keysOfPrivateLogsToUpdate = Array.from(privateTaggedLogs.keys());
|
|
108
105
|
const keysOfPublicLogsToUpdate = Array.from(publicTaggedLogs.keys());
|
|
109
106
|
return this.db.transactionAsync(async ()=>{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/archiver",
|
|
3
|
-
"version": "3.0.0-nightly.
|
|
3
|
+
"version": "3.0.0-nightly.20260104",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -66,18 +66,18 @@
|
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@aztec/blob-client": "3.0.0-nightly.
|
|
70
|
-
"@aztec/blob-lib": "3.0.0-nightly.
|
|
71
|
-
"@aztec/constants": "3.0.0-nightly.
|
|
72
|
-
"@aztec/epoch-cache": "3.0.0-nightly.
|
|
73
|
-
"@aztec/ethereum": "3.0.0-nightly.
|
|
74
|
-
"@aztec/foundation": "3.0.0-nightly.
|
|
75
|
-
"@aztec/kv-store": "3.0.0-nightly.
|
|
76
|
-
"@aztec/l1-artifacts": "3.0.0-nightly.
|
|
77
|
-
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.
|
|
78
|
-
"@aztec/protocol-contracts": "3.0.0-nightly.
|
|
79
|
-
"@aztec/stdlib": "3.0.0-nightly.
|
|
80
|
-
"@aztec/telemetry-client": "3.0.0-nightly.
|
|
69
|
+
"@aztec/blob-client": "3.0.0-nightly.20260104",
|
|
70
|
+
"@aztec/blob-lib": "3.0.0-nightly.20260104",
|
|
71
|
+
"@aztec/constants": "3.0.0-nightly.20260104",
|
|
72
|
+
"@aztec/epoch-cache": "3.0.0-nightly.20260104",
|
|
73
|
+
"@aztec/ethereum": "3.0.0-nightly.20260104",
|
|
74
|
+
"@aztec/foundation": "3.0.0-nightly.20260104",
|
|
75
|
+
"@aztec/kv-store": "3.0.0-nightly.20260104",
|
|
76
|
+
"@aztec/l1-artifacts": "3.0.0-nightly.20260104",
|
|
77
|
+
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20260104",
|
|
78
|
+
"@aztec/protocol-contracts": "3.0.0-nightly.20260104",
|
|
79
|
+
"@aztec/stdlib": "3.0.0-nightly.20260104",
|
|
80
|
+
"@aztec/telemetry-client": "3.0.0-nightly.20260104",
|
|
81
81
|
"lodash.groupby": "^4.6.0",
|
|
82
82
|
"lodash.omit": "^4.5.0",
|
|
83
83
|
"tslib": "^2.5.0",
|
|
@@ -2276,17 +2276,13 @@ export function describeArchiverDataStore(
|
|
|
2276
2276
|
[
|
|
2277
2277
|
expect.objectContaining({
|
|
2278
2278
|
blockNumber: 2,
|
|
2279
|
-
|
|
2280
|
-
log: makePrivateLog(tags[0]),
|
|
2281
|
-
isFromPublic: false,
|
|
2279
|
+
logData: makePrivateLog(tags[0]).getEmittedFields(),
|
|
2282
2280
|
}),
|
|
2283
2281
|
],
|
|
2284
2282
|
[
|
|
2285
2283
|
expect.objectContaining({
|
|
2286
2284
|
blockNumber: 1,
|
|
2287
|
-
|
|
2288
|
-
log: makePrivateLog(tags[1]),
|
|
2289
|
-
isFromPublic: false,
|
|
2285
|
+
logData: makePrivateLog(tags[1]).getEmittedFields(),
|
|
2290
2286
|
}),
|
|
2291
2287
|
],
|
|
2292
2288
|
]);
|
|
@@ -2312,15 +2308,11 @@ export function describeArchiverDataStore(
|
|
|
2312
2308
|
[
|
|
2313
2309
|
expect.objectContaining({
|
|
2314
2310
|
blockNumber: 1,
|
|
2315
|
-
|
|
2316
|
-
log: makePrivateLog(tags[0]),
|
|
2317
|
-
isFromPublic: false,
|
|
2311
|
+
logData: makePrivateLog(tags[0]).getEmittedFields(),
|
|
2318
2312
|
}),
|
|
2319
2313
|
expect.objectContaining({
|
|
2320
2314
|
blockNumber: newBlockNumber,
|
|
2321
|
-
|
|
2322
|
-
log: newLog,
|
|
2323
|
-
isFromPublic: false,
|
|
2315
|
+
logData: newLog.getEmittedFields(),
|
|
2324
2316
|
}),
|
|
2325
2317
|
],
|
|
2326
2318
|
]);
|
|
@@ -2338,9 +2330,7 @@ export function describeArchiverDataStore(
|
|
|
2338
2330
|
[
|
|
2339
2331
|
expect.objectContaining({
|
|
2340
2332
|
blockNumber: 1,
|
|
2341
|
-
|
|
2342
|
-
log: makePrivateLog(tags[1]),
|
|
2343
|
-
isFromPublic: false,
|
|
2333
|
+
logData: makePrivateLog(tags[1]).getEmittedFields(),
|
|
2344
2334
|
}),
|
|
2345
2335
|
],
|
|
2346
2336
|
]);
|
|
@@ -2425,17 +2415,13 @@ export function describeArchiverDataStore(
|
|
|
2425
2415
|
[
|
|
2426
2416
|
expect.objectContaining({
|
|
2427
2417
|
blockNumber: 2,
|
|
2428
|
-
|
|
2429
|
-
log: makePublicLog(tags[0]),
|
|
2430
|
-
isFromPublic: true,
|
|
2418
|
+
logData: makePublicLog(tags[0]).getEmittedFields(),
|
|
2431
2419
|
}),
|
|
2432
2420
|
],
|
|
2433
2421
|
[
|
|
2434
2422
|
expect.objectContaining({
|
|
2435
2423
|
blockNumber: 1,
|
|
2436
|
-
|
|
2437
|
-
log: makePublicLog(tags[1]),
|
|
2438
|
-
isFromPublic: true,
|
|
2424
|
+
logData: makePublicLog(tags[1]).getEmittedFields(),
|
|
2439
2425
|
}),
|
|
2440
2426
|
],
|
|
2441
2427
|
]);
|
|
@@ -2461,15 +2447,11 @@ export function describeArchiverDataStore(
|
|
|
2461
2447
|
[
|
|
2462
2448
|
expect.objectContaining({
|
|
2463
2449
|
blockNumber: 1,
|
|
2464
|
-
|
|
2465
|
-
log: makePublicLog(tags[0]),
|
|
2466
|
-
isFromPublic: true,
|
|
2450
|
+
logData: makePublicLog(tags[0]).getEmittedFields(),
|
|
2467
2451
|
}),
|
|
2468
2452
|
expect.objectContaining({
|
|
2469
2453
|
blockNumber: newBlockNumber,
|
|
2470
|
-
|
|
2471
|
-
log: newLog,
|
|
2472
|
-
isFromPublic: true,
|
|
2454
|
+
logData: newLog.getEmittedFields(),
|
|
2473
2455
|
}),
|
|
2474
2456
|
],
|
|
2475
2457
|
]);
|
|
@@ -2487,9 +2469,7 @@ export function describeArchiverDataStore(
|
|
|
2487
2469
|
[
|
|
2488
2470
|
expect.objectContaining({
|
|
2489
2471
|
blockNumber: 1,
|
|
2490
|
-
|
|
2491
|
-
log: makePublicLog(tags[1]),
|
|
2492
|
-
isFromPublic: true,
|
|
2472
|
+
logData: makePublicLog(tags[1]).getEmittedFields(),
|
|
2493
2473
|
}),
|
|
2494
2474
|
],
|
|
2495
2475
|
]);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { INITIAL_L2_BLOCK_NUM
|
|
1
|
+
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
2
2
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -57,21 +57,16 @@ export class LogStore {
|
|
|
57
57
|
* @param block - The L2 block to extract logs from.
|
|
58
58
|
* @returns An object containing the private and public tagged logs for the block.
|
|
59
59
|
*/
|
|
60
|
-
|
|
61
|
-
const blockHash = L2BlockHash.fromField(await block.hash());
|
|
60
|
+
#extractTaggedLogsFromBlock(block: L2BlockNew) {
|
|
62
61
|
// SiloedTag (as string) -> array of log buffers.
|
|
63
62
|
const privateTaggedLogs = new Map<string, Buffer[]>();
|
|
64
63
|
// "{contractAddress}_{tag}" (as string) -> array of log buffers.
|
|
65
64
|
const publicTaggedLogs = new Map<string, Buffer[]>();
|
|
66
|
-
const dataStartIndexForBlock =
|
|
67
|
-
block.header.state.partial.noteHashTree.nextAvailableLeafIndex -
|
|
68
|
-
block.body.txEffects.length * MAX_NOTE_HASHES_PER_TX;
|
|
69
65
|
|
|
70
|
-
block.body.txEffects.forEach(
|
|
66
|
+
block.body.txEffects.forEach(txEffect => {
|
|
71
67
|
const txHash = txEffect.txHash;
|
|
72
|
-
const dataStartIndexForTx = dataStartIndexForBlock + txIndex * MAX_NOTE_HASHES_PER_TX;
|
|
73
68
|
|
|
74
|
-
txEffect.privateLogs.forEach(
|
|
69
|
+
txEffect.privateLogs.forEach(log => {
|
|
75
70
|
// Private logs use SiloedTag (already siloed by kernel)
|
|
76
71
|
const tag = log.fields[0];
|
|
77
72
|
this.#log.debug(`Found private log with tag ${tag.toString()} in block ${block.number}`);
|
|
@@ -80,18 +75,17 @@ export class LogStore {
|
|
|
80
75
|
currentLogs.push(
|
|
81
76
|
new TxScopedL2Log(
|
|
82
77
|
txHash,
|
|
83
|
-
dataStartIndexForTx,
|
|
84
|
-
logIndex,
|
|
85
78
|
block.number,
|
|
86
|
-
blockHash,
|
|
87
79
|
block.timestamp,
|
|
88
|
-
log,
|
|
80
|
+
log.getEmittedFields(),
|
|
81
|
+
txEffect.noteHashes,
|
|
82
|
+
txEffect.nullifiers[0],
|
|
89
83
|
).toBuffer(),
|
|
90
84
|
);
|
|
91
85
|
privateTaggedLogs.set(tag.toString(), currentLogs);
|
|
92
86
|
});
|
|
93
87
|
|
|
94
|
-
txEffect.publicLogs.forEach(
|
|
88
|
+
txEffect.publicLogs.forEach(log => {
|
|
95
89
|
// Public logs use Tag directly (not siloed) and are stored with contract address
|
|
96
90
|
const tag = log.fields[0];
|
|
97
91
|
const contractAddress = log.contractAddress;
|
|
@@ -104,12 +98,11 @@ export class LogStore {
|
|
|
104
98
|
currentLogs.push(
|
|
105
99
|
new TxScopedL2Log(
|
|
106
100
|
txHash,
|
|
107
|
-
dataStartIndexForTx,
|
|
108
|
-
logIndex,
|
|
109
101
|
block.number,
|
|
110
|
-
blockHash,
|
|
111
102
|
block.timestamp,
|
|
112
|
-
log,
|
|
103
|
+
log.getEmittedFields(),
|
|
104
|
+
txEffect.noteHashes,
|
|
105
|
+
txEffect.nullifiers[0],
|
|
113
106
|
).toBuffer(),
|
|
114
107
|
);
|
|
115
108
|
publicTaggedLogs.set(key, currentLogs);
|
|
@@ -125,10 +118,11 @@ export class LogStore {
|
|
|
125
118
|
* @returns A map from tag (as string) to an array of serialized private logs belonging to that tag, and a map from
|
|
126
119
|
* "{contractAddress}_{tag}" (as string) to an array of serialized public logs belonging to that key.
|
|
127
120
|
*/
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
121
|
+
#extractTaggedLogs(blocks: L2BlockNew[]): {
|
|
122
|
+
privateTaggedLogs: Map<string, Buffer[]>;
|
|
123
|
+
publicTaggedLogs: Map<string, Buffer[]>;
|
|
124
|
+
} {
|
|
125
|
+
const taggedLogsInBlocks = blocks.map(block => this.#extractTaggedLogsFromBlock(block));
|
|
132
126
|
|
|
133
127
|
// Now we merge the maps from each block into a single map.
|
|
134
128
|
const privateTaggedLogs = taggedLogsInBlocks.reduce((acc, { privateTaggedLogs }) => {
|
|
@@ -155,8 +149,8 @@ export class LogStore {
|
|
|
155
149
|
* @param blocks - The blocks for which to add the logs.
|
|
156
150
|
* @returns True if the operation is successful.
|
|
157
151
|
*/
|
|
158
|
-
|
|
159
|
-
const { privateTaggedLogs, publicTaggedLogs } =
|
|
152
|
+
addLogs(blocks: L2BlockNew[]): Promise<boolean> {
|
|
153
|
+
const { privateTaggedLogs, publicTaggedLogs } = this.#extractTaggedLogs(blocks);
|
|
160
154
|
|
|
161
155
|
const keysOfPrivateLogsToUpdate = Array.from(privateTaggedLogs.keys());
|
|
162
156
|
const keysOfPublicLogsToUpdate = Array.from(publicTaggedLogs.keys());
|