@lodestar/beacon-node 1.48.0-dev.dd957b093d → 1.48.0-dev.df6a2aa429

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 (97) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +0 -7
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/state/utils.js +14 -0
  6. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  7. package/lib/api/impl/config/index.d.ts.map +1 -1
  8. package/lib/api/impl/config/index.js +4 -1
  9. package/lib/api/impl/config/index.js.map +1 -1
  10. package/lib/api/impl/validator/index.d.ts.map +1 -1
  11. package/lib/api/impl/validator/index.js +39 -39
  12. package/lib/api/impl/validator/index.js.map +1 -1
  13. package/lib/chain/blocks/importBlock.d.ts +5 -1
  14. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  15. package/lib/chain/blocks/importBlock.js +9 -16
  16. package/lib/chain/blocks/importBlock.js.map +1 -1
  17. package/lib/chain/blocks/index.d.ts +8 -4
  18. package/lib/chain/blocks/index.d.ts.map +1 -1
  19. package/lib/chain/blocks/index.js +80 -15
  20. package/lib/chain/blocks/index.js.map +1 -1
  21. package/lib/chain/blocks/types.d.ts +8 -0
  22. package/lib/chain/blocks/types.d.ts.map +1 -1
  23. package/lib/chain/blocks/types.js.map +1 -1
  24. package/lib/chain/blocks/utils/chainSegment.d.ts +1 -1
  25. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
  26. package/lib/chain/blocks/utils/chainSegment.js +26 -11
  27. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  28. package/lib/chain/chain.d.ts +7 -2
  29. package/lib/chain/chain.d.ts.map +1 -1
  30. package/lib/chain/chain.js +69 -40
  31. package/lib/chain/chain.js.map +1 -1
  32. package/lib/chain/emitter.d.ts +1 -1
  33. package/lib/chain/emitter.js +1 -1
  34. package/lib/chain/errors/executionPayloadBid.d.ts +4 -0
  35. package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
  36. package/lib/chain/errors/executionPayloadBid.js +1 -0
  37. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  38. package/lib/chain/errors/gossipValidation.d.ts +2 -1
  39. package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
  40. package/lib/chain/errors/gossipValidation.js +1 -0
  41. package/lib/chain/errors/gossipValidation.js.map +1 -1
  42. package/lib/chain/interface.d.ts +2 -2
  43. package/lib/chain/interface.d.ts.map +1 -1
  44. package/lib/chain/opPools/aggregatedAttestationPool.js +1 -1
  45. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  46. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  47. package/lib/chain/validation/executionPayloadBid.js +16 -0
  48. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  49. package/lib/chain/validatorMonitor.d.ts +7 -1
  50. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  51. package/lib/chain/validatorMonitor.js +22 -5
  52. package/lib/chain/validatorMonitor.js.map +1 -1
  53. package/lib/execution/builder/validateBid.d.ts.map +1 -1
  54. package/lib/execution/builder/validateBid.js +3 -0
  55. package/lib/execution/builder/validateBid.js.map +1 -1
  56. package/lib/execution/engine/mock.d.ts.map +1 -1
  57. package/lib/execution/engine/mock.js +4 -1
  58. package/lib/execution/engine/mock.js.map +1 -1
  59. package/lib/metrics/metrics/lodestar.d.ts +0 -3
  60. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  61. package/lib/metrics/metrics/lodestar.js +0 -5
  62. package/lib/metrics/metrics/lodestar.js.map +1 -1
  63. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  64. package/lib/network/processor/gossipHandlers.js +378 -278
  65. package/lib/network/processor/gossipHandlers.js.map +1 -1
  66. package/lib/network/processor/index.d.ts.map +1 -1
  67. package/lib/network/processor/index.js +22 -16
  68. package/lib/network/processor/index.js.map +1 -1
  69. package/lib/network/reqresp/rateLimit.js +2 -1
  70. package/lib/network/reqresp/rateLimit.js.map +1 -1
  71. package/lib/sync/range/range.d.ts.map +1 -1
  72. package/lib/sync/range/range.js +24 -1
  73. package/lib/sync/range/range.js.map +1 -1
  74. package/package.json +14 -14
  75. package/src/api/impl/beacon/blocks/index.ts +0 -10
  76. package/src/api/impl/beacon/state/utils.ts +15 -0
  77. package/src/api/impl/config/index.ts +4 -1
  78. package/src/api/impl/validator/index.ts +44 -43
  79. package/src/chain/blocks/importBlock.ts +21 -18
  80. package/src/chain/blocks/index.ts +107 -21
  81. package/src/chain/blocks/types.ts +9 -0
  82. package/src/chain/blocks/utils/chainSegment.ts +26 -12
  83. package/src/chain/chain.ts +78 -50
  84. package/src/chain/emitter.ts +1 -1
  85. package/src/chain/errors/executionPayloadBid.ts +2 -0
  86. package/src/chain/errors/gossipValidation.ts +1 -0
  87. package/src/chain/interface.ts +2 -2
  88. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  89. package/src/chain/validation/executionPayloadBid.ts +18 -0
  90. package/src/chain/validatorMonitor.ts +24 -7
  91. package/src/execution/builder/validateBid.ts +4 -0
  92. package/src/execution/engine/mock.ts +4 -1
  93. package/src/metrics/metrics/lodestar.ts +0 -5
  94. package/src/network/processor/gossipHandlers.ts +487 -348
  95. package/src/network/processor/index.ts +24 -17
  96. package/src/network/reqresp/rateLimit.ts +2 -1
  97. package/src/sync/range/range.ts +23 -1
