@lodestar/beacon-node 1.43.0-dev.ff409c46ce → 1.43.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 (54) hide show
  1. package/lib/chain/blocks/importExecutionPayload.d.ts +4 -0
  2. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  3. package/lib/chain/blocks/importExecutionPayload.js +12 -1
  4. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  5. package/lib/chain/blocks/index.d.ts.map +1 -1
  6. package/lib/chain/blocks/index.js +6 -7
  7. package/lib/chain/blocks/index.js.map +1 -1
  8. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +8 -1
  9. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
  10. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +19 -0
  11. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  12. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +16 -0
  13. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  14. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -1
  15. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +5 -4
  16. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -1
  17. package/lib/chain/chain.d.ts.map +1 -1
  18. package/lib/chain/chain.js +15 -1
  19. package/lib/chain/chain.js.map +1 -1
  20. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +7 -6
  21. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  22. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +21 -5
  23. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  24. package/lib/sync/range/batch.d.ts +7 -3
  25. package/lib/sync/range/batch.d.ts.map +1 -1
  26. package/lib/sync/range/batch.js +96 -17
  27. package/lib/sync/range/batch.js.map +1 -1
  28. package/lib/sync/range/chain.d.ts +7 -2
  29. package/lib/sync/range/chain.d.ts.map +1 -1
  30. package/lib/sync/range/chain.js +11 -2
  31. package/lib/sync/range/chain.js.map +1 -1
  32. package/lib/sync/range/range.d.ts.map +1 -1
  33. package/lib/sync/range/range.js +14 -3
  34. package/lib/sync/range/range.js.map +1 -1
  35. package/lib/sync/sync.d.ts.map +1 -1
  36. package/lib/sync/sync.js +13 -0
  37. package/lib/sync/sync.js.map +1 -1
  38. package/lib/sync/utils/downloadByRange.d.ts +29 -8
  39. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  40. package/lib/sync/utils/downloadByRange.js +85 -38
  41. package/lib/sync/utils/downloadByRange.js.map +1 -1
  42. package/package.json +16 -16
  43. package/src/chain/blocks/importExecutionPayload.ts +18 -6
  44. package/src/chain/blocks/index.ts +5 -7
  45. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +27 -1
  46. package/src/chain/blocks/payloadEnvelopeInput/types.ts +17 -0
  47. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +7 -4
  48. package/src/chain/chain.ts +17 -0
  49. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +23 -6
  50. package/src/sync/range/batch.ts +118 -20
  51. package/src/sync/range/chain.ts +20 -3
  52. package/src/sync/range/range.ts +16 -3
  53. package/src/sync/sync.ts +13 -1
  54. package/src/sync/utils/downloadByRange.ts +145 -39
@@ -1,5 +1,5 @@
1
1
  import { isForkPostFulu, isForkPostGloas, } from "@lodestar/params";
2
- import { isGloasBeaconBlock, isGloasDataColumnSidecar, } from "@lodestar/types";
2
+ import { isGloasDataColumnSidecar, } from "@lodestar/types";
3
3
  import { LodestarError, byteArrayEquals, fromHex, prettyPrintIndices, toRootHex } from "@lodestar/utils";
4
4
  import { BlockInputSource, DAType, isBlockInputBlobs, isBlockInputColumns, } from "../../chain/blocks/blockInput/index.js";
5
5
  import { PayloadEnvelopeInputSource } from "../../chain/blocks/payloadEnvelopeInput/types.js";
