@aztec/archiver 5.0.0-rc.1 → 5.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dest/archiver.d.ts +1 -1
  2. package/dest/archiver.d.ts.map +1 -1
  3. package/dest/archiver.js +11 -5
  4. package/dest/l1/data_retrieval.d.ts +1 -1
  5. package/dest/l1/data_retrieval.d.ts.map +1 -1
  6. package/dest/modules/contract_data_source_adapter.d.ts +2 -2
  7. package/dest/modules/contract_data_source_adapter.d.ts.map +1 -1
  8. package/dest/modules/contract_data_source_adapter.js +1 -9
  9. package/dest/modules/data_source_base.d.ts +2 -2
  10. package/dest/modules/data_source_base.d.ts.map +1 -1
  11. package/dest/modules/data_source_base.js +1 -10
  12. package/dest/modules/l1_synchronizer.d.ts +1 -1
  13. package/dest/modules/l1_synchronizer.d.ts.map +1 -1
  14. package/dest/modules/l1_synchronizer.js +62 -39
  15. package/dest/modules/validation.d.ts +21 -3
  16. package/dest/modules/validation.d.ts.map +1 -1
  17. package/dest/modules/validation.js +36 -11
  18. package/dest/store/block_store.d.ts +8 -9
  19. package/dest/store/block_store.d.ts.map +1 -1
  20. package/dest/store/block_store.js +11 -21
  21. package/dest/store/contract_class_store.d.ts +1 -1
  22. package/dest/store/contract_class_store.d.ts.map +1 -1
  23. package/dest/store/contract_class_store.js +12 -0
  24. package/dest/store/contract_instance_store.d.ts +1 -1
  25. package/dest/store/contract_instance_store.d.ts.map +1 -1
  26. package/dest/store/contract_instance_store.js +11 -0
  27. package/dest/store/log_store.d.ts +1 -1
  28. package/dest/store/log_store.d.ts.map +1 -1
  29. package/dest/store/log_store.js +3 -3
  30. package/dest/store/log_store_codec.d.ts +9 -1
  31. package/dest/store/log_store_codec.d.ts.map +1 -1
  32. package/dest/store/log_store_codec.js +9 -0
  33. package/dest/test/mock_l1_to_l2_message_source.d.ts +1 -1
  34. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
  35. package/dest/test/mock_l1_to_l2_message_source.js +1 -2
  36. package/dest/test/mock_l2_block_source.d.ts +1 -4
  37. package/dest/test/mock_l2_block_source.d.ts.map +1 -1
  38. package/dest/test/mock_l2_block_source.js +3 -22
  39. package/dest/test/mock_structs.d.ts +1 -1
  40. package/dest/test/mock_structs.d.ts.map +1 -1
  41. package/dest/test/mock_structs.js +2 -2
  42. package/package.json +13 -13
  43. package/src/archiver.ts +12 -8
  44. package/src/l1/data_retrieval.ts +2 -1
  45. package/src/modules/contract_data_source_adapter.ts +1 -10
  46. package/src/modules/data_source_base.ts +1 -12
  47. package/src/modules/l1_synchronizer.ts +91 -53
  48. package/src/modules/validation.ts +72 -13
  49. package/src/store/block_store.ts +11 -26
  50. package/src/store/contract_class_store.ts +12 -0
  51. package/src/store/contract_instance_store.ts +11 -0
  52. package/src/store/log_store.ts +3 -2
  53. package/src/store/log_store_codec.ts +11 -0
  54. package/src/test/mock_l1_to_l2_message_source.ts +0 -1
  55. package/src/test/mock_l2_block_source.ts +1 -22
  56. package/src/test/mock_structs.ts +5 -2
@@ -20,7 +20,6 @@ import { BlockHeader } from '@aztec/stdlib/tx';
20
20
  provenBlockNumber = 0;
21
21
  finalizedBlockNumber = 0;
22
22
  checkpointedBlockNumber = 0;
23
- proposedCheckpointBlockNumber = 0;
24
23
  initialHeader = BlockHeader.empty();
25
24
  initialHeaderHash = GENESIS_BLOCK_HEADER_HASH;
26
25
  genesisArchiveRoot;
@@ -98,7 +97,6 @@ import { BlockHeader } from '@aztec/stdlib/tx';
98
97
  });
99
98
  // Keep tip numbers consistent with remaining blocks.
100
99
  this.checkpointedBlockNumber = Math.min(this.checkpointedBlockNumber, maxBlockNum);
