@aztec/archiver 3.0.0-nightly.20251023 → 3.0.0-nightly.20251025

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.
@@ -82,6 +82,7 @@ export declare class Archiver extends Archiver_base implements ArchiveSource, Tr
82
82
  skipValidateBlockAttestations?: boolean;
83
83
  }, blobSinkClient: BlobSinkClientInterface, epochCache: EpochCache, instrumentation: ArchiverInstrumentation, l1constants: L1RollupConstants & {
84
84
  l1StartBlockHash: Buffer32;
85
+ genesisArchiveRoot: Fr;
85
86
  }, log?: Logger);
86
87
  /**
87
88
  * Creates a new instance of the Archiver and blocks until it syncs from chain.
@@ -124,6 +125,9 @@ export declare class Archiver extends Archiver_base implements ArchiveSource, Tr
124
125
  stop(): Promise<void>;
125
126
  backupTo(destPath: string): Promise<string>;
126
127
  getL1Constants(): Promise<L1RollupConstants>;
128
+ getGenesisValues(): Promise<{
129
+ genesisArchiveRoot: Fr;
130
+ }>;
127
131
  getRollupAddress(): Promise<EthAddress>;
128
132
  getRegistryAddress(): Promise<EthAddress>;
129
133
  getL1BlockNumber(): bigint;
@@ -145,6 +149,10 @@ export declare class Archiver extends Archiver_base implements ArchiveSource, Tr
145
149
  getBlocks(from: number, limit: number, proven?: boolean): Promise<L2Block[]>;
146
150
  /** Equivalent to getBlocks but includes publish data. */
147
151
  getPublishedBlocks(from: number, limit: number, proven?: boolean): Promise<PublishedL2Block[]>;
