@aztec/archiver 0.71.0 → 0.73.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 (70) hide show
  1. package/dest/archiver/archiver.d.ts +6 -6
  2. package/dest/archiver/archiver.d.ts.map +1 -1
  3. package/dest/archiver/archiver.js +35 -20
  4. package/dest/archiver/archiver_store.d.ts +6 -6
  5. package/dest/archiver/archiver_store.d.ts.map +1 -1
  6. package/dest/archiver/archiver_store_test_suite.d.ts +1 -1
  7. package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
  8. package/dest/archiver/archiver_store_test_suite.js +103 -65
  9. package/dest/archiver/config.d.ts +2 -2
  10. package/dest/archiver/config.d.ts.map +1 -1
  11. package/dest/archiver/config.js +5 -5
  12. package/dest/archiver/data_retrieval.d.ts +3 -2
  13. package/dest/archiver/data_retrieval.d.ts.map +1 -1
  14. package/dest/archiver/data_retrieval.js +69 -16
  15. package/dest/archiver/errors.d.ts +4 -0
  16. package/dest/archiver/errors.d.ts.map +1 -0
  17. package/dest/archiver/errors.js +6 -0
  18. package/dest/archiver/kv_archiver_store/block_store.d.ts +16 -16
  19. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
  20. package/dest/archiver/kv_archiver_store/block_store.js +53 -53
  21. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +5 -5
  22. package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
  23. package/dest/archiver/kv_archiver_store/contract_class_store.js +13 -12
  24. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +3 -3
  25. package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
  26. package/dest/archiver/kv_archiver_store/contract_instance_store.js +3 -3
  27. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +7 -11
  28. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
  29. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +41 -63
  30. package/dest/archiver/kv_archiver_store/log_store.d.ts +8 -8
  31. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
  32. package/dest/archiver/kv_archiver_store/log_store.js +122 -89
  33. package/dest/archiver/kv_archiver_store/message_store.d.ts +6 -6
  34. package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
  35. package/dest/archiver/kv_archiver_store/message_store.js +16 -16
  36. package/dest/archiver/kv_archiver_store/nullifier_store.d.ts +2 -2
  37. package/dest/archiver/kv_archiver_store/nullifier_store.d.ts.map +1 -1
  38. package/dest/archiver/kv_archiver_store/nullifier_store.js +31 -22
  39. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +9 -9
  40. package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -1
  41. package/dest/archiver/memory_archiver_store/memory_archiver_store.js +72 -71
  42. package/dest/factory.js +8 -8
  43. package/dest/rpc/index.d.ts +1 -1
  44. package/dest/rpc/index.d.ts.map +1 -1
  45. package/dest/rpc/index.js +5 -5
  46. package/dest/test/mock_archiver.d.ts +1 -1
  47. package/dest/test/mock_archiver.d.ts.map +1 -1
  48. package/dest/test/mock_archiver.js +2 -1
  49. package/dest/test/mock_l2_block_source.d.ts +3 -3
  50. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  51. package/dest/test/mock_l2_block_source.js +14 -11
  52. package/package.json +13 -13
  53. package/src/archiver/archiver.ts +46 -25
  54. package/src/archiver/archiver_store.ts +6 -5
  55. package/src/archiver/archiver_store_test_suite.ts +113 -77
  56. package/src/archiver/config.ts +6 -6
  57. package/src/archiver/data_retrieval.ts +94 -12
  58. package/src/archiver/errors.ts +5 -0
  59. package/src/archiver/kv_archiver_store/block_store.ts +66 -67
  60. package/src/archiver/kv_archiver_store/contract_class_store.ts +17 -15
  61. package/src/archiver/kv_archiver_store/contract_instance_store.ts +5 -5
  62. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +48 -66
  63. package/src/archiver/kv_archiver_store/log_store.ts +167 -112
  64. package/src/archiver/kv_archiver_store/message_store.ts +22 -22
  65. package/src/archiver/kv_archiver_store/nullifier_store.ts +48 -30
  66. package/src/archiver/memory_archiver_store/memory_archiver_store.ts +100 -96
  67. package/src/factory.ts +11 -9
  68. package/src/rpc/index.ts +4 -4
  69. package/src/test/mock_archiver.ts +1 -0
  70. package/src/test/mock_l2_block_source.ts +20 -18