@@ -89,15 +89,12 @@ export function cacheByRangeResponses({ cache, seenPayloadEnvelopeInputCache, pe
89
89
  if (downloadedPayloadEnvelopes !== null) {
90
90
  payloadEnvelopes ??= new Map();
91
91
  for (const [slot, envelope] of downloadedPayloadEnvelopes) {
92
- const blockInput = updatedBatchBlocks.get(slot);
93
- if (!blockInput?.hasBlock() || !isForkPostGloas(blockInput.forkName)) {
94
- // No block to pair this envelope with; drop silently
95
- continue;
96
- }
97
- const payloadInput = seenPayloadEnvelopeInputCache.get(blockInput.blockRootHex);
92
+ const envelopeBlockRootHex = toRootHex(envelope.message.beaconBlockRoot);
93
+ const payloadInput = seenPayloadEnvelopeInputCache.get(envelopeBlockRootHex);
98
94
  if (payloadInput === undefined) {
99
95
  // Unreachable given the loop above seeded an entry for every gloas block in the batch.
100
- continue;
96
+ // for the parent block, it's populated at BeaconChain init
97
+ throw new Error(`Missing PayloadEnvelopeInput for block ${envelopeBlockRootHex}`);
101
98
  }
102
99
  if (!payloadInput.hasPayloadEnvelope()) {
103
100
  payloadInput.addPayloadEnvelope({
@@ -163,7 +160,7 @@ export function cacheByRangeResponses({ cache, seenPayloadEnvelopeInputCache, pe
163
160
  }
164
161
  return { blocks: Array.from(updatedBatchBlocks.values()), payloadEnvelopes };
165
162
  }
166
- export async function downloadByRange({ config, network, peerIdStr, batchBlocks, blocksRequest, blobsRequest, columnsRequest, envelopesRequest, peerDasMetrics, }) {
163
+ export async function downloadByRange({ config, network, peerIdStr, batchBlocks, blocksRequest, blobsRequest, columnsRequest, envelopesRequest, parentPayloadRequest, parentPayloadCommitments, peerDasMetrics, }) {
167
164
  let response;
168
165
  try {
169
166
  response = await requestByRange({
@@ -173,6 +170,7 @@ export async function downloadByRange({ config, network, peerIdStr, batchBlocks,
173
170
  blobsRequest,
174
171
  columnsRequest,
175
172
  envelopesRequest,
173
+ parentPayloadRequest,
176
174
  });
177
175
  }
178
176
  catch (err) {
@@ -189,6 +187,8 @@ export async function downloadByRange({ config, network, peerIdStr, batchBlocks,
189
187
  blobsRequest,
190
188
  columnsRequest,
191
189
  envelopesRequest,
190
+ parentPayloadRequest,
191
+ parentPayloadCommitments,
192
192
  peerDasMetrics,
193
193
  ...response,
194
194
  });
@@ -196,26 +196,15 @@ export async function downloadByRange({ config, network, peerIdStr, batchBlocks,
196
196
  /**
197
197
  * Should not be called directly. Only exported for unit testing purposes
198
198
  */
199
- export async function requestByRange({ network, peerIdStr, blocksRequest, blobsRequest, columnsRequest, envelopesRequest, }) {
199
+ export async function requestByRange({ network, peerIdStr, blocksRequest, blobsRequest, columnsRequest, envelopesRequest, parentPayloadRequest, }) {
200
200
  let blocks;
201
201
  let blobSidecars;
202
- let columnSidecars;
202
+ const columnSidecars = [];
203
203
  const payloadEnvelopes = [];
204
204
  const requests = [];
205
205
  if (blocksRequest) {
206
206
  requests.push(network.sendBeaconBlocksByRange(peerIdStr, blocksRequest).then((blockResponse) => {
207
207
  blocks = blockResponse;
208
- const firstBlock = blockResponse.at(0);
209
- if (firstBlock && isGloasBeaconBlock(firstBlock.message)) {
210
- return network
211
- .sendExecutionPayloadEnvelopesByRoot(peerIdStr, [
212
- firstBlock.message.body.signedExecutionPayloadBid.message.parentBlockRoot,
213
- ])
214
- .then((envelopeResponse) => {
215
- payloadEnvelopes?.unshift(...envelopeResponse);
216
- });
217
- }
218
- return undefined;
219
208
  }));
220
209
  }
221
210
  if (blobsRequest) {
@@ -225,12 +214,30 @@ export async function requestByRange({ network, peerIdStr, blocksRequest, blobsR
225
214
  }
226
215
  if (columnsRequest) {
227
216
  requests.push(network.sendDataColumnSidecarsByRange(peerIdStr, columnsRequest).then((columnResponse) => {
228
- columnSidecars = columnResponse;
217
+ columnSidecars.push(...columnResponse);
229
218
  }));
230
219
  }
231
220
  if (envelopesRequest) {
232
221
  requests.push(network.sendExecutionPayloadEnvelopesByRange(peerIdStr, envelopesRequest).then((envelopeResponse) => {
233
- payloadEnvelopes?.push(...envelopeResponse);
222
+ payloadEnvelopes.push(...envelopeResponse);
223
+ }));
224
+ }
225
+ // Only happens on the 1st batch of a SyncChain — fetches whichever pieces of the
226
+ // dangling-parent's payload are still missing from the seen-cache entry.
227
+ if (parentPayloadRequest?.envelopeBlockRoot) {
228
+ requests.push(network
229
+ .sendExecutionPayloadEnvelopesByRoot(peerIdStr, [parentPayloadRequest.envelopeBlockRoot])
230
+ .then((envelopeResponse) => {
231
+ payloadEnvelopes.push(...envelopeResponse);
232
+ }));
233
+ }
234
+ if (parentPayloadRequest?.blockRoot && parentPayloadRequest.columns && parentPayloadRequest.columns.length > 0) {
235
+ requests.push(network
236
+ .sendDataColumnSidecarsByRoot(peerIdStr, [
237
+ { blockRoot: parentPayloadRequest.blockRoot, columns: parentPayloadRequest.columns },
238
+ ])
239
+ .then((columnResponse) => {
240
+ columnSidecars.push(...columnResponse);
234
241
  }));
235
242
  }
236
243
  await Promise.all(requests);
@@ -244,7 +251,7 @@ export async function requestByRange({ network, peerIdStr, blocksRequest, blobsR
244
251
  /**
245
252
  * Should not be called directly. Only exported for unit testing purposes
246
253
  */
247
- export async function validateResponses({ config, batchBlocks, blocksRequest, blobsRequest, columnsRequest, envelopesRequest, blocks, blobSidecars, columnSidecars, payloadEnvelopes, peerDasMetrics, }) {
254
+ export async function validateResponses({ config, batchBlocks, blocksRequest, blobsRequest, columnsRequest, envelopesRequest, parentPayloadRequest, parentPayloadCommitments, blocks, blobSidecars, columnSidecars, payloadEnvelopes, peerDasMetrics, }) {
248
255
  // Blocks are always required for blob/column validation
249
256
  // If a blocksRequest is provided, blocks have just been downloaded
250
257
  // If no blocksRequest is provided, batchBlocks must have been provided from cache
@@ -254,6 +261,10 @@ export async function validateResponses({ config, batchBlocks, blocksRequest, bl
254
261
  ...requestsLogMeta({ blobsRequest, columnsRequest }),
255
262
  }, "No blocks to validate data requests against");
256
263
  }
264
+ // `parentPayloadRequest` and `parentPayloadCommitments` must be supplied together
265
+ if ((parentPayloadRequest === undefined) !== (parentPayloadCommitments === undefined)) {
266
+ throw new Error("Coding error: parentPayloadRequest and parentPayloadCommitments must be both set or both unset");
267
+ }
257
268
  const validatedResponses = {};
258
269
  let warnings = null;
259
270
  if (blocksRequest) {
@@ -263,16 +274,20 @@ export async function validateResponses({ config, batchBlocks, blocksRequest, bl
263
274
  }
264
275
  validatedResponses.validatedBlocks = result.result;
265
276
  }
277
+ const needsEnvelopeValidation = !!envelopesRequest || parentPayloadCommitments !== undefined;
266
278
  const dataRequest = blobsRequest ?? columnsRequest;
267
- if (!dataRequest && !envelopesRequest) {
279
+ if (!dataRequest && !needsEnvelopeValidation) {
268
280
  return { result: { responses: validatedResponses, payloadEnvelopes: null }, warnings };
269
281
  }
270
282
  if (!dataRequest) {
271
- // Only envelope validation needed
272
- let validatedPayloadEnvelopes = null;
273
- if (envelopesRequest) {
274
- validatedPayloadEnvelopes = validateEnvelopesByRangeResponse(validatedResponses.validatedBlocks ?? [], batchBlocks, payloadEnvelopes ?? []);
283
+ // Only envelope and/or parent-by-root validation needed
284
+ if (parentPayloadCommitments !== undefined) {
285
+ const parentValidated = await validateParentPayloadColumns(parentPayloadCommitments, columnSidecars ?? [], peerDasMetrics);
286
+ if (parentValidated) {
287
+ validatedResponses.validatedColumnSidecars = [parentValidated];
288
+ }
275
289
  }
290
+ const validatedPayloadEnvelopes = validateEnvelopesByRangeResponse(validatedResponses.validatedBlocks ?? [], batchBlocks, payloadEnvelopes ?? [], parentPayloadCommitments);
276
291
  return { result: { responses: validatedResponses, payloadEnvelopes: validatedPayloadEnvelopes }, warnings };
277
292
  }
278
293
  const blocksForDataValidation = getBlocksForDataValidation(dataRequest, batchBlocks, validatedResponses.validatedBlocks?.length ? validatedResponses.validatedBlocks : undefined);
@@ -302,13 +317,37 @@ export async function validateResponses({ config, batchBlocks, blocksRequest, bl
302
317
  validatedResponses.validatedColumnSidecars = validatedColumnSidecarsResult.result;
303
318
  warnings = validatedColumnSidecarsResult.warnings;
304
319
  }
305
- // Validate envelopes if an envelopes request was made
320
+ // Parent columns (by-root): KZG-validate against parent's bid commitments and append.
321
+ if (parentPayloadCommitments !== undefined) {
322
+ const parentValidated = await validateParentPayloadColumns(parentPayloadCommitments, columnSidecars ?? [], peerDasMetrics);
323
+ if (parentValidated) {
324
+ validatedResponses.validatedColumnSidecars = [
325
+ ...(validatedResponses.validatedColumnSidecars ?? []),
326
+ parentValidated,
327
+ ];
328
+ }
329
+ }
306
330
  let validatedPayloadEnvelopes = null;
307
- if (envelopesRequest) {
308
- validatedPayloadEnvelopes = validateEnvelopesByRangeResponse(validatedResponses.validatedBlocks ?? [], batchBlocks, payloadEnvelopes ?? []);
331
+ if (needsEnvelopeValidation) {
332
+ validatedPayloadEnvelopes = validateEnvelopesByRangeResponse(validatedResponses.validatedBlocks ?? [], batchBlocks, payloadEnvelopes ?? [], parentPayloadCommitments);
309
333
  }
310
334
  return { result: { responses: validatedResponses, payloadEnvelopes: validatedPayloadEnvelopes }, warnings };
311
335
  }
336
+ async function validateParentPayloadColumns(parentPayloadCommitments, columnSidecars, peerDasMetrics) {
337
+ const parentColumns = [];
338
+ for (const cs of columnSidecars) {
339
+ if (isGloasDataColumnSidecar(cs) && byteArrayEquals(cs.beaconBlockRoot, parentPayloadCommitments.blockRoot)) {
340
+ parentColumns.push(cs);
341
+ }
342
+ }
343
+ if (parentColumns.length === 0) {
344
+ return null;
345
+ }
346
+ parentColumns.sort((a, b) => a.index - b.index);
347
+ const parentSlot = parentColumns[0].slot;
348
+ await validateGloasBlockDataColumnSidecars(parentSlot, parentPayloadCommitments.blockRoot, parentPayloadCommitments.kzgCommitments, parentColumns, peerDasMetrics);
349
+ return { blockRoot: parentPayloadCommitments.blockRoot, columnSidecars: parentColumns };
350
+ }
312
351
  /**
313
352
  * Should not be called directly. Only exported for unit testing purposes
314
353
  *
@@ -680,11 +719,14 @@ export class DownloadByRangeError extends LodestarError {
680
719
  }
681
720
  /**
682
721
  * Validates SignedExecutionPayloadEnvelopes received for a range request.
683
- * For each envelope whose slot appears in the downloaded blocks, verifies that
684
- * envelope.message.beaconBlockRoot matches the corresponding block's root.
685
- * Envelopes for slots not in the batch (orphaned payloads) are silently ignored.
722
+ *
723
+ * Three categories of envelope slots:
724
+ * - In-batch slot whose block we have: verify envelope.beaconBlockRoot matches.
725
+ * - Dangling-parent envelope (only when `parentPayloadCommitments` is set, i.e. the first
726
+ * batch of a `SyncChain`): keep if `envelope.beaconBlockRoot === parentPayloadCommitments.blockRoot`.
727
+ * - Other "orphan" envelopes (e.g. unrelated slots): ignored.
686
728
  */
687
- export function validateEnvelopesByRangeResponse(validatedBlocks, batchBlocks, payloadEnvelopes) {
729
+ export function validateEnvelopesByRangeResponse(validatedBlocks, batchBlocks, payloadEnvelopes, parentPayloadCommitments) {
688
730
  // Build a map of slot -> blockRoot for all blocks in the batch
689
731
  const batchBlockRoots = new Map();
690
732
  if (batchBlocks) {
@@ -699,8 +741,13 @@ export function validateEnvelopesByRangeResponse(validatedBlocks, batchBlocks, p
699
741
  for (const payloadEnvelope of payloadEnvelopes) {
700
742
  const slot = payloadEnvelope.message.payload.slotNumber;
701
743
  const batchBlockRoot = batchBlockRoots.get(slot);
702
- // Envelopes for slots not in the batch are silently ignored (orphaned payloads or a parent payload)
703
744
  if (batchBlockRoot === undefined) {
745
+ // Keep the requested dangling-parent envelope only when its beaconBlockRoot matches
746
+ // exactly. All other unrelated envelopes are dropped.
747
+ if (parentPayloadCommitments !== undefined &&
748
+ byteArrayEquals(payloadEnvelope.message.beaconBlockRoot, parentPayloadCommitments.blockRoot)) {
749
+ payloadEnvelopeMap.set(slot, payloadEnvelope);
750
+ }
704
751
  continue;
705
752
  }
706
753
  // Verify beaconBlockRoot matches the block's root
@@ -1 +1 @@
1
- {"version":3,"file":"downloadByRange.js","sourceRoot":"","sources":["../../../src/sync/utils/downloadByRange.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"downloadByRange.js","sourceRoot":"","sources":["../../../src/sync/utils/downloadByRange.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.43.0-dev.ff409c46ce",
14
+ "version": "1.43.0-rc.2",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -114,7 +114,7 @@
114
114
  "@chainsafe/enr": "^6.0.1",
115
115
  "@chainsafe/libp2p-noise": "^17.0.0",
116
116
  "@chainsafe/libp2p-quic": "^2.0.1",
117
- "@chainsafe/persistent-merkle-tree": "^1.2.1",
117
+ "@chainsafe/persistent-merkle-tree": "^1.2.5",
118
118
  "@chainsafe/prometheus-gc-stats": "^1.0.0",
119
119
  "@chainsafe/pubkey-index-map": "^3.0.0",
120
120
  "@chainsafe/snappy-wasm": "^0.5.0",
@@ -135,18 +135,18 @@
135
135
  "@libp2p/peer-id": "^6.0.4",
136
136
  "@libp2p/prometheus-metrics": "^5.0.14",
137
137
  "@libp2p/tcp": "^11.0.13",
138
- "@lodestar/api": "^1.43.0-dev.ff409c46ce",
139
- "@lodestar/config": "^1.43.0-dev.ff409c46ce",
140
- "@lodestar/db": "^1.43.0-dev.ff409c46ce",
141
- "@lodestar/fork-choice": "^1.43.0-dev.ff409c46ce",
142
- "@lodestar/light-client": "^1.43.0-dev.ff409c46ce",
143
- "@lodestar/logger": "^1.43.0-dev.ff409c46ce",
144
- "@lodestar/params": "^1.43.0-dev.ff409c46ce",
145
- "@lodestar/reqresp": "^1.43.0-dev.ff409c46ce",
146
- "@lodestar/state-transition": "^1.43.0-dev.ff409c46ce",
147
- "@lodestar/types": "^1.43.0-dev.ff409c46ce",
148
- "@lodestar/utils": "^1.43.0-dev.ff409c46ce",
149
- "@lodestar/validator": "^1.43.0-dev.ff409c46ce",
138
+ "@lodestar/api": "^1.43.0-rc.2",
139
+ "@lodestar/config": "^1.43.0-rc.2",
140
+ "@lodestar/db": "^1.43.0-rc.2",
141
+ "@lodestar/fork-choice": "^1.43.0-rc.2",
142
+ "@lodestar/light-client": "^1.43.0-rc.2",
143
+ "@lodestar/logger": "^1.43.0-rc.2",
144
+ "@lodestar/params": "^1.43.0-rc.2",
145
+ "@lodestar/reqresp": "^1.43.0-rc.2",
146
+ "@lodestar/state-transition": "^1.43.0-rc.2",
147
+ "@lodestar/types": "^1.43.0-rc.2",
148
+ "@lodestar/utils": "^1.43.0-rc.2",
149
+ "@lodestar/validator": "^1.43.0-rc.2",
150
150
  "@multiformats/multiaddr": "^13.0.1",
151
151
  "datastore-core": "^11.0.2",
152
152
  "datastore-fs": "^11.0.2",
@@ -169,7 +169,7 @@
169
169
  "@libp2p/interface-internal": "^3.0.13",
170
170
  "@libp2p/logger": "^6.2.2",
171
171
  "@libp2p/utils": "^7.0.13",
172
- "@lodestar/spec-test-util": "^1.43.0-dev.ff409c46ce",
172
+ "@lodestar/spec-test-util": "^1.43.0-rc.2",
173
173
  "@types/js-yaml": "^4.0.5",
174
174
  "@types/qs": "^6.9.7",
175
175
  "@types/tmp": "^0.2.3",
@@ -187,5 +187,5 @@
187
187
  "beacon",
188
188
  "blockchain"
189
189
  ],
190
- "gitHead": "17bea196ab9143547831e03cf33a52e5d0b98ff2"
190
+ "gitHead": "583ab17328e37d313cd284957a59afcea3e38d4e"
191
191
  }
@@ -21,6 +21,7 @@ export enum PayloadErrorCode {
21
21
  EXECUTION_ENGINE_INVALID = "PAYLOAD_ERROR_EXECUTION_ENGINE_INVALID",
22
22
  EXECUTION_ENGINE_ERROR = "PAYLOAD_ERROR_EXECUTION_ENGINE_ERROR",
23
23
  BLOCK_NOT_IN_FORK_CHOICE = "PAYLOAD_ERROR_BLOCK_NOT_IN_FORK_CHOICE",
24
+ MISS_BLOCK_STATE = "PAYLOAD_ERROR_MISS_BLOCK_STATE",
24
25
  ENVELOPE_VERIFICATION_ERROR = "PAYLOAD_ERROR_ENVELOPE_VERIFICATION_ERROR",
25
26
  INVALID_SIGNATURE = "PAYLOAD_ERROR_INVALID_SIGNATURE",
26
27
  }
@@ -40,6 +41,10 @@ export type PayloadErrorType =
40
41
  code: PayloadErrorCode.BLOCK_NOT_IN_FORK_CHOICE;
41
42
  blockRootHex: string;
42
43
  }
44
+ | {
45
+ code: PayloadErrorCode.MISS_BLOCK_STATE;
46
+ blockRootHex: string;
47
+ }
43
48
  | {
44
49
  code: PayloadErrorCode.ENVELOPE_VERIFICATION_ERROR;
45
50
  message: string;
@@ -123,12 +128,19 @@ export async function importExecutionPayload(
123
128
  }
124
129
 
125
130
  // 3. Regenerate state for envelope verification
126
- const blockState = await this.regen.getBlockSlotState(
127
- protoBlock,
128
- protoBlock.slot,
129
- {dontTransferCache: true},
130
- RegenCaller.processBlock
131
- );
131
+ const blockState = await this.regen
132
+ .getBlockSlotState(protoBlock, protoBlock.slot, {dontTransferCache: true}, RegenCaller.processBlock)
133
+ .catch(() =>
134
+ // only happen at the 1st batch of skipped slot checkpoint sync
135
+ this.regen.getClosestHeadState(protoBlock)
136
+ );
137
+
138
+ if (blockState == null) {
139
+ throw new PayloadError({
140
+ code: PayloadErrorCode.MISS_BLOCK_STATE,
141
+ blockRootHex: protoBlock.blockRoot,
142
+ });
143
+ }
132
144
  if (!isStatePostGloas(blockState)) {
133
145
  throw new PayloadError({
134
146
  code: PayloadErrorCode.ENVELOPE_VERIFICATION_ERROR,
@@ -126,13 +126,11 @@ export async function processBlocks(
126
126
  });
127
127
  }
128
128
 
129
- // Iterate slots from the original `blocks` input (which spans the entire batch including
130
- // slots filtered out of `relevantBlocks`). The first batch of a checkpoint sync may contain
131
- // a payload at the anchor slot whose block is already in fork-choice (added by
132
- // initializeForkChoice as PENDING+EMPTY) and therefore not in verifiedBlocksBySlot — the
133
- // payload still needs to be imported here to populate the anchor's FULL variant so
134
- // subsequent slots can find their parent payload.
135
- const slots = Array.from(new Set(blocks.map((b) => b.getBlock().message.slot)));
129
+ const slotSet = new Set<Slot>(blocks.map((b) => b.getBlock().message.slot));
130
+ if (payloadEnvelopes) {
131
+ for (const slot of payloadEnvelopes.keys()) slotSet.add(slot);
132
+ }
133
+ const slots = Array.from(slotSet).sort((a, b) => a - b);
136
134
  for (const slot of slots) {
137
135
  const fullyVerifiedBlock = verifiedBlocksBySlot.get(slot);
138
136
  if (fullyVerifiedBlock !== undefined) {
@@ -4,7 +4,13 @@ import {toRootHex, withTimeout} from "@lodestar/utils";
4
4
  import {VersionedHashes} from "../../../execution/index.js";
5
5
  import {kzgCommitmentToVersionedHash} from "../../../util/blobs.js";
6
6
  import {MissingColumnMeta} from "../blockInput/types.js";
7
- import {AddPayloadEnvelopeProps, ColumnWithSource, CreateFromBlockProps, SourceMeta} from "./types.js";
7
+ import {
8
+ AddPayloadEnvelopeProps,
9
+ ColumnWithSource,
10
+ CreateFromBidProps,
11
+ CreateFromBlockProps,
12
+ SourceMeta,
13
+ } from "./types.js";
8
14
 
9
15
  export type PayloadEnvelopeInputState =
10
16
  | {
@@ -132,6 +138,26 @@ export class PayloadEnvelopeInput {
132
138
  });
133
139
  }
134
140
 
141
+ /**
142
+ * Create a `PayloadEnvelopeInput` from a state's `latestExecutionPayloadBid` (the bid
143
+ * recorded in beacon state for the latest imported block). Used when seeding the cache
144
+ * for a checkpoint anchor block — we have the bid via state but not the full
145
+ * SignedBeaconBlock body.
146
+ */
147
+ static createFromBid(props: CreateFromBidProps): PayloadEnvelopeInput {
148
+ return new PayloadEnvelopeInput({
149
+ blockRootHex: props.blockRootHex,
150
+ slot: props.slot,
151
+ forkName: props.forkName,
152
+ proposerIndex: props.proposerIndex,
153
+ bid: props.bid,
154
+ sampledColumns: props.sampledColumns,
155
+ custodyColumns: props.custodyColumns,
156
+ timeCreatedSec: props.timeCreatedSec,
157
+ daOutOfRange: props.daOutOfRange,
158
+ });
159
+ }
160
+
135
161
  getBid(): gloas.ExecutionPayloadBid {
136
162
  return this.bid;
137
163
  }
@@ -30,6 +30,23 @@ export type CreateFromBlockProps = {
30
30
  daOutOfRange: boolean;
31
31
  };
32
32
 
33
+ /**
34
+ * Used to seed an entry from a state's `latestExecutionPayloadBid` (e.g., when initializing
35
+ * the chain from a checkpoint anchor state — we have the bid via the state but not the
36
+ * full SignedBeaconBlock).
37
+ */
38
+ export type CreateFromBidProps = {
39
+ blockRootHex: RootHex;
40
+ slot: number;
41
+ forkName: ForkName;
42
+ proposerIndex: number;
43
+ bid: gloas.ExecutionPayloadBid;
44
+ sampledColumns: ColumnIndex[];
45
+ custodyColumns: ColumnIndex[];
46
+ timeCreatedSec: number;
47
+ daOutOfRange: boolean;
48
+ };
49
+
33
50
  export type AddPayloadEnvelopeProps = SourceMeta & {
34
51
  envelope: gloas.SignedExecutionPayloadEnvelope;
35
52
  };
@@ -82,16 +82,19 @@ export function verifyExecutionPayloadEnvelope(
82
82
  }
83
83
  }
84
84
 
85
- // Verify the execution payload is valid
86
- if (payload.slotNumber !== state.slot) {
87
- throw new Error(`Slot mismatch between payload and state payload=${payload.slotNumber} state=${state.slot}`);
85
+ // should not use state.slot, it does not work for skipped slot checkpoint sync
86
+ const blockSlot = state.latestBlockHeader.slot;
87
+ if (payload.slotNumber !== blockSlot) {
88
+ throw new Error(
89
+ `Slot mismatch between payload and latest block header payload=${payload.slotNumber} latestBlockHeader=${blockSlot}`
90
+ );
88
91
  }
89
92
  if (!byteArrayEquals(payload.parentHash, state.latestBlockHash)) {
90
93
  throw new Error(
91
94
  `Parent hash mismatch between payload and state payload=${toRootHex(payload.parentHash)} state=${toRootHex(state.latestBlockHash)}`
92
95
  );
93
96
  }
94
- const expectedTimestamp = computeTimeAtSlot(config, state.slot, state.genesisTime);
97
+ const expectedTimestamp = computeTimeAtSlot(config, blockSlot, state.genesisTime);
95
98
  if (payload.timestamp !== expectedTimestamp) {
96
99
  throw new Error(
97
100
  `Timestamp mismatch between payload and state payload=${payload.timestamp} state=${expectedTimestamp}`
@@ -23,6 +23,7 @@ import {
23
23
  getEffectiveBalancesFromStateBytes,
24
24
  isStatePostAltair,
25
25
  isStatePostElectra,
26
+ isStatePostGloas,
26
27
  } from "@lodestar/state-transition";
27
28
  import {
28
29
  BeaconBlock,
@@ -390,6 +391,7 @@ export class BeaconChain implements IBeaconChain {
390
391
  metrics,
391
392
  logger
392
393
  );
394
+
393
395
  const regen = new QueuedStateRegenerator({
394
396
  config,
395
397
  forkChoice,
@@ -426,6 +428,21 @@ export class BeaconChain implements IBeaconChain {
426
428
  logger,
427
429
  });
428
430
 
431
+ const anchorBlockSlot = anchorState.latestBlockHeader.slot;
432
+ if (isStatePostGloas(anchorState) && anchorBlockSlot > 0) {
433
+ const anchorBid = anchorState.latestExecutionPayloadBid;
434
+ this.seenPayloadEnvelopeInputCache.addFromBid({
435
+ blockRootHex: toRootHex(checkpoint.root),
436
+ slot: anchorBlockSlot,
437
+ forkName: anchorState.forkName,
438
+ proposerIndex: anchorState.latestBlockHeader.proposerIndex,
439
+ bid: anchorBid,
440
+ sampledColumns: this.custodyConfig.sampledColumns,
441
+ custodyColumns: this.custodyConfig.custodyColumns,
442
+ timeCreatedSec: Math.floor(Date.now() / 1000),
443
+ });
444
+ }
445
+
429
446
  this.clock = clock;
430
447
  this.regen = regen;
431
448
  this.bls = bls;