@aztec/archiver 0.54.0 → 0.55.1

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.
@@ -1,9 +1,9 @@
1
- import { Body, InboxLeaf } from '@aztec/circuit-types';
1
+ import { Body, InboxLeaf, L2Block } from '@aztec/circuit-types';
2
2
  import { AppendOnlyTreeSnapshot, Header, Proof } from '@aztec/circuits.js';
3
3
  import { Fr } from '@aztec/foundation/fields';
4
4
  import { numToUInt32BE } from '@aztec/foundation/serialize';
5
- import { AvailabilityOracleAbi, InboxAbi, RollupAbi } from '@aztec/l1-artifacts';
6
- import { decodeFunctionData, getAbiItem, getAddress, hexToBytes, slice, } from 'viem';
5
+ import { InboxAbi, RollupAbi } from '@aztec/l1-artifacts';
6
+ import { decodeFunctionData, getAbiItem, getAddress, hexToBytes } from 'viem';
7
7
  /**
8
8
  * Processes newly received MessageSent (L1 to L2) logs.
9
9
  * @param logs - MessageSent logs.
@@ -22,49 +22,41 @@ export function processMessageSentLogs(logs) {
22
22
  * @param publicClient - The viem public client to use for transaction retrieval.
23
23
  * @param expectedL2BlockNumber - The next expected L2 block number.
24
24
  * @param logs - L2BlockProposed logs.
25
- * @returns - An array of tuples representing block metadata including the header, archive tree snapshot.
25
+ * @returns - An array blocks.
26
26
  */
27
27
  export async function processL2BlockProposedLogs(publicClient, expectedL2BlockNumber, logs) {
28
- const retrievedBlockMetadata = [];
28
+ const retrievedBlocks = [];
29
29
  for (const log of logs) {
30
30
  const blockNum = log.args.blockNumber;
31
31
  if (blockNum !== expectedL2BlockNumber) {
32
32
  throw new Error('Block number mismatch. Expected: ' + expectedL2BlockNumber + ' but got: ' + blockNum + '.');
33
33
  }
34
34
  // TODO: Fetch blocks from calldata in parallel
35
- const [header, archive] = await getBlockMetadataFromRollupTx(publicClient, log.transactionHash, log.args.blockNumber);
35
+ const block = await getBlockFromRollupTx(publicClient, log.transactionHash, log.args.blockNumber);
36
36
  const l1 = {
37
37
  blockNumber: log.blockNumber,
38
38
  blockHash: log.blockHash,
39
39
  timestamp: await getL1BlockTime(publicClient, log.blockNumber),
40
40
  };
41
- retrievedBlockMetadata.push([header, archive, l1]);
41
+ retrievedBlocks.push({ data: block, l1 });
42
42
  expectedL2BlockNumber++;
43
43
  }
44
- return retrievedBlockMetadata;
44
+ return retrievedBlocks;
45
45
  }
46
46
  export async function getL1BlockTime(publicClient, blockNumber) {
47
47
  const block = await publicClient.getBlock({ blockNumber, includeTransactions: false });
48
48
  return block.timestamp;
49
49
  }
50
- export async function processTxsPublishedLogs(publicClient, logs) {
51
- const retrievedBlockBodies = [];
52
- for (const log of logs) {
53
- const newBlockBody = await getBlockBodiesFromAvailabilityOracleTx(publicClient, log.transactionHash);
54
- retrievedBlockBodies.push([newBlockBody, Buffer.from(hexToBytes(log.args.txsEffectsHash))]);
55
- }
56
- return retrievedBlockBodies;
57
- }
58
50
  /**
59
- * Gets block metadata (header and archive snapshot) from the calldata of an L1 transaction.
51
+ * Gets block from the calldata of an L1 transaction.
60
52
  * Assumes that the block was published from an EOA.
61
53
  * TODO: Add retries and error management.
62
54
  * @param publicClient - The viem public client to use for transaction retrieval.
63
55
  * @param txHash - Hash of the tx that published it.
64
56
  * @param l2BlockNum - L2 block number.
65
- * @returns L2 block metadata (header and archive) from the calldata, deserialized
57
+ * @returns L2 block from the calldata, deserialized
66
58
  */
