@aztec/archiver 0.7.10 → 0.8.6

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 (34) hide show
  1. package/dest/archiver/archiver.d.ts +4 -1
  2. package/dest/archiver/archiver.d.ts.map +1 -1
  3. package/dest/archiver/archiver.js +38 -7
  4. package/dest/archiver/config.d.ts +10 -2
  5. package/dest/archiver/config.d.ts.map +1 -1
  6. package/dest/archiver/config.js +15 -7
  7. package/dest/archiver/data_retrieval.d.ts +8 -8
  8. package/dest/archiver/data_retrieval.d.ts.map +1 -1
  9. package/dest/archiver/data_retrieval.js +21 -21
  10. package/dest/archiver/eth_log_handlers.d.ts +8 -4
  11. package/dest/archiver/eth_log_handlers.d.ts.map +1 -1
  12. package/dest/archiver/eth_log_handlers.js +13 -5
  13. package/dest/index.js +3 -3
  14. package/package.json +60 -7
  15. package/src/archiver/archiver.ts +41 -7
  16. package/src/archiver/config.ts +27 -7
  17. package/src/archiver/data_retrieval.ts +30 -18
  18. package/src/archiver/eth_log_handlers.ts +12 -0
  19. package/src/index.ts +5 -4
  20. package/.eslintrc.cjs +0 -1
  21. package/.tsbuildinfo +0 -1
  22. package/dest/archiver/archiver.test.d.ts +0 -2
  23. package/dest/archiver/archiver.test.d.ts.map +0 -1
  24. package/dest/archiver/archiver.test.js +0 -184
  25. package/dest/archiver/archiver_store.test.d.ts +0 -2
  26. package/dest/archiver/archiver_store.test.d.ts.map +0 -1
  27. package/dest/archiver/archiver_store.test.js +0 -61
  28. package/dest/archiver/l1_to_l2_message_store.test.d.ts +0 -2
  29. package/dest/archiver/l1_to_l2_message_store.test.d.ts.map +0 -1
  30. package/dest/archiver/l1_to_l2_message_store.test.js +0 -77
  31. package/src/archiver/archiver.test.ts +0 -223
  32. package/src/archiver/archiver_store.test.ts +0 -74
  33. package/src/archiver/l1_to_l2_message_store.test.ts +0 -98
  34. package/tsconfig.json +0 -26