152
+ getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
153
+ getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
154
+ getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
155
+ getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
148
156
  /**
149
157
  * Gets an l2 block.
150
158
  * @param number - The block number to return.
@@ -225,7 +233,11 @@ export declare class ArchiverStoreHelper implements Omit<ArchiverDataStore, 'add
225
233
  unwindBlocks(from: number, blocksToUnwind: number): Promise<boolean>;
226
234
  getPublishedBlocks(from: number, limit: number): Promise<PublishedL2Block[]>;
227
235
  getPublishedBlock(number: number): Promise<PublishedL2Block | undefined>;
236
+ getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
237
+ getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
228
238
  getBlockHeaders(from: number, limit: number): Promise<BlockHeader[]>;
239
+ getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
240
+ getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
229
241
  getTxEffect(txHash: TxHash): Promise<IndexedTxEffect | undefined>;
230
242
  getSettledTxReceipt(txHash: TxHash): Promise<TxReceipt | undefined>;
231
243
  addL1ToL2Messages(messages: InboxMessage[]): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver.ts"],"names":[],"mappings":"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"}
@@ -89,10 +89,11 @@ function mapArchiverConfig(config) {
89
89
  pollingInterval: config.viemPollingIntervalMS
90
90
  });
91
91
  const rollup = new RollupContract(publicClient, config.l1Contracts.rollupAddress);
92
- const [l1StartBlock, l1GenesisTime, proofSubmissionEpochs] = await Promise.all([
92
+ const [l1StartBlock, l1GenesisTime, proofSubmissionEpochs, genesisArchiveRoot] = await Promise.all([
93
93
  rollup.getL1StartBlock(),
94
94
  rollup.getL1GenesisTime(),
95
- rollup.getProofSubmissionEpochs()
95
+ rollup.getProofSubmissionEpochs(),
96
+ rollup.getGenesisArchiveTreeRoot()
96
97
  ]);
97
98
  const l1StartBlockHash = await publicClient.getBlock({
98
99
  blockNumber: l1StartBlock,
@@ -106,7 +107,8 @@ function mapArchiverConfig(config) {
106
107
  epochDuration,
107
108
  slotDuration,
108
109
  ethereumSlotDuration,
109
- proofSubmissionEpochs: Number(proofSubmissionEpochs)
110
+ proofSubmissionEpochs: Number(proofSubmissionEpochs),
111
+ genesisArchiveRoot: Fr.fromHexString(genesisArchiveRoot)
110
112
  };
111
113
  const opts = merge({
112
114
  pollingIntervalMs: 10_000,
@@ -718,6 +720,11 @@ function mapArchiverConfig(config) {
718
720
  getL1Constants() {
719
721
  return Promise.resolve(this.l1constants);
720
722
  }
723
+ getGenesisValues() {
724
+ return Promise.resolve({
725
+ genesisArchiveRoot: this.l1constants.genesisArchiveRoot
726
+ });
727
+ }
721
728
  getRollupAddress() {
722
729
  return Promise.resolve(this.l1Addresses.rollupAddress);
723
730
  }
@@ -815,6 +822,18 @@ function mapArchiverConfig(config) {
815
822
  const limitWithProven = proven ? Math.min(limit, Math.max(await this.store.getProvenL2BlockNumber() - from + 1, 0)) : limit;
816
823
  return limitWithProven === 0 ? [] : await this.store.getPublishedBlocks(from, limitWithProven);
817
824
  }
825
+ getPublishedBlockByHash(blockHash) {
826
+ return this.store.getPublishedBlockByHash(blockHash);
827
+ }
828
+ getPublishedBlockByArchive(archive) {
829
+ return this.store.getPublishedBlockByArchive(archive);
830
+ }
831
+ getBlockHeaderByHash(blockHash) {
832
+ return this.store.getBlockHeaderByHash(blockHash);
833
+ }
834
+ getBlockHeaderByArchive(archive) {
835
+ return this.store.getBlockHeaderByArchive(archive);
836
+ }
818
837
  /**
819
838
  * Gets an l2 block.
820
839
  * @param number - The block number to return.
@@ -1200,9 +1219,21 @@ var Operation = /*#__PURE__*/ function(Operation) {
1200
1219
  getPublishedBlock(number) {
1201
1220
  return this.store.getPublishedBlock(number);
1202
1221
  }
1222
+ getPublishedBlockByHash(blockHash) {
1223
+ return this.store.getPublishedBlockByHash(blockHash);
1224
+ }
1225
+ getPublishedBlockByArchive(archive) {
1226
+ return this.store.getPublishedBlockByArchive(archive);
1227
+ }
1203
1228
  getBlockHeaders(from, limit) {
1204
1229
  return this.store.getBlockHeaders(from, limit);
1205
1230
  }
1231
+ getBlockHeaderByHash(blockHash) {
1232
+ return this.store.getBlockHeaderByHash(blockHash);
1233
+ }
1234
+ getBlockHeaderByArchive(archive) {
1235
+ return this.store.getBlockHeaderByArchive(archive);
1236
+ }
1206
1237
  getTxEffect(txHash) {
1207
1238
  return this.store.getTxEffect(txHash);
1208
1239
  }
@@ -50,6 +50,16 @@ export interface ArchiverDataStore {
50
50
  * @param number - The block number to return.
51
51
  */
52
52
  getPublishedBlock(number: number): Promise<PublishedL2Block | undefined>;
53
+ /**
54
+ * Returns the block for the given hash, or undefined if not exists.
55
+ * @param blockHash - The block hash to return.
56
+ */
57
+ getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
58
+ /**
59
+ * Returns the block for the given archive root, or undefined if not exists.
60
+ * @param archive - The archive root to return.
61
+ */
62
+ getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
53
63
  /**
54
64
  * Gets up to `limit` amount of published L2 blocks starting from `from`.
55
65
  * @param from - Number of the first block to return (inclusive).
@@ -64,6 +74,16 @@ export interface ArchiverDataStore {
64
74
  * @returns The requested L2 block headers.
65
75
  */
66
76
  getBlockHeaders(from: number, limit: number): Promise<BlockHeader[]>;
77
+ /**
78
+ * Returns the block header for the given hash, or undefined if not exists.
79
+ * @param blockHash - The block hash to return.
80
+ */
81
+ getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
82
+ /**
83
+ * Returns the block header for the given archive root, or undefined if not exists.
84
+ * @param archive - The archive root to return.
85
+ */
86
+ getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
67
87
  /**
68
88
  * Gets a tx effect.
69
89
  * @param txHash - The hash of the tx corresponding to the tx effect.
@@ -1 +1 @@
1
- {"version":3,"file":"archiver_store.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"archiver_store.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"archiver_store_test_suite.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store_test_suite.ts"],"names":[],"mappings":"AAoCA,OAAO,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAC;AAKnF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAqlC/D"}
1
+ {"version":3,"file":"archiver_store_test_suite.d.ts","sourceRoot":"","sources":["../../src/archiver/archiver_store_test_suite.ts"],"names":[],"mappings":"AAoCA,OAAO,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAC;AAKnF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,QA2rC/D"}
@@ -130,6 +130,24 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
130
130
  await store.addBlocks(blocks);
131
131
  await expect(store.unwindBlocks(5, 1)).rejects.toThrow(/can only unwind blocks from the tip/i);
132
132
  });
133
+ it('unwound blocks and headers cannot be retrieved by hash or archive', async ()=>{
134
+ await store.addBlocks(blocks);
135
+ const lastBlock = blocks[blocks.length - 1];
136
+ const blockHash = await lastBlock.block.hash();
137
+ const archive = lastBlock.block.archive.root;
138
+ // Verify block and header exist before unwinding
139
+ expect(await store.getPublishedBlockByHash(blockHash)).toBeDefined();
140
+ expect(await store.getPublishedBlockByArchive(archive)).toBeDefined();
141
+ expect(await store.getBlockHeaderByHash(blockHash)).toBeDefined();
142
+ expect(await store.getBlockHeaderByArchive(archive)).toBeDefined();
143
+ // Unwind the block
144
+ await store.unwindBlocks(lastBlock.block.number, 1);
145
+ // Verify neither block nor header can be retrieved after unwinding
146
+ expect(await store.getPublishedBlockByHash(blockHash)).toBeUndefined();
147
+ expect(await store.getPublishedBlockByArchive(archive)).toBeUndefined();
148
+ expect(await store.getBlockHeaderByHash(blockHash)).toBeUndefined();
149
+ expect(await store.getBlockHeaderByArchive(archive)).toBeUndefined();
150
+ });
133
151
  });
134
152
  describe('getBlocks', ()=>{
135
153
  beforeEach(async ()=>{
@@ -165,6 +183,78 @@ import { MessageStoreError } from './kv_archiver_store/message_store.js';
165
183
  await expect(store.getPublishedBlocks(20, 2)).rejects.toThrow(`mismatch`);
166
184
  });
167
185
  });
186
+ describe('getPublishedBlockByHash', ()=>{
187
+ beforeEach(async ()=>{
188
+ await store.addBlocks(blocks);
189
+ });
190
+ it('retrieves a block by its hash', async ()=>{
191
+ const expectedBlock = blocks[5];
192
+ const blockHash = await expectedBlock.block.hash();
193
+ const retrievedBlock = await store.getPublishedBlockByHash(blockHash);
194
+ expect(retrievedBlock).toBeDefined();
195
+ expectBlocksEqual([
196
+ retrievedBlock
197
+ ], [
198
+ expectedBlock
199
+ ]);
200
+ });
201
+ it('returns undefined for non-existent block hash', async ()=>{
202
+ const nonExistentHash = Fr.random();
203
+ await expect(store.getPublishedBlockByHash(nonExistentHash)).resolves.toBeUndefined();
204
+ });
205
+ });
206
+ describe('getPublishedBlockByArchive', ()=>{
207
+ beforeEach(async ()=>{
208
+ await store.addBlocks(blocks);
209
+ });
210
+ it('retrieves a block by its archive root', async ()=>{
211
+ const expectedBlock = blocks[3];
212
+ const archive = expectedBlock.block.archive.root;
213
+ const retrievedBlock = await store.getPublishedBlockByArchive(archive);
214
+ expect(retrievedBlock).toBeDefined();
215
+ expectBlocksEqual([
216
+ retrievedBlock
217
+ ], [
218
+ expectedBlock
219
+ ]);
220
+ });
221
+ it('returns undefined for non-existent archive root', async ()=>{
222
+ const nonExistentArchive = Fr.random();
223
+ await expect(store.getPublishedBlockByArchive(nonExistentArchive)).resolves.toBeUndefined();
224
+ });
225
+ });
226
+ describe('getBlockHeaderByHash', ()=>{
227
+ beforeEach(async ()=>{
228
+ await store.addBlocks(blocks);
229
+ });
230
+ it('retrieves a block header by its hash', async ()=>{
231
+ const expectedBlock = blocks[7];
232
+ const blockHash = await expectedBlock.block.hash();
233
+ const retrievedHeader = await store.getBlockHeaderByHash(blockHash);
234
+ expect(retrievedHeader).toBeDefined();
235
+ expect(retrievedHeader.equals(expectedBlock.block.getBlockHeader())).toBe(true);
236
+ });
237
+ it('returns undefined for non-existent block hash', async ()=>{
238
+ const nonExistentHash = Fr.random();
239
+ await expect(store.getBlockHeaderByHash(nonExistentHash)).resolves.toBeUndefined();
240
+ });
241
+ });
242
+ describe('getBlockHeaderByArchive', ()=>{
243
+ beforeEach(async ()=>{
244
+ await store.addBlocks(blocks);
245
+ });
246
+ it('retrieves a block header by its archive root', async ()=>{
247
+ const expectedBlock = blocks[2];
248
+ const archive = expectedBlock.block.archive.root;
249
+ const retrievedHeader = await store.getBlockHeaderByArchive(archive);
250
+ expect(retrievedHeader).toBeDefined();
251
+ expect(retrievedHeader.equals(expectedBlock.block.getBlockHeader())).toBe(true);
252
+ });
253
+ it('returns undefined for non-existent archive root', async ()=>{
254
+ const nonExistentArchive = Fr.random();
255
+ await expect(store.getBlockHeaderByArchive(nonExistentArchive)).resolves.toBeUndefined();
256
+ });
257
+ });
168
258
  describe('getSyncedL2BlockNumber', ()=>{
169
259
  it('returns the block number before INITIAL_L2_BLOCK_NUM if no blocks have been added', async ()=>{
170
260
  await expect(store.getSynchedL2BlockNumber()).resolves.toEqual(INITIAL_L2_BLOCK_NUM - 1);
@@ -22,7 +22,7 @@ export const archiverConfigMappings = {
22
22
  archiverStoreMapSizeKb: {
23
23
  env: 'ARCHIVER_STORE_MAP_SIZE_KB',
24
24
  parseEnv: (val)=>val ? +val : undefined,
25
- description: 'The maximum possible size of the archiver DB in KB. Overwrites the general dataStoreMapSizeKB.'
25
+ description: 'The maximum possible size of the archiver DB in KB. Overwrites the general dataStoreMapSizeKb.'
26
26
  },
27
27
  skipValidateBlockAttestations: {
28
28
  description: 'Whether to skip validating block attestations (use only for testing).',
@@ -1,6 +1,7 @@
1
+ import { Fr } from '@aztec/foundation/fields';
1
2
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
2
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- import { PublishedL2Block, type ValidateBlockResult } from '@aztec/stdlib/block';
4
+ import { L2BlockHash, PublishedL2Block, type ValidateBlockResult } from '@aztec/stdlib/block';
4
5
  import { BlockHeader, type IndexedTxEffect, TxHash, TxReceipt } from '@aztec/stdlib/tx';
5
6
  export { TxReceipt, type TxEffect, type TxHash } from '@aztec/stdlib/tx';
6
7
  /**
@@ -39,6 +40,30 @@ export declare class BlockStore {
39
40
  * @returns The requested L2 block.
40
41
  */
41
42
  getBlock(blockNumber: number): Promise<PublishedL2Block | undefined>;
43
+ /**
44
+ * Gets an L2 block by its hash.
45
+ * @param blockHash - The hash of the block to return.
46
+ * @returns The requested L2 block.
47
+ */
48
+ getBlockByHash(blockHash: L2BlockHash): Promise<PublishedL2Block | undefined>;
49
+ /**
50
+ * Gets an L2 block by its archive root.
51
+ * @param archive - The archive root of the block to return.
52
+ * @returns The requested L2 block.
53
+ */
54
+ getBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
55
+ /**
56
+ * Gets a block header by its hash.
57
+ * @param blockHash - The hash of the block to return.
58
+ * @returns The requested block header.
59
+ */
60
+ getBlockHeaderByHash(blockHash: L2BlockHash): Promise<BlockHeader | undefined>;
61
+ /**
62
+ * Gets a block header by its archive root.
63
+ * @param archive - The archive root of the block to return.
64
+ * @returns The requested block header.
65
+ */
66
+ getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
42
67
  /**
43
68
  * Gets the headers for a sequence of L2 blocks.
44
69
  * @param start - Number of the first block to return (inclusive).
@@ -1 +1 @@
1
- {"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/block_store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAA6C,MAAM,iBAAiB,CAAC;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAKL,gBAAgB,EAChB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,WAAW,EACX,KAAK,eAAe,EAEpB,MAAM,EACN,SAAS,EAGV,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAYzE;;GAEG;AACH,qBAAa,UAAU;;IAwBT,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,iBAAiB;IAUzC;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAwD7F;;;;;;OAMG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IA+BvD;;;;;OAKG;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC,gBAAgB,CAAC;IASvF;;;;OAIG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAQ1E;;;;;OAKG;IACI,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC;YAYzE,gBAAgB;YAajB,wBAAwB;IAuCtC;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAQvE;;;;OAIG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAgBzE;;;;OAIG;IACU,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IASvG;;;;OAIG;IACH,mBAAmB,CAAC,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAI7G;;;OAGG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKhD;;;OAGG;IACH,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAItD,uBAAuB,CAAC,aAAa,EAAE,MAAM;IAIvC,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ/C,sBAAsB,CAAC,WAAW,EAAE,MAAM;IAgB1C;;;OAGG;IACG,+BAA+B,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAQjF;;;OAGG;IACG,+BAA+B,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ9F"}
1
+ {"version":3,"file":"block_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/block_store.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,8 @@ export { TxReceipt } from '@aztec/stdlib/tx';
21
21
  /** Stores l2 block number of the last proven block */ #lastProvenL2Block;
22
22
  /** Stores the pending chain validation status */ #pendingChainValidationStatus;
23
23
  /** Index mapping a contract's address (as a string) to its location in a block */ #contractIndex;
24
+ /** Index mapping block hash to block number */ #blockHashIndex;
25
+ /** Index mapping block archive to block number */ #blockArchiveIndex;
24
26
  #log;
25
27
  constructor(db){
26
28
  this.db = db;
@@ -29,6 +31,8 @@ export { TxReceipt } from '@aztec/stdlib/tx';
29
31
  this.#blockTxs = db.openMap('archiver_block_txs');
30
32
  this.#txEffects = db.openMap('archiver_tx_effects');
31
33
  this.#contractIndex = db.openMap('archiver_contract_index');
34
+ this.#blockHashIndex = db.openMap('archiver_block_hash_index');
35
+ this.#blockArchiveIndex = db.openMap('archiver_block_archive_index');
32
36
  this.#lastSynchedL1Block = db.openSingleton('archiver_last_synched_l1_block');
33
37
  this.#lastProvenL2Block = db.openSingleton('archiver_last_proven_l2_block');
34
38
  this.#pendingChainValidationStatus = db.openSingleton('archiver_pending_chain_validation_status');
@@ -78,6 +82,9 @@ export { TxReceipt } from '@aztec/stdlib/tx';
78
82
  await this.#txEffects.set(txEffect.data.txHash.toString(), serializeIndexedTxEffect(txEffect));
79
83
  }
80
84
  await this.#blockTxs.set(blockHash.toString(), Buffer.concat(block.block.body.txEffects.map((tx)=>tx.txHash.toBuffer())));
85
+ // Update indices for block hash and archive
86
+ await this.#blockHashIndex.set(blockHash.toString(), block.block.number);
87
+ await this.#blockArchiveIndex.set(block.block.archive.root.toString(), block.block.number);
81
88
  }
82
89
  await this.#lastSynchedL1Block.set(blocks[blocks.length - 1].l1.blockNumber);
83
90
  return true;
@@ -110,6 +117,9 @@ export { TxReceipt } from '@aztec/stdlib/tx';
110
117
  await Promise.all(block.block.body.txEffects.map((tx)=>this.#txEffects.delete(tx.txHash.toString())));
111
118
  const blockHash = (await block.block.hash()).toString();
112
119
  await this.#blockTxs.delete(blockHash);
120
+ // Clean up indices
121
+ await this.#blockHashIndex.delete(blockHash);
122
+ await this.#blockArchiveIndex.delete(block.block.archive.root.toString());
113
123
  this.#log.debug(`Unwound block ${blockNumber} ${blockHash}`);
114
124
  }
115
125
  return true;
@@ -140,6 +150,58 @@ export { TxReceipt } from '@aztec/stdlib/tx';
140
150
  return this.getBlockFromBlockStorage(blockNumber, blockStorage);
141
151
  }
142
152
  /**
153
+ * Gets an L2 block by its hash.
154
+ * @param blockHash - The hash of the block to return.
155
+ * @returns The requested L2 block.
156
+ */ async getBlockByHash(blockHash) {
157
+ const blockNumber = await this.#blockHashIndex.getAsync(blockHash.toString());
158
+ if (blockNumber === undefined) {
159
+ return undefined;
160
+ }
161
+ return this.getBlock(blockNumber);
162
+ }
163
+ /**
164
+ * Gets an L2 block by its archive root.
165
+ * @param archive - The archive root of the block to return.
166
+ * @returns The requested L2 block.
167
+ */ async getBlockByArchive(archive) {
168
+ const blockNumber = await this.#blockArchiveIndex.getAsync(archive.toString());
169
+ if (blockNumber === undefined) {
170
+ return undefined;
171
+ }
172
+ return this.getBlock(blockNumber);
173
+ }
174
+ /**
175
+ * Gets a block header by its hash.
176
+ * @param blockHash - The hash of the block to return.
177
+ * @returns The requested block header.
178
+ */ async getBlockHeaderByHash(blockHash) {
179
+ const blockNumber = await this.#blockHashIndex.getAsync(blockHash.toString());
180
+ if (blockNumber === undefined) {
181
+ return undefined;
182
+ }
183
+ const blockStorage = await this.#blocks.getAsync(blockNumber);
184
+ if (!blockStorage || !blockStorage.header) {
185
+ return undefined;
186
+ }
187
+ return L2BlockHeader.fromBuffer(blockStorage.header).toBlockHeader();
188
+ }
189
+ /**
190
+ * Gets a block header by its archive root.
191
+ * @param archive - The archive root of the block to return.
192
+ * @returns The requested block header.
193
+ */ async getBlockHeaderByArchive(archive) {
194
+ const blockNumber = await this.#blockArchiveIndex.getAsync(archive.toString());
195
+ if (blockNumber === undefined) {
196
+ return undefined;
197
+ }
198
+ const blockStorage = await this.#blocks.getAsync(blockNumber);
199
+ if (!blockStorage || !blockStorage.header) {
200
+ return undefined;
201
+ }
202
+ return L2BlockHeader.fromBuffer(blockStorage.header).toBlockHeader();
203
+ }
204
+ /**
143
205
  * Gets the headers for a sequence of L2 blocks.
144
206
  * @param start - Number of the first block to return (inclusive).
145
207
  * @param limit - The number of blocks to return.
@@ -3,7 +3,7 @@ import type { Fr } from '@aztec/foundation/fields';
3
3
  import type { AztecAsyncKVStore, CustomRange, StoreSize } from '@aztec/kv-store';
4
4
  import { FunctionSelector } from '@aztec/stdlib/abi';
5
5
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
6
- import type { L2Block, ValidateBlockResult } from '@aztec/stdlib/block';
6
+ import { type L2Block, type ValidateBlockResult } from '@aztec/stdlib/block';
7
7
  import type { ContractClassPublic, ContractDataSource, ContractInstanceUpdateWithAddress, ContractInstanceWithAddress, ExecutablePrivateFunctionWithMembershipProof, UtilityFunctionWithMembershipProof } from '@aztec/stdlib/contract';
8
8
  import type { GetContractClassLogsResponse, GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
9
9
  import { type LogFilter, PrivateLog, type TxScopedL2Log } from '@aztec/stdlib/logs';
@@ -60,6 +60,8 @@ export declare class KVArchiverDataStore implements ArchiverDataStore, ContractD
60
60
  */
61
61
  unwindBlocks(from: number, blocksToUnwind: number): Promise<boolean>;
62
62
  getPublishedBlock(number: number): Promise<PublishedL2Block | undefined>;
63
+ getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
64
+ getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
63
65
  /**
64
66
  * Gets up to `limit` amount of L2 blocks starting from `from`.
65
67
  *
@@ -76,6 +78,8 @@ export declare class KVArchiverDataStore implements ArchiverDataStore, ContractD
76
78
  * @returns The requested L2 blocks
77
79
  */
78
80
  getBlockHeaders(start: number, limit: number): Promise<BlockHeader[]>;
81
+ getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
82
+ getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
79
83
  /**
80
84
  * Gets a tx effect.
81
85
  * @param txHash - The hash of the tx corresponding to the tx effect.
@@ -1 +1 @@
1
- {"version":3,"file":"kv_archiver_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/kv_archiver_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,iCAAiC,EACjC,2BAA2B,EAC3B,4CAA4C,EAC5C,kCAAkC,EACnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,EAAE,KAAK,SAAS,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAOhE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;GAEG;AACH,qBAAa,mBAAoB,YAAW,iBAAiB,EAAE,kBAAkB;;IAc7E,OAAO,CAAC,EAAE;IAbZ,gBAAuB,cAAc,KAAuB;IAQ5D,OAAO,CAAC,aAAa,CAA6B;gBAKxC,EAAE,EAAE,iBAAiB,EAC7B,eAAe,GAAE,MAAa;IASzB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI3D,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3B,WAAW,CACtB,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAMtC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9D,KAAK;IAIZ,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/F,kCAAkC,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7E,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAIlE,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIpC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAI/G,wCAAwC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAItF,kBAAkB,CACtB,IAAI,EAAE,mBAAmB,EAAE,EAC3B,mBAAmB,EAAE,EAAE,EAAE,EACzB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC;IAQb,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/F,qBAAqB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAInE,YAAY,CACV,eAAe,EAAE,EAAE,EACnB,gBAAgB,EAAE,4CAA4C,EAAE,EAChE,gBAAgB,EAAE,kCAAkC,EAAE,GACrD,OAAO,CAAC,OAAO,CAAC;IAIb,oBAAoB,CAAC,IAAI,EAAE,2BAA2B,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMhG,uBAAuB,CAAC,IAAI,EAAE,2BAA2B,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpG,0BAA0B,CAAC,IAAI,EAAE,iCAAiC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1G,6BAA6B,CAAC,IAAI,EAAE,iCAAiC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnH;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvF;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpE,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAIxE;;;;;;OAMG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAI7E;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAIrE;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM;IAI1B;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAInE;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5C,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7C,oBAAoB,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAIzD;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D;;;;OAIG;IACH,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrE;;;;OAIG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAIrD;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIlE;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;IAQ1E;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQhE;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAQ9E;;;OAGG;IACH,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1C,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,sBAAsB,CAAC,WAAW,EAAE,MAAM;IAI1C,4BAA4B,CAAC,aAAa,EAAE,MAAM;IAIlD,wBAAwB,CAAC,OAAO,EAAE,SAAS;IAIjD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAW7C,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAIlC,+BAA+B,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE,qBAAqB,CAAC,KAAK,GAAE,WAAW,CAAC,MAAM,CAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC;IAI3F,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,+BAA+B,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAI3E,+BAA+B,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/F"}
1
+ {"version":3,"file":"kv_archiver_store.d.ts","sourceRoot":"","sources":["../../../src/archiver/kv_archiver_store/kv_archiver_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,KAAK,OAAO,EAAe,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,iCAAiC,EACjC,2BAA2B,EAC3B,4CAA4C,EAC5C,kCAAkC,EACnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,EAAE,KAAK,SAAS,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAOhE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;GAEG;AACH,qBAAa,mBAAoB,YAAW,iBAAiB,EAAE,kBAAkB;;IAc7E,OAAO,CAAC,EAAE;IAbZ,gBAAuB,cAAc,KAAuB;IAQ5D,OAAO,CAAC,aAAa,CAA6B;gBAKxC,EAAE,EAAE,iBAAiB,EAC7B,eAAe,GAAE,MAAa;IASzB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI3D,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3B,WAAW,CACtB,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAMtC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9D,KAAK;IAIZ,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/F,kCAAkC,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7E,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAIlE,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIpC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAI/G,wCAAwC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAItF,kBAAkB,CACtB,IAAI,EAAE,mBAAmB,EAAE,EAC3B,mBAAmB,EAAE,EAAE,EAAE,EACzB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC;IAQb,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/F,qBAAqB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAInE,YAAY,CACV,eAAe,EAAE,EAAE,EACnB,gBAAgB,EAAE,4CAA4C,EAAE,EAChE,gBAAgB,EAAE,kCAAkC,EAAE,GACrD,OAAO,CAAC,OAAO,CAAC;IAIb,oBAAoB,CAAC,IAAI,EAAE,2BAA2B,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMhG,uBAAuB,CAAC,IAAI,EAAE,2BAA2B,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpG,0BAA0B,CAAC,IAAI,EAAE,iCAAiC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1G,6BAA6B,CAAC,IAAI,EAAE,iCAAiC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnH;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvF;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpE,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAIxE,uBAAuB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAI7E,0BAA0B,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAI9E;;;;;;OAMG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAI7E;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAIrE,oBAAoB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAIrE,uBAAuB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAItE;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM;IAI1B;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAInE;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5C,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7C,oBAAoB,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAIzD;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D;;;;OAIG;IACH,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrE;;;;OAIG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAIrD;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIlE;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;IAQ1E;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQhE;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAQ9E;;;OAGG;IACH,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1C,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,sBAAsB,CAAC,WAAW,EAAE,MAAM;IAI1C,4BAA4B,CAAC,aAAa,EAAE,MAAM;IAIlD,wBAAwB,CAAC,OAAO,EAAE,SAAS;IAIjD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAW7C,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAIlC,+BAA+B,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE,qBAAqB,CAAC,KAAK,GAAE,WAAW,CAAC,MAAM,CAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC;IAI3F,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,+BAA+B,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAI3E,+BAA+B,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/F"}
@@ -1,6 +1,7 @@
1
1
  import { toArray } from '@aztec/foundation/iterable';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
3
  import { FunctionSelector } from '@aztec/stdlib/abi';
4
+ import { L2BlockHash } from '@aztec/stdlib/block';
4
5
  import { join } from 'path';
5
6
  import { BlockStore } from './block_store.js';
6
7
  import { ContractClassStore } from './contract_class_store.js';
@@ -121,6 +122,12 @@ export const MAX_FUNCTION_NAME_LEN = 256;
121
122
  getPublishedBlock(number) {
122
123
  return this.#blockStore.getBlock(number);
123
124
  }
125
+ getPublishedBlockByHash(blockHash) {
126
+ return this.#blockStore.getBlockByHash(L2BlockHash.fromField(blockHash));
127
+ }
128
+ getPublishedBlockByArchive(archive) {
129
+ return this.#blockStore.getBlockByArchive(archive);
130
+ }
124
131
  /**
125
132
  * Gets up to `limit` amount of L2 blocks starting from `from`.
126
133
  *
@@ -139,6 +146,12 @@ export const MAX_FUNCTION_NAME_LEN = 256;
139
146
  */ getBlockHeaders(start, limit) {
140
147
  return toArray(this.#blockStore.getBlockHeaders(start, limit));
141
148
  }
149
+ getBlockHeaderByHash(blockHash) {
150
+ return this.#blockStore.getBlockHeaderByHash(L2BlockHash.fromField(blockHash));
151
+ }
152
+ getBlockHeaderByArchive(archive) {
153
+ return this.#blockStore.getBlockHeaderByArchive(archive);
154
+ }
142
155
  /**
143
156
  * Gets a tx effect.
144
157
  * @param txHash - The hash of the tx corresponding to the tx effect.
package/dest/factory.js CHANGED
@@ -10,7 +10,7 @@ export const ARCHIVER_STORE_NAME = 'archiver';
10
10
  /** Creates an archiver store. */ export async function createArchiverStore(userConfig) {
11
11
  const config = {
12
12
  ...userConfig,
13
- dataStoreMapSizeKB: userConfig.archiverStoreMapSizeKb ?? userConfig.dataStoreMapSizeKB
13
+ dataStoreMapSizeKb: userConfig.archiverStoreMapSizeKb ?? userConfig.dataStoreMapSizeKb
14
14
  };
15
15
  const store = await createStore(ARCHIVER_STORE_NAME, ARCHIVER_DB_VERSION, config, createLogger('archiver:lmdb'));
16
16
  return new KVArchiverDataStore(store, config.maxLogs);
@@ -1,5 +1,5 @@
1
1
  import { EthAddress } from '@aztec/foundation/eth-address';
2
- import type { Fr } from '@aztec/foundation/fields';
2
+ import { Fr } from '@aztec/foundation/fields';
3
3
  import type { FunctionSelector } from '@aztec/stdlib/abi';
4
4
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
5
5
  import { L2Block, L2BlockHash, type L2BlockSource, type L2Tips, PublishedL2Block, type ValidateBlockResult } from '@aztec/stdlib/block';
@@ -50,6 +50,10 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
50
50
  */
51
51
  getBlocks(from: number, limit: number, proven?: boolean): Promise<L2Block[]>;
52
52
  getPublishedBlocks(from: number, limit: number, proven?: boolean): Promise<PublishedL2Block[]>;
53
+ getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
54
+ getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
55
+ getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
56
+ getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
53
57
  getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined>;
54
58
  getBlocksForEpoch(epochNumber: bigint): Promise<L2Block[]>;
55
59
  getBlockHeadersForEpoch(epochNumber: bigint): Promise<BlockHeader[]>;
@@ -75,6 +79,9 @@ export declare class MockL2BlockSource implements L2BlockSource, ContractDataSou
75
79
  getL2SlotNumber(): Promise<bigint>;
76
80
  isEpochComplete(_epochNumber: bigint): Promise<boolean>;
77
81
  getL1Constants(): Promise<L1RollupConstants>;
82
+ getGenesisValues(): Promise<{
83
+ genesisArchiveRoot: Fr;
84
+ }>;
78
85
  getL1Timestamp(): Promise<bigint>;
79
86
  /**
80
87
  * Starts the block source. In this mock implementation, this is a noop.
@@ -1 +1 @@
1
- {"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,OAAO,EACP,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,gBAAgB,EAChB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACnH,OAAO,EAA0B,KAAK,iBAAiB,EAAwB,MAAM,6BAA6B,CAAC;AACnH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,SAAS,EAAY,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,aAAa,EAAE,kBAAkB;IACzE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAM;IAEnC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,oBAAoB,CAAa;IAEzC,OAAO,CAAC,GAAG,CAAiD;IAE/C,YAAY,CAAC,SAAS,EAAE,MAAM;IAUpC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE;IAK3B,YAAY,CAAC,SAAS,EAAE,MAAM;IAK9B,oBAAoB,CAAC,iBAAiB,EAAE,MAAM;IAI9C,uBAAuB,CAAC,oBAAoB,EAAE,MAAM;IAO3D;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIvC;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIzC;;;OAGG;IACI,cAAc;IAId,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9C;;;;OAIG;IACI,QAAQ,CAAC,MAAM,EAAE,MAAM;IAI9B;;;;;OAKG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAQjD,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAe7E,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAI3E,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAUpD,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAK1E;;;;OAIG;IACU,WAAW,CAAC,MAAM,EAAE,MAAM;;;;;;IAgBvC;;;;OAIG;IACU,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAkB1E,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IA2BlC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvD,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC;;;OAGG;IACI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B;;;OAGG;IACI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,gBAAgB,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAInE,qBAAqB,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIvD,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAI1G,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAIpC,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAItG,kCAAkC,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzC,+BAA+B,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAGhE"}
1
+ {"version":3,"file":"mock_l2_block_source.d.ts","sourceRoot":"","sources":["../../src/test/mock_l2_block_source.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
1
2
  import { DefaultL1ContractsConfig } from '@aztec/ethereum';
2
3
  import { Buffer32 } from '@aztec/foundation/buffer';
3
4
  import { EthAddress } from '@aztec/foundation/eth-address';
5
+ import { Fr } from '@aztec/foundation/fields';
4
6
  import { createLogger } from '@aztec/foundation/log';
5
7
  import { L2Block, L2BlockHash, PublishedL2Block } from '@aztec/stdlib/block';
6
8
  import { EmptyL1RollupConstants, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
@@ -85,6 +87,51 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
85
87
  attestations: []
86
88
  }));
87
89
  }
90
+ async getPublishedBlockByHash(blockHash) {
91
+ for (const block of this.l2Blocks){
92
+ const hash = await block.hash();
93
+ if (hash.equals(blockHash)) {
94
+ return PublishedL2Block.fromFields({
95
+ block,
96
+ l1: {
97
+ blockNumber: BigInt(block.number),
98
+ blockHash: Buffer32.random().toString(),
99
+ timestamp: BigInt(block.number)
100
+ },
101
+ attestations: []
102
+ });
103
+ }
104
+ }
105
+ return undefined;
106
+ }
107
+ getPublishedBlockByArchive(archive) {
108
+ const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
109
+ if (!block) {
110
+ return Promise.resolve(undefined);
111
+ }
112
+ return Promise.resolve(PublishedL2Block.fromFields({
113
+ block,
114
+ l1: {
115
+ blockNumber: BigInt(block.number),
116
+ blockHash: Buffer32.random().toString(),
117
+ timestamp: BigInt(block.number)
118
+ },
119
+ attestations: []
120
+ }));
121
+ }
122
+ async getBlockHeaderByHash(blockHash) {
123
+ for (const block of this.l2Blocks){
124
+ const hash = await block.hash();
125
+ if (hash.equals(blockHash)) {
126
+ return block.getBlockHeader();
127
+ }
128
+ }
129
+ return undefined;
130
+ }
131
+ getBlockHeaderByArchive(archive) {
132
+ const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
133
+ return Promise.resolve(block?.getBlockHeader());
134
+ }
88
135
  getBlockHeader(number) {
89
136
  return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.getBlockHeader());
90
137
  }
@@ -173,6 +220,11 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
173
220
  getL1Constants() {
174
221
  return Promise.resolve(EmptyL1RollupConstants);
175
222
  }
223
+ getGenesisValues() {
224
+ return Promise.resolve({
225
+ genesisArchiveRoot: new Fr(GENESIS_ARCHIVE_ROOT)
226
+ });
227
+ }
176
228
  getL1Timestamp() {
177
229
  throw new Error('Method not implemented.');
178
230
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/archiver",
3
- "version": "3.0.0-nightly.20251023",
3
+ "version": "3.0.0-nightly.20251025",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -66,18 +66,18 @@
66
66
  ]
67
67
  },
68
68
  "dependencies": {
69
- "@aztec/blob-lib": "3.0.0-nightly.20251023",
70
- "@aztec/blob-sink": "3.0.0-nightly.20251023",
71
- "@aztec/constants": "3.0.0-nightly.20251023",
72
- "@aztec/epoch-cache": "3.0.0-nightly.20251023",
73
- "@aztec/ethereum": "3.0.0-nightly.20251023",
74
- "@aztec/foundation": "3.0.0-nightly.20251023",
75
- "@aztec/kv-store": "3.0.0-nightly.20251023",
76
- "@aztec/l1-artifacts": "3.0.0-nightly.20251023",
77
- "@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251023",
78
- "@aztec/protocol-contracts": "3.0.0-nightly.20251023",
79
- "@aztec/stdlib": "3.0.0-nightly.20251023",
80
- "@aztec/telemetry-client": "3.0.0-nightly.20251023",
69
+ "@aztec/blob-lib": "3.0.0-nightly.20251025",
70
+ "@aztec/blob-sink": "3.0.0-nightly.20251025",
71
+ "@aztec/constants": "3.0.0-nightly.20251025",
72
+ "@aztec/epoch-cache": "3.0.0-nightly.20251025",
73
+ "@aztec/ethereum": "3.0.0-nightly.20251025",
74
+ "@aztec/foundation": "3.0.0-nightly.20251025",
75
+ "@aztec/kv-store": "3.0.0-nightly.20251025",
76
+ "@aztec/l1-artifacts": "3.0.0-nightly.20251025",
77
+ "@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251025",
78
+ "@aztec/protocol-contracts": "3.0.0-nightly.20251025",
79
+ "@aztec/stdlib": "3.0.0-nightly.20251025",
80
+ "@aztec/telemetry-client": "3.0.0-nightly.20251025",
81
81
  "lodash.groupby": "^4.6.0",
82
82
  "lodash.omit": "^4.5.0",
83
83
  "tsc-watch": "^6.0.0",
@@ -150,7 +150,7 @@ export class Archiver extends (EventEmitter as new () => ArchiverEmitter) implem
150
150
  private readonly blobSinkClient: BlobSinkClientInterface,
151
151
  private readonly epochCache: EpochCache,
152
152
  private readonly instrumentation: ArchiverInstrumentation,
153
- private readonly l1constants: L1RollupConstants & { l1StartBlockHash: Buffer32 },
153
+ private readonly l1constants: L1RollupConstants & { l1StartBlockHash: Buffer32; genesisArchiveRoot: Fr },
154
154
  private readonly log: Logger = createLogger('archiver'),
155
155
  ) {
156
156
  super();
@@ -184,10 +184,11 @@ export class Archiver extends (EventEmitter as new () => ArchiverEmitter) implem
184
184
 
185
185
  const rollup = new RollupContract(publicClient, config.l1Contracts.rollupAddress);
186
186
 
187
- const [l1StartBlock, l1GenesisTime, proofSubmissionEpochs] = await Promise.all([
187
+ const [l1StartBlock, l1GenesisTime, proofSubmissionEpochs, genesisArchiveRoot] = await Promise.all([
188
188
  rollup.getL1StartBlock(),
189
189
  rollup.getL1GenesisTime(),
190
190
  rollup.getProofSubmissionEpochs(),
191
+ rollup.getGenesisArchiveTreeRoot(),
191
192
  ] as const);
192
193
 
193
194
  const l1StartBlockHash = await publicClient
@@ -204,6 +205,7 @@ export class Archiver extends (EventEmitter as new () => ArchiverEmitter) implem
204
205
  slotDuration,
205
206
  ethereumSlotDuration,
206
207
  proofSubmissionEpochs: Number(proofSubmissionEpochs),
208
+ genesisArchiveRoot: Fr.fromHexString(genesisArchiveRoot),
207
209
  };
208
210
 
209
211
  const opts = merge({ pollingIntervalMs: 10_000, batchSize: 100 }, mapArchiverConfig(config));
@@ -977,6 +979,10 @@ export class Archiver extends (EventEmitter as new () => ArchiverEmitter) implem
977
979
  return Promise.resolve(this.l1constants);
978
980
  }
979
981
 
982
+ public getGenesisValues(): Promise<{ genesisArchiveRoot: Fr }> {
983
+ return Promise.resolve({ genesisArchiveRoot: this.l1constants.genesisArchiveRoot });
984
+ }
985
+
980
986
  public getRollupAddress(): Promise<EthAddress> {
981
987
  return Promise.resolve(this.l1Addresses.rollupAddress);
982
988
  }
@@ -1097,6 +1103,22 @@ export class Archiver extends (EventEmitter as new () => ArchiverEmitter) implem
1097
1103
  return limitWithProven === 0 ? [] : await this.store.getPublishedBlocks(from, limitWithProven);
1098
1104
  }
1099
1105
 
1106
+ public getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined> {
1107
+ return this.store.getPublishedBlockByHash(blockHash);
1108
+ }
1109
+
1110
+ public getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined> {
1111
+ return this.store.getPublishedBlockByArchive(archive);
1112
+ }
1113
+
1114
+ public getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined> {
1115
+ return this.store.getBlockHeaderByHash(blockHash);
1116
+ }
1117
+
1118
+ public getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined> {
1119
+ return this.store.getBlockHeaderByArchive(archive);
1120
+ }
1121
+
1100
1122
  /**
1101
1123
  * Gets an l2 block.
1102
1124
  * @param number - The block number to return.
@@ -1592,9 +1614,21 @@ export class ArchiverStoreHelper
1592
1614
  getPublishedBlock(number: number): Promise<PublishedL2Block | undefined> {
1593
1615
  return this.store.getPublishedBlock(number);
1594
1616
  }
1617
+ getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined> {
1618
+ return this.store.getPublishedBlockByHash(blockHash);
1619
+ }
1620
+ getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined> {
1621
+ return this.store.getPublishedBlockByArchive(archive);
1622
+ }
1595
1623
  getBlockHeaders(from: number, limit: number): Promise<BlockHeader[]> {
1596
1624
  return this.store.getBlockHeaders(from, limit);
1597
1625
  }
1626
+ getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined> {
1627
+ return this.store.getBlockHeaderByHash(blockHash);
1628
+ }
1629
+ getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined> {
1630
+ return this.store.getBlockHeaderByArchive(archive);
1631
+ }
1598
1632
  getTxEffect(txHash: TxHash): Promise<IndexedTxEffect | undefined> {
1599
1633
  return this.store.getTxEffect(txHash);
1600
1634
  }
@@ -61,6 +61,18 @@ export interface ArchiverDataStore {
61
61
  */
62
62
  getPublishedBlock(number: number): Promise<PublishedL2Block | undefined>;
63
63
 
64
+ /**
65
+ * Returns the block for the given hash, or undefined if not exists.
66
+ * @param blockHash - The block hash to return.
67
+ */
68
+ getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
69
+
70
+ /**
71
+ * Returns the block for the given archive root, or undefined if not exists.
72
+ * @param archive - The archive root to return.
73
+ */
74
+ getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
75
+
64
76
  /**
65
77
  * Gets up to `limit` amount of published L2 blocks starting from `from`.
66
78
  * @param from - Number of the first block to return (inclusive).
@@ -77,6 +89,18 @@ export interface ArchiverDataStore {
77
89
  */
78
90
  getBlockHeaders(from: number, limit: number): Promise<BlockHeader[]>;
79
91
 
92
+ /**
93
+ * Returns the block header for the given hash, or undefined if not exists.
94
+ * @param blockHash - The block hash to return.
95
+ */
96
+ getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined>;
97
+
98
+ /**
99
+ * Returns the block header for the given archive root, or undefined if not exists.
100
+ * @param archive - The archive root to return.
101
+ */
102
+ getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
103
+
80
104
  /**
81
105
  * Gets a tx effect.
82
106
  * @param txHash - The hash of the tx corresponding to the tx effect.
@@ -142,6 +142,28 @@ export function describeArchiverDataStore(
142
142
  await store.addBlocks(blocks);
143
143
  await expect(store.unwindBlocks(5, 1)).rejects.toThrow(/can only unwind blocks from the tip/i);
144
144
  });
145
+
146
+ it('unwound blocks and headers cannot be retrieved by hash or archive', async () => {
147
+ await store.addBlocks(blocks);
148
+ const lastBlock = blocks[blocks.length - 1];
149
+ const blockHash = await lastBlock.block.hash();
150
+ const archive = lastBlock.block.archive.root;
151
+
152
+ // Verify block and header exist before unwinding
153
+ expect(await store.getPublishedBlockByHash(blockHash)).toBeDefined();
154
+ expect(await store.getPublishedBlockByArchive(archive)).toBeDefined();
155
+ expect(await store.getBlockHeaderByHash(blockHash)).toBeDefined();
156
+ expect(await store.getBlockHeaderByArchive(archive)).toBeDefined();
157
+
158
+ // Unwind the block
159
+ await store.unwindBlocks(lastBlock.block.number, 1);
160
+
161
+ // Verify neither block nor header can be retrieved after unwinding
162
+ expect(await store.getPublishedBlockByHash(blockHash)).toBeUndefined();
163
+ expect(await store.getPublishedBlockByArchive(archive)).toBeUndefined();
164
+ expect(await store.getBlockHeaderByHash(blockHash)).toBeUndefined();
165
+ expect(await store.getBlockHeaderByArchive(archive)).toBeUndefined();
166
+ });
145
167
  });
146
168
 
147
169
  describe('getBlocks', () => {
@@ -179,6 +201,86 @@ export function describeArchiverDataStore(
179
201
  });
180
202
  });
181
203
 
204
+ describe('getPublishedBlockByHash', () => {
205
+ beforeEach(async () => {
206
+ await store.addBlocks(blocks);
207
+ });
208
+
209
+ it('retrieves a block by its hash', async () => {
210
+ const expectedBlock = blocks[5];
211
+ const blockHash = await expectedBlock.block.hash();
212
+ const retrievedBlock = await store.getPublishedBlockByHash(blockHash);
213
+
214
+ expect(retrievedBlock).toBeDefined();
215
+ expectBlocksEqual([retrievedBlock!], [expectedBlock]);
216
+ });
217
+
218
+ it('returns undefined for non-existent block hash', async () => {
219
+ const nonExistentHash = Fr.random();
220
+ await expect(store.getPublishedBlockByHash(nonExistentHash)).resolves.toBeUndefined();
221
+ });
222
+ });
223
+
224
+ describe('getPublishedBlockByArchive', () => {
225
+ beforeEach(async () => {
226
+ await store.addBlocks(blocks);
227
+ });
228
+
229
+ it('retrieves a block by its archive root', async () => {
230
+ const expectedBlock = blocks[3];
231
+ const archive = expectedBlock.block.archive.root;
232
+ const retrievedBlock = await store.getPublishedBlockByArchive(archive);
233
+
234
+ expect(retrievedBlock).toBeDefined();
235
+ expectBlocksEqual([retrievedBlock!], [expectedBlock]);
236
+ });
237
+
238
+ it('returns undefined for non-existent archive root', async () => {
239
+ const nonExistentArchive = Fr.random();
240
+ await expect(store.getPublishedBlockByArchive(nonExistentArchive)).resolves.toBeUndefined();
241
+ });
242
+ });
243
+
244
+ describe('getBlockHeaderByHash', () => {
245
+ beforeEach(async () => {
246
+ await store.addBlocks(blocks);
247
+ });
248
+
249
+ it('retrieves a block header by its hash', async () => {
250
+ const expectedBlock = blocks[7];
251
+ const blockHash = await expectedBlock.block.hash();
252
+ const retrievedHeader = await store.getBlockHeaderByHash(blockHash);
253
+
254
+ expect(retrievedHeader).toBeDefined();
255
+ expect(retrievedHeader!.equals(expectedBlock.block.getBlockHeader())).toBe(true);
256
+ });
257
+
258
+ it('returns undefined for non-existent block hash', async () => {
259
+ const nonExistentHash = Fr.random();
260
+ await expect(store.getBlockHeaderByHash(nonExistentHash)).resolves.toBeUndefined();
261
+ });
262
+ });
263
+
264
+ describe('getBlockHeaderByArchive', () => {
265
+ beforeEach(async () => {
266
+ await store.addBlocks(blocks);
267
+ });
268
+
269
+ it('retrieves a block header by its archive root', async () => {
270
+ const expectedBlock = blocks[2];
271
+ const archive = expectedBlock.block.archive.root;
272
+ const retrievedHeader = await store.getBlockHeaderByArchive(archive);
273
+
274
+ expect(retrievedHeader).toBeDefined();
275
+ expect(retrievedHeader!.equals(expectedBlock.block.getBlockHeader())).toBe(true);
276
+ });
277
+
278
+ it('returns undefined for non-existent archive root', async () => {
279
+ const nonExistentArchive = Fr.random();
280
+ await expect(store.getBlockHeaderByArchive(nonExistentArchive)).resolves.toBeUndefined();
281
+ });
282
+ });
283
+
182
284
  describe('getSyncedL2BlockNumber', () => {
183
285
  it('returns the block number before INITIAL_L2_BLOCK_NUM if no blocks have been added', async () => {
184
286
  await expect(store.getSynchedL2BlockNumber()).resolves.toEqual(INITIAL_L2_BLOCK_NUM - 1);
@@ -44,7 +44,7 @@ export const archiverConfigMappings: ConfigMappingsType<ArchiverConfig> = {
44
44
  archiverStoreMapSizeKb: {
45
45
  env: 'ARCHIVER_STORE_MAP_SIZE_KB',
46
46
  parseEnv: (val: string | undefined) => (val ? +val : undefined),
47
- description: 'The maximum possible size of the archiver DB in KB. Overwrites the general dataStoreMapSizeKB.',
47
+ description: 'The maximum possible size of the archiver DB in KB. Overwrites the general dataStoreMapSizeKb.',
48
48
  },
49
49
  skipValidateBlockAttestations: {
50
50
  description: 'Whether to skip validating block attestations (use only for testing).',
@@ -66,6 +66,12 @@ export class BlockStore {
66
66
  /** Index mapping a contract's address (as a string) to its location in a block */
67
67
  #contractIndex: AztecAsyncMap<string, BlockIndexValue>;
68
68
 
69
+ /** Index mapping block hash to block number */
70
+ #blockHashIndex: AztecAsyncMap<string, number>;
71
+
72
+ /** Index mapping block archive to block number */
73
+ #blockArchiveIndex: AztecAsyncMap<string, number>;
74
+
69
75
  #log = createLogger('archiver:block_store');
70
76
 
71
77
  constructor(private db: AztecAsyncKVStore) {
@@ -73,6 +79,8 @@ export class BlockStore {
73
79
  this.#blockTxs = db.openMap('archiver_block_txs');
74
80
  this.#txEffects = db.openMap('archiver_tx_effects');
75
81
  this.#contractIndex = db.openMap('archiver_contract_index');
82
+ this.#blockHashIndex = db.openMap('archiver_block_hash_index');
83
+ this.#blockArchiveIndex = db.openMap('archiver_block_archive_index');
76
84
  this.#lastSynchedL1Block = db.openSingleton('archiver_last_synched_l1_block');
77
85
  this.#lastProvenL2Block = db.openSingleton('archiver_last_proven_l2_block');
78
86
  this.#pendingChainValidationStatus = db.openSingleton('archiver_pending_chain_validation_status');
@@ -132,6 +140,10 @@ export class BlockStore {
132
140
  blockHash.toString(),
133
141
  Buffer.concat(block.block.body.txEffects.map(tx => tx.txHash.toBuffer())),
134
142
  );
143
+
144
+ // Update indices for block hash and archive
145
+ await this.#blockHashIndex.set(blockHash.toString(), block.block.number);
146
+ await this.#blockArchiveIndex.set(block.block.archive.root.toString(), block.block.number);
135
147
  }
136
148
 
137
149
  await this.#lastSynchedL1Block.set(blocks[blocks.length - 1].l1.blockNumber);
@@ -170,6 +182,11 @@ export class BlockStore {
170
182
  await Promise.all(block.block.body.txEffects.map(tx => this.#txEffects.delete(tx.txHash.toString())));
171
183
  const blockHash = (await block.block.hash()).toString();
172
184
  await this.#blockTxs.delete(blockHash);
185
+
186
+ // Clean up indices
187
+ await this.#blockHashIndex.delete(blockHash);
188
+ await this.#blockArchiveIndex.delete(block.block.archive.root.toString());
189
+
173
190
  this.#log.debug(`Unwound block ${blockNumber} ${blockHash}`);
174
191
  }
175
192
 
@@ -205,6 +222,66 @@ export class BlockStore {
205
222
  return this.getBlockFromBlockStorage(blockNumber, blockStorage);
206
223
  }
207
224
 
225
+ /**
226
+ * Gets an L2 block by its hash.
227
+ * @param blockHash - The hash of the block to return.
228
+ * @returns The requested L2 block.
229
+ */
230
+ async getBlockByHash(blockHash: L2BlockHash): Promise<PublishedL2Block | undefined> {
231
+ const blockNumber = await this.#blockHashIndex.getAsync(blockHash.toString());
232
+ if (blockNumber === undefined) {
233
+ return undefined;
234
+ }
235
+ return this.getBlock(blockNumber);
236
+ }
237
+
238
+ /**
239
+ * Gets an L2 block by its archive root.
240
+ * @param archive - The archive root of the block to return.
241
+ * @returns The requested L2 block.
242
+ */
243
+ async getBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined> {
244
+ const blockNumber = await this.#blockArchiveIndex.getAsync(archive.toString());
245
+ if (blockNumber === undefined) {
246
+ return undefined;
247
+ }
248
+ return this.getBlock(blockNumber);
249
+ }
250
+
251
+ /**
252
+ * Gets a block header by its hash.
253
+ * @param blockHash - The hash of the block to return.
254
+ * @returns The requested block header.
255
+ */
256
+ async getBlockHeaderByHash(blockHash: L2BlockHash): Promise<BlockHeader | undefined> {
257
+ const blockNumber = await this.#blockHashIndex.getAsync(blockHash.toString());
258
+ if (blockNumber === undefined) {
259
+ return undefined;
260
+ }
261
+ const blockStorage = await this.#blocks.getAsync(blockNumber);
262
+ if (!blockStorage || !blockStorage.header) {
263
+ return undefined;
264
+ }
265
+ return L2BlockHeader.fromBuffer(blockStorage.header).toBlockHeader();
266
+ }
267
+
268
+ /**
269
+ * Gets a block header by its archive root.
270
+ * @param archive - The archive root of the block to return.
271
+ * @returns The requested block header.
272
+ */
273
+ async getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined> {
274
+ const blockNumber = await this.#blockArchiveIndex.getAsync(archive.toString());
275
+ if (blockNumber === undefined) {
276
+ return undefined;
277
+ }
278
+ const blockStorage = await this.#blocks.getAsync(blockNumber);
279
+ if (!blockStorage || !blockStorage.header) {
280
+ return undefined;
281
+ }
282
+ return L2BlockHeader.fromBuffer(blockStorage.header).toBlockHeader();
283
+ }
284
+
208
285
  /**
209
286
  * Gets the headers for a sequence of L2 blocks.
210
287
  * @param start - Number of the first block to return (inclusive).
@@ -5,7 +5,7 @@ import { createLogger } from '@aztec/foundation/log';
5
5
  import type { AztecAsyncKVStore, CustomRange, StoreSize } from '@aztec/kv-store';
6
6
  import { FunctionSelector } from '@aztec/stdlib/abi';
7
7
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
8
- import type { L2Block, ValidateBlockResult } from '@aztec/stdlib/block';
8
+ import { type L2Block, L2BlockHash, type ValidateBlockResult } from '@aztec/stdlib/block';
9
9
  import type {
10
10
  ContractClassPublic,
11
11
  ContractDataSource,
@@ -204,6 +204,14 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
204
204
  return this.#blockStore.getBlock(number);
205
205
  }
206
206
 
207
+ getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined> {
208
+ return this.#blockStore.getBlockByHash(L2BlockHash.fromField(blockHash));
209
+ }
210
+
211
+ getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined> {
212
+ return this.#blockStore.getBlockByArchive(archive);
213
+ }
214
+
207
215
  /**
208
216
  * Gets up to `limit` amount of L2 blocks starting from `from`.
209
217
  *
@@ -226,6 +234,14 @@ export class KVArchiverDataStore implements ArchiverDataStore, ContractDataSourc
226
234
  return toArray(this.#blockStore.getBlockHeaders(start, limit));
227
235
  }
228
236
 
237
+ getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined> {
238
+ return this.#blockStore.getBlockHeaderByHash(L2BlockHash.fromField(blockHash));
239
+ }
240
+
241
+ getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined> {
242
+ return this.#blockStore.getBlockHeaderByArchive(archive);
243
+ }
244
+
229
245
  /**
230
246
  * Gets a tx effect.
231
247
  * @param txHash - The hash of the tx corresponding to the tx effect.
package/src/factory.ts CHANGED
@@ -20,7 +20,7 @@ export async function createArchiverStore(
20
20
  ) {
21
21
  const config = {
22
22
  ...userConfig,
23
- dataStoreMapSizeKB: userConfig.archiverStoreMapSizeKb ?? userConfig.dataStoreMapSizeKB,
23
+ dataStoreMapSizeKb: userConfig.archiverStoreMapSizeKb ?? userConfig.dataStoreMapSizeKb,
24
24
  };
25
25
  const store = await createStore(ARCHIVER_STORE_NAME, ARCHIVER_DB_VERSION, config, createLogger('archiver:lmdb'));
26
26
  return new KVArchiverDataStore(store, config.maxLogs);
@@ -1,7 +1,8 @@
1
+ import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
1
2
  import { DefaultL1ContractsConfig } from '@aztec/ethereum';
2
3
  import { Buffer32 } from '@aztec/foundation/buffer';
3
4
  import { EthAddress } from '@aztec/foundation/eth-address';
4
- import type { Fr } from '@aztec/foundation/fields';
5
+ import { Fr } from '@aztec/foundation/fields';
5
6
  import { createLogger } from '@aztec/foundation/log';
6
7
  import type { FunctionSelector } from '@aztec/stdlib/abi';
7
8
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
@@ -126,6 +127,57 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
126
127
  );
127
128
  }
128
129
 
130
+ public async getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined> {
131
+ for (const block of this.l2Blocks) {
132
+ const hash = await block.hash();
133
+ if (hash.equals(blockHash)) {
134
+ return PublishedL2Block.fromFields({
135
+ block,
136
+ l1: {
137
+ blockNumber: BigInt(block.number),
138
+ blockHash: Buffer32.random().toString(),
139
+ timestamp: BigInt(block.number),
140
+ },
141
+ attestations: [],
142
+ });
143
+ }
144
+ }
145
+ return undefined;
146
+ }
147
+
148
+ public getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined> {
149
+ const block = this.l2Blocks.find(b => b.archive.root.equals(archive));
150
+ if (!block) {
151
+ return Promise.resolve(undefined);
152
+ }
153
+ return Promise.resolve(
154
+ PublishedL2Block.fromFields({
155
+ block,
156
+ l1: {
157
+ blockNumber: BigInt(block.number),
158
+ blockHash: Buffer32.random().toString(),
159
+ timestamp: BigInt(block.number),
160
+ },
161
+ attestations: [],
162
+ }),
163
+ );
164
+ }
165
+
166
+ public async getBlockHeaderByHash(blockHash: Fr): Promise<BlockHeader | undefined> {
167
+ for (const block of this.l2Blocks) {
168
+ const hash = await block.hash();
169
+ if (hash.equals(blockHash)) {
170
+ return block.getBlockHeader();
171
+ }
172
+ }
173
+ return undefined;
174
+ }
175
+
176
+ public getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined> {
177
+ const block = this.l2Blocks.find(b => b.archive.root.equals(archive));
178
+ return Promise.resolve(block?.getBlockHeader());
179
+ }
180
+
129
181
  getBlockHeader(number: number | 'latest'): Promise<BlockHeader | undefined> {
130
182
  return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.getBlockHeader());
131
183
  }
@@ -232,6 +284,10 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
232
284
  return Promise.resolve(EmptyL1RollupConstants);
233
285
  }
234
286
 
287
+ getGenesisValues(): Promise<{ genesisArchiveRoot: Fr }> {
288
+ return Promise.resolve({ genesisArchiveRoot: new Fr(GENESIS_ARCHIVE_ROOT) });
289
+ }
290
+
235
291
  getL1Timestamp(): Promise<bigint> {
236
292
  throw new Error('Method not implemented.');
237
293
  }