@aztec/archiver 0.54.0 → 0.55.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.
@@ -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.0",
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.0",
65
+ "@aztec/circuits.js": "0.55.0",
66
+ "@aztec/ethereum": "0.55.0",
67
+ "@aztec/foundation": "0.55.0",
68
+ "@aztec/kv-store": "0.55.0",
69
+ "@aztec/l1-artifacts": "0.55.0",
70
+ "@aztec/protocol-contracts": "0.55.0",
71
+ "@aztec/telemetry-client": "0.55.0",
72
+ "@aztec/types": "0.55.0",
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,
@@ -46,16 +46,10 @@ import { type Chain, type HttpTransport, type PublicClient, createPublicClient,
46
46
 
47
47
  import { type ArchiverDataStore } from './archiver_store.js';
48
48
  import { type ArchiverConfig } from './config.js';
49
- import {
50
- retrieveBlockBodiesFromAvailabilityOracle,
51
- retrieveBlockMetadataFromRollup,
52
- retrieveL1ToL2Messages,
53
- retrieveL2ProofVerifiedEvents,
54
- } from './data_retrieval.js';
49
+ import { retrieveBlockFromRollup, retrieveL1ToL2Messages, retrieveL2ProofVerifiedEvents } from './data_retrieval.js';
55
50
  import { getL1BlockTime } from './eth_log_handlers.js';
56
51
  import { ArchiverInstrumentation } from './instrumentation.js';
57
52
  import { type SingletonDataRetrieval } from './structs/data_retrieval.js';
58
- import { type L1Published } from './structs/published.js';
59
53
 
60
54
  /**
61
55
  * Helper interface to combine all sources this archiver implementation provides.
@@ -86,7 +80,6 @@ export class Archiver implements ArchiveSource {
86
80
  constructor(
87
81
  private readonly publicClient: PublicClient<HttpTransport, Chain>,
88
82
  private readonly rollupAddress: EthAddress,
89
- private readonly availabilityOracleAddress: EthAddress,
90
83
  private readonly inboxAddress: EthAddress,
91
84
  private readonly registryAddress: EthAddress,
92
85
  private readonly store: ArchiverDataStore,
@@ -119,7 +112,6 @@ export class Archiver implements ArchiveSource {
119
112
  const archiver = new Archiver(
120
113
  publicClient,
121
114
  config.l1Contracts.rollupAddress,
122
- config.l1Contracts.availabilityOracleAddress,
123
115
  config.l1Contracts.inboxAddress,
124
116
  config.l1Contracts.registryAddress,
125
117
  archiverStore,
@@ -247,72 +239,26 @@ export class Archiver implements ArchiveSource {
247
239
  // Read all data from chain and then write to our stores at the end
248
240
  const nextExpectedL2BlockNum = BigInt((await this.store.getSynchedL2BlockNumber()) + 1);
249
241
 
250
- this.log.debug(`Retrieving block bodies from ${blockBodiesSynchedTo + 1n} to ${currentL1BlockNumber}`);
251
- const retrievedBlockBodies = await retrieveBlockBodiesFromAvailabilityOracle(
242
+ this.log.debug(`Retrieving blocks from ${blocksSynchedTo + 1n} to ${currentL1BlockNumber}`);
243
+ const retrievedBlocks = await retrieveBlockFromRollup(
252
244
  this.publicClient,
253
- this.availabilityOracleAddress,
245
+ this.rollupAddress,
254
246
  blockUntilSynced,
255
- blockBodiesSynchedTo + 1n,
247
+ blocksSynchedTo + 1n,
256
248
  currentL1BlockNumber,
249
+ nextExpectedL2BlockNum,
257
250
  );
258
251
 
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
- );
279
-
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);
252
+ // Add the body
288
253
 
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
- );
254
+ (retrievedBlocks.length ? this.log.verbose : this.log.debug)(
255
+ `Retrieved ${retrievedBlocks.length || 'no'} new L2 blocks between L1 blocks ${
256
+ blocksSynchedTo + 1n
257
+ } and ${currentL1BlockNumber}.`,
258
+ );
309
259
 
310
- retrievedBlocks = blocks;
311
- lastProcessedL1BlockNumber =
312
- retrievedBlockMetadata.length > 0
313
- ? retrievedBlockMetadata[retrievedBlockMetadata.length - 1][2].blockNumber
314
- : blocksSynchedTo;
315
- }
260
+ const lastProcessedL1BlockNumber =
261
+ retrievedBlocks.length > 0 ? retrievedBlocks[retrievedBlocks.length - 1].l1.blockNumber : blocksSynchedTo;
316
262
 
317
263
  this.log.debug(
318
264
  `Processing retrieved blocks ${retrievedBlocks
@@ -320,29 +266,33 @@ export class Archiver implements ArchiveSource {
320
266
  .join(',')} with last processed L1 block ${lastProcessedL1BlockNumber}`,
321
267
  );
322
268
 
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
- );
269
+ if (retrievedBlocks.length > 0) {
270
+ await Promise.all(
271
+ retrievedBlocks.map(block => {
272
+ const noteEncryptedLogs = block.data.body.noteEncryptedLogs;
273
+ const encryptedLogs = block.data.body.encryptedLogs;
274
+ const unencryptedLogs = block.data.body.unencryptedLogs;
275
+ return this.store.addLogs(noteEncryptedLogs, encryptedLogs, unencryptedLogs, block.data.number);
276
+ }),
277
+ );
331
278
 
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
- );
279
+ // Unroll all logs emitted during the retrieved blocks and extract any contract classes and instances from them
280
+ await Promise.all(
281
+ retrievedBlocks.map(async block => {
282
+ const blockLogs = block.data.body.txEffects
283
+ .flatMap(txEffect => (txEffect ? [txEffect.unencryptedLogs] : []))
284
+ .flatMap(txLog => txLog.unrollLogs());
285
+ await this.storeRegisteredContractClasses(blockLogs, block.data.number);
286
+ await this.storeDeployedContractInstances(blockLogs, block.data.number);
287
+ await this.storeBroadcastedIndividualFunctions(blockLogs, block.data.number);
288
+ }),
289
+ );
343
290
 
344
- if (retrievedBlocks.length > 0) {
345
291
  const timer = new Timer();
292
+ await this.store.addBlockBodies({
293
+ lastProcessedL1BlockNumber: lastProcessedL1BlockNumber,
294
+ retrievedData: retrievedBlocks.map(b => b.data.body),
295
+ });
346
296
  await this.store.addBlocks(retrievedBlocks);
347
297
  this.instrumentation.processNewBlocks(
348
298
  timer.ms() / retrievedBlocks.length,
@@ -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
  /**