@@ -1,5 +1,6 @@
1
1
  import {
2
- type GetUnencryptedLogsResponse,
2
+ type GetContractClassLogsResponse,
3
+ type GetPublicLogsResponse,
3
4
  type InBlock,
4
5
  type InboxLeaf,
5
6
  type L2Block,
@@ -19,8 +20,9 @@ import {
19
20
  } from '@aztec/circuits.js';
20
21
  import { FunctionSelector } from '@aztec/foundation/abi';
21
22
  import { type AztecAddress } from '@aztec/foundation/aztec-address';
23
+ import { toArray } from '@aztec/foundation/iterable';
22
24
  import { createLogger } from '@aztec/foundation/log';
23
- import { type AztecKVStore } from '@aztec/kv-store';
25
+ import { type AztecAsyncKVStore, type StoreSize } from '@aztec/kv-store';
24
26
 
25
27
  import { type ArchiverDataStore, type ArchiverL1SynchPoint } from '../archiver_store.js';
26
28
  import { type DataRetrieval } from '../structs/data_retrieval.js';
@@ -46,7 +48,7 @@ export class KVArchiverDataStore implements ArchiverDataStore {
46
48
 
47
49
  #log = createLogger('archiver:data-store');
48
50
 
49
- constructor(private db: AztecKVStore, logsMaxPageSize: number = 1000) {
51
+ constructor(private db: AztecAsyncKVStore, logsMaxPageSize: number = 1000) {
50
52
  this.#blockStore = new BlockStore(db);
51
53
  this.#logStore = new LogStore(db, this.#blockStore, logsMaxPageSize);
52
54
  this.#messageStore = new MessageStore(db);
@@ -62,30 +64,28 @@ export class KVArchiverDataStore implements ArchiverDataStore {
62
64
  return Promise.resolve(this.functionNames.get(selector.toString()));
63
65
  }
64
66
 
65
- registerContractFunctionSignatures(_address: AztecAddress, signatures: string[]): Promise<void> {
67
+ async registerContractFunctionSignatures(_address: AztecAddress, signatures: string[]): Promise<void> {
66
68
  for (const sig of signatures) {
67
69
  try {
68
- const selector = FunctionSelector.fromSignature(sig);
70
+ const selector = await FunctionSelector.fromSignature(sig);
69
71
  this.functionNames.set(selector.toString(), sig.slice(0, sig.indexOf('(')));
70
72
  } catch {
71
73
  this.#log.warn(`Failed to parse signature: ${sig}. Ignoring`);
72
74
  }
73
75
  }
74
-
75
- return Promise.resolve();
76
76
  }
77
77
 
78
78
  getContractClass(id: Fr): Promise<ContractClassPublic | undefined> {
79
- return Promise.resolve(this.#contractClassStore.getContractClass(id));
79
+ return this.#contractClassStore.getContractClass(id);
80
80
  }
81
81
 
82
82
  getContractClassIds(): Promise<Fr[]> {
83
- return Promise.resolve(this.#contractClassStore.getContractClassIds());
83
+ return this.#contractClassStore.getContractClassIds();
84
84
  }
85
85
 
86
86
  getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
87
87
  const contract = this.#contractInstanceStore.getContractInstance(address);
88
- return Promise.resolve(contract);
88
+ return contract;
89
89
  }
90
90
 
91
91
  async addContractClasses(
@@ -107,7 +107,7 @@ export class KVArchiverDataStore implements ArchiverDataStore {
107
107
  }
108
108
 
109
109
  getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined> {
110
- return Promise.resolve(this.#contractClassStore.getBytecodeCommitment(contractClassId));
110
+ return this.#contractClassStore.getBytecodeCommitment(contractClassId);
111
111
  }
112
112
 
113
113
  addFunctions(
@@ -154,12 +154,7 @@ export class KVArchiverDataStore implements ArchiverDataStore {
154
154
  * @returns The requested L2 blocks
155
155
  */
156
156
  getBlocks(start: number, limit: number): Promise<L1Published<L2Block>[]> {
157
- try {
158
- return Promise.resolve(Array.from(this.#blockStore.getBlocks(start, limit)));
159
- } catch (err) {
160
- // this function is sync so if any errors are thrown we need to make sure they're passed on as rejected Promises
161
- return Promise.reject(err);
162
- }
157
+ return toArray(this.#blockStore.getBlocks(start, limit));
163
158
  }
164
159
 
165
160
  /**
@@ -170,12 +165,7 @@ export class KVArchiverDataStore implements ArchiverDataStore {
170
165
  * @returns The requested L2 blocks
171
166
  */
172
167
  getBlockHeaders(start: number, limit: number): Promise<BlockHeader[]> {
173
- try {
174
- return Promise.resolve(Array.from(this.#blockStore.getBlockHeaders(start, limit)));
175
- } catch (err) {
176
- // this function is sync so if any errors are thrown we need to make sure they're passed on as rejected Promises
177
- return Promise.reject(err);
178
- }
168
+ return toArray(this.#blockStore.getBlockHeaders(start, limit));
179
169
  }
180
170
 
181
171
  /**
@@ -184,7 +174,7 @@ export class KVArchiverDataStore implements ArchiverDataStore {
184
174
  * @returns The requested tx effect (or undefined if not found).
185
175
  */
186
176
  getTxEffect(txHash: TxHash) {
187
- return Promise.resolve(this.#blockStore.getTxEffect(txHash));
177
+ return this.#blockStore.getTxEffect(txHash);
188
178
  }
189
179
 
190
180
  /**
@@ -193,7 +183,7 @@ export class KVArchiverDataStore implements ArchiverDataStore {
193
183
  * @returns The requested tx receipt (or undefined if not found).
194
184
  */
195
185
  getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined> {
196
- return Promise.resolve(this.#blockStore.getSettledTxReceipt(txHash));
186
+ return this.#blockStore.getSettledTxReceipt(txHash);
197
187
  }
198
188
 
199
189
  /**
@@ -227,7 +217,7 @@ export class KVArchiverDataStore implements ArchiverDataStore {
227
217
  }
228
218
 
229
219
  getTotalL1ToL2MessageCount(): Promise<bigint> {
230
- return Promise.resolve(this.#messageStore.getTotalL1ToL2MessageCount());
220
+ return this.#messageStore.getTotalL1ToL2MessageCount();
231
221
  }
232
222
 
233
223
  /**
@@ -236,7 +226,7 @@ export class KVArchiverDataStore implements ArchiverDataStore {
236
226
  * @returns True if the operation is successful.
237
227
  */
238
228
  addL1ToL2Messages(messages: DataRetrieval<InboxLeaf>): Promise<boolean> {
239
- return Promise.resolve(this.#messageStore.addL1ToL2Messages(messages));
229
+ return this.#messageStore.addL1ToL2Messages(messages);
240
230
  }
241
231
 
242
232
  /**
@@ -245,7 +235,7 @@ export class KVArchiverDataStore implements ArchiverDataStore {
245
235
  * @returns The index of the L1 to L2 message in the L1 to L2 message tree (undefined if not found).
246
236
  */
247
237
  getL1ToL2MessageIndex(l1ToL2Message: Fr): Promise<bigint | undefined> {
248
- return Promise.resolve(this.#messageStore.getL1ToL2MessageIndex(l1ToL2Message));
238
+ return this.#messageStore.getL1ToL2MessageIndex(l1ToL2Message);
249
239
  }
250
240
 
251
241
  /**
@@ -254,11 +244,7 @@ export class KVArchiverDataStore implements ArchiverDataStore {
254
244
  * @returns The L1 to L2 messages/leaves of the messages subtree (throws if not found).
255
245
  */
256
246
  getL1ToL2Messages(blockNumber: bigint): Promise<Fr[]> {
257
- try {
258
- return Promise.resolve(this.#messageStore.getL1ToL2Messages(blockNumber));
259
- } catch (err) {
260
- return Promise.reject(err);
261
- }
247
+ return this.#messageStore.getL1ToL2Messages(blockNumber);
262
248
  }
263
249
 
264
250
  /**
@@ -268,11 +254,7 @@ export class KVArchiverDataStore implements ArchiverDataStore {
268
254
  * @returns An array of private logs from the specified range of blocks.
269
255
  */
270
256
  getPrivateLogs(from: number, limit: number): Promise<PrivateLog[]> {
271
- try {
272
- return Promise.resolve(Array.from(this.#logStore.getPrivateLogs(from, limit)));
273
- } catch (err) {
274
- return Promise.reject(err);
275
- }
257
+ return this.#logStore.getPrivateLogs(from, limit);
276
258
  }
277
259
 
278
260
  /**
@@ -290,13 +272,13 @@ export class KVArchiverDataStore implements ArchiverDataStore {
290
272
  }
291
273
 
292
274
  /**
293
- * Gets unencrypted logs based on the provided filter.
275
+ * Gets public logs based on the provided filter.
294
276
  * @param filter - The filter to apply to the logs.
295
277
  * @returns The requested logs.
296
278
  */
297
- getUnencryptedLogs(filter: LogFilter): Promise<GetUnencryptedLogsResponse> {
279
+ getPublicLogs(filter: LogFilter): Promise<GetPublicLogsResponse> {
298
280
  try {
299
- return Promise.resolve(this.#logStore.getUnencryptedLogs(filter));
281
+ return this.#logStore.getPublicLogs(filter);
300
282
  } catch (err) {
301
283
  return Promise.reject(err);
302
284
  }
@@ -307,9 +289,9 @@ export class KVArchiverDataStore implements ArchiverDataStore {
307
289
  * @param filter - The filter to apply to the logs.
308
290
  * @returns The requested logs.
309
291
  */
310
- getContractClassLogs(filter: LogFilter): Promise<GetUnencryptedLogsResponse> {
292
+ getContractClassLogs(filter: LogFilter): Promise<GetContractClassLogsResponse> {
311
293
  try {
312
- return Promise.resolve(this.#logStore.getContractClassLogs(filter));
294
+ return this.#logStore.getContractClassLogs(filter);
313
295
  } catch (err) {
314
296
  return Promise.reject(err);
315
297
  }
@@ -320,48 +302,48 @@ export class KVArchiverDataStore implements ArchiverDataStore {
320
302
  * @returns The number of the latest L2 block processed.
321
303
  */
322
304
  getSynchedL2BlockNumber(): Promise<number> {
323
- return Promise.resolve(this.#blockStore.getSynchedL2BlockNumber());
305
+ return this.#blockStore.getSynchedL2BlockNumber();
324
306
  }
325
307
 
326
308
  getProvenL2BlockNumber(): Promise<number> {
327
- return Promise.resolve(this.#blockStore.getProvenL2BlockNumber());
309
+ return this.#blockStore.getProvenL2BlockNumber();
328
310
  }
329
311
 
330
312
  getProvenL2EpochNumber(): Promise<number | undefined> {
331
- return Promise.resolve(this.#blockStore.getProvenL2EpochNumber());
313
+ return this.#blockStore.getProvenL2EpochNumber();
332
314
  }
333
315
 
334
- setProvenL2BlockNumber(blockNumber: number) {
335
- this.#blockStore.setProvenL2BlockNumber(blockNumber);
336
- return Promise.resolve();
316
+ async setProvenL2BlockNumber(blockNumber: number) {
317
+ await this.#blockStore.setProvenL2BlockNumber(blockNumber);
337
318
  }
338
319
 
339
- setProvenL2EpochNumber(epochNumber: number) {
340
- this.#blockStore.setProvenL2EpochNumber(epochNumber);
341
- return Promise.resolve();
320
+ async setProvenL2EpochNumber(epochNumber: number) {
321
+ await this.#blockStore.setProvenL2EpochNumber(epochNumber);
342
322
  }
343
323
 
344
- setBlockSynchedL1BlockNumber(l1BlockNumber: bigint) {
345
- this.#blockStore.setSynchedL1BlockNumber(l1BlockNumber);
346
- return Promise.resolve();
324
+ async setBlockSynchedL1BlockNumber(l1BlockNumber: bigint) {
325
+ await this.#blockStore.setSynchedL1BlockNumber(l1BlockNumber);
347
326
  }
348
327
 
349
- setMessageSynchedL1BlockNumber(l1BlockNumber: bigint) {
350
- this.#messageStore.setSynchedL1BlockNumber(l1BlockNumber);
351
- return Promise.resolve();
328
+ async setMessageSynchedL1BlockNumber(l1BlockNumber: bigint) {
329
+ await this.#messageStore.setSynchedL1BlockNumber(l1BlockNumber);
352
330
  }
353
331
 
354
332
  /**
355
333
  * Gets the last L1 block number processed by the archiver
356
334
  */
357
- getSynchPoint(): Promise<ArchiverL1SynchPoint> {
358
- return Promise.resolve({
359
- blocksSynchedTo: this.#blockStore.getSynchedL1BlockNumber(),
360
- messagesSynchedTo: this.#messageStore.getSynchedL1BlockNumber(),
361
- });
362
- }
363
-
364
- public estimateSize(): { mappingSize: number; actualSize: number; numItems: number } {
335
+ async getSynchPoint(): Promise<ArchiverL1SynchPoint> {
336
+ const [blocksSynchedTo, messagesSynchedTo] = await Promise.all([
337
+ this.#blockStore.getSynchedL1BlockNumber(),
338
+ this.#messageStore.getSynchedL1BlockNumber(),
339
+ ]);
340
+ return {
341
+ blocksSynchedTo,
342
+ messagesSynchedTo,
343
+ };
344
+ }
345
+
346
+ public estimateSize(): Promise<StoreSize> {
365
347
  return this.db.estimateSize();
366
348
  }
367
349
  }