@aztec/archiver 0.40.1 → 0.42.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.js +3 -2
- package/dest/archiver/archiver_store.d.ts +3 -2
- 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 +18 -7
- package/dest/archiver/eth_log_handlers.js +1 -1
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +3 -3
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +3 -3
- package/dest/archiver/kv_archiver_store/log_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.js +56 -9
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +7 -2
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -1
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +23 -5
- package/dest/rpc/archiver_client.js +3 -3
- package/dest/rpc/archiver_server.js +3 -3
- package/package.json +9 -9
- package/src/archiver/archiver.ts +2 -2
- package/src/archiver/archiver_store.ts +3 -0
- package/src/archiver/archiver_store_test_suite.ts +32 -7
- package/src/archiver/eth_log_handlers.ts +1 -1
- package/src/archiver/kv_archiver_store/block_store.ts +2 -2
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +3 -1
- package/src/archiver/kv_archiver_store/log_store.ts +54 -5
- package/src/archiver/memory_archiver_store/memory_archiver_store.ts +25 -5
- package/src/rpc/archiver_client.ts +2 -2
- package/src/rpc/archiver_server.ts +2 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EncryptedL2BlockL2Logs,
|
|
3
|
+
EncryptedNoteL2BlockL2Logs,
|
|
3
4
|
ExtendedUnencryptedL2Log,
|
|
4
5
|
type FromLogType,
|
|
5
6
|
type GetUnencryptedLogsResponse,
|
|
@@ -20,12 +21,14 @@ import { type BlockStore } from './block_store.js';
|
|
|
20
21
|
* A store for logs
|
|
21
22
|
*/
|
|
22
23
|
export class LogStore {
|
|
24
|
+
#noteEncryptedLogs: AztecMap<number, Buffer>;
|
|
23
25
|
#encryptedLogs: AztecMap<number, Buffer>;
|
|
24
26
|
#unencryptedLogs: AztecMap<number, Buffer>;
|
|
25
27
|
#logsMaxPageSize: number;
|
|
26
28
|
#log = createDebugLogger('aztec:archiver:log_store');
|
|
27
29
|
|
|
28
30
|
constructor(private db: AztecKVStore, private blockStore: BlockStore, logsMaxPageSize: number = 1000) {
|
|
31
|
+
this.#noteEncryptedLogs = db.openMap('archiver_note_encrypted_logs');
|
|
29
32
|
this.#encryptedLogs = db.openMap('archiver_encrypted_logs');
|
|
30
33
|
this.#unencryptedLogs = db.openMap('archiver_unencrypted_logs');
|
|
31
34
|
|
|
@@ -40,11 +43,16 @@ export class LogStore {
|
|
|
40
43
|
* @returns True if the operation is successful.
|
|
41
44
|
*/
|
|
42
45
|
addLogs(
|
|
46
|
+
noteEncryptedLogs: EncryptedNoteL2BlockL2Logs | undefined,
|
|
43
47
|
encryptedLogs: EncryptedL2BlockL2Logs | undefined,
|
|
44
48
|
unencryptedLogs: UnencryptedL2BlockL2Logs | undefined,
|
|
45
49
|
blockNumber: number,
|
|
46
50
|
): Promise<boolean> {
|
|
47
51
|
return this.db.transaction(() => {
|
|
52
|
+
if (noteEncryptedLogs) {
|
|
53
|
+
void this.#noteEncryptedLogs.set(blockNumber, noteEncryptedLogs.toBuffer());
|
|
54
|
+
}
|
|
55
|
+
|
|
48
56
|
if (encryptedLogs) {
|
|
49
57
|
void this.#encryptedLogs.set(blockNumber, encryptedLogs.toBuffer());
|
|
50
58
|
}
|
|
@@ -69,8 +77,29 @@ export class LogStore {
|
|
|
69
77
|
limit: number,
|
|
70
78
|
logType: TLogType,
|
|
71
79
|
): IterableIterator<L2BlockL2Logs<FromLogType<TLogType>>> {
|
|
72
|
-
const logMap =
|
|
73
|
-
|
|
80
|
+
const logMap = (() => {
|
|
81
|
+
switch (logType) {
|
|
82
|
+
case LogType.ENCRYPTED:
|
|
83
|
+
return this.#encryptedLogs;
|
|
84
|
+
case LogType.NOTEENCRYPTED:
|
|
85
|
+
return this.#noteEncryptedLogs;
|
|
86
|
+
case LogType.UNENCRYPTED:
|
|
87
|
+
default:
|
|
88
|
+
return this.#unencryptedLogs;
|
|
89
|
+
}
|
|
90
|
+
})();
|
|
91
|
+
const logTypeMap = (() => {
|
|
92
|
+
switch (logType) {
|
|
93
|
+
case LogType.ENCRYPTED:
|
|
94
|
+
return EncryptedL2BlockL2Logs;
|
|
95
|
+
case LogType.NOTEENCRYPTED:
|
|
96
|
+
return EncryptedNoteL2BlockL2Logs;
|
|
97
|
+
case LogType.UNENCRYPTED:
|
|
98
|
+
default:
|
|
99
|
+
return UnencryptedL2BlockL2Logs;
|
|
100
|
+
}
|
|
101
|
+
})();
|
|
102
|
+
const L2BlockL2Logs = logTypeMap;
|
|
74
103
|
for (const buffer of logMap.values({ start, limit })) {
|
|
75
104
|
yield L2BlockL2Logs.fromBuffer(buffer) as L2BlockL2Logs<FromLogType<TLogType>>;
|
|
76
105
|
}
|
|
@@ -173,9 +202,29 @@ export class LogStore {
|
|
|
173
202
|
blockNumber: number,
|
|
174
203
|
logType: TLogType,
|
|
175
204
|
): L2BlockL2Logs<FromLogType<TLogType>> {
|
|
176
|
-
const logMap =
|
|
177
|
-
|
|
178
|
-
|
|
205
|
+
const logMap = (() => {
|
|
206
|
+
switch (logType) {
|
|
207
|
+
case LogType.ENCRYPTED:
|
|
208
|
+
return this.#encryptedLogs;
|
|
209
|
+
case LogType.NOTEENCRYPTED:
|
|
210
|
+
return this.#noteEncryptedLogs;
|
|
211
|
+
case LogType.UNENCRYPTED:
|
|
212
|
+
default:
|
|
213
|
+
return this.#unencryptedLogs;
|
|
214
|
+
}
|
|
215
|
+
})();
|
|
216
|
+
const logTypeMap = (() => {
|
|
217
|
+
switch (logType) {
|
|
218
|
+
case LogType.ENCRYPTED:
|
|
219
|
+
return EncryptedL2BlockL2Logs;
|
|
220
|
+
case LogType.NOTEENCRYPTED:
|
|
221
|
+
return EncryptedNoteL2BlockL2Logs;
|
|
222
|
+
case LogType.UNENCRYPTED:
|
|
223
|
+
default:
|
|
224
|
+
return UnencryptedL2BlockL2Logs;
|
|
225
|
+
}
|
|
226
|
+
})();
|
|
227
|
+
const L2BlockL2Logs = logTypeMap;
|
|
179
228
|
const buffer = logMap.get(blockNumber);
|
|
180
229
|
|
|
181
230
|
if (!buffer) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
type Body,
|
|
3
3
|
type EncryptedL2BlockL2Logs,
|
|
4
|
+
type EncryptedNoteL2BlockL2Logs,
|
|
4
5
|
ExtendedUnencryptedL2Log,
|
|
5
6
|
type FromLogType,
|
|
6
7
|
type GetUnencryptedLogsResponse,
|
|
@@ -13,7 +14,6 @@ import {
|
|
|
13
14
|
type TxEffect,
|
|
14
15
|
type TxHash,
|
|
15
16
|
TxReceipt,
|
|
16
|
-
TxStatus,
|
|
17
17
|
type UnencryptedL2BlockL2Logs,
|
|
18
18
|
} from '@aztec/circuit-types';
|
|
19
19
|
import { Fr, INITIAL_L2_BLOCK_NUM } from '@aztec/circuits.js';
|
|
@@ -48,6 +48,12 @@ export class MemoryArchiverStore implements ArchiverDataStore {
|
|
|
48
48
|
*/
|
|
49
49
|
private txEffects: TxEffect[] = [];
|
|
50
50
|
|
|
51
|
+
/**
|
|
52
|
+
* An array containing all the encrypted logs that have been fetched so far.
|
|
53
|
+
* Note: Index in the "outer" array equals to (corresponding L2 block's number - INITIAL_L2_BLOCK_NUM).
|
|
54
|
+
*/
|
|
55
|
+
private noteEncryptedLogsPerBlock: EncryptedNoteL2BlockL2Logs[] = [];
|
|
56
|
+
|
|
51
57
|
/**
|
|
52
58
|
* An array containing all the encrypted logs that have been fetched so far.
|
|
53
59
|
* Note: Index in the "outer" array equals to (corresponding L2 block's number - INITIAL_L2_BLOCK_NUM).
|
|
@@ -185,10 +191,15 @@ export class MemoryArchiverStore implements ArchiverDataStore {
|
|
|
185
191
|
* @returns True if the operation is successful.
|
|
186
192
|
*/
|
|
187
193
|
addLogs(
|
|
194
|
+
noteEncryptedLogs: EncryptedNoteL2BlockL2Logs,
|
|
188
195
|
encryptedLogs: EncryptedL2BlockL2Logs,
|
|
189
196
|
unencryptedLogs: UnencryptedL2BlockL2Logs,
|
|
190
197
|
blockNumber: number,
|
|
191
198
|
): Promise<boolean> {
|
|
199
|
+
if (noteEncryptedLogs) {
|
|
200
|
+
this.noteEncryptedLogsPerBlock[blockNumber - INITIAL_L2_BLOCK_NUM] = noteEncryptedLogs;
|
|
201
|
+
}
|
|
202
|
+
|
|
192
203
|
if (encryptedLogs) {
|
|
193
204
|
this.encryptedLogsPerBlock[blockNumber - INITIAL_L2_BLOCK_NUM] = encryptedLogs;
|
|
194
205
|
}
|
|
@@ -271,7 +282,7 @@ export class MemoryArchiverStore implements ArchiverDataStore {
|
|
|
271
282
|
return Promise.resolve(
|
|
272
283
|
new TxReceipt(
|
|
273
284
|
txHash,
|
|
274
|
-
|
|
285
|
+
TxReceipt.statusFromRevertCode(txEffect.revertCode),
|
|
275
286
|
'',
|
|
276
287
|
txEffect.transactionFee.toBigInt(),
|
|
277
288
|
block.hash().toBuffer(),
|
|
@@ -308,9 +319,18 @@ export class MemoryArchiverStore implements ArchiverDataStore {
|
|
|
308
319
|
if (from < INITIAL_L2_BLOCK_NUM || limit < 1) {
|
|
309
320
|
throw new Error(`Invalid limit: ${limit}`);
|
|
310
321
|
}
|
|
311
|
-
const logs = (
|
|
312
|
-
logType
|
|
313
|
-
|
|
322
|
+
const logs = (() => {
|
|
323
|
+
switch (logType) {
|
|
324
|
+
case LogType.ENCRYPTED:
|
|
325
|
+
return this.encryptedLogsPerBlock;
|
|
326
|
+
case LogType.NOTEENCRYPTED:
|
|
327
|
+
return this.noteEncryptedLogsPerBlock;
|
|
328
|
+
case LogType.UNENCRYPTED:
|
|
329
|
+
default:
|
|
330
|
+
return this.unencryptedLogsPerBlock;
|
|
331
|
+
}
|
|
332
|
+
})() as L2BlockL2Logs<FromLogType<TLogType>>[];
|
|
333
|
+
|
|
314
334
|
if (from > logs.length) {
|
|
315
335
|
return Promise.resolve([]);
|
|
316
336
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
EncryptedNoteL2BlockL2Logs,
|
|
3
3
|
ExtendedUnencryptedL2Log,
|
|
4
4
|
L2Block,
|
|
5
5
|
NullifierMembershipWitness,
|
|
@@ -19,7 +19,7 @@ export const createArchiverClient = (url: string, fetch = makeFetch([1, 2, 3], t
|
|
|
19
19
|
ExtendedUnencryptedL2Log,
|
|
20
20
|
Fr,
|
|
21
21
|
L2Block,
|
|
22
|
-
|
|
22
|
+
EncryptedNoteL2BlockL2Logs,
|
|
23
23
|
UnencryptedL2BlockL2Logs,
|
|
24
24
|
},
|
|
25
25
|
{ TxReceipt, NullifierMembershipWitness },
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
EncryptedNoteL2BlockL2Logs,
|
|
3
3
|
ExtendedUnencryptedL2Log,
|
|
4
4
|
L2Block,
|
|
5
5
|
NullifierMembershipWitness,
|
|
@@ -25,7 +25,7 @@ export function createArchiverRpcServer(archiverService: Archiver): JsonRpcServe
|
|
|
25
25
|
ExtendedUnencryptedL2Log,
|
|
26
26
|
Fr,
|
|
27
27
|
L2Block,
|
|
28
|
-
|
|
28
|
+
EncryptedNoteL2BlockL2Logs,
|
|
29
29
|
UnencryptedL2BlockL2Logs,
|
|
30
30
|
TxEffect,
|
|
31
31
|
},
|