@aztec/archiver 4.0.0-nightly.20260118 → 4.0.0-nightly.20260120

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,12 +1,12 @@
1
1
  import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
2
2
  import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
3
- import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
3
+ import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
4
4
  import { Buffer32 } from '@aztec/foundation/buffer';
5
5
  import { Fr } from '@aztec/foundation/curves/bn254';
6
6
  import { EthAddress } from '@aztec/foundation/eth-address';
7
7
  import { createLogger } from '@aztec/foundation/log';
8
- import { CheckpointedL2Block, L2Block, L2BlockHash, PublishedL2Block } from '@aztec/stdlib/block';
9
- import { L1PublishedData } from '@aztec/stdlib/checkpoint';
8
+ import { CheckpointedL2Block, L2BlockHash, L2BlockNew } from '@aztec/stdlib/block';
9
+ import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
10
10
  import { EmptyL1RollupConstants, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
11
11
  import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
12
12
  /**
@@ -20,7 +20,9 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
20
20
  async createBlocks(numBlocks) {
21
21
  for(let i = 0; i < numBlocks; i++){
22
22
  const blockNum = this.l2Blocks.length + 1;
23
- const block = await L2Block.random(BlockNumber(blockNum));
23
+ const block = await L2BlockNew.random(BlockNumber(blockNum), {
24
+ slotNumber: SlotNumber(blockNum)
25
+ });
24
26
  this.l2Blocks.push(block);
25
27
  }
26
28
  this.log.verbose(`Created ${numBlocks} blocks in the mock L2 block source`);
@@ -74,7 +76,7 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
74
76
  if (!block) {
75
77
  return Promise.resolve(undefined);
76
78
  }
77
- const checkpointedBlock = new CheckpointedL2Block(CheckpointNumber(number), block.toL2Block(), new L1PublishedData(BigInt(number), BigInt(number), `0x${number.toString(16).padStart(64, '0')}`), []);
79
+ const checkpointedBlock = new CheckpointedL2Block(CheckpointNumber(number), block, new L1PublishedData(BigInt(number), BigInt(number), `0x${number.toString(16).padStart(64, '0')}`), []);
78
80
  return Promise.resolve(checkpointedBlock);
79
81
  }
80
82
  async getCheckpointedBlocks(from, limit, _proven) {
@@ -96,7 +98,8 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
96
98
  * @param number - The block number to return (inclusive).
97
99
  * @returns The requested L2 block.
98
100
  */ getBlock(number) {
99
- return Promise.resolve(this.l2Blocks[number - 1]);
101
+ const block = this.l2Blocks[number - 1];
102
+ return Promise.resolve(block);
100
103
  }
101
104
  /**
102
105
  * Gets an L2 block (new format).
@@ -104,7 +107,7 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
104
107
  * @returns The requested L2 block.
105
108
  */ getL2BlockNew(number) {
106
109
  const block = this.l2Blocks[number - 1];
107
- return Promise.resolve(block?.toL2Block());
110
+ return Promise.resolve(block);
108
111
  }
109
112
  /**
110
113
  * Gets up to `limit` amount of L2 blocks starting from `from`.
@@ -114,31 +117,54 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
114
117
  */ getBlocks(from, limit, proven) {
115
118
  return Promise.resolve(this.l2Blocks.slice(from - 1, from - 1 + limit).filter((b)=>!proven || this.provenBlockNumber === undefined || b.number <= this.provenBlockNumber));
116
119
  }
117
- async getPublishedCheckpoints(from, limit) {
118
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
119
- return (await this.getPublishedBlocks(from, limit)).map((block)=>block.toPublishedCheckpoint());
120
+ getPublishedCheckpoints(from, limit) {
121
+ // TODO(mbps): Implement this properly. This only works when we have one block per checkpoint.
122
+ const blocks = this.l2Blocks.slice(from - 1, from - 1 + limit);
123
+ return Promise.all(blocks.map(async (block)=>{
124
+ // Create a checkpoint from the block - manually construct since L2BlockNew doesn't have toCheckpoint()
125
+ const checkpoint = await Checkpoint.random(block.checkpointNumber, {
126
+ numBlocks: 1
127
+ });
128
+ checkpoint.blocks = [
129
+ block
130
+ ];
131
+ return new PublishedCheckpoint(checkpoint, new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()), []);
132
+ }));
120
133
  }
121
134
  async getCheckpointByArchive(archive) {
122
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
123
- return (await this.getPublishedBlockByArchive(archive))?.block.toCheckpoint();
135
+ // TODO(mbps): Implement this properly. This only works when we have one block per checkpoint.
136
+ const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
137
+ if (!block) {
138
+ return undefined;
139
+ }
140
+ // Create a checkpoint from the block - manually construct since L2BlockNew doesn't have toCheckpoint()
141
+ const checkpoint = await Checkpoint.random(block.checkpointNumber, {
142
+ numBlocks: 1
143
+ });
144
+ checkpoint.blocks = [
145
+ block
146
+ ];
147
+ return checkpoint;
124
148
  }
125
- async getPublishedBlocks(from, limit, proven) {
126
- const blocks = await this.getBlocks(from, limit, proven);
127
- return blocks.map((block)=>PublishedL2Block.fromFields({
149
+ getPublishedBlocks(from, limit, proven) {
150
+ const blocks = this.l2Blocks.slice(from - 1, from - 1 + limit).filter((b)=>!proven || this.provenBlockNumber === undefined || b.number <= this.provenBlockNumber);
151
+ return Promise.resolve(blocks.map((block)=>CheckpointedL2Block.fromFields({
152
+ checkpointNumber: CheckpointNumber(block.number),
128
153
  block,
129
154
  l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
130
155
  attestations: []
131
- }));
156
+ })));
132
157
  }
133
- async getL2BlocksNew(from, limit, proven) {
134
- const blocks = await this.getBlocks(from, limit, proven);
135
- return blocks.map((x)=>x.toL2Block());
158
+ getL2BlocksNew(from, limit, proven) {
159
+ // getBlocks already returns L2BlockNew[], so just return directly
160
+ return this.getBlocks(from, limit, proven);
136
161
  }
137
162
  async getPublishedBlockByHash(blockHash) {
138
163
  for (const block of this.l2Blocks){
139
164
  const hash = await block.hash();
140
165
  if (hash.equals(blockHash)) {
141
- return PublishedL2Block.fromFields({
166
+ return CheckpointedL2Block.fromFields({
167
+ checkpointNumber: CheckpointNumber(block.number),
142
168
  block,
143
169
  l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
144
170
  attestations: []
@@ -152,31 +178,62 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
152
178
  if (!block) {
153
179
  return Promise.resolve(undefined);
154
180
  }
155
- return Promise.resolve(PublishedL2Block.fromFields({
181
+ return Promise.resolve(CheckpointedL2Block.fromFields({
182
+ checkpointNumber: CheckpointNumber(block.number),
156
183
  block,
157
184
  l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
158
185
  attestations: []
159
186
  }));
160
187
  }
188
+ async getL2BlockNewByHash(blockHash) {
189
+ for (const block of this.l2Blocks){
190
+ const hash = await block.hash();
191
+ if (hash.equals(blockHash)) {
192
+ return block;
193
+ }
194
+ }
195
+ return undefined;
196
+ }
197
+ getL2BlockNewByArchive(archive) {
198
+ const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
199
+ return Promise.resolve(block);
200
+ }
161
201
  async getBlockHeaderByHash(blockHash) {
162
202
  for (const block of this.l2Blocks){
163
203
  const hash = await block.hash();
164
204
  if (hash.equals(blockHash)) {
165
- return block.getBlockHeader();
205
+ return block.header;
166
206
  }
167
207
  }
168
208
  return undefined;
169
209
  }
170
210
  getBlockHeaderByArchive(archive) {
171
211
  const block = this.l2Blocks.find((b)=>b.archive.root.equals(archive));
172
- return Promise.resolve(block?.getBlockHeader());
212
+ return Promise.resolve(block?.header);
173
213
  }
174
214
  getBlockHeader(number) {
175
- return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.getBlockHeader());
215
+ return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.header);
176
216
  }
177
217
  getCheckpointsForEpoch(epochNumber) {
178
- // TODO: Implement this properly. This only works when we have one block per checkpoint.
179
- return this.getBlocksForEpoch(epochNumber).then((blocks)=>blocks.map((b)=>b.toCheckpoint()));
218
+ // TODO(mbps): Implement this properly. This only works when we have one block per checkpoint.
219
+ const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
220
+ const [start, end] = getSlotRangeForEpoch(epochNumber, {
221
+ epochDuration
222
+ });
223
+ const blocks = this.l2Blocks.filter((b)=>{
224
+ const slot = b.header.globalVariables.slotNumber;
225
+ return slot >= start && slot <= end;
226
+ });
227
+ // Create checkpoints from blocks - manually construct since L2BlockNew doesn't have toCheckpoint()
228
+ return Promise.all(blocks.map(async (block)=>{
229
+ const checkpoint = await Checkpoint.random(block.checkpointNumber, {
230
+ numBlocks: 1
231
+ });
232
+ checkpoint.blocks = [
233
+ block
234
+ ];
235
+ return checkpoint;
236
+ }));
180
237
  }
181
238
  getBlocksForEpoch(epochNumber) {
182
239
  const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
@@ -191,11 +248,11 @@ import { TxReceipt, TxStatus } from '@aztec/stdlib/tx';
191
248
  }
192
249
  getBlocksForSlot(slotNumber) {
193
250
  const blocks = this.l2Blocks.filter((b)=>b.header.globalVariables.slotNumber === slotNumber);
194
- return Promise.resolve(blocks.map((b)=>b.toL2Block()));
251
+ return Promise.resolve(blocks);
195
252
  }
196
253
  async getBlockHeadersForEpoch(epochNumber) {
197
254
  const blocks = await this.getBlocksForEpoch(epochNumber);
198
- return blocks.map((b)=>b.getBlockHeader());
255
+ return blocks.map((b)=>b.header);
199
256
  }
200
257
  /**
201
258
  * Gets a tx effect.
@@ -81,4 +81,4 @@ export interface MockCheckpointWithLogsOptions {
81
81
  }
82
82
  /** Creates a checkpoint with specified logs on each tx effect. */
83
83
  export declare function makeCheckpointWithLogs(blockNumber: number, options?: MockCheckpointWithLogsOptions): Promise<PublishedCheckpoint>;
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdHJ1Y3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3N0cnVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFlLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFFBQVEsRUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBRzlELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUF5QixjQUFjLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFFbkYsd0JBQWdCLGdCQUFnQixDQUM5QixtQkFBbUIsV0FBZ0IsRUFDbkMsU0FBUyxHQUFFLE9BQU8sQ0FBQyxZQUFZLENBQU0sR0FDcEMsWUFBWSxDQWdCZDtBQUVELHdCQUFnQixpQkFBaUIsQ0FDL0IsS0FBSyxFQUFFLE1BQU0sRUFDYixJQUFJLEdBQUU7SUFDSixXQUFXLENBQUMsRUFBRSxRQUFRLENBQUM7SUFDdkIsdUJBQXVCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztJQUMzQyxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sS0FBSyxZ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
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdHJ1Y3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3N0cnVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFlLGdCQUFnQixFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBeUIsY0FBYyxFQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFFbkYsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRW5GLHdCQUFnQixnQkFBZ0IsQ0FDOUIsbUJBQW1CLFdBQWdCLEVBQ25DLFNBQVMsR0FBRSxPQUFPLENBQUMsWUFBWSxDQUFNLEdBQ3BDLFlBQVksQ0FnQmQ7QUFFRCx3QkFBZ0IsaUJBQWlCLENBQy9CLEtBQUssRUFBRSxNQUFNLEVBQ2IsSUFBSSxHQUFFO0lBQ0osV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQ3ZCLHVCQUF1QixDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0MsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEtBQUss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
@@ -1 +1 @@
1
- {"version":3,"file":"mock_structs.d.ts","sourceRoot":"","sources":["../../src/test/mock_structs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock_structs.d.ts","sourceRoot":"","sources":["../../src/test/mock_structs.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { MAX_NOTE_HASHES_PER_TX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PRIVATE_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
2
2
  import { makeTuple } from '@aztec/foundation/array';
3
- import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
3
+ import { BlockNumber, CheckpointNumber, IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
4
4
  import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
5
5
  import { times, timesParallel } from '@aztec/foundation/collection';
6
6
  import { randomBigInt, randomInt } from '@aztec/foundation/crypto/random';
@@ -149,7 +149,7 @@ export function makeInboxMessages(count, opts = {}) {
149
149
  const { previousArchive, numTxsPerBlock = 4, privateLogs, publicLogs } = options;
150
150
  const block = await L2BlockNew.random(BlockNumber(blockNumber), {
151
151
  checkpointNumber: CheckpointNumber(blockNumber),
152
- indexWithinCheckpoint: 0,
152
+ indexWithinCheckpoint: IndexWithinCheckpoint(0),
153
153
  state: makeStateForBlock(blockNumber, numTxsPerBlock),
154
154
  ...previousArchive ? {
155
155
  lastArchive: previousArchive
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/archiver",
3
- "version": "4.0.0-nightly.20260118",
3
+ "version": "4.0.0-nightly.20260120",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -64,18 +64,18 @@
64
64
  ]
65
65
  },
66
66
  "dependencies": {
67
- "@aztec/blob-client": "4.0.0-nightly.20260118",
68
- "@aztec/blob-lib": "4.0.0-nightly.20260118",
69
- "@aztec/constants": "4.0.0-nightly.20260118",
70
- "@aztec/epoch-cache": "4.0.0-nightly.20260118",
71
- "@aztec/ethereum": "4.0.0-nightly.20260118",
72
- "@aztec/foundation": "4.0.0-nightly.20260118",
73
- "@aztec/kv-store": "4.0.0-nightly.20260118",
74
- "@aztec/l1-artifacts": "4.0.0-nightly.20260118",
75
- "@aztec/noir-protocol-circuits-types": "4.0.0-nightly.20260118",
76
- "@aztec/protocol-contracts": "4.0.0-nightly.20260118",
77
- "@aztec/stdlib": "4.0.0-nightly.20260118",
78
- "@aztec/telemetry-client": "4.0.0-nightly.20260118",
67
+ "@aztec/blob-client": "4.0.0-nightly.20260120",
68
+ "@aztec/blob-lib": "4.0.0-nightly.20260120",
69
+ "@aztec/constants": "4.0.0-nightly.20260120",
70
+ "@aztec/epoch-cache": "4.0.0-nightly.20260120",
71
+ "@aztec/ethereum": "4.0.0-nightly.20260120",
72
+ "@aztec/foundation": "4.0.0-nightly.20260120",
73
+ "@aztec/kv-store": "4.0.0-nightly.20260120",
74
+ "@aztec/l1-artifacts": "4.0.0-nightly.20260120",
75
+ "@aztec/noir-protocol-circuits-types": "4.0.0-nightly.20260120",
76
+ "@aztec/protocol-contracts": "4.0.0-nightly.20260120",
77
+ "@aztec/stdlib": "4.0.0-nightly.20260120",
78
+ "@aztec/telemetry-client": "4.0.0-nightly.20260120",
79
79
  "lodash.groupby": "^4.6.0",
80
80
  "lodash.omit": "^4.5.0",
81
81
  "tslib": "^2.5.0",
@@ -15,7 +15,7 @@ import type {
15
15
  } from '@aztec/ethereum/contracts';
16
16
  import type { ViemPublicClient, ViemPublicDebugClient } from '@aztec/ethereum/types';
17
17
  import { asyncPool } from '@aztec/foundation/async-pool';
18
- import { CheckpointNumber } from '@aztec/foundation/branded-types';
18
+ import { CheckpointNumber, IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
19
19
  import { Fr } from '@aztec/foundation/curves/bn254';
20
20
  import { EthAddress } from '@aztec/foundation/eth-address';
21
21
  import { type Logger, createLogger } from '@aztec/foundation/log';
@@ -119,7 +119,7 @@ export async function retrievedToPublishedCheckpoint({
119
119
 
120
120
  const newArchive = new AppendOnlyTreeSnapshot(newArchiveRoots[i], l2BlockNumber + 1);
121
121
 
122
- l2Blocks.push(new L2BlockNew(newArchive, header, body, checkpointNumber, i));
122
+ l2Blocks.push(new L2BlockNew(newArchive, header, body, checkpointNumber, IndexWithinCheckpoint(i)));
123
123
  }
124
124
 
125
125
  const lastBlock = l2Blocks.at(-1)!;
@@ -4,14 +4,7 @@ import type { EthAddress } from '@aztec/foundation/eth-address';
4
4
  import { isDefined } from '@aztec/foundation/types';
5
5
  import type { FunctionSelector } from '@aztec/stdlib/abi';
6
6
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
7
- import {
8
- type CheckpointedL2Block,
9
- CommitteeAttestation,
10
- L2Block,
11
- type L2BlockNew,
12
- type L2Tips,
13
- PublishedL2Block,
14
- } from '@aztec/stdlib/block';
7
+ import { CheckpointedL2Block, CommitteeAttestation, L2BlockNew, type L2Tips } from '@aztec/stdlib/block';
15
8
  import { Checkpoint, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
16
9
  import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
17
10
  import { type L1RollupConstants, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
@@ -273,13 +266,13 @@ export abstract class ArchiverDataSourceBase
273
266
  return this.store.getBlocksForSlot(slotNumber);
274
267
  }
275
268
 
276
- public async getBlocksForEpoch(epochNumber: EpochNumber): Promise<L2Block[]> {
269
+ public async getBlocksForEpoch(epochNumber: EpochNumber): Promise<L2BlockNew[]> {
277
270
  if (!this.l1Constants) {
278
271
  throw new Error('L1 constants not set');
279
272
  }
280
273
 
281
274
  const [start, end] = getSlotRangeForEpoch(epochNumber, this.l1Constants);
282
- const blocks: L2Block[] = [];
275
+ const blocks: L2BlockNew[] = [];
283
276
 
284
277
  // Walk the list of checkpoints backwards and filter by slots matching the requested epoch.
285
278
  // We'll typically ask for checkpoints for a very recent epoch, so we shouldn't need an index here.
@@ -354,39 +347,33 @@ export abstract class ArchiverDataSourceBase
354
347
  return checkpoints.reverse();
355
348
  }
356
349
 
357
- public async getPublishedBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<PublishedL2Block[]> {
350
+ public async getPublishedBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<CheckpointedL2Block[]> {
358
351
  const checkpoints = await this.store.getRangeOfCheckpoints(CheckpointNumber(from), limit);
359
352
  const provenCheckpointNumber = await this.store.getProvenCheckpointNumber();
360
353
  const blocks = (
361
354
  await Promise.all(checkpoints.map(ch => this.store.getBlocksForCheckpoint(ch.checkpointNumber)))
362
355
  ).filter(isDefined);
363
356
 
364
- const olbBlocks: PublishedL2Block[] = [];
357
+ const publishedBlocks: CheckpointedL2Block[] = [];
365
358
  for (let i = 0; i < checkpoints.length; i++) {
366
359
  const blockForCheckpoint = blocks[i][0];
367
360
  const checkpoint = checkpoints[i];
368
361
  if (checkpoint.checkpointNumber > provenCheckpointNumber && proven === true) {
369
- // this checkpointisn't proven and we only want proven
362
+ // this checkpoint isn't proven and we only want proven
370
363
  continue;
371
364
  }
372
- const oldCheckpoint = new Checkpoint(
373
- blockForCheckpoint.archive,
374
- checkpoint.header,
375
- [blockForCheckpoint],
365
+ const publishedBlock = new CheckpointedL2Block(
376
366
  checkpoint.checkpointNumber,
377
- );
378
- const oldBlock = L2Block.fromCheckpoint(oldCheckpoint);
379
- const publishedBlock = new PublishedL2Block(
380
- oldBlock,
367
+ blockForCheckpoint,
381
368
  checkpoint.l1,
382
369
  checkpoint.attestations.map(x => CommitteeAttestation.fromBuffer(x)),
383
370
  );
384
- olbBlocks.push(publishedBlock);
371
+ publishedBlocks.push(publishedBlock);
385
372
  }
386
- return olbBlocks;
373
+ return publishedBlocks;
387
374
  }
388
375
 
389
- public async getBlock(number: BlockNumber): Promise<L2Block | undefined> {
376
+ public async getBlock(number: BlockNumber): Promise<L2BlockNew | undefined> {
390
377
  // If the number provided is -ve, then return the latest block.
391
378
  if (number < 0) {
392
379
  number = await this.store.getLatestBlockNumber();
@@ -394,50 +381,34 @@ export abstract class ArchiverDataSourceBase
394
381
  if (number === 0) {
395
382
  return undefined;
396
383
  }
397
- const publishedBlocks = await this.getPublishedBlocks(number, 1);
398
- if (publishedBlocks.length === 0) {
399
- return undefined;
384
+ return this.store.getBlock(number);
385
+ }
386
+
387
+ public async getBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<L2BlockNew[]> {
388
+ const blocks = await this.store.getBlocks(from, limit);
389
+
390
+ if (proven === true) {
391
+ const provenBlockNumber = await this.store.getProvenBlockNumber();
392
+ return blocks.filter(b => b.number <= provenBlockNumber);
400
393
  }
401
- return publishedBlocks[0].block;
394
+ return blocks;
402
395
  }
403
396
 
404
- public async getBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<L2Block[]> {
405
- const publishedBlocks = await this.getPublishedBlocks(from, limit, proven);
406
- return publishedBlocks.map(x => x.block);
397
+ public getPublishedBlockByHash(blockHash: Fr): Promise<CheckpointedL2Block | undefined> {
398
+ return this.store.getCheckpointedBlockByHash(blockHash);
407
399
  }
408
400
 
409
- public async getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined> {
410
- const checkpointedBlock = await this.store.getCheckpointedBlockByHash(blockHash);
411
- return this.buildOldBlockFromCheckpointedBlock(checkpointedBlock);
401
+ public getPublishedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined> {
402
+ return this.store.getCheckpointedBlockByArchive(archive);
412
403
  }
413
404
 
414
- public async getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined> {
415
- const checkpointedBlock = await this.store.getCheckpointedBlockByArchive(archive);
416
- return this.buildOldBlockFromCheckpointedBlock(checkpointedBlock);
405
+ public async getL2BlockNewByHash(blockHash: Fr): Promise<L2BlockNew | undefined> {
406
+ const checkpointedBlock = await this.store.getCheckpointedBlockByHash(blockHash);
407
+ return checkpointedBlock?.block;
417
408
  }
418
409
 
419
- private async buildOldBlockFromCheckpointedBlock(
420
- checkpointedBlock: CheckpointedL2Block | undefined,
421
- ): Promise<PublishedL2Block | undefined> {
422
- if (!checkpointedBlock) {
423
- return undefined;
424
- }
425
- const checkpoint = await this.store.getCheckpointData(checkpointedBlock.checkpointNumber);
426
- if (!checkpoint) {
427
- return checkpoint;
428
- }
429
- const fullCheckpoint = new Checkpoint(
430
- checkpointedBlock?.block.archive,
431
- checkpoint?.header,
432
- [checkpointedBlock.block],
433
- checkpoint.checkpointNumber,
434
- );
435
- const oldBlock = L2Block.fromCheckpoint(fullCheckpoint);
436
- const published = new PublishedL2Block(
437
- oldBlock,
438
- checkpoint.l1,
439
- checkpoint.attestations.map(x => CommitteeAttestation.fromBuffer(x)),
440
- );
441
- return published;
410
+ public async getL2BlockNewByArchive(archive: Fr): Promise<L2BlockNew | undefined> {
411
+ const checkpointedBlock = await this.store.getCheckpointedBlockByArchive(archive);
412
+ return checkpointedBlock?.block;
442
413
  }
443
414
  }
@@ -61,6 +61,11 @@ export async function validateCheckpointAttestations(
61
61
  return { valid: true };
62
62
  }
63
63
 
64
+ if (await epochCache.isEscapeHatchOpen(epoch)) {
65
+ logger?.warn(`Escape hatch open for epoch ${epoch} at slot ${slot}, skipping checkpoint validation`);
66
+ return { valid: true };
67
+ }
68
+
64
69
  const requiredAttestationCount = Math.floor((committee.length * 2) / 3) + 1;
65
70
 
66
71
  const failedValidationResult = <TReason extends ValidateCheckpointNegativeResult['reason']>(reason: TReason) => ({
@@ -1,5 +1,5 @@
1
1
  import { INITIAL_CHECKPOINT_NUMBER, INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
2
- import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
+ import { BlockNumber, CheckpointNumber, IndexWithinCheckpoint, SlotNumber } from '@aztec/foundation/branded-types';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { toArray } from '@aztec/foundation/iterable';
5
5
  import { createLogger } from '@aztec/foundation/log';
@@ -765,7 +765,7 @@ export class BlockStore {
765
765
  header,
766
766
  body,
767
767
  CheckpointNumber(blockStorage.checkpointNumber!),
768
- blockStorage.indexWithinCheckpoint,
768
+ IndexWithinCheckpoint(blockStorage.indexWithinCheckpoint),
769
769
  );
770
770
 
771
771
  if (block.number !== blockNumber) {
@@ -1,6 +1,6 @@
1
1
  import type { CheckpointNumber } from '@aztec/foundation/branded-types';
2
2
  import type { Fr } from '@aztec/foundation/curves/bn254';
3
- import { L2Block, type L2BlockSource } from '@aztec/stdlib/block';
3
+ import type { L2BlockSource } from '@aztec/stdlib/block';
4
4
  import type { Checkpoint } from '@aztec/stdlib/checkpoint';
5
5
  import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
6
6
 
@@ -57,7 +57,7 @@ export class MockPrefilledArchiver extends MockArchiver {
57
57
 
58
58
  const fromBlock = this.l2Blocks.length;
59
59
  // TODO: Add L2 blocks and checkpoints separately once archiver has the apis for that.
60
- this.addBlocks(this.prefilled.slice(fromBlock, fromBlock + numBlocks).map(c => L2Block.fromCheckpoint(c)));
60
+ this.addBlocks(this.prefilled.slice(fromBlock, fromBlock + numBlocks).flatMap(c => c.blocks));
61
61
  return Promise.resolve();
62
62
  }
63
63
  }