101
- this.proposedCheckpointBlockNumber = Math.min(this.proposedCheckpointBlockNumber, maxBlockNum);
102
100
  this.provenBlockNumber = Math.min(this.provenBlockNumber, maxBlockNum);
103
101
  this.finalizedBlockNumber = Math.min(this.finalizedBlockNumber, maxBlockNum);
104
102
  this.log.verbose(`Removed ${numBlocks} blocks from the mock L2 block source`);
@@ -112,16 +110,9 @@ import { BlockHeader } from '@aztec/stdlib/tx';
112
110
  }
113
111
  this.finalizedBlockNumber = finalizedBlockNumber;
114
112
  }
115
- setProposedCheckpointBlockNumber(blockNumber) {
116
- this.proposedCheckpointBlockNumber = blockNumber;
117
- }
118
113
  setCheckpointedBlockNumber(checkpointedBlockNumber) {
119
114
  const prevCheckpointed = this.checkpointedBlockNumber;
120
115
  this.checkpointedBlockNumber = checkpointedBlockNumber;
121
- // Proposed checkpoint is always at least as advanced as checkpointed
122
- if (this.proposedCheckpointBlockNumber < checkpointedBlockNumber) {
123
- this.proposedCheckpointBlockNumber = checkpointedBlockNumber;
124
- }
125
116
  // Auto-create single-block checkpoints for newly checkpointed blocks that don't have one yet.
126
117
  // This handles blocks added via addProposedBlocks that are now being marked as checkpointed.
127
118
  const newCheckpoints = [];
@@ -172,9 +163,6 @@ import { BlockHeader } from '@aztec/stdlib/tx';
172
163
  const block = await this.getBlock(query);
173
164
  return block ? block.header.globalVariables.blockNumber : undefined;
174
165
  }
