@aztec/archiver 3.0.0-rc.5 → 4.0.0-nightly.20260107

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 (55) hide show
  1. package/dest/archiver/archiver.d.ts +69 -49
  2. package/dest/archiver/archiver.d.ts.map +1 -1
  3. package/dest/archiver/archiver.js +777 -214
  4. package/dest/archiver/archiver_store.d.ts +89 -30
  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 +1785 -288
  9. package/dest/archiver/config.d.ts +3 -3
  10. package/dest/archiver/config.d.ts.map +1 -1
  11. package/dest/archiver/config.js +2 -2
  12. package/dest/archiver/errors.d.ts +25 -1
  13. package/dest/archiver/errors.d.ts.map +1 -1
  14. package/dest/archiver/errors.js +37 -0
  15. package/dest/archiver/index.d.ts +2 -2
  16. package/dest/archiver/index.d.ts.map +1 -1
  17. package/dest/archiver/kv_archiver_store/block_store.d.ts +49 -17
  18. package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
  19. package/dest/archiver/kv_archiver_store/block_store.js +320 -84
  20. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +33 -37
  21. package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
  22. package/dest/archiver/kv_archiver_store/kv_archiver_store.js +60 -35
  23. package/dest/archiver/kv_archiver_store/log_store.d.ts +14 -11
  24. package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
  25. package/dest/archiver/kv_archiver_store/log_store.js +149 -62
  26. package/dest/archiver/l1/bin/retrieve-calldata.js +5 -3
  27. package/dest/archiver/l1/calldata_retriever.d.ts +17 -3
  28. package/dest/archiver/l1/calldata_retriever.d.ts.map +1 -1
  29. package/dest/archiver/l1/calldata_retriever.js +75 -7
  30. package/dest/archiver/l1/data_retrieval.d.ts +13 -10
  31. package/dest/archiver/l1/data_retrieval.d.ts.map +1 -1
  32. package/dest/archiver/l1/data_retrieval.js +31 -18
  33. package/dest/archiver/structs/published.d.ts +1 -2
  34. package/dest/archiver/structs/published.d.ts.map +1 -1
  35. package/dest/factory.d.ts +1 -1
  36. package/dest/factory.js +1 -1
  37. package/dest/test/mock_l2_block_source.d.ts +10 -3
  38. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  39. package/dest/test/mock_l2_block_source.js +16 -15
  40. package/package.json +13 -13
  41. package/src/archiver/archiver.ts +509 -260
  42. package/src/archiver/archiver_store.ts +99 -29
  43. package/src/archiver/archiver_store_test_suite.ts +1831 -274
  44. package/src/archiver/config.ts +7 -3
  45. package/src/archiver/errors.ts +64 -0
  46. package/src/archiver/index.ts +1 -1
  47. package/src/archiver/kv_archiver_store/block_store.ts +434 -94
  48. package/src/archiver/kv_archiver_store/kv_archiver_store.ts +74 -49
  49. package/src/archiver/kv_archiver_store/log_store.ts +213 -77
  50. package/src/archiver/l1/bin/retrieve-calldata.ts +3 -3
  51. package/src/archiver/l1/calldata_retriever.ts +116 -6
  52. package/src/archiver/l1/data_retrieval.ts +41 -20
  53. package/src/archiver/structs/published.ts +0 -1
  54. package/src/factory.ts +1 -1
  55. package/src/test/mock_l2_block_source.ts +20 -16
