@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.
- package/dest/archiver/archiver.d.ts +6 -6
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +35 -20
- package/dest/archiver/archiver_store.d.ts +6 -6
- package/dest/archiver/archiver_store.d.ts.map +1 -1
- 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 +103 -65
- package/dest/archiver/config.d.ts +2 -2
- package/dest/archiver/config.d.ts.map +1 -1
- package/dest/archiver/config.js +5 -5
- package/dest/archiver/data_retrieval.d.ts +3 -2
- package/dest/archiver/data_retrieval.d.ts.map +1 -1
- package/dest/archiver/data_retrieval.js +69 -16
- package/dest/archiver/errors.d.ts +4 -0
- package/dest/archiver/errors.d.ts.map +1 -0
- package/dest/archiver/errors.js +6 -0
- package/dest/archiver/kv_archiver_store/block_store.d.ts +16 -16
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +53 -53
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +5 -5
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.js +13 -12
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +3 -3
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_instance_store.js +3 -3
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +7 -11
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +41 -63
- package/dest/archiver/kv_archiver_store/log_store.d.ts +8 -8
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.js +122 -89
- package/dest/archiver/kv_archiver_store/message_store.d.ts +6 -6
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/message_store.js +16 -16
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/nullifier_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/nullifier_store.js +31 -22
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts +9 -9
- package/dest/archiver/memory_archiver_store/memory_archiver_store.d.ts.map +1 -1
- package/dest/archiver/memory_archiver_store/memory_archiver_store.js +72 -71
- package/dest/factory.js +8 -8
- package/dest/rpc/index.d.ts +1 -1
- package/dest/rpc/index.d.ts.map +1 -1
- package/dest/rpc/index.js +5 -5
- package/dest/test/mock_archiver.d.ts +1 -1
- package/dest/test/mock_archiver.d.ts.map +1 -1
- package/dest/test/mock_archiver.js +2 -1
- package/dest/test/mock_l2_block_source.d.ts +3 -3
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +14 -11
- package/package.json +13 -13
- package/src/archiver/archiver.ts +46 -25
- package/src/archiver/archiver_store.ts +6 -5
- package/src/archiver/archiver_store_test_suite.ts +113 -77
- package/src/archiver/config.ts +6 -6
- package/src/archiver/data_retrieval.ts +94 -12
- package/src/archiver/errors.ts +5 -0
- package/src/archiver/kv_archiver_store/block_store.ts +66 -67
- package/src/archiver/kv_archiver_store/contract_class_store.ts +17 -15
- package/src/archiver/kv_archiver_store/contract_instance_store.ts +5 -5
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +48 -66
- package/src/archiver/kv_archiver_store/log_store.ts +167 -112
- package/src/archiver/kv_archiver_store/message_store.ts +22 -22
- package/src/archiver/kv_archiver_store/nullifier_store.ts +48 -30
- package/src/archiver/memory_archiver_store/memory_archiver_store.ts +100 -96
- package/src/factory.ts +11 -9
- package/src/rpc/index.ts +4 -4
- package/src/test/mock_archiver.ts +1 -0
- package/src/test/mock_l2_block_source.ts +20 -18
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
-
type
|
|
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
|
|
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:
|
|
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
|
|
79
|
+
return this.#contractClassStore.getContractClass(id);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
getContractClassIds(): Promise<Fr[]> {
|
|
83
|
-
return
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
279
|
+
getPublicLogs(filter: LogFilter): Promise<GetPublicLogsResponse> {
|
|
298
280
|
try {
|
|
299
|
-
return
|
|
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<
|
|
292
|
+
getContractClassLogs(filter: LogFilter): Promise<GetContractClassLogsResponse> {
|
|
311
293
|
try {
|
|
312
|
-
return
|
|
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
|
|
305
|
+
return this.#blockStore.getSynchedL2BlockNumber();
|
|
324
306
|
}
|
|
325
307
|
|
|
326
308
|
getProvenL2BlockNumber(): Promise<number> {
|
|
327
|
-
return
|
|
309
|
+
return this.#blockStore.getProvenL2BlockNumber();
|
|
328
310
|
}
|
|
329
311
|
|
|
330
312
|
getProvenL2EpochNumber(): Promise<number | undefined> {
|
|
331
|
-
return
|
|
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
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
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
|
}
|