175
- getProposedCheckpointL2BlockNumber() {
176
- return Promise.resolve(BlockNumber(this.proposedCheckpointBlockNumber));
177
- }
178
166
  getCheckpoint(query) {
179
167
  const checkpoint = this.resolveCheckpointQuery(query);
180
168
  if (!checkpoint) {
@@ -272,18 +260,16 @@ import { BlockHeader } from '@aztec/stdlib/tx';
272
260
  return Promise.resolve(undefined);
273
261
  }
274
262
  async getL2Tips() {
275
- const [latest, proven, finalized, checkpointed, proposedCheckpoint] = [
263
+ const [latest, proven, finalized, checkpointed] = [
276
264
  await this.getBlockNumber(),
277
265
  this.provenBlockNumber,
278
266
  this.finalizedBlockNumber,
279
- this.checkpointedBlockNumber,
280
- await this.getProposedCheckpointL2BlockNumber()
267
+ this.checkpointedBlockNumber
281
268
  ];
282
269
  const latestBlock = this.l2Blocks[latest - 1];
283
270
  const provenBlock = this.l2Blocks[proven - 1];
284
271
  const finalizedBlock = this.l2Blocks[finalized - 1];
285
272
  const checkpointedBlock = this.l2Blocks[checkpointed - 1];
286
- const proposedCheckpointBlock = this.l2Blocks[proposedCheckpoint - 1];
287
273
  // For genesis tips (block number 0) report the dynamic initial header hash so consumers
288
274
  // running L2BlockStream against this mock agree at block 0 with their local tip store.
289
275
  const genesisHash = (await this.initialHeader.hash()).toString();
@@ -309,10 +295,6 @@ import { BlockHeader } from '@aztec/stdlib/tx';
309
295
  number: BlockNumber(checkpointed),
310
296
  hash: await tipHash(checkpointedBlock, checkpointed)
311
297
  };
312
- const proposedCheckpointBlockId = {
313
- number: BlockNumber(proposedCheckpoint),
314
- hash: await tipHash(proposedCheckpointBlock, proposedCheckpoint)
315
- };
316
298
  const makeTipId = (blockId)=>{
317
299
  const checkpointNumber = this.findCheckpointNumberForBlock(blockId.number) ?? CheckpointNumber(0);
318
300
  // Match production semantics: checkpoint 0 is fully synthetic (no real checkpoint header
@@ -331,8 +313,7 @@ import { BlockHeader } from '@aztec/stdlib/tx';
331
313
  proposed: latestBlockId,
332
314
  checkpointed: makeTipId(checkpointedBlockId),
333
315
  proven: makeTipId(provenBlockId),
334
- finalized: makeTipId(finalizedBlockId),
335
- proposedCheckpoint: makeTipId(proposedCheckpointBlockId)
316
+ finalized: makeTipId(finalizedBlockId)
336
317
  };
337
318
  }
338
319
  getSyncedL2EpochNumber() {
@@ -85,4 +85,4 @@ export interface MockCheckpointWithLogsOptions {
85
85
  }
86
86
  /** Creates a checkpoint with specified logs on each tx effect. */
87
87
  export declare function makeCheckpointWithLogs(blockNumber: number, options?: MockCheckpointWithLogsOptions): Promise<PublishedCheckpoint>;
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdHJ1Y3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3N0cnVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFlLGdCQUFnQixFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBd0IsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUF5QixjQUFjLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFFbkYsd0JBQWdCLGdCQUFnQixDQUM5QixtQkFBbUIsV0FBZ0IsRUFDbkMsU0FBUyxHQUFFLE9BQU8sQ0FBQyxZQUFZLENBQU0sR0FDcEMsWUFBWSxDQWdCZDtBQUVELHdCQUFnQixpQkFBaUIsQ0FDL0IsVUFBVSxFQUFFLE1BQU0sRUFDbEIsSUFBSSxHQUFFO0lBQ0osV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQ3ZCLHVCQUF1QixDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0MscUJBQXFCLENBQUMsRUFB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
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19zdHJ1Y3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3N0cnVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFlLGdCQUFnQixFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUc5RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBd0IsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUF5QixjQUFjLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFFbkYsd0JBQWdCLGdCQUFnQixDQUM5QixtQkFBbUIsV0FBZ0IsRUFDbkMsU0FBUyxHQUFFLE9BQU8sQ0FBQyxZQUFZLENBQU0sR0FDcEMsWUFBWSxDQWdCZDtBQUVELHdCQUFnQixpQkFBaUIsQ0FDL0IsVUFBVSxFQUFFLE1BQU0sRUFDbEIsSUFBSSxHQUFFO0lBQ0osV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQ3ZCLHVCQUF1QixDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0MscUJBQXFCLENBQUMsRUFB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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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"}
@@ -147,13 +147,13 @@ export function makeInboxMessages(totalCount, opts = {}) {
147
147
  /** Creates a deterministic Tag for public log testing. */ export function makePublicLogTag(blockNumber, txIndex, logIndex) {
148
148
  return new Tag(blockNumber === 1 && txIndex === 0 && logIndex === 0 ? Fr.ZERO : new Fr((blockNumber * 100 + txIndex * 10 + logIndex) * 123));
149
149
  }
150
- /** Creates a PublicLog with fields derived from the tag. */ export function makePublicLog(tag, contractAddress = AztecAddress.fromNumber(543254)) {
150
+ /** Creates a PublicLog with fields derived from the tag. */ export function makePublicLog(tag, contractAddress = AztecAddress.fromNumberUnsafe(543254)) {
151
151
  return PublicLog.from({
152
152
  contractAddress,
153
153
  fields: new Array(10).fill(null).map((_, i)=>!i ? tag.value : new Fr(tag.value.toBigInt() + BigInt(i)))
154
154
  });
155
155
  }
156
- /** Creates multiple public logs for a transaction. */ export function makePublicLogs(blockNumber, txIndex, numLogsPerTx, contractAddress = AztecAddress.fromNumber(543254)) {
156
+ /** Creates multiple public logs for a transaction. */ export function makePublicLogs(blockNumber, txIndex, numLogsPerTx, contractAddress = AztecAddress.fromNumberUnsafe(543254)) {
157
157
  return times(numLogsPerTx, (logIndex)=>{
158
158
  const tag = makePublicLogTag(blockNumber, txIndex, logIndex);
159
159
  return makePublicLog(tag, contractAddress);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/archiver",
3
- "version": "5.0.0-rc.1",
3
+ "version": "5.0.0-rc.2",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -65,18 +65,18 @@
65
65
  ]
66
66
  },
67
67
  "dependencies": {
68
- "@aztec/blob-client": "5.0.0-rc.1",
69
- "@aztec/blob-lib": "5.0.0-rc.1",
70
- "@aztec/constants": "5.0.0-rc.1",
71
- "@aztec/epoch-cache": "5.0.0-rc.1",
72
- "@aztec/ethereum": "5.0.0-rc.1",
73
- "@aztec/foundation": "5.0.0-rc.1",
74
- "@aztec/kv-store": "5.0.0-rc.1",
75
- "@aztec/l1-artifacts": "5.0.0-rc.1",
76
- "@aztec/noir-protocol-circuits-types": "5.0.0-rc.1",
77
- "@aztec/protocol-contracts": "5.0.0-rc.1",
78
- "@aztec/stdlib": "5.0.0-rc.1",
79
- "@aztec/telemetry-client": "5.0.0-rc.1",
68
+ "@aztec/blob-client": "5.0.0-rc.2",
69
+ "@aztec/blob-lib": "5.0.0-rc.2",
70
+ "@aztec/constants": "5.0.0-rc.2",
71
+ "@aztec/epoch-cache": "5.0.0-rc.2",
72
+ "@aztec/ethereum": "5.0.0-rc.2",
73
+ "@aztec/foundation": "5.0.0-rc.2",
74
+ "@aztec/kv-store": "5.0.0-rc.2",
75
+ "@aztec/l1-artifacts": "5.0.0-rc.2",
76
+ "@aztec/noir-protocol-circuits-types": "5.0.0-rc.2",
77
+ "@aztec/protocol-contracts": "5.0.0-rc.2",
78
+ "@aztec/stdlib": "5.0.0-rc.2",
79
+ "@aztec/telemetry-client": "5.0.0-rc.2",
80
80
  "lodash.groupby": "^4.6.0",
81
81
  "lodash.omit": "^4.5.0",
82
82
  "tslib": "^2.5.0",
package/src/archiver.ts CHANGED
@@ -5,7 +5,7 @@ import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses'
5
5
  import type { ViemPublicClient, ViemPublicDebugClient } from '@aztec/ethereum/types';
6
6
  import { BlockNumber, CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
7
7
  import { Buffer32 } from '@aztec/foundation/buffer';
8
- import { merge, pick } from '@aztec/foundation/collection';
8
+ import { merge } from '@aztec/foundation/collection';
9
9
  import { Fr } from '@aztec/foundation/curves/bn254';
10
10
  import { EthAddress } from '@aztec/foundation/eth-address';
11
11
  import { type Logger, createLogger } from '@aztec/foundation/log';
@@ -435,19 +435,23 @@ export class Archiver extends ArchiverDataSourceBase implements L2BlockSink, Tra
435
435
  const tips = await this.getL2Tips();
436
436
  const now = BigInt(this.dateProvider.nowInSeconds());
437
437
 
438
+ // Frontier block covered by a proposed (or, falling back, confirmed) checkpoint. Blocks beyond it
439
+ // have no enclosing checkpoint proposal and are the orphan-pruning candidates.
440
+ const proposedCheckpointBlockNumber = await this.stores.blocks.getProposedCheckpointL2BlockNumber();
441
+
438
442
  // The proposed tip is a proposed-checkpointed block, so there are no orphan proposed blocks to prune
439
- if (tips.proposedCheckpoint.block.number === tips.proposed.number) {
440
- this.log.trace(
441
- `No orphan proposed blocks to prune: proposed tip ${tips.proposed.number} is checkpointed`,
442
- pick(tips, 'proposed', 'proposedCheckpoint'),
443
- );
443
+ if (proposedCheckpointBlockNumber === tips.proposed.number) {
444
+ this.log.trace(`No orphan proposed blocks to prune: proposed tip ${tips.proposed.number} is checkpointed`, {
445
+ proposed: tips.proposed,
446
+ proposedCheckpointBlockNumber,
447
+ });
444
448
  return;
445
449
  }
446
450
 
447
451
  // Load the blocks that are candidates for pruning (ie blocks without a proposed checkpoint covering them)
448
452
  const blocksWithoutProposedCheckpoint = await this.stores.blocks.getBlocksData({
449
- from: BlockNumber(tips.proposedCheckpoint.block.number + 1),
450
- limit: tips.proposed.number - tips.proposedCheckpoint.block.number,
453
+ from: BlockNumber(proposedCheckpointBlockNumber + 1),
454
+ limit: tips.proposed.number - proposedCheckpointBlockNumber,
451
455
  });
452
456
 
453
457
  // Iterate through them in order, the first one with a slot that should have received a proposed checkpoint
@@ -12,6 +12,7 @@ import type {
12
12
  InboxContract,
13
13
  MessageSentLog,
14
14
  RollupContract,
15
+ ViemHeader,
15
16
  } from '@aztec/ethereum/contracts';
16
17
  import type { ViemPublicClient, ViemPublicDebugClient } from '@aztec/ethereum/types';
17
18
  import { asyncPool } from '@aztec/foundation/async-pool';
@@ -460,7 +461,7 @@ export async function getProofFromSubmitProofTx(
460
461
  start: bigint;
461
462
  end: bigint;
462
463
  args: EpochProofPublicInputArgs;
463
- fees: readonly Hex[];
464
+ headers: readonly ViemHeader[];
464
465
  proof: Hex;
465
466
  },
466
467
  ];
@@ -28,16 +28,7 @@ export class ArchiverContractDataSourceAdapter implements ContractDataSource {
28
28
  return this.stores.contractClasses.getBytecodeCommitment(id);
29
29
  }
30
30
 
31
- public async getContract(
32
- address: AztecAddress,
33
- maybeTimestamp?: UInt64,
34
- ): Promise<ContractInstanceWithAddress | undefined> {
35
- let timestamp = maybeTimestamp;
36
- if (timestamp === undefined) {
37
- const latest = await this.stores.blocks.getLatestL2BlockNumber();
38
- const blockData = latest > 0 ? await this.stores.blocks.getBlockData({ number: latest }) : undefined;
39
- timestamp = blockData ? blockData.header.globalVariables.timestamp : 0n;
40
- }
31
+ public getContract(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined> {
41
32
  return this.stores.contractInstances.getContractInstance(address, timestamp);
42
33
  }
43
34
 
@@ -316,18 +316,7 @@ export abstract class ArchiverDataSourceBase
316
316
  return this.stores.contractClasses.getBytecodeCommitment(id);
317
317
  }
318
318
 
319
- public async getContract(
320
- address: AztecAddress,
321
- maybeTimestamp?: UInt64,
322
- ): Promise<ContractInstanceWithAddress | undefined> {
323
- let timestamp;
324
- if (maybeTimestamp === undefined) {
325
- const latestBlockData = await this.getBlockData({ tag: 'proposed' });
326
- timestamp = latestBlockData ? latestBlockData.header.globalVariables.timestamp : 0n;
327
- } else {
328
- timestamp = maybeTimestamp;
329
- }
330
-
319
+ public getContract(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined> {
331
320
  return this.stores.contractInstances.getContractInstance(address, timestamp);
332
321
  }
333
322
 
@@ -17,7 +17,13 @@ import { count } from '@aztec/foundation/string';
17
17
  import { DateProvider, Timer, elapsed } from '@aztec/foundation/timer';
18
18
  import { isDefined, isErrorClass } from '@aztec/foundation/types';
19
19
  import { type ArchiverEmitter, L2BlockSourceEvents, type ValidateCheckpointResult } from '@aztec/stdlib/block';
20
- import { Checkpoint, type CheckpointData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
20
+ import {
21
+ Checkpoint,
22
+ type CheckpointData,
23
+ type CheckpointInfo,
24
+ type L1PublishedData,
25
+ PublishedCheckpoint,
26
+ } from '@aztec/stdlib/checkpoint';
21
27
  import { type L1RollupConstants, getEpochAtSlot, getSlotAtNextL1Block } from '@aztec/stdlib/epoch-helpers';
22
28
  import { computeInHashFromL1ToL2Messages } from '@aztec/stdlib/messaging';
23
29
  import type { CoordinationSignatureContext } from '@aztec/stdlib/p2p';
@@ -39,7 +45,7 @@ import { MessageStoreError } from '../store/message_store.js';
39
45
  import type { InboxMessage } from '../structs/inbox_message.js';
40
46
  import { ArchiverDataStoreUpdater } from './data_store_updater.js';
41
47
  import type { ArchiverInstrumentation } from './instrumentation.js';
42
- import { validateCheckpointAttestations } from './validation.js';
48
+ import { validateCheckpointAttestationsFromCalldata } from './validation.js';
43
49
 
44
50
  type RollupStatus = {
45
51
  provenCheckpointNumber: CheckpointNumber;
@@ -50,7 +56,7 @@ type RollupStatus = {
50
56
  /** Last valid checkpoint observed on L1 and synced on this iteration */
51
57
  lastRetrievedCheckpoint?: PublishedCheckpoint;
52
58
  /** Last checkpoint observed on L1 across both valid and rejected entries on this iteration */
53
- lastSeenCheckpoint?: PublishedCheckpoint;
59
+ lastSeenCheckpoint?: { checkpointNumber: CheckpointNumber; l1: L1PublishedData };
54
60
  };
55
61
 
56
62
  /**
@@ -790,7 +796,7 @@ export class ArchiverL1Synchronizer implements Traceable {
790
796
  let searchStartBlock: bigint = blocksSynchedTo;
791
797
  let searchEndBlock: bigint = blocksSynchedTo;
792
798
  let lastRetrievedCheckpoint: PublishedCheckpoint | undefined;
793
- let lastSeenCheckpoint: PublishedCheckpoint | undefined;
799
+ let lastSeenCheckpoint: { checkpointNumber: CheckpointNumber; l1: L1PublishedData } | undefined;
794
800
 
795
801
  do {
796
802
  [searchStartBlock, searchEndBlock] = this.nextRange(searchEndBlock, currentL1BlockNumber);
@@ -835,37 +841,21 @@ export class ArchiverL1Synchronizer implements Traceable {
835
841
  const evictProposedFrom =
836
842
  promoteResult && 'diverged' in promoteResult ? promoteResult.fromCheckpointNumber : undefined;
837
843
 
838
- // Then fetch blobs in parallel and build the full published checkpoints
839
- const toFetchBlobs = checkpointToPromote ? calldataCheckpoints.slice(0, -1) : calldataCheckpoints;
840
- const blobFetched = await asyncPool(10, toFetchBlobs, async checkpoint =>
841
- retrievedToPublishedCheckpoint({
842
- ...checkpoint,
843
- checkpointBlobData: await getCheckpointBlobDataFromBlobs(
844
- this.blobClient,
845
- checkpoint.l1.blockHash,
846
- checkpoint.blobHashes,
847
- checkpoint.checkpointNumber,
848
- this.log,
849
- !initialSyncComplete,
850
- checkpoint.parentBeaconBlockRoot,
851
- checkpoint.l1.timestamp,
852
- ),
853
- }),
854
- );
844
+ // Validate attestations from CALLDATA before fetching any blobs. A checkpoint with invalid
845
+ // attestations (or one descending from a rejected ancestor) is rejected here without fetching its
846
+ // blobs, so a malformed blob does not throw during decode before the rejection path runs and
847
+ // stall sync. The signed consensus payload (header, archive root, fee asset price
848
+ // modifier) is fully available from calldata.
849
+ const checkpointsToIngest: RetrievedCheckpointFromCalldata[] = [];
855
850
 
856
- // And add the promoted checkpoint to the list of all checkpoints
857
- const publishedCheckpoints = checkpointToPromote ? [...blobFetched, checkpointToPromote] : blobFetched;
858
- const validCheckpoints: PublishedCheckpoint[] = [];
859
-
860
- // Now loop through all checkpoints and validate their attestations
861
- for (const published of publishedCheckpoints) {
862
- // Check the attestations uploaded by the publisher to L1 are correct
851
+ for (const calldataCheckpoint of calldataCheckpoints) {
852
+ // Check the attestations uploaded by the publisher to L1 are correct.
863
853
  // Rollup contract does not validate attestations to save on gas, so this
864
854
  // falls on the nodes to verify offchain and skip those checkpoints.
865
855
  const validationResult = this.config.skipValidateCheckpointAttestations
866
856
  ? { valid: true as const }
867
- : await validateCheckpointAttestations(
868
- published,
857
+ : await validateCheckpointAttestationsFromCalldata(
858
+ calldataCheckpoint,
869
859
  this.epochCache,
870
860
  this.l1Constants,
871
861
  this.getSignatureContext(),
@@ -877,7 +867,7 @@ export class ArchiverL1Synchronizer implements Traceable {
877
867
  // ancestor was skipped earlier (e.g. due to invalid attestations), the catch handler
878
868
  // would roll back the L1 sync point, and the next iteration would re-fetch and re-throw.
879
869
  const rejectedAncestor = await this.stores.blocks.getRejectedCheckpointByArchiveRoot(
880
- published.checkpoint.header.lastArchiveRoot,
870
+ calldataCheckpoint.header.lastArchiveRoot,
881
871
  );
882
872
 
883
873
  // Update the validation result if it has changed, so we can keep track of the first invalid checkpoint
@@ -899,9 +889,9 @@ export class ArchiverL1Synchronizer implements Traceable {
899
889
  }
900
890
 
901
891
  if (!validationResult.valid) {
902
- this.log.warn(`Skipping checkpoint ${published.checkpoint.number} due to invalid attestations`, {
903
- checkpointHash: published.checkpoint.hash(),
904
- l1BlockNumber: published.l1.blockNumber,
892
+ this.log.warn(`Skipping checkpoint ${calldataCheckpoint.checkpointNumber} due to invalid attestations`, {
893
+ checkpointNumber: calldataCheckpoint.checkpointNumber,
894
+ l1BlockNumber: calldataCheckpoint.l1.blockNumber,
905
895
  ...pick(validationResult, 'reason'),
906
896
  });
907
897
 
@@ -915,11 +905,11 @@ export class ArchiverL1Synchronizer implements Traceable {
915
905
  // is detected and skipped (rather than tripping the addCheckpoints consecutive-number
916
906
  // check and causing the sync point to roll back in a loop).
917
907
  await this.stores.blocks.addRejectedCheckpoint({
918
- checkpointNumber: published.checkpoint.number,
919
- archiveRoot: published.checkpoint.archive.root,
920
- parentArchiveRoot: published.checkpoint.header.lastArchiveRoot,
921
- slotNumber: published.checkpoint.header.slotNumber,
922
- l1: published.l1,
908
+ checkpointNumber: calldataCheckpoint.checkpointNumber,
909
+ archiveRoot: calldataCheckpoint.archiveRoot,
910
+ parentArchiveRoot: calldataCheckpoint.header.lastArchiveRoot,
911
+ slotNumber: calldataCheckpoint.header.slotNumber,
912
+ l1: calldataCheckpoint.l1,
923
913
  reason: 'invalid-attestations' as const,
924
914
  });
925
915
 
@@ -927,15 +917,20 @@ export class ArchiverL1Synchronizer implements Traceable {
927
917
  }
928
918
 
929
919
  if (rejectedAncestor) {
930
- const descendantInfo = published.checkpoint.toCheckpointInfo();
920
+ const descendantInfo: CheckpointInfo = {
921
+ archive: calldataCheckpoint.archiveRoot,
922
+ lastArchive: calldataCheckpoint.header.lastArchiveRoot,
923
+ slotNumber: calldataCheckpoint.header.slotNumber,
924
+ checkpointNumber: calldataCheckpoint.checkpointNumber,
925
+ timestamp: calldataCheckpoint.header.timestamp,
926
+ };
931
927
  this.log.warn(
932
- `Skipping checkpoint ${published.checkpoint.number} as it is a descendant of ` +
928
+ `Skipping checkpoint ${calldataCheckpoint.checkpointNumber} as it is a descendant of ` +
933
929
  `rejected checkpoint ${rejectedAncestor.checkpointNumber} (${rejectedAncestor.reason})`,
934
930
  {
935
- checkpointNumber: published.checkpoint.number,
936
- checkpointHash: published.checkpoint.hash(),
937
- l1BlockNumber: published.l1.blockNumber,
938
- l1BlockHash: published.l1.blockHash,
931
+ checkpointNumber: calldataCheckpoint.checkpointNumber,
932
+ l1BlockNumber: calldataCheckpoint.l1.blockNumber,
933
+ l1BlockHash: calldataCheckpoint.l1.blockHash,
939
934
  ancestorCheckpointNumber: rejectedAncestor.checkpointNumber,
940
935
  ancestorArchiveRoot: rejectedAncestor.archiveRoot.toString(),
941
936
  ancestorReason: rejectedAncestor.reason,
@@ -952,17 +947,54 @@ export class ArchiverL1Synchronizer implements Traceable {
952
947
  // Persist this chainpoint as rejected as well, so we can construct a chain of
953
948
  // skipped checkpoints starting from the first one with invalid attestations.
954
949
  await this.stores.blocks.addRejectedCheckpoint({
955
- checkpointNumber: published.checkpoint.number,
956
- archiveRoot: published.checkpoint.archive.root,
957
- parentArchiveRoot: published.checkpoint.header.lastArchiveRoot,
958
- slotNumber: published.checkpoint.header.slotNumber,
959
- l1: published.l1,
950
+ checkpointNumber: calldataCheckpoint.checkpointNumber,
951
+ archiveRoot: calldataCheckpoint.archiveRoot,
952
+ parentArchiveRoot: calldataCheckpoint.header.lastArchiveRoot,
953
+ slotNumber: calldataCheckpoint.header.slotNumber,
954
+ l1: calldataCheckpoint.l1,
960
955
  reason: 'descends-from-invalid-attestations' as const,
961
956
  });
962
957
 
963
958
  continue;
964
959
  }
965
960
 
961
+ checkpointsToIngest.push(calldataCheckpoint);
962
+ }
963
+
964
+ // Fetch blobs in parallel only for the surviving (attestation-valid, non-descendant) checkpoints,
965
+ // then build the full published checkpoints. The last calldata checkpoint may be promotable from a
966
+ // local proposed block (checkpointToPromote), in which case it carries no blob to fetch. A missing or
967
+ // undecodable blob throws and propagates, rolling back the L1 sync point so the fetch is retried.
968
+ const toFetchBlobs = checkpointToPromote
969
+ ? checkpointsToIngest.filter(c => c.checkpointNumber !== checkpointToPromote.checkpoint.number)
970
+ : checkpointsToIngest;
971
+ const blobFetched = await asyncPool(10, toFetchBlobs, async checkpoint =>
972
+ retrievedToPublishedCheckpoint({
973
+ ...checkpoint,
974
+ checkpointBlobData: await getCheckpointBlobDataFromBlobs(
975
+ this.blobClient,
976
+ checkpoint.l1.blockHash,
977
+ checkpoint.blobHashes,
978
+ checkpoint.checkpointNumber,
979
+ this.log,
980
+ !initialSyncComplete,
981
+ checkpoint.parentBeaconBlockRoot,
982
+ checkpoint.l1.timestamp,
983
+ ),
984
+ }),
985
+ );
986
+
987
+ // Index the built checkpoints by number so we can ingest them in calldata order, slotting in the
988
+ // promoted checkpoint (built from a local proposed block rather than blobs).
989
+ const publishedByNumber = new Map(blobFetched.map(published => [published.checkpoint.number, published]));
990
+ if (checkpointToPromote) {
991
+ publishedByNumber.set(checkpointToPromote.checkpoint.number, checkpointToPromote);
992
+ }
993
+
994
+ const validCheckpoints: PublishedCheckpoint[] = [];
995
+ for (const calldataCheckpoint of checkpointsToIngest) {
996
+ const published = publishedByNumber.get(calldataCheckpoint.checkpointNumber)!;
997
+
966
998
  // Check the inHash of the checkpoint against the l1->l2 messages.
967
999
  // The messages should've been synced up to the currentL1BlockNumber and must be available for the published
968
1000
  // checkpoints we just retrieved.
@@ -1095,7 +1127,9 @@ export class ArchiverL1Synchronizer implements Traceable {
1095
1127
  });
1096
1128
  }
1097
1129
  lastRetrievedCheckpoint = validCheckpoints.at(-1) ?? lastRetrievedCheckpoint;
1098
- lastSeenCheckpoint = publishedCheckpoints.at(-1) ?? lastSeenCheckpoint;
1130
+ // The last checkpoint seen on L1 this batch (valid or rejected), tracked from calldata since
1131
+ // rejected checkpoints are no longer built into PublishedCheckpoints.
1132
+ lastSeenCheckpoint = lastCalldataCheckpoint;
1099
1133
  } while (searchEndBlock < currentL1BlockNumber);
1100
1134
 
1101
1135
  // Important that we update AFTER inserting the blocks.
@@ -1205,7 +1239,7 @@ export class ArchiverL1Synchronizer implements Traceable {
1205
1239
  // Compare the last checkpoint (valid or not) we have (either retrieved in this round or loaded from store)
1206
1240
  // with what the rollup contract told us was the latest one (pinned at the currentL1BlockNumber).
1207
1241
  const latestLocalCheckpointNumber =
1208
- lastSeenCheckpoint?.checkpoint.number ??
1242
+ lastSeenCheckpoint?.checkpointNumber ??
1209
1243
  CheckpointNumber.max(
1210
1244
  await this.stores.blocks.getLatestCheckpointNumber(),
1211
1245
  await this.stores.blocks.getLatestRejectedCheckpointNumber(),
@@ -1218,7 +1252,11 @@ export class ArchiverL1Synchronizer implements Traceable {
1218
1252
  // We suspect an L1 reorg that added checkpoints *behind* us. If that is the case, it must have happened between
1219
1253
  // the last checkpoint we saw and the current one, so we reset the last synched L1 block number. In the edge case
1220
1254
  // we don't have one, we go back 2 L1 epochs, which is the deepest possible reorg (assuming Casper is working).
1221
- const latestLocalCheckpoint: PublishedCheckpoint | CheckpointData | RejectedCheckpoint | undefined =
1255
+ const latestLocalCheckpoint:
1256
+ | { checkpointNumber: CheckpointNumber; l1: L1PublishedData }
1257
+ | CheckpointData
1258
+ | RejectedCheckpoint
1259
+ | undefined =
1222
1260
  lastSeenCheckpoint ??
1223
1261
  (await this.stores.blocks.getCheckpointData(latestLocalCheckpointNumber)) ??
1224
1262
  (await this.stores.blocks.getRejectedCheckpointByNumber(latestLocalCheckpointNumber));