@lodestar/beacon-node 1.48.0-dev.76b167bf36 → 1.48.0-dev.7c6505e8e6

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 (30) hide show
  1. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/state/utils.js +14 -0
  3. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  4. package/lib/api/impl/config/index.d.ts.map +1 -1
  5. package/lib/api/impl/config/index.js +4 -1
  6. package/lib/api/impl/config/index.js.map +1 -1
  7. package/lib/chain/blocks/importBlock.d.ts +5 -1
  8. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  9. package/lib/chain/blocks/importBlock.js +9 -3
  10. package/lib/chain/blocks/importBlock.js.map +1 -1
  11. package/lib/chain/blocks/index.d.ts.map +1 -1
  12. package/lib/chain/blocks/index.js +20 -7
  13. package/lib/chain/blocks/index.js.map +1 -1
  14. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
  15. package/lib/chain/blocks/utils/chainSegment.js +16 -10
  16. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  17. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  18. package/lib/network/processor/gossipHandlers.js +378 -278
  19. package/lib/network/processor/gossipHandlers.js.map +1 -1
  20. package/lib/network/processor/index.d.ts.map +1 -1
  21. package/lib/network/processor/index.js +11 -16
  22. package/lib/network/processor/index.js.map +1 -1
  23. package/package.json +14 -14
  24. package/src/api/impl/beacon/state/utils.ts +15 -0
  25. package/src/api/impl/config/index.ts +4 -1
  26. package/src/chain/blocks/importBlock.ts +21 -5
  27. package/src/chain/blocks/index.ts +20 -7
  28. package/src/chain/blocks/utils/chainSegment.ts +16 -11
  29. package/src/network/processor/gossipHandlers.ts +487 -348
  30. package/src/network/processor/index.ts +11 -17
@@ -37,17 +37,6 @@ export function assertLinearChainSegment(
37
37
 
38
38
  const warnings: OrphanedPayloadEnvelope[] = [];
39
39
 
40
- let parentExecHash: string | null = parentBlock?.executionPayloadBlockHash ?? null;
41
- if (parentBlock !== null) {
42
- const parentPayloadInput = payloadEnvelopes?.get(parentBlock.slot);
43
- if (parentPayloadInput?.hasPayloadEnvelope()) {
44
- // Checkpoint-sync first batch: the anchor is stored PENDING with the inherited (grandparent)
45
- // hash, not its own payload. Its payload envelope is in this batch, so use that blockHash as
46
- // the real parent EL head.
47
- parentExecHash = parentPayloadInput.getBlockHashHex();
48
- }
49
- }
50
-
51
40
  // Track the expected execution payload block hash through the segment, seeded from the FIRST
52
41
  // block's own bid
53
42
  const firstBlockMessage = blocks[0].getBlock().message;
@@ -55,6 +44,22 @@ export function assertLinearChainSegment(
55
44
  ? toRootHex(firstBlockMessage.body.signedExecutionPayloadBid.message.parentBlockHash)
56
45
  : null;
57
46
 
47
+ let parentExecHash: string | null = parentBlock?.executionPayloadBlockHash ?? null;
48
+ if (parentBlock !== null) {
49
+ const parentPayloadInput = payloadEnvelopes?.get(parentBlock.slot);
50
+ if (parentPayloadInput?.hasPayloadEnvelope()) {
51
+ const parentPayloadBlockHash = parentPayloadInput.getBlockHashHex();
52
+ if (currentExecHash === parentPayloadBlockHash) {
53
+ // Checkpoint-sync first batch: the anchor is stored PENDING with the inherited (grandparent)
54
+ // hash, its own payload is in this batch and is the real parent EL head
55
+ parentExecHash = parentPayloadBlockHash;
56
+ } else {
57
+ // First block builds on the parent's EMPTY variant, the parent's payload in this batch is orphaned
58
+ warnings.push({slot: parentBlock.slot, payloadEnvelopeInput: parentPayloadInput});
59
+ }
60
+ }
61
+ }
62
+
58
63
  // First block must build on the parent's EL head. PARENT_PAYLOAD_UNKNOWN (vs the in-segment
59
64
  // NON_LINEAR_PAYLOAD_ROOTS below) tells range sync this is a parent-link problem, not an in-batch one.
60
65
  if (parentExecHash !== null && currentExecHash !== null && currentExecHash !== parentExecHash) {