@@ -1,12 +1,16 @@
1
+ import { PayloadStatus } from "@lodestar/fork-choice";
2
+ import { computeEpochAtSlot } from "@lodestar/state-transition";
1
3
  import { isErrorAborted, toRootHex } from "@lodestar/utils";
2
4
  import { nextEventLoop } from "../../util/eventLoop.js";
3
5
  import { JobItemQueue, isQueueErrorAborted } from "../../util/queue/index.js";
4
6
  import { BlockError, BlockErrorCode, isBlockErrorAborted } from "../errors/index.js";
5
- import { importBlock } from "./importBlock.js";
7
+ import { ForkchoiceCaller } from "../forkChoice/index.js";
8
+ import { importBlock, importsBlockAttestations } from "./importBlock.js";
6
9
  import { PayloadError, importExecutionPayload } from "./importExecutionPayload.js";
7
10
  import { assertLinearChainSegment } from "./utils/chainSegment.js";
8
11
  import { verifyBlocksInEpoch } from "./verifyBlock.js";
9
12
  import { verifyBlocksSanityChecks } from "./verifyBlocksSanityChecks.js";
13
+ import { verifyPayloadsDataAvailability } from "./verifyPayloadsDataAvailability.js";
10
14
  export { AttestationImportOpt } from "./types.js";
11
15
  const QUEUE_MAX_LENGTH = 256;
12
16
  /**
@@ -20,7 +24,7 @@ export class BlockProcessor {
20
24
  }, { maxLength: QUEUE_MAX_LENGTH, noYieldIfOneItem: true, signal }, metrics?.blockProcessorQueue ?? undefined);
21
25
  }
22
26
  async processBlocksJob(job, payloadEnvelopes, opts = {}) {
23
- await this.jobQueue.push(job, payloadEnvelopes, opts);
27
+ return this.jobQueue.push(job, payloadEnvelopes, opts);
24
28
  }
25
29
  }
26
30
  /**
@@ -34,28 +38,38 @@ export class BlockProcessor {
34
38
  * All other effects are provided by downstream event handlers
35
39
  */
