@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.
Files changed (30) hide show
  1. package/dest/archiver/archiver.js +3 -2
  2. package/dest/archiver/archiver_store.d.ts +3 -2
  3. package/dest/archiver/archiver_store.d.ts.map +1 -1
  4. package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
  5. package/dest/archiver/archiver_store_test_suite.js +18 -7
  6. package/dest/archiver/eth_log_handlers.js +1 -1
  7. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
  8. package/dest/archiver/kv_archiver_store/block_store.js +3 -3
  9. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +2 -2
  10. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
  11. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +3 -3
  12. package/dest/archiver/kv_archiver_store/log_store.d.ts +2 -2
  13. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
  14. package/dest/archiver/kv_archiver_store/log_store.js +56 -9
  15. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +7 -2
  16. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -1
  17. package/dest/archiver/memory_archiver_store/memory_archiver_store.js +23 -5
  18. package/dest/rpc/archiver_client.js +3 -3
  19. package/dest/rpc/archiver_server.js +3 -3
  20. package/package.json +9 -9
  21. package/src/archiver/archiver.ts +2 -2
  22. package/src/archiver/archiver_store.ts +3 -0
  23. package/src/archiver/archiver_store_test_suite.ts +32 -7
  24. package/src/archiver/eth_log_handlers.ts +1 -1
  25. package/src/archiver/kv_archiver_store/block_store.ts +2 -2
  26. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +3 -1
  27. package/src/archiver/kv_archiver_store/log_store.ts +54 -5
  28. package/src/archiver/memory_archiver_store/memory_archiver_store.ts +25 -5
  29. package/src/rpc/archiver_client.ts +2 -2
  30. 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 = logType === LogType.ENCRYPTED ? this.#encryptedLogs : this.#unencryptedLogs;
73
- const L2BlockL2Logs = logType === LogType.ENCRYPTED ? EncryptedL2BlockL2Logs : UnencryptedL2BlockL2Logs;
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 = logType === LogType.ENCRYPTED ? this.#encryptedLogs : this.#unencryptedLogs;
177
- const L2BlockL2Logs: typeof EncryptedL2BlockL2Logs | typeof UnencryptedL2BlockL2Logs =
178
- logType === LogType.ENCRYPTED ? EncryptedL2BlockL2Logs : UnencryptedL2BlockL2Logs;
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
- TxStatus.MINED,
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 === LogType.ENCRYPTED ? this.encryptedLogsPerBlock : this.unencryptedLogsPerBlock
313
- ) as L2BlockL2Logs<FromLogType<TLogType>>[];
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
- EncryptedL2BlockL2Logs,
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
- EncryptedL2BlockL2Logs,
22
+ EncryptedNoteL2BlockL2Logs,
23
23
  UnencryptedL2BlockL2Logs,
24
24
  },
25
25
  { TxReceipt, NullifierMembershipWitness },
@@ -1,5 +1,5 @@
1
1
  import {
2
- EncryptedL2BlockL2Logs,
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
- EncryptedL2BlockL2Logs,
28
+ EncryptedNoteL2BlockL2Logs,
29
29
  UnencryptedL2BlockL2Logs,
30
30
  TxEffect,
31
31
  },