67
- async function getBlockMetadataFromRollupTx(publicClient, txHash, l2BlockNum) {
59
+ async function getBlockFromRollupTx(publicClient, txHash, l2BlockNum) {
68
60
  const { input: data } = await publicClient.getTransaction({ hash: txHash });
69
61
  const { functionName, args } = decodeFunctionData({
70
62
  abi: RollupAbi,
@@ -73,8 +65,9 @@ async function getBlockMetadataFromRollupTx(publicClient, txHash, l2BlockNum) {
73
65
  if (!(functionName === 'propose')) {
74
66
  throw new Error(`Unexpected method called ${functionName}`);
75
67
  }
76
- const [headerHex, archiveRootHex, _] = args;
68
+ const [headerHex, archiveRootHex, , , , bodyHex] = args;
77
69
  const header = Header.fromBuffer(Buffer.from(hexToBytes(headerHex)));
70
+ const blockBody = Body.fromBuffer(Buffer.from(hexToBytes(bodyHex)));
78
71
  const blockNumberFromHeader = header.globalVariables.blockNumber.toBigInt();
79
72
  if (blockNumberFromHeader !== l2BlockNum) {
80
73
  throw new Error(`Block number mismatch: expected ${l2BlockNum} but got ${blockNumberFromHeader}`);
@@ -83,50 +76,7 @@ async function getBlockMetadataFromRollupTx(publicClient, txHash, l2BlockNum) {
83
76
  Buffer.from(hexToBytes(archiveRootHex)), // L2Block.archive.root
84
77
  numToUInt32BE(Number(l2BlockNum)), // L2Block.archive.nextAvailableLeafIndex
85
78
  ]));
86
- return [header, archive];
87
- }
88
- /**
89
- * Gets block bodies from calldata of an L1 transaction, and deserializes them into Body objects.
90
- * @note Assumes that the block was published using `propose` or `publish`.
91
- * TODO: Add retries and error management.
92
- * @param publicClient - The viem public client to use for transaction retrieval.
93
- * @param txHash - Hash of the tx that published it.
94
- * @returns An L2 block body from the calldata, deserialized
95
- */
96
- async function getBlockBodiesFromAvailabilityOracleTx(publicClient, txHash) {
97
- const { input: data } = await publicClient.getTransaction({ hash: txHash });
98
- // @note Use `forge inspect Rollup methodIdentifiers to get this,
99
- // If using `forge sig` you will get an INVALID value for the case with a struct.
100
- // [
101
- // "propose(bytes,bytes32,bytes32,(bool,uint8,bytes32,bytes32)[],bytes)": "08978fe9",
102
- // "propose(bytes,bytes32,bytes32,bytes)": "81e6f472",
103
- // "publish(bytes calldata _body)"
104
- // ]
105
- const DATA_INDEX = [4, 3, 0];
106
- const SUPPORTED_SIGS = ['0x08978fe9', '0x81e6f472', '0x7fd28346'];
107
- const signature = slice(data, 0, 4);
108
- if (!SUPPORTED_SIGS.includes(signature)) {
109
- throw new Error(`Unexpected method called ${signature}`);
110
- }
111
- if (signature === SUPPORTED_SIGS[SUPPORTED_SIGS.length - 1]) {
112
- const { args } = decodeFunctionData({
113
- abi: AvailabilityOracleAbi,
114
- data,
115
- });
116
- const [bodyHex] = args;
117
- const blockBody = Body.fromBuffer(Buffer.from(hexToBytes(bodyHex)));
118
- return blockBody;
119
- }
120
- else {
121
- const { args } = decodeFunctionData({
122
- abi: RollupAbi,
123
- data,
124
- });
125
- const index = SUPPORTED_SIGS.indexOf(signature);
126
- const bodyHex = args[DATA_INDEX[index]];
127
- const blockBody = Body.fromBuffer(Buffer.from(hexToBytes(bodyHex)));
128
- return blockBody;
129
- }
79
+ return new L2Block(archive, header, blockBody);
130
80
  }
131
81
  /**
132
82
  * Gets relevant `L2BlockProposed` logs from chain.
@@ -147,25 +97,6 @@ export function getL2BlockProposedLogs(publicClient, rollupAddress, fromBlock, t
147
97
  toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
148
98
  });
149
99
  }
150
- /**
151
- * Gets relevant `TxsPublished` logs from chain.
152
- * @param publicClient - The viem public client to use for transaction retrieval.
153
- * @param dataAvailabilityOracleAddress - The address of the availability oracle contract.
154
- * @param fromBlock - First block to get logs from (inclusive).
155
- * @param toBlock - Last block to get logs from (inclusive).
156
- * @returns An array of `TxsPublished` logs.
157
- */
158
- export function getTxsPublishedLogs(publicClient, dataAvailabilityOracleAddress, fromBlock, toBlock) {
159
- return publicClient.getLogs({
160
- address: getAddress(dataAvailabilityOracleAddress.toString()),
161
- event: getAbiItem({
162
- abi: AvailabilityOracleAbi,
163
- name: 'TxsPublished',
164
- }),
165
- fromBlock,
166
- toBlock: toBlock + 1n, // the toBlock argument in getLogs is exclusive
167
- });
168
- }
169
100
  /**
170
101
  * Get relevant `MessageSent` logs emitted by Inbox on chain.
171
102
  * @param publicClient - The viem public client to use for transaction retrieval.
@@ -221,4 +152,4 @@ export async function getBlockProofFromSubmitProofTx(publicClient, txHash, l2Blo
221
152
  proof: Proof.fromBuffer(Buffer.from(hexToBytes(proofHex))),
222
153
  };
223
154
  }
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX2xvZ19oYW5kbGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXZlci9ldGhfbG9nX2hhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakYsT0FBTyxFQUlMLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsRUFDVixLQUFLLEdBQ04sTUFBTSxNQUFNLENBQUM7QUFJZDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxJQUFtRjtJQUVuRixNQUFNLE1BQU0sR0FBZ0IsRUFBRSxDQUFDO0lBQy9CLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLDBCQUEwQixDQUM5QyxZQUEwQixFQUMxQixxQkFBNkIsRUFD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
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX2xvZ19oYW5kbGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcmNoaXZlci9ldGhfbG9nX2hhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBc0IsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQXlDLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXJIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLElBQW1GO0lBRW5GLE1BQU0sTUFBTSxHQUFnQixFQUFFLENBQUM7SUFDL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsMEJBQTBCLENBQzlDLFlBQTBCLEVBQzFCLHFCQUE2QixFQUM3QixJQUF3RjtJ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
package/dest/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from './archiver/index.js';
2
2
  export * from './rpc/index.js';
3
3
  export * from './factory.js';
4
- export { retrieveL2ProofVerifiedEvents, retrieveBlockMetadataFromRollup } from './archiver/data_retrieval.js';
4
+ export { retrieveL2ProofVerifiedEvents, retrieveBlockFromRollup } from './archiver/data_retrieval.js';
5
5
  export { getL2BlockProposedLogs } from './archiver/eth_log_handlers.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,6BAA6B,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAE9G,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC"}
package/dest/index.js CHANGED
@@ -9,7 +9,7 @@ import { MemoryArchiverStore } from './archiver/memory_archiver_store/memory_arc
9
9
  export * from './archiver/index.js';
10
10
  export * from './rpc/index.js';
11
11
  export * from './factory.js';
12
- export { retrieveL2ProofVerifiedEvents, retrieveBlockMetadataFromRollup } from './archiver/data_retrieval.js';
12
+ export { retrieveL2ProofVerifiedEvents, retrieveBlockFromRollup } from './archiver/data_retrieval.js';
13
13
  export { getL2BlockProposedLogs } from './archiver/eth_log_handlers.js';
14
14
  const log = createDebugLogger('aztec:archiver');
15
15
  /**
@@ -24,7 +24,7 @@ async function main() {
24
24
  transport: http(rpcUrl),
25
25
  });
26
26
  const archiverStore = new MemoryArchiverStore(1000);
27
- const archiver = new Archiver(publicClient, l1Contracts.rollupAddress, l1Contracts.availabilityOracleAddress, l1Contracts.inboxAddress, l1Contracts.registryAddress, archiverStore, 1000, new ArchiverInstrumentation(new NoopTelemetryClient()));
27
+ const archiver = new Archiver(publicClient, l1Contracts.rollupAddress, l1Contracts.inboxAddress, l1Contracts.registryAddress, archiverStore, 1000, new ArchiverInstrumentation(new NoopTelemetryClient()));
28
28
  const shutdown = async () => {
29
29
  await archiver.stop();
30
30
  process.exit(0);
@@ -40,4 +40,4 @@ if (process.argv[1] === fileURLToPath(import.meta.url).replace(/\/index\.js$/, '
40
40
  process.exit(1);
41
41
  });
42
42
  }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFFaEcsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTlHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhFLE1BQU0sR0FBRyxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFaEQ7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxNQUFNLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztJQUMxQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFakQsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7UUFDdEMsS0FBSyxFQUFFLFNBQVM7UUFDaEIsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7S0FDeEIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxhQUFhLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FDM0IsWUFBWSxFQUNaLFdBQVcsQ0FBQyxhQUFhLEVBQ3pCLFdBQVcsQ0FBQyx5QkFBeUIsRUFDckMsV0FBVyxDQUFDLFlBQVksRUFDeEIsV0FBVyxDQUFDLGVBQWUsRUFDM0IsYUFBYSxFQUNiLElBQUksRUFDSixJQUFJLHVCQUF1QixDQUFDLElBQUksbUJBQW1CLEVBQUUsQ0FBQyxDQUN2RCxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDMUIsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFDRixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsaUVBQWlFO0FBQ2pFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDbkYsbUVBQW1FO0lBQ25FLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNqQixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMifQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFFaEcsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXRHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhFLE1BQU0sR0FBRyxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFaEQ7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxNQUFNLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztJQUMxQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFakQsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7UUFDdEMsS0FBSyxFQUFFLFNBQVM7UUFDaEIsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7S0FDeEIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxhQUFhLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FDM0IsWUFBWSxFQUNaLFdBQVcsQ0FBQyxhQUFhLEVBQ3pCLFdBQVcsQ0FBQyxZQUFZLEVBQ3hCLFdBQVcsQ0FBQyxlQUFlLEVBQzNCLGFBQWEsRUFDYixJQUFJLEVBQ0osSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLENBQUMsQ0FDdkQsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQzFCLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELGlFQUFpRTtBQUNqRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ25GLG1FQUFtRTtJQUNuRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDakIsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/archiver",
3
- "version": "0.54.0",
3
+ "version": "0.55.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -61,15 +61,15 @@
61
61
  ]
62
62
  },
63
63
  "dependencies": {
64
- "@aztec/circuit-types": "0.54.0",
65
- "@aztec/circuits.js": "0.54.0",
66
- "@aztec/ethereum": "0.54.0",
67
- "@aztec/foundation": "0.54.0",
68
- "@aztec/kv-store": "0.54.0",
69
- "@aztec/l1-artifacts": "0.54.0",
70
- "@aztec/protocol-contracts": "0.54.0",
71
- "@aztec/telemetry-client": "0.54.0",
72
- "@aztec/types": "0.54.0",
64
+ "@aztec/circuit-types": "0.55.1",
65
+ "@aztec/circuits.js": "0.55.1",
66
+ "@aztec/ethereum": "0.55.1",
67
+ "@aztec/foundation": "0.55.1",
68
+ "@aztec/kv-store": "0.55.1",
69
+ "@aztec/l1-artifacts": "0.55.1",
70
+ "@aztec/protocol-contracts": "0.55.1",
71
+ "@aztec/telemetry-client": "0.55.1",
72
+ "@aztec/types": "0.55.1",
73
73
  "debug": "^4.3.4",
74
74
  "lodash.groupby": "^4.6.0",
75
75
  "lodash.omit": "^4.5.0",
@@ -2,7 +2,7 @@ import {
2
2
  type FromLogType,
3
3
  type GetUnencryptedLogsResponse,
4
4
  type L1ToL2MessageSource,
5
- L2Block,
5
+ type L2Block,
6
6
  type L2BlockL2Logs,
7
7
  type L2BlockSource,
8
8
  type L2LogsSource,
@@ -30,6 +30,7 @@ import { Fr } from '@aztec/foundation/fields';
30
30
  import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log';
31
31
  import { RunningPromise } from '@aztec/foundation/running-promise';
32
32
  import { Timer } from '@aztec/foundation/timer';
33
+ import { RollupAbi } from '@aztec/l1-artifacts';
33
34
  import { ClassRegistererAddress } from '@aztec/protocol-contracts/class-registerer';
34
35
  import { type TelemetryClient } from '@aztec/telemetry-client';
35
36
  import {
@@ -42,20 +43,14 @@ import {
42
43
  } from '@aztec/types/contracts';
43
44
 
44
45
  import groupBy from 'lodash.groupby';
45
- import { type Chain, type HttpTransport, type PublicClient, createPublicClient, http } from 'viem';
46
+ import { type Chain, type HttpTransport, type PublicClient, createPublicClient, getContract, http } from 'viem';
46
47
 
47
48
  import { type ArchiverDataStore } from './archiver_store.js';
48
49
  import { type ArchiverConfig } from './config.js';
49
- import {
50
- retrieveBlockBodiesFromAvailabilityOracle,
51
- retrieveBlockMetadataFromRollup,
52
- retrieveL1ToL2Messages,
53
- retrieveL2ProofVerifiedEvents,
54
- } from './data_retrieval.js';
50
+ import { retrieveBlockFromRollup, retrieveL1ToL2Messages, retrieveL2ProofVerifiedEvents } from './data_retrieval.js';
55
51
  import { getL1BlockTime } from './eth_log_handlers.js';
56
52
  import { ArchiverInstrumentation } from './instrumentation.js';
57
53
  import { type SingletonDataRetrieval } from './structs/data_retrieval.js';
58
- import { type L1Published } from './structs/published.js';
59
54
 
60
55
  /**
61
56
  * Helper interface to combine all sources this archiver implementation provides.
@@ -86,7 +81,6 @@ export class Archiver implements ArchiveSource {
86
81
  constructor(
87
82
  private readonly publicClient: PublicClient<HttpTransport, Chain>,
88
83
  private readonly rollupAddress: EthAddress,
89
- private readonly availabilityOracleAddress: EthAddress,
90
84
  private readonly inboxAddress: EthAddress,
91
85
  private readonly registryAddress: EthAddress,
92
86
  private readonly store: ArchiverDataStore,
@@ -116,16 +110,23 @@ export class Archiver implements ArchiveSource {
116
110
  pollingInterval: config.viemPollingIntervalMS,
117
111
  });
118
112
 
113
+ const rollup = getContract({
114
+ address: config.l1Contracts.rollupAddress.toString(),
115
+ abi: RollupAbi,
116
+ client: publicClient,
117
+ });
118
+
119
+ const l1StartBlock = await rollup.read.L1_BLOCK_AT_GENESIS();
120
+
119
121
  const archiver = new Archiver(
120
122
  publicClient,
121
123
  config.l1Contracts.rollupAddress,
122
- config.l1Contracts.availabilityOracleAddress,
123
124
  config.l1Contracts.inboxAddress,
124
125
  config.l1Contracts.registryAddress,
125
126
  archiverStore,
126
127
  config.archiverPollingIntervalMS,
127
128
  new ArchiverInstrumentation(telemetry),
128
- BigInt(config.archiverL1StartBlock),
129
+ BigInt(l1StartBlock),
129
130
  );
130
131
  await archiver.start(blockUntilSynced);
131
132
  return archiver;
@@ -247,72 +248,26 @@ export class Archiver implements ArchiveSource {
247
248
  // Read all data from chain and then write to our stores at the end
248
249
  const nextExpectedL2BlockNum = BigInt((await this.store.getSynchedL2BlockNumber()) + 1);
249
250
 
250
- this.log.debug(`Retrieving block bodies from ${blockBodiesSynchedTo + 1n} to ${currentL1BlockNumber}`);
251
- const retrievedBlockBodies = await retrieveBlockBodiesFromAvailabilityOracle(
251
+ this.log.debug(`Retrieving blocks from ${blocksSynchedTo + 1n} to ${currentL1BlockNumber}`);
252
+ const retrievedBlocks = await retrieveBlockFromRollup(
252
253
  this.publicClient,
253
- this.availabilityOracleAddress,
254
+ this.rollupAddress,
254
255
  blockUntilSynced,
255
- blockBodiesSynchedTo + 1n,
256
+ blocksSynchedTo + 1n,
256
257
  currentL1BlockNumber,
258
+ nextExpectedL2BlockNum,
257
259
  );
258
260
 
259
- this.log.debug(
260
- `Retrieved ${retrievedBlockBodies.retrievedData.length} block bodies up to L1 block ${retrievedBlockBodies.lastProcessedL1BlockNumber}`,
261
- );
262
- await this.store.addBlockBodies(retrievedBlockBodies);
263
-
264
- // Now that we have block bodies we will retrieve block metadata and build L2 blocks from the bodies and the metadata
265
- let retrievedBlocks: L1Published<L2Block>[];
266
- let lastProcessedL1BlockNumber: bigint;
267
- {
268
- // @todo @LHerskind Investigate how necessary that nextExpectedL2BlockNum really is.
269
- // Also, I would expect it to break horribly if we have a reorg.
270
- this.log.debug(`Retrieving block metadata from ${blocksSynchedTo + 1n} to ${currentL1BlockNumber}`);
271
- const retrievedBlockMetadata = await retrieveBlockMetadataFromRollup(
272
- this.publicClient,
273
- this.rollupAddress,
274
- blockUntilSynced,
275
- blocksSynchedTo + 1n,
276
- currentL1BlockNumber,
277
- nextExpectedL2BlockNum,
278
- );
261
+ // Add the body
279
262
 
280
- const retrievedBodyHashes = retrievedBlockMetadata.map(([header]) => header.contentCommitment.txsEffectsHash);
281
-
282
- // @note @LHerskind We will occasionally be hitting this point BEFORE, we have actually retrieved the bodies.
283
- // The main reason this have not been an issue earlier is because:
284
- // i) the design previously published the body in one tx and the header in another,
285
- // which in an anvil auto mine world mean that they are separate blocks.
286
- // ii) We have been lucky that latency have been small enough to not matter.
287
- const blockBodiesFromStore = await this.store.getBlockBodies(retrievedBodyHashes);
288
-
289
- if (retrievedBlockMetadata.length !== blockBodiesFromStore.length) {
290
- this.log.warn('Block headers length does not equal block bodies length');
291
- }
292
-
293
- const blocks: L1Published<L2Block>[] = [];
294
- for (let i = 0; i < retrievedBlockMetadata.length; i++) {
295
- const [header, archive, l1] = retrievedBlockMetadata[i];
296
- const blockBody = blockBodiesFromStore[i];
297
- if (blockBody) {
298
- blocks.push({ data: new L2Block(archive, header, blockBody), l1 });
299
- } else {
300
- this.log.warn(`Block body not found for block ${header.globalVariables.blockNumber.toBigInt()}.`);
301
- }
302
- }
303
-
304
- (blocks.length ? this.log.verbose : this.log.debug)(
305
- `Retrieved ${blocks.length || 'no'} new L2 blocks between L1 blocks ${
306
- blocksSynchedTo + 1n
307
- } and ${currentL1BlockNumber}.`,
308
- );
263
+ (retrievedBlocks.length ? this.log.verbose : this.log.debug)(
264
+ `Retrieved ${retrievedBlocks.length || 'no'} new L2 blocks between L1 blocks ${
265
+ blocksSynchedTo + 1n
266
+ } and ${currentL1BlockNumber}.`,
267
+ );
309
268
 
310
- retrievedBlocks = blocks;
311
- lastProcessedL1BlockNumber =
312
- retrievedBlockMetadata.length > 0
313
- ? retrievedBlockMetadata[retrievedBlockMetadata.length - 1][2].blockNumber
314
- : blocksSynchedTo;
315
- }
269
+ const lastProcessedL1BlockNumber =
270
+ retrievedBlocks.length > 0 ? retrievedBlocks[retrievedBlocks.length - 1].l1.blockNumber : blocksSynchedTo;
316
271
 
317
272
  this.log.debug(
318
273
  `Processing retrieved blocks ${retrievedBlocks
@@ -320,29 +275,33 @@ export class Archiver implements ArchiveSource {
320
275
  .join(',')} with last processed L1 block ${lastProcessedL1BlockNumber}`,
321
276
  );
322
277
 
323
- await Promise.all(
324
- retrievedBlocks.map(block => {
325
- const noteEncryptedLogs = block.data.body.noteEncryptedLogs;
326
- const encryptedLogs = block.data.body.encryptedLogs;
327
- const unencryptedLogs = block.data.body.unencryptedLogs;
328
- return this.store.addLogs(noteEncryptedLogs, encryptedLogs, unencryptedLogs, block.data.number);
329
- }),
330
- );
278
+ if (retrievedBlocks.length > 0) {
279
+ await Promise.all(
280
+ retrievedBlocks.map(block => {
281
+ const noteEncryptedLogs = block.data.body.noteEncryptedLogs;
282
+ const encryptedLogs = block.data.body.encryptedLogs;
283
+ const unencryptedLogs = block.data.body.unencryptedLogs;
284
+ return this.store.addLogs(noteEncryptedLogs, encryptedLogs, unencryptedLogs, block.data.number);
285
+ }),
286
+ );
331
287
 
332
- // Unroll all logs emitted during the retrieved blocks and extract any contract classes and instances from them
333
- await Promise.all(
334
- retrievedBlocks.map(async block => {
335
- const blockLogs = block.data.body.txEffects
336
- .flatMap(txEffect => (txEffect ? [txEffect.unencryptedLogs] : []))
337
- .flatMap(txLog => txLog.unrollLogs());
338
- await this.storeRegisteredContractClasses(blockLogs, block.data.number);
339
- await this.storeDeployedContractInstances(blockLogs, block.data.number);
340
- await this.storeBroadcastedIndividualFunctions(blockLogs, block.data.number);
341
- }),
342
- );
288
+ // Unroll all logs emitted during the retrieved blocks and extract any contract classes and instances from them
289
+ await Promise.all(
290
+ retrievedBlocks.map(async block => {
291
+ const blockLogs = block.data.body.txEffects
292
+ .flatMap(txEffect => (txEffect ? [txEffect.unencryptedLogs] : []))
293
+ .flatMap(txLog => txLog.unrollLogs());
294
+ await this.storeRegisteredContractClasses(blockLogs, block.data.number);
295
+ await this.storeDeployedContractInstances(blockLogs, block.data.number);
296
+ await this.storeBroadcastedIndividualFunctions(blockLogs, block.data.number);
297
+ }),
298
+ );
343
299
 
344
- if (retrievedBlocks.length > 0) {
345
300
  const timer = new Timer();
301
+ await this.store.addBlockBodies({
302
+ lastProcessedL1BlockNumber: lastProcessedL1BlockNumber,
303
+ retrievedData: retrievedBlocks.map(b => b.data.body),
304
+ });
346
305
  await this.store.addBlocks(retrievedBlocks);
347
306
  this.instrumentation.processNewBlocks(
348
307
  timer.ms() / retrievedBlocks.length,
@@ -22,11 +22,6 @@ export type ArchiverConfig = {
22
22
  */
23
23
  archiverPollingIntervalMS?: number;
24
24
 
25
- /**
26
- * The L1 block to start reading from
27
- */
28
- archiverL1StartBlock: number;
29
-
30
25
  /**
31
26
  * The polling interval viem uses in ms
32
27
  */
@@ -57,11 +52,6 @@ export const archiverConfigMappings: ConfigMappingsType<ArchiverConfig> = {
57
52
  description: 'The polling interval in ms for retrieving new L2 blocks and encrypted logs.',
58
53
  ...numberConfigHelper(1000),
59
54
  },
60
- archiverL1StartBlock: {
61
- env: 'ARCHIVER_L1_START_BLOCK',
62
- description: 'The L1 block the archiver should start reading logs from',
63
- ...numberConfigHelper(0),
64
- },
65
55
  viemPollingIntervalMS: {
66
56
  env: 'ARCHIVER_VIEM_POLLING_INTERVAL_MS',
67
57
  description: 'The polling interval viem uses in ms',
@@ -1,5 +1,5 @@
1
- import { type Body, type InboxLeaf } from '@aztec/circuit-types';
2
- import { type AppendOnlyTreeSnapshot, Fr, type Header, type Proof } from '@aztec/circuits.js';
1
+ import { type InboxLeaf, type L2Block } from '@aztec/circuit-types';
2
+ import { Fr, type Proof } from '@aztec/circuits.js';
3
3
  import { type EthAddress } from '@aztec/foundation/eth-address';
4
4
  import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log';
5
5
  import { RollupAbi } from '@aztec/l1-artifacts';
@@ -10,25 +10,23 @@ import {
10
10
  getBlockProofFromSubmitProofTx,
11
11
  getL2BlockProposedLogs,
12
12
  getMessageSentLogs,
13
- getTxsPublishedLogs,
14
13
  processL2BlockProposedLogs,
15
14
  processMessageSentLogs,
16
- processTxsPublishedLogs,
17
15
  } from './eth_log_handlers.js';
18
16
  import { type DataRetrieval } from './structs/data_retrieval.js';
19
- import { type L1PublishedData } from './structs/published.js';
17
+ import { type L1Published } from './structs/published.js';
20
18
 
21
19
  /**
22
- * Fetches new L2 block metadata (header, archive snapshot).
20
+ * Fetches new L2 blocks.
23
21
  * @param publicClient - The viem public client to use for transaction retrieval.
24
22
  * @param rollupAddress - The address of the rollup contract.
25
23
  * @param blockUntilSynced - If true, blocks until the archiver has fully synced.
26
24
  * @param searchStartBlock - The block number to use for starting the search.
27
25
  * @param searchEndBlock - The highest block number that we should search up to.
28
26
  * @param expectedNextL2BlockNum - The next L2 block number that we expect to find.
29
- * @returns An array of tuples representing block metadata including the header, archive tree snapshot; as well as the next eth block to search from.
27
+ * @returns An array of block; as well as the next eth block to search from.
30
28
  */
31
- export async function retrieveBlockMetadataFromRollup(
29
+ export async function retrieveBlockFromRollup(
32
30
  publicClient: PublicClient,
33
31
  rollupAddress: EthAddress,
34
32
  blockUntilSynced: boolean,
@@ -36,8 +34,8 @@ export async function retrieveBlockMetadataFromRollup(
36
34
  searchEndBlock: bigint,
37
35
  expectedNextL2BlockNum: bigint,
38
36
  logger: DebugLogger = createDebugLogger('aztec:archiver'),
39
- ): Promise<[Header, AppendOnlyTreeSnapshot, L1PublishedData][]> {
40
- const retrievedBlockMetadata: [Header, AppendOnlyTreeSnapshot, L1PublishedData][] = [];
37
+ ): Promise<L1Published<L2Block>[]> {
38
+ const retrievedBlocks: L1Published<L2Block>[] = [];
41
39
  do {
42
40
  if (searchStartBlock > searchEndBlock) {
43
41
  break;
@@ -57,56 +55,12 @@ export async function retrieveBlockMetadataFromRollup(
57
55
  `Got L2 block processed logs for ${L2BlockProposedLogs[0].blockNumber}-${lastLog.blockNumber} between ${searchStartBlock}-${searchEndBlock} L1 blocks`,
58
56
  );
59
57
 
60
- const newBlockMetadata = await processL2BlockProposedLogs(
61
- publicClient,
62
- expectedNextL2BlockNum,
63
- L2BlockProposedLogs,
64
- );
65
- retrievedBlockMetadata.push(...newBlockMetadata);
58
+ const newBlocks = await processL2BlockProposedLogs(publicClient, expectedNextL2BlockNum, L2BlockProposedLogs);
59
+ retrievedBlocks.push(...newBlocks);
66
60
  searchStartBlock = lastLog.blockNumber! + 1n;
67
- expectedNextL2BlockNum += BigInt(newBlockMetadata.length);
68
- } while (blockUntilSynced && searchStartBlock <= searchEndBlock);
69
- return retrievedBlockMetadata;
70
- }
71
-
72
- /**
73
- * Fetches new L2 block bodies and their hashes.
74
- * @param publicClient - The viem public client to use for transaction retrieval.
75
- * @param availabilityOracleAddress - The address of the availability oracle contract.
76
- * @param blockUntilSynced - If true, blocks until the archiver has fully synced.
77
- * @param searchStartBlock - The block number to use for starting the search.
78
- * @param searchEndBlock - The highest block number that we should search up to.
79
- * @returns A array of L2 block bodies as well as the next eth block to search from
80
- */
81
- export async function retrieveBlockBodiesFromAvailabilityOracle(
82
- publicClient: PublicClient,
83
- availabilityOracleAddress: EthAddress,
84
- blockUntilSynced: boolean,
85
- searchStartBlock: bigint,
86
- searchEndBlock: bigint,
87
- ): Promise<DataRetrieval<Body>> {
88
- const retrievedBlockBodies: Body[] = [];
89
-
90
- do {
91
- if (searchStartBlock > searchEndBlock) {
92
- break;
93
- }
94
- const l2TxsPublishedLogs = await getTxsPublishedLogs(
95
- publicClient,
96
- availabilityOracleAddress,
97
- searchStartBlock,
98
- searchEndBlock,
99
- );
100
- if (l2TxsPublishedLogs.length === 0) {
101
- break;
102
- }
103
-
104
- const newBlockBodies = await processTxsPublishedLogs(publicClient, l2TxsPublishedLogs);
105
- retrievedBlockBodies.push(...newBlockBodies.map(([body]) => body));
106
- searchStartBlock = l2TxsPublishedLogs[l2TxsPublishedLogs.length - 1].blockNumber + 1n;
61
+ expectedNextL2BlockNum += BigInt(newBlocks.length);
107
62
  } while (blockUntilSynced && searchStartBlock <= searchEndBlock);
108
-
109
- return { lastProcessedL1BlockNumber: searchStartBlock - 1n, retrievedData: retrievedBlockBodies };
63
+ return retrievedBlocks;
110
64
  }
111
65
 
112
66
  /**