36
40
  export async function processBlocks(blocks, payloadEnvelopes, opts) {
41
+ const emptyResult = { orphaned: [], skipped: false };
37
42
  if (blocks.length === 0) {
38
- return; // TODO: or throw?
43
+ return emptyResult; // TODO: or throw?
39
44
  }
40
45
  try {
41
46
  const { relevantBlocks, parentSlots, parentBlock } = verifyBlocksSanityChecks(this, blocks, payloadEnvelopes, opts);
42
47
  // No relevant blocks, skip verifyBlocksInEpoch()
43
48
  if (relevantBlocks.length === 0 || parentBlock === null) {
44
49
  // parentBlock can only be null if relevantBlocks are empty
45
- return;
50
+ return await importPayloadEnvelopesOfKnownBlocks.call(this, payloadEnvelopes, opts);
46
51
  }
47
52
  const { warnings: orphanedPayloads } = assertLinearChainSegment(this.config, relevantBlocks, payloadEnvelopes, parentBlock);
48
- if (orphanedPayloads != null) {
49
- for (const orphaned of orphanedPayloads) {
50
- this.logger.debug("Orphaned payload envelope in chain segment", {
51
- slot: orphaned.slot,
52
- blockRoot: orphaned.payloadEnvelopeInput.blockRootHex,
53
- });
53
+ // Orphaned payloads of recent blocks are still imported, a reorg of the child could make the payload canonical
54
+ // again and later blocks build on it. Older ones are skipped: without the block attestations the orphaned FULL
55
+ // variant has no descendants and ties at zero weight with the EMPTY variant carrying the chain, the payload
56
+ // status tiebreaker then picks FULL and parks the head there.
57
+ const blockEpoch = computeEpochAtSlot(relevantBlocks[0].getBlock().message.slot);
58
+ const importsAttestations = importsBlockAttestations(opts, blockEpoch, this.clock.currentEpoch);
59
+ const skipped = orphanedPayloads != null && payloadEnvelopes !== null && !importsAttestations;
60
+ let payloadEnvelopesToImport = payloadEnvelopes;
61
+ if (skipped) {
62
+ payloadEnvelopesToImport = new Map(payloadEnvelopes);
63
+ for (const orphaned of orphanedPayloads ?? []) {
64
+ payloadEnvelopesToImport.delete(orphaned.slot);
65
+ // never validated, drop it from the shared cache so it is not served to peers, by-root sync reloads the
66
+ // entry from db if the payload is ever needed
67
+ this.seenPayloadEnvelopeInputCache.prune(orphaned.payloadEnvelopeInput.blockRootHex);
54
68
  }
55
69
  }
56
70
  // Fully verify a block to be imported immediately after. Does not produce any side-effects besides adding intermediate
57
71
  // states in the state cache through regen.
58
- const { postStates, blockDAStatuses, payloadDAStatuses, proposerBalanceDeltas, segmentExecStatus, indexedAttestationsByBlock, } = await verifyBlocksInEpoch.call(this, parentBlock, relevantBlocks, payloadEnvelopes, opts);
72
+ const { postStates, blockDAStatuses, payloadDAStatuses, proposerBalanceDeltas, segmentExecStatus, indexedAttestationsByBlock, } = await verifyBlocksInEpoch.call(this, parentBlock, relevantBlocks, payloadEnvelopesToImport, opts);
59
73
  // If segmentExecStatus has lvhForkchoice then, the entire segment should be invalid
60
74
  // and we need to further propagate
61
75
  if (segmentExecStatus.execAborted !== null) {
@@ -86,8 +100,8 @@ export async function processBlocks(blocks, payloadEnvelopes, opts) {
86
100
  });
87
101
  }
88
102
  const slotSet = new Set(blocks.map((b) => b.getBlock().message.slot));
89
- if (payloadEnvelopes) {
90
- for (const slot of payloadEnvelopes.keys())
103
+ if (payloadEnvelopesToImport) {
104
+ for (const slot of payloadEnvelopesToImport.keys())
91
105
  slotSet.add(slot);
92
106
  }
93
107
  const slots = Array.from(slotSet).sort((a, b) => a - b);
@@ -100,7 +114,7 @@ export async function processBlocks(blocks, payloadEnvelopes, opts) {
100
114
  // PayloadEnvelopeInput is shared and may receive an envelope after the DA snapshot was taken.
101
115
  const payloadDA = payloadDAStatuses.get(slot);
102
116
  if (payloadDA !== undefined) {
103
- const payloadInput = payloadEnvelopes?.get(slot);
117
+ const payloadInput = payloadEnvelopesToImport?.get(slot);
104
118
  if (payloadInput === undefined) {
105
119
  throw new Error(`Missing payload input for slot ${slot} after DA verification`);
106
120
  }
@@ -112,10 +126,11 @@ export async function processBlocks(blocks, payloadEnvelopes, opts) {
112
126
  }
113
127
  await nextEventLoop();
114
128
  }
129
+ return { orphaned: orphanedPayloads ?? [], skipped };
115
130
  }
116
131
  catch (e) {
117
132
  if (isErrorAborted(e) || isQueueErrorAborted(e) || isBlockErrorAborted(e)) {
118
- return; // Ignore
133
+ return emptyResult; // Ignore
119
134
  }
120
135
  // above functions should only throw BlockError, or PayloadError from the gloas payload import
121
136
  const err = getBlockOrPayloadError(e, blocks[0].getBlock());
@@ -153,6 +168,56 @@ export async function processBlocks(blocks, payloadEnvelopes, opts) {
153
168
  throw err;
154
169
  }
155
170
  }
171
+ /**
172
+ * A peer can serve a block without its envelope, the block is then imported with a PENDING payload. Later batches
173
+ * carry the envelope but all their blocks are known, without importing it here every child building on the FULL
174
+ * variant fails with PARENT_PAYLOAD_UNKNOWN and range sync never progresses. If our head already descends from the
175
+ * block's EMPTY variant the chain did not build on the payload, importing it would only add a dead FULL leaf. As for
176
+ * orphaned payloads in a segment this only applies while the block attestations are not imported, a recent payload
177
+ * is imported anyway so a reorg building on it does not have to fetch it through unknown block sync.
178
+ */
179
+ async function importPayloadEnvelopesOfKnownBlocks(payloadEnvelopes, opts) {
180
+ if (payloadEnvelopes === null) {
181
+ return { orphaned: [], skipped: false };
182
+ }
183
+ const head = this.forkChoice.getHead();
184
+ const currentEpoch = this.clock.currentEpoch;
185
+ const payloadInputs = [];
186
+ const orphaned = [];
187
+ for (const payloadInput of payloadEnvelopes.values()) {
188
+ const { blockRootHex, slot } = payloadInput;
189
+ if (!payloadInput.hasPayloadEnvelope() ||
190
+ !this.forkChoice.hasBlockHex(blockRootHex) ||
191
+ this.forkChoice.getBlockHexAndBlockHash(blockRootHex, payloadInput.getBlockHashHex()) !== null) {
192
+ continue;
193
+ }
194
+ if (head.blockRoot !== blockRootHex &&
195
+ !importsBlockAttestations(opts, computeEpochAtSlot(slot), currentEpoch) &&
196
+ this.forkChoice.isDescendant(blockRootHex, PayloadStatus.EMPTY, head.blockRoot, head.payloadStatus)) {
197
+ // never validated, see processBlocks()
198
+ this.seenPayloadEnvelopeInputCache.prune(blockRootHex);
199
+ orphaned.push({ slot, payloadEnvelopeInput: payloadInput });
200
+ continue;
201
+ }
202
+ payloadInputs.push(payloadInput);
203
+ }
204
+ // orphaned envelopes on this path are always skipped, range sync logs them with peer/client context
205
+ const result = { orphaned, skipped: orphaned.length > 0 };
206
+ if (payloadInputs.length === 0) {
207
+ return result;
208
+ }
209
+ const { dataAvailabilityStatuses } = await verifyPayloadsDataAvailability(payloadInputs, new AbortController().signal);
210
+ for (let i = 0; i < payloadInputs.length; i++) {
211
+ this.logger.debug("Importing payload envelope of known block", {
212
+ slot: payloadInputs[i].slot,
213
+ blockRoot: payloadInputs[i].blockRootHex,
214
+ });
215
+ await importExecutionPayload.call(this, payloadInputs[i], dataAvailabilityStatuses[i], { validSignature: false });
216
+ }
217
+ // the new FULL variants are not seen by the head cached from the last block import
218
+ this.recomputeForkChoiceHead(ForkchoiceCaller.importBlock);
219
+ return result;
220
+ }
156
221
  function getBlockOrPayloadError(e, block) {
157
222
  if (e instanceof BlockError) {
158
223
  return e;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chain/blocks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chain/blocks/index.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { BlockExecutionStatus, PayloadExecutionStatus } from "@lodestar/for
3
3
  import { DataAvailabilityStatus, IBeaconStateView } from "@lodestar/state-transition";
4
4
  import type { IndexedAttestation, Slot, fulu } from "@lodestar/types";
5
5
  import { IBlockInput } from "./blockInput/types.js";
6
+ import { OrphanedPayloadEnvelope } from "./utils/chainSegment.js";
6
7
  export declare enum GossipedInputType {
7
8
  block = "block",
8
9
  blob = "blob",
@@ -95,5 +96,12 @@ export type FullyVerifiedBlock = {
95
96
  /** If the execution payload couldn't be verified because of EL syncing status, used in optimistic sync */
96
97
  executionStatus: BlockExecutionStatus | PayloadExecutionStatus;
97
98
  };
99
+ /**
100
+ * Result of processing a chain segment.
101
+ */
102
+ export type ProcessBlocksResult = {
103
+ orphaned: OrphanedPayloadEnvelope[];
104
+ skipped: boolean;
105
+ };
98
106
  export {};
99
107
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAC,oBAAoB,EAAE,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAExF,OAAO,EAAC,sBAAsB,EAAE,gBAAgB,EAAqB,MAAM,4BAA4B,CAAC;AACxG,OAAO,KAAK,EAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAElD,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,UAAU,gBAAgB;CAC3B;AAED,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC;IACnC,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE9D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAMrG;AAED,oBAAY,oBAAoB;IAC9B,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,oBAAY,qBAAqB;IAC/B,gFAAgF;IAChF,UAAU,IAAA;IACV;;;;OAIG;IACH,IAAI,IAAA;CACL;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAC1C;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,WAAW,CAAC;IACxB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,eAAe,EAAE,IAAI,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,4FAA4F;IAC5F,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,0GAA0G;IAC1G,eAAe,EAAE,oBAAoB,GAAG,sBAAsB,CAAC;CAChE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAC,oBAAoB,EAAE,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAExF,OAAO,EAAC,sBAAsB,EAAE,gBAAgB,EAAqB,MAAM,4BAA4B,CAAC;AACxG,OAAO,KAAK,EAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,uBAAuB,EAAC,MAAM,yBAAyB,CAAC;AAEhE,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,UAAU,gBAAgB;CAC3B;AAED,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC;IACnC,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE9D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAMrG;AAED,oBAAY,oBAAoB;IAC9B,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,oBAAY,qBAAqB;IAC/B,gFAAgF;IAChF,UAAU,IAAA;IACV;;;;OAIG;IACH,IAAI,IAAA;CACL;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAC1C;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,WAAW,CAAC;IACxB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,eAAe,EAAE,IAAI,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,4FAA4F;IAC5F,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,0GAA0G;IAC1G,eAAe,EAAE,oBAAoB,GAAG,sBAAsB,CAAC;CAChE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/chain/blocks/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAA2C,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAIxG,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,oCAAe,CAAA;IACf,kCAAa,CAAA;IACb,+CAA0B,CAAA;AAC5B,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAQD,MAAM,UAAU,kBAAkB,CAAC,MAAuB,EAAE,SAAe,EAAE,SAAe;IAC1F,OAAO,CACL,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,KAAK;QAC7C,+CAA+C;QAC/C,kBAAkB,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,qCAAqC,CAC9G,CAAC;AACJ,CAAC;AAED,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,+DAAI,CAAA;IACJ,iEAAK,CAAA;AACP,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B;AAED,MAAM,CAAN,IAAY,qBASX;AATD,WAAY,qBAAqB;IAC/B,gFAAgF;IAChF,6EAAU,CAAA;IACV;;;;OAIG;IACH,iEAAI,CAAA;AACN,CAAC,EATW,qBAAqB,KAArB,qBAAqB,QAShC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/chain/blocks/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAA2C,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAKxG,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,oCAAe,CAAA;IACf,kCAAa,CAAA;IACb,+CAA0B,CAAA;AAC5B,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAQD,MAAM,UAAU,kBAAkB,CAAC,MAAuB,EAAE,SAAe,EAAE,SAAe;IAC1F,OAAO,CACL,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,KAAK;QAC7C,+CAA+C;QAC/C,kBAAkB,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,qCAAqC,CAC9G,CAAC;AACJ,CAAC;AAED,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,+DAAI,CAAA;IACJ,iEAAK,CAAA;AACP,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B;AAED,MAAM,CAAN,IAAY,qBASX;AATD,WAAY,qBAAqB;IAC/B,gFAAgF;IAChF,6EAAU,CAAA;IACV;;;;OAIG;IACH,iEAAI,CAAA;AACN,CAAC,EATW,qBAAqB,KAArB,qBAAqB,QAShC"}
@@ -19,7 +19,7 @@ export type ChainSegmentResult = {
19
19
  * - Verifies parent root + slot linearity
20
20
  * - For gloas: verifies bid.parentBlockHash matches the tracked execution hash; if not, the
21
21
  * previous FULL envelope is treated as orphaned (segment continues as if previous slot was EMPTY)
22
- * - If an envelope exists for this slot: verifies it references this block's root
22
+ * - If an envelope exists for this slot (or the parent's slot): verifies it references this block's root
23
23
  * - Advances the tracked execution hash (FULL if envelope present, EMPTY if not)
24
24
  */
25
25
  export declare function assertLinearChainSegment(config: ChainForkConfig, blocks: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null, parentBlock: ProtoBlock | null): ChainSegmentResult;
@@ -1 +1 @@
1
- {"version":3,"file":"chainSegment.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/utils/chainSegment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,IAAI,EAA0B,MAAM,iBAAiB,CAAC;AAG9D,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,oBAAoB,EAAC,MAAM,iDAAiD,CAAC;AAErF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,IAAI,CAAC;IACX,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAAC,QAAQ,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAA;CAAC,CAAC;AAE9E;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,WAAW,EAAE,EACrB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EACxD,WAAW,EAAE,UAAU,GAAG,IAAI,GAC7B,kBAAkB,CAkHpB"}
1
+ {"version":3,"file":"chainSegment.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/utils/chainSegment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,IAAI,EAA0B,MAAM,iBAAiB,CAAC;AAG9D,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,oBAAoB,EAAC,MAAM,iDAAiD,CAAC;AAErF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,IAAI,CAAC;IACX,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAAC,QAAQ,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAA;CAAC,CAAC;AAE9E;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,WAAW,EAAE,EACrB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EACxD,WAAW,EAAE,UAAU,GAAG,IAAI,GAC7B,kBAAkB,CAgIpB"}
@@ -10,7 +10,7 @@ import { BlockError, BlockErrorCode } from "../../errors/index.js";
10
10
  * - Verifies parent root + slot linearity
11
11
  * - For gloas: verifies bid.parentBlockHash matches the tracked execution hash; if not, the
12
12
  * previous FULL envelope is treated as orphaned (segment continues as if previous slot was EMPTY)
13
- * - If an envelope exists for this slot: verifies it references this block's root
13
+ * - If an envelope exists for this slot (or the parent's slot): verifies it references this block's root
14
14
  * - Advances the tracked execution hash (FULL if envelope present, EMPTY if not)
15
15
  */
16
16
  export function assertLinearChainSegment(config, blocks, payloadEnvelopes, parentBlock) {
@@ -18,22 +18,37 @@ export function assertLinearChainSegment(config, blocks, payloadEnvelopes, paren
18
18
  return { warnings: null };
19
19
  }
20
20
  const warnings = [];
21
- let parentExecHash = parentBlock?.executionPayloadBlockHash ?? null;
22
- if (parentBlock !== null) {
23
- const parentPayloadInput = payloadEnvelopes?.get(parentBlock.slot);
24
- if (parentPayloadInput?.hasPayloadEnvelope()) {
25
- // Checkpoint-sync first batch: the anchor is stored PENDING with the inherited (grandparent)
26
- // hash, not its own payload. Its payload envelope is in this batch, so use that blockHash as
27
- // the real parent EL head.
28
- parentExecHash = parentPayloadInput.getBlockHashHex();
29
- }
30
- }
31
21
  // Track the expected execution payload block hash through the segment, seeded from the FIRST
32
22
  // block's own bid
33
23
  const firstBlockMessage = blocks[0].getBlock().message;
34
24
  let currentExecHash = isGloasBeaconBlock(firstBlockMessage)
35
25
  ? toRootHex(firstBlockMessage.body.signedExecutionPayloadBid.message.parentBlockHash)
36
26
  : null;
27
+ let parentExecHash = parentBlock?.executionPayloadBlockHash ?? null;
28
+ if (parentBlock !== null) {
29
+ const parentPayloadInput = payloadEnvelopes?.get(parentBlock.slot);
30
+ if (parentPayloadInput?.hasPayloadEnvelope()) {
31
+ // Envelopes are served by slot, the one at the parent's slot must reference the parent block. Without this
32
+ // check an envelope of a sibling block is taken as orphaned and only fails downstream in the payload import
33
+ if (parentPayloadInput.blockRootHex !== parentBlock.blockRoot) {
34
+ throw new BlockError(blocks[0].getBlock(), {
35
+ code: BlockErrorCode.ENVELOPE_BLOCK_ROOT_MISMATCH,
36
+ envelopeBlockRoot: parentPayloadInput.blockRootHex,
37
+ blockRoot: parentBlock.blockRoot,
38
+ });
39
+ }
40
+ const parentPayloadBlockHash = parentPayloadInput.getBlockHashHex();
41
+ if (currentExecHash === parentPayloadBlockHash) {
42
+ // Checkpoint-sync first batch: the anchor is stored PENDING with the inherited (grandparent)
43
+ // hash, its own payload is in this batch and is the real parent EL head
44
+ parentExecHash = parentPayloadBlockHash;
45
+ }
46
+ else {
47
+ // First block builds on the parent's EMPTY variant, the parent's payload in this batch is orphaned
48
+ warnings.push({ slot: parentBlock.slot, payloadEnvelopeInput: parentPayloadInput });
49
+ }
50
+ }
51
+ }
37
52
  // First block must build on the parent's EL head. PARENT_PAYLOAD_UNKNOWN (vs the in-segment
38
53
  // NON_LINEAR_PAYLOAD_ROOTS below) tells range sync this is a parent-link problem, not an in-batch one.
39
54
  if (parentExecHash !== null && currentExecHash !== null && currentExecHash !== parentExecHash) {
@@ -1 +1 @@
1
- {"version":3,"file":"chainSegment.js","sourceRoot":"","sources":["../../../../src/chain/blocks/utils/chainSegment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chainSegment.js","sourceRoot":"","sources":["../../../../src/chain/blocks/utils/chainSegment.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ import { BeaconProposerCache } from "./beaconProposerCache.js";
22
22
  import { IBlockInput } from "./blocks/blockInput/index.js";
23
23
  import { BlockProcessor, ImportBlockOpts } from "./blocks/index.js";
24
24
  import { PayloadEnvelopeProcessor } from "./blocks/payloadEnvelopeProcessor.js";
25
- import { ImportPayloadOpts } from "./blocks/types.js";
25
+ import { ImportPayloadOpts, ProcessBlocksResult } from "./blocks/types.js";
26
26
  import { IBlsVerifier } from "./bls/index.js";
27
27
  import { BuilderCircuitBreaker } from "./builderCircuitBreaker.js";
28
28
  import { ColumnReconstructionTracker } from "./ColumnReconstructionTracker.js";
@@ -222,13 +222,18 @@ export declare class BeaconChain implements IBeaconChain {
222
222
  shouldOverrideBuilder?: boolean;
223
223
  }>;
224
224
  processBlock(block: IBlockInput, opts?: ImportBlockOpts): Promise<void>;
225
- processChainSegment(blocks: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null, opts?: ImportBlockOpts): Promise<void>;
225
+ processChainSegment(blocks: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null, opts?: ImportBlockOpts): Promise<ProcessBlocksResult>;
226
226
  processExecutionPayload(payloadInput: PayloadEnvelopeInput, opts?: ImportPayloadOpts): Promise<void>;
227
227
  processProposerEquivocation(blockSlot: Slot, proposerIndex: ValidatorIndex): void;
228
228
  /** Produce a proposer slashing from two conflicting signed block headers observed for the same slot and proposer */
229
229
  private produceProposerSlashing;
230
230
  getStatus(): Status;
231
231
  recomputeForkChoiceHead(caller: ForkchoiceCaller): ProtoBlock;
232
+ /**
233
+ * Emit `head` and `head_v2` when the fork choice head differs between two observations. Every caller that
234
+ * can move the head, `updateAndGetHead()` and `updateTime()`, must capture the head before and pass both.
235
+ */
236
+ private emitHeadEvents;
232
237
  predictProposerHead(): ProtoBlock;
233
238
  getProposerHead(slot: Slot): ProtoBlock;
234
239
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain/chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain/chain.ts"],"names":[],"mappings":"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"}
@@ -824,10 +824,10 @@ export class BeaconChain {
824
824
  return { block, executionPayloadValue, consensusBlockValue: gweiToWei(proposerReward), shouldOverrideBuilder };
825
825
  }
826
826
  async processBlock(block, opts) {
827
- return this.blockProcessor.processBlocksJob([block], null, opts);
827
+ await this.blockProcessor.processBlocksJob([block], null, opts);
828
828
  }
829
829
  async processChainSegment(blocks, payloadEnvelopes, opts) {
830
- await this.blockProcessor.processBlocksJob(blocks, payloadEnvelopes, opts);
830
+ return this.blockProcessor.processBlocksJob(blocks, payloadEnvelopes, opts);
831
831
  }
832
832
  async processExecutionPayload(payloadInput, opts) {
833
833
  return this.payloadEnvelopeProcessor.processPayloadEnvelopeJob(payloadInput, opts);
@@ -914,44 +914,7 @@ export class BeaconChain {
914
914
  try {
915
915
  const prevHead = this.forkChoice.getHead();
916
916
  const head = this.forkChoice.updateAndGetHead({ mode: UpdateHeadOpt.GetCanonicalHead }).head;
917
- const headRootChanged = head.blockRoot !== prevHead.blockRoot;
918
- if (!headRootChanged && prevHead.payloadStatus === head.payloadStatus) {
919
- return head;
920
- }
921
- try {
922
- const previousDutyDependentRoot = this.forkChoice.getDependentRoot(head, EpochDifference.previous);
923
- const currentDutyDependentRoot = this.forkChoice.getDependentRoot(head, EpochDifference.current);
924
- const epochTransition = computeStartSlotAtEpoch(computeEpochAtSlot(head.slot)) === head.slot;
925
- const executionOptimistic = isOptimisticBlock(head);
926
- if (headRootChanged) {
927
- this.emitter.emit(routes.events.EventType.head, {
928
- block: head.blockRoot,
929
- epochTransition,
930
- slot: head.slot,
931
- state: head.stateRoot,
932
- previousDutyDependentRoot,
933
- currentDutyDependentRoot,
934
- executionOptimistic,
935
- });
936
- }
937
- this.emitter.emit(routes.events.EventType.headV2, {
938
- version: this.config.getForkName(head.slot),
939
- data: {
940
- slot: head.slot,
941
- block: head.blockRoot,
942
- state: head.stateRoot,
943
- payloadStatus: head.payloadStatus === PayloadStatus.FULL ? "full" : "empty",
944
- epochTransition,
945
- currentEpochDependentRoot: previousDutyDependentRoot,
946
- nextEpochDependentRoot: currentDutyDependentRoot,
947
- executionOptimistic,
948
- },
949
- });
950
- }
951
- catch (e) {
952
- // getDependentRoot() may fail with error: "No block for root" as we can see in holesky non-finality issue
953
- this.logger.debug("Error emitting head/head_v2 event", { slot: head.slot, root: head.blockRoot, headRootChanged }, e);
954
- }
917
+ this.emitHeadEvents(prevHead, head);
955
918
  return head;
956
919
  }
957
920
  catch (e) {
@@ -962,6 +925,50 @@ export class BeaconChain {
962
925
  timer?.();
963
926
  }
964
927
  }
928
+ /**
929
+ * Emit `head` and `head_v2` when the fork choice head differs between two observations. Every caller that
930
+ * can move the head, `updateAndGetHead()` and `updateTime()`, must capture the head before and pass both.
931
+ */
932
+ emitHeadEvents(prevHead, head) {
933
+ const headRootChanged = head.blockRoot !== prevHead.blockRoot;
934
+ if (!headRootChanged && prevHead.payloadStatus === head.payloadStatus) {
935
+ return;
936
+ }
937
+ try {
938
+ const previousDutyDependentRoot = this.forkChoice.getDependentRoot(head, EpochDifference.previous);
939
+ const currentDutyDependentRoot = this.forkChoice.getDependentRoot(head, EpochDifference.current);
940
+ const epochTransition = computeStartSlotAtEpoch(computeEpochAtSlot(head.slot)) === head.slot;
941
+ const executionOptimistic = isOptimisticBlock(head);
942
+ if (headRootChanged) {
943
+ this.emitter.emit(routes.events.EventType.head, {
944
+ block: head.blockRoot,
945
+ epochTransition,
946
+ slot: head.slot,
947
+ state: head.stateRoot,
948
+ previousDutyDependentRoot,
949
+ currentDutyDependentRoot,
950
+ executionOptimistic,
951
+ });
952
+ }
953
+ this.emitter.emit(routes.events.EventType.headV2, {
954
+ version: this.config.getForkName(head.slot),
955
+ data: {
956
+ slot: head.slot,
957
+ block: head.blockRoot,
958
+ state: head.stateRoot,
959
+ payloadStatus: head.payloadStatus === PayloadStatus.FULL ? "full" : "empty",
960
+ epochTransition,
961
+ currentEpochDependentRoot: previousDutyDependentRoot,
962
+ nextEpochDependentRoot: currentDutyDependentRoot,
963
+ executionOptimistic,
964
+ },
965
+ });
966
+ }
967
+ catch (e) {
968
+ // getDependentRoot() may fail with error: "No block for root" as we can see in holesky non-finality issue
969
+ this.logger.debug("Error emitting head/head_v2 event", { slot: head.slot, root: head.blockRoot, headRootChanged }, e);
970
+ }
971
+ }
965
972
  predictProposerHead() {
966
973
  this.metrics?.forkChoice.requests.inc();
967
974
  const timer = this.metrics?.forkChoice.findHead.startTimer({ caller: FindHeadFnName.predictProposerHead });
@@ -1193,7 +1200,10 @@ export class BeaconChain {
1193
1200
  if (this.forkChoice.irrecoverableError) {
1194
1201
  this.processShutdownCallback(this.forkChoice.irrecoverableError);
1195
1202
  }
1203
+ // updateTime() recomputes the head on epoch-boundary checkpoint pull-up and under fast confirmation
1204
+ const prevHead = this.forkChoice.getHead();
1196
1205
  this.forkChoice.updateTime(slot);
1206
+ this.emitHeadEvents(prevHead, this.forkChoice.getHead());
1197
1207
  this.metrics?.clockSlot.set(slot);
1198
1208
  this.attestationPool.prune(slot);
1199
1209
  this.aggregatedAttestationPool.prune(slot);
@@ -1243,6 +1253,25 @@ export class BeaconChain {
1243
1253
  }
1244
1254
  async onForkChoiceFinalized(cp) {
1245
1255
  this.logger.verbose("Fork choice finalized", { epoch: cp.epoch, root: cp.rootHex });
1256
+ this.metrics?.finalizedEpoch.set(cp.epoch);
1257
+ const finalizedBlock = this.forkChoice.getBlockHexDefaultStatus(cp.rootHex);
1258
+ if (finalizedBlock) {
1259
+ // The callback runs synchronously inside fork choice checkpoint updates, defer writing to subscribers
1260
+ callInNextEventLoop(() => {
1261
+ this.emitter.emit(routes.events.EventType.finalizedCheckpoint, {
1262
+ block: cp.rootHex,
1263
+ epoch: cp.epoch,
1264
+ state: finalizedBlock.stateRoot,
1265
+ executionOptimistic: isOptimisticBlock(finalizedBlock),
1266
+ });
1267
+ });
1268
+ }
1269
+ else {
1270
+ this.logger.debug("Finalized block not found in fork choice, skip finalized_checkpoint event", {
1271
+ epoch: cp.epoch,
1272
+ root: cp.rootHex,
1273
+ });
1274
+ }
1246
1275
  const finalizedSlot = computeStartSlotAtEpoch(cp.epoch);
1247
1276
  this.seenBlockProposers.prune(finalizedSlot);
1248
1277
  // Update validator custody to account for effective balance changes