@@ -4,7 +4,8 @@ import type { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import type { CustomRange } from '@aztec/kv-store';
5
5
  import type { FunctionSelector } from '@aztec/stdlib/abi';
6
6
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
7
- import type { L2Block, ValidateBlockResult } from '@aztec/stdlib/block';
7
+ import type { CheckpointedL2Block, L2BlockNew, ValidateBlockResult } from '@aztec/stdlib/block';
8
+ import type { PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
8
9
  import type {
9
10
  ContractClassPublic,
10
11
  ContractInstanceUpdateWithAddress,
@@ -13,18 +14,18 @@ import type {
13
14
  UtilityFunctionWithMembershipProof,
14
15
  } from '@aztec/stdlib/contract';
15
16
  import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
16
- import type { LogFilter, TxScopedL2Log } from '@aztec/stdlib/logs';
17
+ import type { LogFilter, SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
17
18
  import { BlockHeader, type IndexedTxEffect, type TxHash, type TxReceipt } from '@aztec/stdlib/tx';
18
19
  import type { UInt64 } from '@aztec/stdlib/types';
19
20
 
21
+ import type { CheckpointData } from './kv_archiver_store/block_store.js';
20
22
  import type { InboxMessage } from './structs/inbox_message.js';
21
- import type { PublishedL2Block } from './structs/published.js';
22
23
 
23
24
  /**
24
25
  * Represents the latest L1 block processed by the archiver for various objects in L2.
25
26
  */
26
27
  export type ArchiverL1SynchPoint = {
27
- /** Number of the last L1 block that added a new L2 block metadata. */
28
+ /** Number of the last L1 block that added a new L2 checkpoint metadata. */
28
29
  blocksSynchedTo?: bigint;
29
30
  /** Last L1 block checked for L1 to L2 messages. */
30
31
  messagesSynchedTo?: L1BlockId;
@@ -45,34 +46,87 @@ export interface ArchiverDataStore {
45
46
  * @param opts.force - If true, the blocks will be added even if they have gaps.
46
47
  * @returns True if the operation is successful.
47
48
  */
48
- addBlocks(blocks: PublishedL2Block[], opts?: { force?: boolean }): Promise<boolean>;
49
+ addBlocks(blocks: L2BlockNew[], opts?: { force?: boolean }): Promise<boolean>;
49
50
 
50
51
  /**
51
- * Unwinds blocks from the database
52
+ * Appends new checkpoints, and their blocks to the store's collection
53
+ * @param checkpoints The collectionn of checkpoints to be added
54
+ * @returns True if the operation is successful
55
+ */
56
+ addCheckpoints(checkpoints: PublishedCheckpoint[]): Promise<boolean>;
57
+
58
+ /**
59
+ * Retrieves all blocks for the requested chackpoint
60
+ * @param checkpointNumber Retreieves all blocks for the given checkpoint
61
+ * @returns The collection of blocks for the requested checkpoint if available (undefined otherwise)
62
+ */
63
+ getBlocksForCheckpoint(checkpointNumber: CheckpointNumber): Promise<L2BlockNew[] | undefined>;
64
+
65
+ /**
66
+ * Returns an array of checkpoint objects
67
+ * @param from The first checkpoint number to be retrieved
68
+ * @param limit The maximum number of chackpoints to retrieve
69
+ * @returns The array of requested checkpoint data objects
70
+ */
71
+ getRangeOfCheckpoints(from: CheckpointNumber, limit: number): Promise<CheckpointData[]>;
72
+
73
+ /**
74
+ * Unwinds checkpoints from the database
52
75
  * @param from - The tip of the chain, passed for verification purposes,
53
76
  * ensuring that we don't end up deleting something we did not intend
54
- * @param blocksToUnwind - The number of blocks we are to unwind
77
+ * @param checkpointsToUnwind - The number of checkpoints we are to unwind
55
78
  * @returns True if the operation is successful
56
79
  */
57
- unwindBlocks(from: BlockNumber, blocksToUnwind: number): Promise<boolean>;
80
+ unwindCheckpoints(from: CheckpointNumber, checkpointsToUnwind: number): Promise<boolean>;
58
81
 
59
82
  /**
60
83
  * Returns the block for the given number, or undefined if not exists.
61
84
  * @param number - The block number to return.
62
85
  */
63
- getPublishedBlock(number: BlockNumber): Promise<PublishedL2Block | undefined>;
86
+ getCheckpointedBlock(number: number): Promise<CheckpointedL2Block | undefined>;
64
87
 
65
88
  /**
66
89
  * Returns the block for the given hash, or undefined if not exists.
67
90
  * @param blockHash - The block hash to return.
68
91
  */
69
- getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
92
+ getCheckpointedBlockByHash(blockHash: Fr): Promise<CheckpointedL2Block | undefined>;
70
93
 
71
94
  /**
72
95
  * Returns the block for the given archive root, or undefined if not exists.
73
96
  * @param archive - The archive root to return.
74
97
  */
75
- getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
98
+ getCheckpointedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined>;
99
+
100
+ /**
101
+ * Returns checkpoint data for the requested checkpoint number
102
+ * @param checkpointNumber - The checkpoint requested
103
+ * @returns The checkpoint data or undefined if not found
104
+ */
105
+ getCheckpointData(checkpointNumber: CheckpointNumber): Promise<CheckpointData | undefined>;
106
+
107
+ /**
108
+ * Returns the number of the latest block
109
+ * @returns The number of the latest block
110
+ */
111
+ getLatestBlockNumber(): Promise<BlockNumber>;
112
+
113
+ /**
114
+ * Returns the block for the given number, or undefined if not exists.
115
+ * @param number - The block number to return.
116
+ */
117
+ getBlock(number: number): Promise<L2BlockNew | undefined>;
118
+
119
+ /**
120
+ * Returns the block for the given hash, or undefined if not exists.
121
+ * @param blockHash - The block hash to return.
122
+ */
123
+ getBlockByHash(blockHash: Fr): Promise<L2BlockNew | undefined>;
124
+
125
+ /**
126
+ * Returns the block for the given archive root, or undefined if not exists.
127
+ * @param archive - The archive root to return.
128
+ */
129
+ getBlockByArchive(archive: Fr): Promise<L2BlockNew | undefined>;
76
130
 
77
131
  /**
78
132
  * Gets up to `limit` amount of published L2 blocks starting from `from`.
@@ -80,7 +134,7 @@ export interface ArchiverDataStore {
80
134
  * @param limit - The number of blocks to return.
81
135
  * @returns The requested L2 blocks.
82
136
  */
83
- getPublishedBlocks(from: BlockNumber, limit: number): Promise<PublishedL2Block[]>;
137
+ getBlocks(from: number, limit: number): Promise<L2BlockNew[]>;
84
138
 
85
139
  /**
86
140
  * Gets up to `limit` amount of L2 block headers starting from `from`.
@@ -121,8 +175,8 @@ export interface ArchiverDataStore {
121
175
  * @param blocks - The blocks for which to add the logs.
122
176
  * @returns True if the operation is successful.
123
177
  */
124
- addLogs(blocks: L2Block[]): Promise<boolean>;
125
- deleteLogs(blocks: L2Block[]): Promise<boolean>;
178
+ addLogs(blocks: L2BlockNew[]): Promise<boolean>;
179
+ deleteLogs(blocks: L2BlockNew[]): Promise<boolean>;
126
180
 
127
181
  /**
128
182
  * Append L1 to L2 messages to the store.
@@ -152,13 +206,17 @@ export interface ArchiverDataStore {
152
206
  getTotalL1ToL2MessageCount(): Promise<bigint>;
153
207
 
154
208
  /**
155
- * Gets all logs that match any of the received tags (i.e. logs with their first field equal to a tag).
156
- * @param tags - The tags to filter the logs by.
157
- * @param logsPerTag - The number of logs to return per tag. Defaults to everything
158
- * @returns For each received tag, an array of matching logs is returned. An empty array implies no logs match
159
- * that tag.
209
+ /**
210
+ * Gets all private logs that match any of the `tags`. For each tag, an array of matching logs is returned. An empty
211
+ * array implies no logs match that tag.
160
212
  */
161
- getLogsByTags(tags: Fr[], logsPerTag?: number): Promise<TxScopedL2Log[][]>;
213
+ getPrivateLogsByTags(tags: SiloedTag[]): Promise<TxScopedL2Log[][]>;
214
+
215
+ /**
216
+ * Gets all public logs that match any of the `tags` from the specified contract. For each tag, an array of matching
217
+ * logs is returned. An empty array implies no logs match that tag.
218
+ */
219
+ getPublicLogsByTagsFromContract(contractAddress: AztecAddress, tags: Tag[]): Promise<TxScopedL2Log[][]>;
162
220
 
163
221
  /**
164
222
  * Gets public logs based on the provided filter.
@@ -178,25 +236,37 @@ export interface ArchiverDataStore {
178
236
  * Gets the number of the latest L2 block processed.
179
237
  * @returns The number of the latest L2 block processed.
180
238
  */
181
- getSynchedL2BlockNumber(): Promise<BlockNumber>;
239
+ getCheckpointedL2BlockNumber(): Promise<BlockNumber>;
240
+
241
+ /**
242
+ * Gets the number of the latest published checkpoint processed.
243
+ * @returns The number of the latest published checkpoint processed
244
+ */
245
+ getSynchedCheckpointNumber(): Promise<CheckpointNumber>;
246
+
247
+ /**
248
+ * Gets the number of the latest proven checkpoint processed.
249
+ * @returns The number of the latest proven checkpoint processed.
250
+ */
251
+ getProvenCheckpointNumber(): Promise<CheckpointNumber>;
182
252
 
183
253
  /**
184
- * Gets the number of the latest proven L2 block processed.
185
- * @returns The number of the latest proven L2 block processed.
254
+ * Returns the number of the most recent proven block
255
+ * @returns The number of the most recent proven block
186
256
  */
187
- getProvenL2BlockNumber(): Promise<BlockNumber>;
257
+ getProvenBlockNumber(): Promise<BlockNumber>;
188
258
 
189
259
  /**
190
- * Stores the number of the latest proven L2 block processed.
191
- * @param l2BlockNumber - The number of the latest proven L2 block processed.
260
+ * Stores the number of the latest proven checkpoint processed.
261
+ * @param checkpointNumber - The number of the latest proven checkpoint processed.
192
262
  */
193
- setProvenL2BlockNumber(l2BlockNumber: BlockNumber): Promise<void>;
263
+ setProvenCheckpointNumber(checkpointNumber: CheckpointNumber): Promise<void>;
194
264
 
195
265
  /**
196
- * Stores the l1 block number that blocks have been synched until
266
+ * Stores the l1 block number that checkpoints have been synched until
197
267
  * @param l1BlockNumber - The l1 block number
198
268
  */
199
- setBlockSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<void>;
269
+ setCheckpointSynchedL1BlockNumber(l1BlockNumber: bigint): Promise<void>;
200
270
 
201
271
  /**
202
272
  * Stores the l1 block that messages have been synched until