@@ -79,9 +79,10 @@ async function getBlockFromCallData(publicClient, txHash, l2BlockNum) {
79
79
  * @param publicClient - The viem public client to use for transaction retrieval.
80
80
  * @param rollupAddress - The address of the rollup contract.
81
81
  * @param fromBlock - First block to get logs from (inclusive).
82
+ * @param toBlock - Last block to get logs from (inclusive).
82
83
  * @returns An array of `L2BlockProcessed` logs.
83
84
  */
84
- export async function getL2BlockProcessedLogs(publicClient, rollupAddress, fromBlock) {
85
+ export async function getL2BlockProcessedLogs(publicClient, rollupAddress, fromBlock, toBlock) {
85
86
  // Note: For some reason the return type of `getLogs` would not get correctly derived if I didn't set the abiItem
86
87
  // as a standalone constant.
87
88
  const abiItem = getAbiItem({
@@ -92,6 +93,7 @@ export async function getL2BlockProcessedLogs(publicClient, rollupAddress, fromB
92
93
  address: getAddress(rollupAddress.toString()),
93
94
  event: abiItem,
94
95
  fromBlock,
96
+ toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
95
97
  });
96
98
  }
97
99
  /**
@@ -99,9 +101,10 @@ export async function getL2BlockProcessedLogs(publicClient, rollupAddress, fromB
99
101
  * @param publicClient - The viem public client to use for transaction retrieval.
100
102
  * @param contractDeploymentEmitterAddress - The address of the L2 contract deployment emitter contract.
101
103
  * @param fromBlock - First block to get logs from (inclusive).
104
+ * @param toBlock - Last block to get logs from (inclusive).
102
105
  * @returns An array of `ContractDeployment` logs.
103
106
  */
104
- export async function getContractDeploymentLogs(publicClient, contractDeploymentEmitterAddress, fromBlock) {
107
+ export async function getContractDeploymentLogs(publicClient, contractDeploymentEmitterAddress, fromBlock, toBlock) {
105
108
  const abiItem = getAbiItem({
106
109
  abi: ContractDeploymentEmitterAbi,
107
110
  name: 'ContractDeployment',
@@ -110,6 +113,7 @@ export async function getContractDeploymentLogs(publicClient, contractDeployment
110
113
  address: getAddress(contractDeploymentEmitterAddress.toString()),
111
114
  event: abiItem,
112
115
  fromBlock,
116
+ toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
113
117
  });
114
118
  }
115
119
  /**
@@ -146,9 +150,10 @@ export function processContractDeploymentLogs(blockHashMapping, logs) {
146
150
  * @param publicClient - The viem public client to use for transaction retrieval.
147
151
  * @param inboxAddress - The address of the inbox contract.
148
152
  * @param fromBlock - First block to get logs from (inclusive).
153
+ * @param toBlock - Last block to get logs from (inclusive).
149
154
  * @returns An array of `MessageAdded` logs.
150
155
  */
151
- export async function getPendingL1ToL2MessageLogs(publicClient, inboxAddress, fromBlock) {
156
+ export async function getPendingL1ToL2MessageLogs(publicClient, inboxAddress, fromBlock, toBlock) {
152
157
  const abiItem = getAbiItem({
153
158
  abi: InboxAbi,
154
159
  name: 'MessageAdded',
@@ -157,6 +162,7 @@ export async function getPendingL1ToL2MessageLogs(publicClient, inboxAddress, fr
157
162
  address: getAddress(inboxAddress.toString()),
158
163
  event: abiItem,
159
164
  fromBlock,
165
+ toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
160
166
  });
161
167
  }
162
168
  /**
@@ -164,9 +170,10 @@ export async function getPendingL1ToL2MessageLogs(publicClient, inboxAddress, fr
164
170
  * @param publicClient - The viem public client to use for transaction retrieval.
165
171
  * @param inboxAddress - The address of the inbox contract.
166
172
  * @param fromBlock - First block to get logs from (inclusive).
173
+ * @param toBlock - Last block to get logs from (inclusive).
167
174
  * @returns An array of `L1ToL2MessageCancelled` logs.
168
175
  */
169
- export async function getL1ToL2MessageCancelledLogs(publicClient, inboxAddress, fromBlock) {
176
+ export async function getL1ToL2MessageCancelledLogs(publicClient, inboxAddress, fromBlock, toBlock) {
170
177
  const abiItem = getAbiItem({
171
178
  abi: InboxAbi,
172
179
  name: 'L1ToL2MessageCancelled',
@@ -175,6 +182,7 @@ export async function getL1ToL2MessageCancelledLogs(publicClient, inboxAddress,
175
182
  address: getAddress(inboxAddress.toString()),
176
183
  event: abiItem,
177
184
  fromBlock,
185
+ toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
178
186
  });
179
187
  }
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX2xvZ19oYW5kbGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXZlci9ldGhfbG9nX2hhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hGLE9BQU8sRUFDTCxZQUFZLEVBQ1osWUFBWSxFQUNaLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLGFBQWEsRUFDYixPQUFPLEVBQ1AsT0FBTyxHQUNSLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBMEIsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEc7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQ0FBb0MsQ0FDbEQsSUFBNkU7SUFFN0UsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtRQUN0QixNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUN4RyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1gsY0FBYyxDQUFDLElBQUksQ0FDakIsSUFBSSxhQUFhLENBQ2YsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsRUFDakUs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
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX2xvZ19oYW5kbGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXZlci9ldGhfbG9nX2hhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hGLE9BQU8sRUFDTCxZQUFZLEVBQ1osWUFBWSxFQUNaLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLGFBQWEsRUFDYixPQUFPLEVBQ1AsT0FBTyxHQUNSLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBMEIsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEc7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQ0FBb0MsQ0FDbEQsSUFBNkU7SUFFN0UsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtRQUN0QixNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUN4RyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1gsY0FBYyxDQUFDLElBQUksQ0FDakIsSUFBSSxhQUFhLENBQ2YsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsRUFDakUs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
package/dest/index.js CHANGED
@@ -12,13 +12,13 @@ const log = createDebugLogger('aztec:archiver');
12
12
  // eslint-disable-next-line require-await
13
13
  async function main() {
14
14
  const config = getConfigEnvVars();
15
- const { rpcUrl, rollupContract, inboxContract, contractDeploymentEmitterContract, searchStartBlock } = config;
15
+ const { rpcUrl, l1Contracts, searchStartBlock } = config;
16
16
  const publicClient = createPublicClient({
17
17
  chain: localhost,
18
18
  transport: http(rpcUrl),
19
19
  });
20
20
  const archiverStore = new MemoryArchiverStore();
21
- const archiver = new Archiver(publicClient, rollupContract, inboxContract, contractDeploymentEmitterContract, searchStartBlock, archiverStore);
21
+ const archiver = new Archiver(publicClient, l1Contracts.rollupAddress, l1Contracts.inboxAddress, l1Contracts.registryAddress, l1Contracts.contractDeploymentEmitterAddress, searchStartBlock, archiverStore);
22
22
  const shutdown = async () => {
23
23
  await archiver.stop();
24
24
  process.exit(0);
@@ -34,4 +34,4 @@ if (process.argv[1] === fileURLToPath(import.meta.url).replace(/\/index\.js$/, '
34
34
  process.exit(1);
35
35
  });
36
36
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakUsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRWhEOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLEtBQUssVUFBVSxJQUFJO0lBQ2pCLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDbEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGlDQUFpQyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTlHLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDO1FBQ3RDLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDO0tBQ3hCLENBQUMsQ0FBQztJQUVILE1BQU0sYUFBYSxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztJQUVoRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FDM0IsWUFBWSxFQUNaLGNBQWMsRUFDZCxhQUFhLEVBQ2IsaUNBQWlDLEVBQ2pDLGdCQUFnQixFQUNoQixhQUFhLENBQ2QsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQzFCLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELGlFQUFpRTtBQUNqRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUNsRixtRUFBbUU7SUFDbkUsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2pCLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0NBQ0oifQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakUsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRWhEOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLEtBQUssVUFBVSxJQUFJO0lBQ2pCLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDbEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFekQsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7UUFDdEMsS0FBSyxFQUFFLFNBQVM7UUFDaEIsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7S0FDeEIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxhQUFhLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO0lBRWhELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUMzQixZQUFZLEVBQ1osV0FBVyxDQUFDLGFBQWEsRUFDekIsV0FBVyxDQUFDLFlBQVksRUFDeEIsV0FBVyxDQUFDLGVBQWUsRUFDM0IsV0FBVyxDQUFDLGdDQUFnQyxFQUM1QyxnQkFBZ0IsRUFDaEIsYUFBYSxDQUNkLENBQUM7SUFFRixNQUFNLFFBQVEsR0FBRyxLQUFLLElBQUksRUFBRTtRQUMxQixNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRCxpRUFBaUU7QUFDakUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDbEYsbUVBQW1FO0lBQ25FLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNqQixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztDQUNKIn0=
package/package.json CHANGED
@@ -1,14 +1,44 @@
1
1
  {
2
2
  "name": "@aztec/archiver",
3
- "version": "0.7.10",
4
- "exports": "./dest/index.js",
3
+ "version": "0.8.6",
5
4
  "type": "module",
5
+ "exports": "./dest/index.js",
6
+ "typedocOptions": {
7
+ "entryPoints": [
8
+ "./src/index.ts"
9
+ ],
10
+ "name": "Archiver",
11
+ "tsconfig": "./tsconfig.json"
12
+ },
13
+ "scripts": {
14
+ "build": "yarn clean && tsc -b",
15
+ "build:dev": "tsc -b --watch",
16
+ "clean": "rm -rf ./dest .tsbuildinfo",
17
+ "formatting": "run -T prettier --check ./src && run -T eslint ./src",
18
+ "formatting:fix": "run -T prettier -w ./src",
19
+ "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --passWithNoTests",
20
+ "start": "node ./dest",
21
+ "start:dev": "tsc-watch -p tsconfig.json --onSuccess 'yarn start'",
22
+ "test:integration": "concurrently -k -s first -c reset,dim -n test,anvil \"yarn test:integration:run\" \"anvil\"",
23
+ "test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
24
+ },
25
+ "inherits": [
26
+ "../package.common.json"
27
+ ],
28
+ "jest": {
29
+ "preset": "ts-jest/presets/default-esm",
30
+ "moduleNameMapper": {
31
+ "^(\\.{1,2}/.*)\\.m?js$": "$1"
32
+ },
33
+ "testRegex": "./src/.*\\.test\\.(js|mjs|ts)$",
34
+ "rootDir": "./src"
35
+ },
6
36
  "dependencies": {
7
- "@aztec/circuits.js": "0.7.10",
8
- "@aztec/ethereum": "0.7.10",
9
- "@aztec/foundation": "0.7.10",
10
- "@aztec/l1-artifacts": "0.7.10",
11
- "@aztec/types": "0.7.10",
37
+ "@aztec/circuits.js": "0.8.6",
38
+ "@aztec/ethereum": "0.8.6",
39
+ "@aztec/foundation": "0.8.6",
40
+ "@aztec/l1-artifacts": "0.8.6",
41
+ "@aztec/types": "0.8.6",
12
42
  "@types/lodash.omit": "^4.5.7",
13
43
  "debug": "^4.3.4",
14
44
  "lodash.omit": "^4.5.0",
@@ -16,5 +46,28 @@
16
46
  "tslib": "^2.5.0",
17
47
  "viem": "1.4.2",
18
48
  "ws": "^8.13.0"
49
+ },
50
+ "devDependencies": {
51
+ "@jest/globals": "^29.5.0",
52
+ "@rushstack/eslint-patch": "^1.2.0",
53
+ "@types/debug": "^4.1.7",
54
+ "@types/jest": "^29.5.0",
55
+ "@types/node": "^18.15.11",
56
+ "@types/ws": "^8.5.4",
57
+ "concurrently": "^8.0.1",
58
+ "jest": "^29.5.0",
59
+ "jest-mock-extended": "^3.0.4",
60
+ "ts-jest": "^29.1.0",
61
+ "ts-node": "^10.9.1",
62
+ "typescript": "^5.0.4"
63
+ },
64
+ "files": [
65
+ "dest",
66
+ "src",
67
+ "!*.test.*"
68
+ ],
69
+ "types": "./dest/index.d.ts",
70
+ "engines": {
71
+ "node": ">=18"
19
72
  }
20
73
  }
@@ -65,6 +65,7 @@ export class Archiver implements L2BlockSource, L2LogsSource, ContractDataSource
65
65
  * @param publicClient - A client for interacting with the Ethereum node.
66
66
  * @param rollupAddress - Ethereum address of the rollup contract.
67
67
  * @param inboxAddress - Ethereum address of the inbox contract.
68
+ * @param registryAddress - Ethereum address of the registry contract.
68
69
  * @param contractDeploymentEmitterAddress - Ethereum address of the contractDeploymentEmitter contract.
69
70
  * @param searchStartBlock - The L1 block from which to start searching for new blocks.
70
71
  * @param pollingIntervalMs - The interval for polling for L1 logs (in milliseconds).
@@ -75,6 +76,7 @@ export class Archiver implements L2BlockSource, L2LogsSource, ContractDataSource
75
76
  private readonly publicClient: PublicClient<HttpTransport, Chain>,
76
77
  private readonly rollupAddress: EthAddress,
77
78
  private readonly inboxAddress: EthAddress,
79
+ private readonly registryAddress: EthAddress,
78
80
  private readonly contractDeploymentEmitterAddress: EthAddress,
79
81
  searchStartBlock: number,
80
82
  private readonly store: ArchiverDataStore,
@@ -101,9 +103,10 @@ export class Archiver implements L2BlockSource, L2LogsSource, ContractDataSource
101
103
  const archiverStore = new MemoryArchiverStore();
102
104
  const archiver = new Archiver(
103
105
  publicClient,
104
- config.rollupContract,
105
- config.inboxContract,
106
- config.contractDeploymentEmitterContract,
106
+ config.l1Contracts.rollupAddress,
107
+ config.l1Contracts.inboxAddress,
108
+ config.l1Contracts.registryAddress,
109
+ config.l1Contracts.contractDeploymentEmitterAddress,
107
110
  config.searchStartBlock,
108
111
  archiverStore,
109
112
  config.archiverPollingIntervalMS,
@@ -145,6 +148,33 @@ export class Archiver implements L2BlockSource, L2LogsSource, ContractDataSource
145
148
  return;
146
149
  }
147
150
 
151
+ // ********** Ensuring Consistency of data pulled from L1 **********
152
+
153
+ /**
154
+ * There are a number of calls in this sync operation to L1 for retrieving
155
+ * events and transaction data. There are a couple of things we need to bear in mind
156
+ * to ensure that data is read exactly once.
157
+ *
158
+ * The first is the problem of eventually consistent ETH service providers like Infura.
159
+ * We are not currently handling this correctly in the case of L1 to L2 messages and we will
160
+ * want to re-visit L2 Block and contract data retrieval at a later stage. This is not
161
+ * currently a problem but will need to be addressed before a mainnet release.
162
+ *
163
+ * The second is that in between the various calls to L1, the block number can move meaning some
164
+ * of the following calls will return data for blocks that were not present during earlier calls.
165
+ * This is a problem for example when setting the last block number marker for L1 to L2 messages -
166
+ * this.lastProcessedBlockNumber = currentBlockNumber;
167
+ * It's possible that we actually received messages in block currentBlockNumber + 1 meaning the next time
168
+ * we do this sync we get the same message again. Addtionally, the call to get cancelled L1 to L2 messages
169
+ * could read from a block not present when retrieving pending messages. If a message was added and cancelled
170
+ * in the same eth block then we could try and cancel a non-existent pending message.
171
+ *
172
+ * To combat this for the time being we simply ensure that all data retrieval methods only retrieve
173
+ * data up to the currentBlockNumber captured at the top of this function. We might want to improve on this
174
+ * in future but for the time being it should give us the guarantees that we need
175
+ *
176
+ */
177
+
148
178
  // ********** Events that are processed in between blocks **********
149
179
 
150
180
  // Process l1ToL2Messages, these are consumed as time passes, not each block
@@ -152,15 +182,15 @@ export class Archiver implements L2BlockSource, L2LogsSource, ContractDataSource
152
182
  this.publicClient,
153
183
  this.inboxAddress,
154
184
  blockUntilSynced,
155
- currentBlockNumber,
156
185
  this.lastProcessedBlockNumber + 1n, // + 1 to prevent re-including messages from the last processed block
186
+ currentBlockNumber,
157
187
  );
158
188
  const retrievedCancelledL1ToL2Messages = await retrieveNewCancelledL1ToL2Messages(
159
189
  this.publicClient,
160
190
  this.inboxAddress,
161
191
  blockUntilSynced,
162
- currentBlockNumber,
163
192
  this.lastProcessedBlockNumber + 1n,
193
+ currentBlockNumber,
164
194
  );
165
195
 
166
196
  // TODO (#717): optimise this - there could be messages in confirmed that are also in pending.
@@ -185,8 +215,8 @@ export class Archiver implements L2BlockSource, L2LogsSource, ContractDataSource
185
215
  this.publicClient,
186
216
  this.rollupAddress,
187
217
  blockUntilSynced,
188
- currentBlockNumber,
189
218
  this.nextL2BlockFromBlock,
219
+ currentBlockNumber,
190
220
  nextExpectedL2BlockNum,
191
221
  );
192
222
 
@@ -199,8 +229,8 @@ export class Archiver implements L2BlockSource, L2LogsSource, ContractDataSource
199
229
  this.publicClient,
200
230
  this.contractDeploymentEmitterAddress,
201
231
  blockUntilSynced,
202
- currentBlockNumber,
203
232
  this.nextL2BlockFromBlock,
233
+ currentBlockNumber,
204
234
  blockHashMapping,
205
235
  );
206
236
  if (retrievedBlocks.retrievedData.length === 0) {
@@ -264,6 +294,10 @@ export class Archiver implements L2BlockSource, L2LogsSource, ContractDataSource
264
294
  return Promise.resolve(this.rollupAddress);
265
295
  }
266
296
 
297
+ public getRegistryAddress(): Promise<EthAddress> {
298
+ return Promise.resolve(this.registryAddress);
299
+ }
300
+
267
301
  /**
268
302
  * Gets up to `limit` amount of L2 blocks starting from `from`.
269
303
  * @param from - Number of the first block to return (inclusive).
@@ -1,5 +1,5 @@
1
+ import { L1ContractAddresses } from '@aztec/ethereum';
1
2
  import { EthAddress } from '@aztec/foundation/eth-address';
2
- import { L1Addresses } from '@aztec/types';
3
3
 
4
4
  /**
5
5
  * There are 2 polling intervals used in this configuration. The first is the archiver polling interval, archiverPollingIntervalMS.
@@ -11,7 +11,7 @@ import { L1Addresses } from '@aztec/types';
11
11
  /**
12
12
  * The archiver configuration.
13
13
  */
14
- export interface ArchiverConfig extends L1Addresses {
14
+ export interface ArchiverConfig {
15
15
  /**
16
16
  * The url of the Ethereum RPC node.
17
17
  */
@@ -36,6 +36,16 @@ export interface ArchiverConfig extends L1Addresses {
36
36
  * Eth block from which we start scanning for L2Blocks.
37
37
  */
38
38
  searchStartBlock: number;
39
+
40
+ /**
41
+ * The deployed L1 contract addresses
42
+ */
43
+ l1Contracts: L1ContractAddresses;
44
+
45
+ /**
46
+ * Optional dir to store data. If omitted will store in memory.
47
+ */
48
+ dataDirectory?: string;
39
49
  }
40
50
 
41
51
  /**
@@ -53,17 +63,27 @@ export function getConfigEnvVars(): ArchiverConfig {
53
63
  SEARCH_START_BLOCK,
54
64
  API_KEY,
55
65
  INBOX_CONTRACT_ADDRESS,
66
+ REGISTRY_CONTRACT_ADDRESS,
67
+ DATA_DIRECTORY,
56
68
  } = process.env;
69
+ // Populate the relevant addresses for use by the archiver.
70
+ const addresses: L1ContractAddresses = {
71
+ rollupAddress: ROLLUP_CONTRACT_ADDRESS ? EthAddress.fromString(ROLLUP_CONTRACT_ADDRESS) : EthAddress.ZERO,
72
+ registryAddress: REGISTRY_CONTRACT_ADDRESS ? EthAddress.fromString(REGISTRY_CONTRACT_ADDRESS) : EthAddress.ZERO,
73
+ inboxAddress: INBOX_CONTRACT_ADDRESS ? EthAddress.fromString(INBOX_CONTRACT_ADDRESS) : EthAddress.ZERO,
74
+ outboxAddress: EthAddress.ZERO,
75
+ contractDeploymentEmitterAddress: CONTRACT_DEPLOYMENT_EMITTER_ADDRESS
76
+ ? EthAddress.fromString(CONTRACT_DEPLOYMENT_EMITTER_ADDRESS)
77
+ : EthAddress.ZERO,
78
+ decoderHelperAddress: EthAddress.ZERO,
79
+ };
57
80
  return {
58
81
  rpcUrl: ETHEREUM_HOST || 'http://127.0.0.1:8545/',
59
82
  archiverPollingIntervalMS: ARCHIVER_POLLING_INTERVAL_MS ? +ARCHIVER_POLLING_INTERVAL_MS : 1_000,
60
83
  viemPollingIntervalMS: ARCHIVER_VIEM_POLLING_INTERVAL_MS ? +ARCHIVER_VIEM_POLLING_INTERVAL_MS : 1_000,
61
- rollupContract: ROLLUP_CONTRACT_ADDRESS ? EthAddress.fromString(ROLLUP_CONTRACT_ADDRESS) : EthAddress.ZERO,
62
- inboxContract: INBOX_CONTRACT_ADDRESS ? EthAddress.fromString(INBOX_CONTRACT_ADDRESS) : EthAddress.ZERO,
63
- contractDeploymentEmitterContract: CONTRACT_DEPLOYMENT_EMITTER_ADDRESS
64
- ? EthAddress.fromString(CONTRACT_DEPLOYMENT_EMITTER_ADDRESS)
65
- : EthAddress.ZERO,
66
84
  searchStartBlock: SEARCH_START_BLOCK ? +SEARCH_START_BLOCK : 0,
67
85
  apiKey: API_KEY,
86
+ l1Contracts: addresses,
87
+ dataDirectory: DATA_DIRECTORY,
68
88
  };
69
89
  }
@@ -34,8 +34,8 @@ type DataRetrieval<T> = {
34
34
  * @param publicClient - The viem public client to use for transaction retrieval.
35
35
  * @param rollupAddress - The address of the rollup contract.
36
36
  * @param blockUntilSynced - If true, blocks until the archiver has fully synced.
37
- * @param currentL1BlockNum - Latest available block number in the ETH node.
38
37
  * @param searchStartBlock - The block number to use for starting the search.
38
+ * @param searchEndBlock - The highest block number that we should search up to.
39
39
  * @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
40
40
  * @returns An array of L2 Blocks and the next eth block to search from
41
41
  */
@@ -43,16 +43,21 @@ export async function retrieveBlocks(
43
43
  publicClient: PublicClient,
44
44
  rollupAddress: EthAddress,
45
45
  blockUntilSynced: boolean,
46
- currentL1BlockNum: bigint,
47
46
  searchStartBlock: bigint,
47
+ searchEndBlock: bigint,
48
48
  expectedNextL2BlockNum: bigint,
49
49
  ): Promise<DataRetrieval<L2Block>> {
50
50
  const retrievedBlocks: L2Block[] = [];
51
51
  do {
52
- if (searchStartBlock > currentL1BlockNum) {
52
+ if (searchStartBlock > searchEndBlock) {
53
53
  break;
54
54
  }
55
- const l2BlockProcessedLogs = await getL2BlockProcessedLogs(publicClient, rollupAddress, searchStartBlock);
55
+ const l2BlockProcessedLogs = await getL2BlockProcessedLogs(
56
+ publicClient,
57
+ rollupAddress,
58
+ searchStartBlock,
59
+ searchEndBlock,
60
+ );
56
61
  if (l2BlockProcessedLogs.length === 0) {
57
62
  break;
58
63
  }
@@ -61,7 +66,7 @@ export async function retrieveBlocks(
61
66
  retrievedBlocks.push(...newBlocks);
62
67
  searchStartBlock = l2BlockProcessedLogs[l2BlockProcessedLogs.length - 1].blockNumber! + 1n;
63
68
  expectedNextL2BlockNum += BigInt(newBlocks.length);
64
- } while (blockUntilSynced && searchStartBlock <= currentL1BlockNum);
69
+ } while (blockUntilSynced && searchStartBlock <= searchEndBlock);
65
70
  return { nextEthBlockNumber: searchStartBlock, retrievedData: retrievedBlocks };
66
71
  }
67
72
 
@@ -70,8 +75,8 @@ export async function retrieveBlocks(
70
75
  * @param publicClient - The viem public client to use for transaction retrieval.
71
76
  * @param contractDeploymentEmitterAddress - The address of the contract deployment emitter contract.
72
77
  * @param blockUntilSynced - If true, blocks until the archiver has fully synced.
73
- * @param currentBlockNumber - Latest available block number in the ETH node.
74
78
  * @param searchStartBlock - The block number to use for starting the search.
79
+ * @param searchEndBlock - The highest block number that we should search up to.
75
80
  * @param blockHashMapping - A mapping from block number to relevant block hash.
76
81
  * @returns An array of ExtendedContractData and their equivalent L2 Block number along with the next eth block to search from..
77
82
  */
@@ -79,19 +84,20 @@ export async function retrieveNewContractData(
79
84
  publicClient: PublicClient,
80
85
  contractDeploymentEmitterAddress: EthAddress,
81
86
  blockUntilSynced: boolean,
82
- currentBlockNumber: bigint,
83
87
  searchStartBlock: bigint,
88
+ searchEndBlock: bigint,
84
89
  blockHashMapping: { [key: number]: Buffer | undefined },
85
90
  ): Promise<DataRetrieval<[ExtendedContractData[], number]>> {
86
91
  let retrievedNewContracts: [ExtendedContractData[], number][] = [];
87
92
  do {
88
- if (searchStartBlock > currentBlockNumber) {
93
+ if (searchStartBlock > searchEndBlock) {
89
94
  break;
90
95
  }
91
96
  const contractDataLogs = await getContractDeploymentLogs(
92
97
  publicClient,
93
98
  contractDeploymentEmitterAddress,
94
99
  searchStartBlock,
100
+ searchEndBlock,
95
101
  );
96
102
  if (contractDataLogs.length === 0) {
97
103
  break;
@@ -99,7 +105,7 @@ export async function retrieveNewContractData(
99
105
  const newContracts = processContractDeploymentLogs(blockHashMapping, contractDataLogs);
100
106
  retrievedNewContracts = retrievedNewContracts.concat(newContracts);
101
107
  searchStartBlock = (contractDataLogs.findLast(cd => !!cd)?.blockNumber || searchStartBlock) + 1n;
102
- } while (blockUntilSynced && searchStartBlock <= currentBlockNumber);
108
+ } while (blockUntilSynced && searchStartBlock <= searchEndBlock);
103
109
  return { nextEthBlockNumber: searchStartBlock, retrievedData: retrievedNewContracts };
104
110
  }
105
111
 
@@ -108,28 +114,33 @@ export async function retrieveNewContractData(
108
114
  * @param publicClient - The viem public client to use for transaction retrieval.
109
115
  * @param inboxAddress - The address of the inbox contract to fetch messages from.
110
116
  * @param blockUntilSynced - If true, blocks until the archiver has fully synced.
111
- * @param currentBlockNumber - Latest available block number in the ETH node.
112
117
  * @param searchStartBlock - The block number to use for starting the search.
118
+ * @param searchEndBlock - The highest block number that we should search up to.
113
119
  * @returns An array of L1ToL2Message and next eth block to search from.
114
120
  */
115
121
  export async function retrieveNewPendingL1ToL2Messages(
116
122
  publicClient: PublicClient,
117
123
  inboxAddress: EthAddress,
118
124
  blockUntilSynced: boolean,
119
- currentBlockNumber: bigint,
120
125
  searchStartBlock: bigint,
126
+ searchEndBlock: bigint,
121
127
  ): Promise<DataRetrieval<L1ToL2Message>> {
122
128
  const retrievedNewL1ToL2Messages: L1ToL2Message[] = [];
123
129
  do {
124
- if (searchStartBlock > currentBlockNumber) {
130
+ if (searchStartBlock > searchEndBlock) {
125
131
  break;
126
132
  }
127
- const newL1ToL2MessageLogs = await getPendingL1ToL2MessageLogs(publicClient, inboxAddress, searchStartBlock);
133
+ const newL1ToL2MessageLogs = await getPendingL1ToL2MessageLogs(
134
+ publicClient,
135
+ inboxAddress,
136
+ searchStartBlock,
137
+ searchEndBlock,
138
+ );
128
139
  const newL1ToL2Messages = processPendingL1ToL2MessageAddedLogs(newL1ToL2MessageLogs);
129
140
  retrievedNewL1ToL2Messages.push(...newL1ToL2Messages);
130
141
  // handles the case when there are no new messages:
131
142
  searchStartBlock = (newL1ToL2MessageLogs.findLast(msgLog => !!msgLog)?.blockNumber || searchStartBlock) + 1n;
132
- } while (blockUntilSynced && searchStartBlock <= currentBlockNumber);
143
+ } while (blockUntilSynced && searchStartBlock <= searchEndBlock);
133
144
  return { nextEthBlockNumber: searchStartBlock, retrievedData: retrievedNewL1ToL2Messages };
134
145
  }
135
146
 
@@ -138,32 +149,33 @@ export async function retrieveNewPendingL1ToL2Messages(
138
149
  * @param publicClient - The viem public client to use for transaction retrieval.
139
150
  * @param inboxAddress - The address of the inbox contract to fetch messages from.
140
151
  * @param blockUntilSynced - If true, blocks until the archiver has fully synced.
141
- * @param currentBlockNumber - Latest available block number in the ETH node.
142
152
  * @param searchStartBlock - The block number to use for starting the search.
153
+ * @param searchEndBlock - The highest block number that we should search up to.
143
154
  * @returns An array of message keys that were cancelled and next eth block to search from.
144
155
  */
145
156
  export async function retrieveNewCancelledL1ToL2Messages(
146
157
  publicClient: PublicClient,
147
158
  inboxAddress: EthAddress,
148
159
  blockUntilSynced: boolean,
149
- currentBlockNumber: bigint,
150
160
  searchStartBlock: bigint,
161
+ searchEndBlock: bigint,
151
162
  ): Promise<DataRetrieval<Fr>> {
152
163
  const retrievedNewCancelledL1ToL2Messages: Fr[] = [];
153
164
  do {
154
- if (searchStartBlock > currentBlockNumber) {
165
+ if (searchStartBlock > searchEndBlock) {
155
166
  break;
156
167
  }
157
168
  const newL1ToL2MessageCancelledLogs = await getL1ToL2MessageCancelledLogs(
158
169
  publicClient,
159
170
  inboxAddress,
160
171
  searchStartBlock,
172
+ searchEndBlock,
161
173
  );
162
174
  const newCancelledL1ToL2Messages = processCancelledL1ToL2MessagesLogs(newL1ToL2MessageCancelledLogs);
163
175
  retrievedNewCancelledL1ToL2Messages.push(...newCancelledL1ToL2Messages);
164
176
  // handles the case when there are no new messages:
165
177
  searchStartBlock =
166
178
  (newL1ToL2MessageCancelledLogs.findLast(msgLog => !!msgLog)?.blockNumber || searchStartBlock) + 1n;
167
- } while (blockUntilSynced && searchStartBlock <= currentBlockNumber);
179
+ } while (blockUntilSynced && searchStartBlock <= searchEndBlock);
168
180
  return { nextEthBlockNumber: searchStartBlock, retrievedData: retrievedNewCancelledL1ToL2Messages };
169
181
  }
@@ -116,12 +116,14 @@ async function getBlockFromCallData(
116
116
  * @param publicClient - The viem public client to use for transaction retrieval.
117
117
  * @param rollupAddress - The address of the rollup contract.
118
118
  * @param fromBlock - First block to get logs from (inclusive).
119
+ * @param toBlock - Last block to get logs from (inclusive).
119
120
  * @returns An array of `L2BlockProcessed` logs.
120
121
  */
121
122
  export async function getL2BlockProcessedLogs(
122
123
  publicClient: PublicClient,
123
124
  rollupAddress: EthAddress,
124
125
  fromBlock: bigint,
126
+ toBlock: bigint,
125
127
  ) {
126
128
  // Note: For some reason the return type of `getLogs` would not get correctly derived if I didn't set the abiItem
127
129
  // as a standalone constant.
@@ -133,6 +135,7 @@ export async function getL2BlockProcessedLogs(
133
135
  address: getAddress(rollupAddress.toString()),
134
136
  event: abiItem,
135
137
  fromBlock,
138
+ toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
136
139
  });
137
140
  }
138
141
 
@@ -141,12 +144,14 @@ export async function getL2BlockProcessedLogs(
141
144
  * @param publicClient - The viem public client to use for transaction retrieval.
142
145
  * @param contractDeploymentEmitterAddress - The address of the L2 contract deployment emitter contract.
143
146
  * @param fromBlock - First block to get logs from (inclusive).
147
+ * @param toBlock - Last block to get logs from (inclusive).
144
148
  * @returns An array of `ContractDeployment` logs.
145
149
  */
146
150
  export async function getContractDeploymentLogs(
147
151
  publicClient: PublicClient,
148
152
  contractDeploymentEmitterAddress: EthAddress,
149
153
  fromBlock: bigint,
154
+ toBlock: bigint,
150
155
  ): Promise<Log<bigint, number, undefined, true, typeof ContractDeploymentEmitterAbi, 'ContractDeployment'>[]> {
151
156
  const abiItem = getAbiItem({
152
157
  abi: ContractDeploymentEmitterAbi,
@@ -156,6 +161,7 @@ export async function getContractDeploymentLogs(
156
161
  address: getAddress(contractDeploymentEmitterAddress.toString()),
157
162
  event: abiItem,
158
163
  fromBlock,
164
+ toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
159
165
  });
160
166
  }
161
167
 
@@ -205,12 +211,14 @@ export function processContractDeploymentLogs(
205
211
  * @param publicClient - The viem public client to use for transaction retrieval.
206
212
  * @param inboxAddress - The address of the inbox contract.
207
213
  * @param fromBlock - First block to get logs from (inclusive).
214
+ * @param toBlock - Last block to get logs from (inclusive).
208
215
  * @returns An array of `MessageAdded` logs.
209
216
  */
210
217
  export async function getPendingL1ToL2MessageLogs(
211
218
  publicClient: PublicClient,
212
219
  inboxAddress: EthAddress,
213
220
  fromBlock: bigint,
221
+ toBlock: bigint,
214
222
  ): Promise<Log<bigint, number, undefined, true, typeof InboxAbi, 'MessageAdded'>[]> {
215
223
  const abiItem = getAbiItem({
216
224
  abi: InboxAbi,
@@ -220,6 +228,7 @@ export async function getPendingL1ToL2MessageLogs(
220
228
  address: getAddress(inboxAddress.toString()),
221
229
  event: abiItem,
222
230
  fromBlock,
231
+ toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
223
232
  });
224
233
  }
225
234
 
@@ -228,12 +237,14 @@ export async function getPendingL1ToL2MessageLogs(
228
237
  * @param publicClient - The viem public client to use for transaction retrieval.
229
238
  * @param inboxAddress - The address of the inbox contract.
230
239
  * @param fromBlock - First block to get logs from (inclusive).
240
+ * @param toBlock - Last block to get logs from (inclusive).
231
241
  * @returns An array of `L1ToL2MessageCancelled` logs.
232
242
  */
233
243
  export async function getL1ToL2MessageCancelledLogs(
234
244
  publicClient: PublicClient,
235
245
  inboxAddress: EthAddress,
236
246
  fromBlock: bigint,
247
+ toBlock: bigint,
237
248
  ): Promise<Log<bigint, number, undefined, true, typeof InboxAbi, 'L1ToL2MessageCancelled'>[]> {
238
249
  const abiItem = getAbiItem({
239
250
  abi: InboxAbi,
@@ -243,5 +254,6 @@ export async function getL1ToL2MessageCancelledLogs(
243
254
  address: getAddress(inboxAddress.toString()),
244
255
  event: abiItem,
245
256
  fromBlock,
257
+ toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
246
258
  });
247
259
  }