@aztec/prover-node 3.0.0-nightly.20251202 → 3.0.0-nightly.20251204

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.
@@ -45,11 +45,11 @@ export class ProverNodePublisher {
45
45
  return this.l1TxUtils.getSenderAddress();
46
46
  }
47
47
  async submitEpochProof(args) {
48
- const { epochNumber, fromBlock, toBlock } = args;
48
+ const { epochNumber, fromCheckpoint, toCheckpoint } = args;
49
49
  const ctx = {
50
50
  epochNumber,
51
- fromBlock,
52
- toBlock
51
+ fromCheckpoint,
52
+ toCheckpoint
53
53
  };
54
54
  if (!this.interrupted) {
55
55
  const timer = new Timer();
@@ -88,31 +88,30 @@ export class ProverNodePublisher {
88
88
  this.metrics.recordFailedTx();
89
89
  this.log.error(`Rollup.submitEpochProof tx status failed ${txReceipt.transactionHash}`, undefined, ctx);
90
90
  }
91
- this.log.verbose('L2 block data syncing interrupted', ctx);
91
+ this.log.verbose('Checkpoint data syncing interrupted', ctx);
92
92
  return false;
93
93
  }
94
94
  async validateEpochProofSubmission(args) {
95
- const { fromBlock, toBlock, publicInputs, batchedBlobInputs } = args;
96
- // Check that the block numbers match the expected epoch to be proven
97
- // TODO: These are checkpoint numbers, not block numbers. Fix when we decouple them properly.
95
+ const { fromCheckpoint, toCheckpoint, publicInputs, batchedBlobInputs } = args;
96
+ // Check that the checkpoint numbers match the expected epoch to be proven
98
97
  const { pending, proven } = await this.rollupContract.getTips();
99
- // Don't publish if proven is beyond our toBlock, pointless to do so
100
- if (proven > BigInt(toBlock)) {
101
- throw new Error(`Cannot submit epoch proof for ${fromBlock}-${toBlock} as proven block is ${proven}`);
98
+ // Don't publish if proven is beyond our toCheckpoint, pointless to do so
99
+ if (proven > BigInt(toCheckpoint)) {
100
+ throw new Error(`Cannot submit epoch proof for ${fromCheckpoint}-${toCheckpoint} as proven checkpoint is ${proven}`);
102
101
  }
103
- // toBlock can't be greater than pending
104
- if (toBlock > pending) {
105
- throw new Error(`Cannot submit epoch proof for ${fromBlock}-${toBlock} as pending block is ${pending}`);
102
+ // toCheckpoint can't be greater than pending
103
+ if (toCheckpoint > pending) {
104
+ throw new Error(`Cannot submit epoch proof for ${fromCheckpoint}-${toCheckpoint} as pending checkpoint is ${pending}`);
106
105
  }
107
- // Check the archive for the immediate block before the epoch
108
- const blockLog = await this.rollupContract.getCheckpoint(CheckpointNumber.fromBlockNumber(fromBlock - 1));
109
- if (publicInputs.previousArchiveRoot.toString() !== blockLog.archive) {
110
- throw new Error(`Previous archive root mismatch: ${publicInputs.previousArchiveRoot.toString()} !== ${blockLog.archive}`);
106
+ // Check the archive for the immediate checkpoint before the epoch
107
+ const checkpointLog = await this.rollupContract.getCheckpoint(CheckpointNumber(fromCheckpoint - 1));
108
+ if (publicInputs.previousArchiveRoot.toString() !== checkpointLog.archive) {
109
+ throw new Error(`Previous archive root mismatch: ${publicInputs.previousArchiveRoot.toString()} !== ${checkpointLog.archive}`);
111
110
  }
112
- // Check the archive for the last block in the epoch
113
- const endBlockLog = await this.rollupContract.getCheckpoint(CheckpointNumber.fromBlockNumber(toBlock));
114
- if (publicInputs.endArchiveRoot.toString() !== endBlockLog.archive) {
115
- throw new Error(`End archive root mismatch: ${publicInputs.endArchiveRoot.toString()} !== ${endBlockLog.archive}`);
111
+ // Check the archive for the last checkpoint in the epoch
112
+ const endCheckpointLog = await this.rollupContract.getCheckpoint(toCheckpoint);
113
+ if (publicInputs.endArchiveRoot.toString() !== endCheckpointLog.archive) {
114
+ throw new Error(`End archive root mismatch: ${publicInputs.endArchiveRoot.toString()} !== ${endCheckpointLog.archive}`);
116
115
  }
117
116
  // Check the batched blob inputs from the root rollup against the batched blob computed in ts
118
117
  const finalBlobAccumulator = batchedBlobInputs.toFinalBlobAccumulator();
@@ -135,8 +134,8 @@ export class ProverNodePublisher {
135
134
  ];
136
135
  this.log.info(`Submitting epoch proof to L1 rollup contract`, {
137
136
  proofSize: args.proof.withoutPublicInputs().length,
138
- fromBlock: args.fromBlock,
139
- toBlock: args.toBlock
137
+ fromCheckpoint: args.fromCheckpoint,
138
+ toCheckpoint: args.toCheckpoint
140
139
  });
141
140
  const data = encodeFunctionData({
142
141
  abi: RollupAbi,
@@ -166,8 +165,8 @@ export class ProverNodePublisher {
166
165
  getEpochProofPublicInputsArgs(args) {
167
166
  // Returns arguments for EpochProofLib.sol -> getEpochProofPublicInputs()
168
167
  return [
169
- BigInt(args.fromBlock),
170
- BigInt(args.toBlock),
168
+ BigInt(args.fromCheckpoint),
169
+ BigInt(args.toCheckpoint),
171
170
  {
172
171
  previousArchive: args.publicInputs.previousArchiveRoot.toString(),
173
172
  endArchive: args.publicInputs.endArchiveRoot.toString(),
@@ -91,7 +91,7 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
91
91
  private createProvingJob;
92
92
  private getL1Constants;
93
93
  private gatherEpochData;
94
- private gatherBlocks;
94
+ private gatherCheckpoints;
95
95
  private gatherTxs;
96
96
  private gatherMessages;
97
97
  private gatherPreviousBlockHeader;
@@ -104,4 +104,4 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
104
104
  private validateConfig;
105
105
  }
106
106
  export {};
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92ZXItbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFNOUQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFXLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakUsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBRXZCLEtBQUssYUFBYSxFQUNsQixLQUFLLE9BQU8sRUFDWixLQUFLLG9CQUFvQixFQUN6QixLQUFLLHNCQUFzQixFQUU1QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxTQUFTLEVBQ2QsS0FBSyxNQUFNLEVBR1osTUFBTSx5QkFBeUIsQ0FBQztBQUdqQyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9B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
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92ZXItbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTTdGLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUV2QixLQUFLLGFBQWEsRUFDbEIsS0FBSyxPQUFPLEVBQ1osS0FBSyxvQkFBb0IsRUFDekIsS0FBSyxzQkFBc0IsRUFFNUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFFTCxTQUFTLEVBQ1QsS0FBSyxlQUFlLEVBQ3BCLEtBQUssU0FBUyxFQUNkLEtBQUssTUFBTSxFQUdaLE1BQU0seUJBQXlCLENBQUM7QUFHakMsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxP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
@@ -1 +1 @@
1
- {"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ function _ts_decorate(decorators, target, key, desc) {
4
4
  else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  }
7
+ import { BlockNumber } from '@aztec/foundation/branded-types';
7
8
  import { assertRequired, compact, pick, sum } from '@aztec/foundation/collection';
8
9
  import { memoize } from '@aztec/foundation/decorators';
9
10
  import { createLogger } from '@aztec/foundation/log';
@@ -208,9 +209,11 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
208
209
  this.publisher = await this.publisherFactory.create();
209
210
  // Gather all data for this epoch
210
211
  const epochData = await this.gatherEpochData(epochNumber);
211
- const fromBlock = epochData.blocks[0].number;
212
- const toBlock = epochData.blocks.at(-1).number;
213
- this.log.verbose(`Creating proving job for epoch ${epochNumber} for block range ${fromBlock} to ${toBlock}`);
212
+ const fromCheckpoint = epochData.checkpoints[0].number;
213
+ const toCheckpoint = epochData.checkpoints.at(-1).number;
214
+ const fromBlock = epochData.checkpoints[0].blocks[0].number;
215
+ const toBlock = epochData.checkpoints.at(-1).blocks.at(-1).number;
216
+ this.log.verbose(`Creating proving job for epoch ${epochNumber} for checkpoint range ${fromCheckpoint} to ${toCheckpoint} and block range ${fromBlock} to ${toBlock}`);
214
217
  // Fast forward world state to right before the target block and get a fork
215
218
  await this.worldState.syncImmediate(toBlock);
216
219
  // Create a processor factory
@@ -226,18 +229,19 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
226
229
  return this.l2BlockSource.getL1Constants();
227
230
  }
228
231
  async gatherEpochData(epochNumber) {
229
- const blocks = await this.gatherBlocks(epochNumber);
230
- const txArray = await this.gatherTxs(epochNumber, blocks);
232
+ const checkpoints = await this.gatherCheckpoints(epochNumber);
233
+ const txArray = await this.gatherTxs(epochNumber, checkpoints);
231
234
  const txs = new Map(txArray.map((tx)=>[
232
235
  tx.getTxHash().toString(),
233
236
  tx
234
237
  ]));
235
- const l1ToL2Messages = await this.gatherMessages(epochNumber, blocks);
236
- const previousBlockHeader = await this.gatherPreviousBlockHeader(epochNumber, blocks[0]);
237
- const [lastBlock] = await this.l2BlockSource.getPublishedBlocks(blocks.at(-1).number, 1);
238
- const attestations = lastBlock?.attestations ?? [];
238
+ const l1ToL2Messages = await this.gatherMessages(epochNumber, checkpoints);
239
+ const [firstBlock] = checkpoints[0].blocks;
240
+ const previousBlockHeader = await this.gatherPreviousBlockHeader(epochNumber, firstBlock.number - 1);
241
+ const [lastPublishedCheckpoint] = await this.l2BlockSource.getPublishedCheckpoints(checkpoints.at(-1).number, 1);
242
+ const attestations = lastPublishedCheckpoint?.attestations ?? [];
239
243
  return {
240
- blocks,
244
+ checkpoints,
241
245
  txs,
242
246
  l1ToL2Messages,
243
247
  epochNumber,
@@ -245,16 +249,17 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
245
249
  attestations
246
250
  };
247
251
  }
248
- async gatherBlocks(epochNumber) {
249
- const blocks = await this.l2BlockSource.getBlocksForEpoch(epochNumber);
250
- if (blocks.length === 0) {
252
+ async gatherCheckpoints(epochNumber) {
253
+ const checkpoints = await this.l2BlockSource.getCheckpointsForEpoch(epochNumber);
254
+ if (checkpoints.length === 0) {
251
255
  throw new EmptyEpochError(epochNumber);
252
256
  }
253
- return blocks;
257
+ return checkpoints;
254
258
  }
255
- async gatherTxs(epochNumber, blocks) {
259
+ async gatherTxs(epochNumber, checkpoints) {
256
260
  const deadline = new Date(this.dateProvider.now() + this.config.txGatheringTimeoutMs);
257
261
  const txProvider = this.p2pClient.getTxProvider();
262
+ const blocks = checkpoints.flatMap((checkpoint)=>checkpoint.blocks);
258
263
  const txsByBlock = await Promise.all(blocks.map((block)=>txProvider.getTxsForBlock(block, {
259
264
  deadline
260
265
  })));
@@ -268,23 +273,22 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
268
273
  }
269
274
  throw new Error(`Txs not found for epoch ${epochNumber}: ${missingTxs.map((hash)=>hash.toString()).join(', ')}`);
270
275
  }
271
- async gatherMessages(epochNumber, blocks) {
272
- const messages = await Promise.all(blocks.map((b)=>this.l1ToL2MessageSource.getL1ToL2Messages(b.number)));
276
+ async gatherMessages(epochNumber, checkpoints) {
277
+ const messages = await Promise.all(checkpoints.map((c)=>this.l1ToL2MessageSource.getL1ToL2MessagesForCheckpoint(c.number)));
273
278
  const messageCount = sum(messages.map((m)=>m.length));
274
279
  this.log.verbose(`Gathered all ${messageCount} messages for epoch ${epochNumber}`, {
275
280
  epochNumber
276
281
  });
277
- const messagesByBlock = {};
278
- for(let i = 0; i < blocks.length; i++){
279
- messagesByBlock[blocks[i].number] = messages[i];
282
+ const messagesByCheckpoint = {};
283
+ for(let i = 0; i < checkpoints.length; i++){
284
+ messagesByCheckpoint[checkpoints[i].number] = messages[i];
280
285
  }
281
- return messagesByBlock;
286
+ return messagesByCheckpoint;
282
287
  }
283
- async gatherPreviousBlockHeader(epochNumber, initialBlock) {
284
- const previousBlockNumber = initialBlock.number - 1;
285
- const header = await (previousBlockNumber === 0 ? this.worldState.getCommitted().getInitialHeader() : this.l2BlockSource.getBlockHeader(previousBlockNumber));
288
+ async gatherPreviousBlockHeader(epochNumber, previousBlockNumber) {
289
+ const header = await (previousBlockNumber === 0 ? this.worldState.getCommitted().getInitialHeader() : this.l2BlockSource.getBlockHeader(BlockNumber(previousBlockNumber)));
286
290
  if (!header) {
287
- throw new Error(`Previous block header ${initialBlock.number} not found for proving epoch ${epochNumber}`);
291
+ throw new Error(`Previous block header ${previousBlockNumber} not found for proving epoch ${epochNumber}`);
288
292
  }
289
293
  this.log.verbose(`Gathered previous block header ${header.getBlockNumber()} for epoch ${epochNumber}`);
290
294
  return header;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/prover-node",
3
- "version": "3.0.0-nightly.20251202",
3
+ "version": "3.0.0-nightly.20251204",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -56,27 +56,27 @@
56
56
  ]
57
57
  },
58
58
  "dependencies": {
59
- "@aztec/archiver": "3.0.0-nightly.20251202",
60
- "@aztec/bb-prover": "3.0.0-nightly.20251202",
61
- "@aztec/blob-lib": "3.0.0-nightly.20251202",
62
- "@aztec/blob-sink": "3.0.0-nightly.20251202",
63
- "@aztec/constants": "3.0.0-nightly.20251202",
64
- "@aztec/epoch-cache": "3.0.0-nightly.20251202",
65
- "@aztec/ethereum": "3.0.0-nightly.20251202",
66
- "@aztec/foundation": "3.0.0-nightly.20251202",
67
- "@aztec/kv-store": "3.0.0-nightly.20251202",
68
- "@aztec/l1-artifacts": "3.0.0-nightly.20251202",
69
- "@aztec/node-keystore": "3.0.0-nightly.20251202",
70
- "@aztec/node-lib": "3.0.0-nightly.20251202",
71
- "@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251202",
72
- "@aztec/p2p": "3.0.0-nightly.20251202",
73
- "@aztec/protocol-contracts": "3.0.0-nightly.20251202",
74
- "@aztec/prover-client": "3.0.0-nightly.20251202",
75
- "@aztec/sequencer-client": "3.0.0-nightly.20251202",
76
- "@aztec/simulator": "3.0.0-nightly.20251202",
77
- "@aztec/stdlib": "3.0.0-nightly.20251202",
78
- "@aztec/telemetry-client": "3.0.0-nightly.20251202",
79
- "@aztec/world-state": "3.0.0-nightly.20251202",
59
+ "@aztec/archiver": "3.0.0-nightly.20251204",
60
+ "@aztec/bb-prover": "3.0.0-nightly.20251204",
61
+ "@aztec/blob-lib": "3.0.0-nightly.20251204",
62
+ "@aztec/blob-sink": "3.0.0-nightly.20251204",
63
+ "@aztec/constants": "3.0.0-nightly.20251204",
64
+ "@aztec/epoch-cache": "3.0.0-nightly.20251204",
65
+ "@aztec/ethereum": "3.0.0-nightly.20251204",
66
+ "@aztec/foundation": "3.0.0-nightly.20251204",
67
+ "@aztec/kv-store": "3.0.0-nightly.20251204",
68
+ "@aztec/l1-artifacts": "3.0.0-nightly.20251204",
69
+ "@aztec/node-keystore": "3.0.0-nightly.20251204",
70
+ "@aztec/node-lib": "3.0.0-nightly.20251204",
71
+ "@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251204",
72
+ "@aztec/p2p": "3.0.0-nightly.20251204",
73
+ "@aztec/protocol-contracts": "3.0.0-nightly.20251204",
74
+ "@aztec/prover-client": "3.0.0-nightly.20251204",
75
+ "@aztec/sequencer-client": "3.0.0-nightly.20251204",
76
+ "@aztec/simulator": "3.0.0-nightly.20251204",
77
+ "@aztec/stdlib": "3.0.0-nightly.20251204",
78
+ "@aztec/telemetry-client": "3.0.0-nightly.20251204",
79
+ "@aztec/world-state": "3.0.0-nightly.20251204",
80
80
  "source-map-support": "^0.5.21",
81
81
  "tslib": "^2.4.0",
82
82
  "viem": "npm:@aztec/viem@2.38.2"
@@ -1,40 +1,45 @@
1
- import { EpochNumber } from '@aztec/foundation/branded-types';
1
+ import { CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
2
2
  import { Fr } from '@aztec/foundation/fields';
3
3
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
4
- import { CommitteeAttestation, L2Block } from '@aztec/stdlib/block';
4
+ import { CommitteeAttestation } from '@aztec/stdlib/block';
5
+ import { Checkpoint } from '@aztec/stdlib/checkpoint';
5
6
  import { BlockHeader, Tx } from '@aztec/stdlib/tx';
6
7
 
7
8
  /** All data from an epoch used in proving. */
8
9
  export type EpochProvingJobData = {
9
10
  epochNumber: EpochNumber;
10
- blocks: L2Block[];
11
+ checkpoints: Checkpoint[];
11
12
  txs: Map<string, Tx>;
12
- l1ToL2Messages: Record<number, Fr[]>;
13
+ l1ToL2Messages: Record<CheckpointNumber, Fr[]>;
13
14
  previousBlockHeader: BlockHeader;
14
15
  attestations: CommitteeAttestation[];
15
16
  };
16
17
 
17
18
  export function validateEpochProvingJobData(data: EpochProvingJobData) {
18
- if (data.blocks.length > 0 && data.previousBlockHeader.getBlockNumber() + 1 !== data.blocks[0].number) {
19
+ if (data.checkpoints.length === 0) {
20
+ throw new Error('No checkpoints to prove');
21
+ }
22
+
23
+ const firstBlockNumber = data.checkpoints[0].blocks[0].number;
24
+ const previousBlockNumber = data.previousBlockHeader.getBlockNumber();
25
+ if (previousBlockNumber + 1 !== firstBlockNumber) {
19
26
  throw new Error(
20
- `Initial block number ${
21
- data.blocks[0].number
22
- } does not match previous block header ${data.previousBlockHeader.getBlockNumber()}`,
27
+ `Initial block number ${firstBlockNumber} does not match previous block header ${previousBlockNumber}`,
23
28
  );
24
29
  }
25
30
 
26
- for (const blockNumber of data.blocks.map(block => block.number)) {
27
- if (!(blockNumber in data.l1ToL2Messages)) {
28
- throw new Error(`Missing L1 to L2 messages for block number ${blockNumber}`);
31
+ for (const checkpoint of data.checkpoints) {
32
+ if (!(checkpoint.number in data.l1ToL2Messages)) {
33
+ throw new Error(`Missing L1 to L2 messages for checkpoint number ${checkpoint.number}`);
29
34
  }
30
35
  }
31
36
  }
32
37
 
33
38
  export function serializeEpochProvingJobData(data: EpochProvingJobData): Buffer {
34
- const blocks = data.blocks.map(block => block.toBuffer());
39
+ const checkpoints = data.checkpoints.map(checkpoint => checkpoint.toBuffer());
35
40
  const txs = Array.from(data.txs.values()).map(tx => tx.toBuffer());
36
- const l1ToL2Messages = Object.entries(data.l1ToL2Messages).map(([blockNumber, messages]) => [
37
- Number(blockNumber),
41
+ const l1ToL2Messages = Object.entries(data.l1ToL2Messages).map(([checkpointNumber, messages]) => [
42
+ Number(checkpointNumber),
38
43
  messages.length,
39
44
  ...messages,
40
45
  ]);
@@ -43,8 +48,8 @@ export function serializeEpochProvingJobData(data: EpochProvingJobData): Buffer
43
48
  return serializeToBuffer(
44
49
  data.epochNumber,
45
50
  data.previousBlockHeader,
46
- blocks.length,
47
- ...blocks,
51
+ checkpoints.length,
52
+ ...checkpoints,
48
53
  txs.length,
49
54
  ...txs,
50
55
  l1ToL2Messages.length,
@@ -58,20 +63,20 @@ export function deserializeEpochProvingJobData(buf: Buffer): EpochProvingJobData
58
63
  const reader = BufferReader.asReader(buf);
59
64
  const epochNumber = EpochNumber(reader.readNumber());
60
65
  const previousBlockHeader = reader.readObject(BlockHeader);
61
- const blocks = reader.readVector(L2Block);
66
+ const checkpoints = reader.readVector(Checkpoint);
62
67
  const txArray = reader.readVector(Tx);
63
68
 
64
- const l1ToL2MessageBlockCount = reader.readNumber();
69
+ const l1ToL2MessageCheckpointCount = reader.readNumber();
65
70
  const l1ToL2Messages: Record<number, Fr[]> = {};
66
- for (let i = 0; i < l1ToL2MessageBlockCount; i++) {
67
- const blockNumber = reader.readNumber();
71
+ for (let i = 0; i < l1ToL2MessageCheckpointCount; i++) {
72
+ const checkpointNumber = CheckpointNumber(reader.readNumber());
68
73
  const messages = reader.readVector(Fr);
69
- l1ToL2Messages[blockNumber] = messages;
74
+ l1ToL2Messages[checkpointNumber] = messages;
70
75
  }
71
76
 
72
77
  const attestations = reader.readVector(CommitteeAttestation);
73
78
 
74
79
  const txs = new Map<string, Tx>(txArray.map(tx => [tx.getTxHash().toString(), tx]));
75
80
 
76
- return { epochNumber, previousBlockHeader, blocks, txs, l1ToL2Messages, attestations };
81
+ return { epochNumber, previousBlockHeader, checkpoints, txs, l1ToL2Messages, attestations };
77
82
  }