Skip to content

Allow zero safeBlockHash and finalizedBlockHash after finalization#760

Open
dapplion wants to merge 1 commit intoethereum:mainfrom
dapplion:allow-zero-forkchoice-hashes
Open

Allow zero safeBlockHash and finalizedBlockHash after finalization#760
dapplion wants to merge 1 commit intoethereum:mainfrom
dapplion:allow-zero-forkchoice-hashes

Conversation

@dapplion
Copy link
Member

@dapplion dapplion commented Feb 26, 2026

Summary

  • Remove the restriction that safeBlockHash and finalizedBlockHash must be non-zero once the transition block is finalized
  • When set to zero, the EL defaults to the latest known value (or genesis)
  • The -38002 invalid forkchoice state check now only applies to non-zero hashes

Motivation

During extended non-finality periods, a CL client checkpoint-syncing from a non-finalized state may not yet know the network's finalized or safe block hash. The current spec forces the CL to provide non-zero values post-merge, which is not always possible. This change lets the CL signal "unknown" by sending zeroes, with the EL falling back to its last known state.

The other options are:

  • The CL tells the EL "fake" safe and finalized hashes (the checkpoint root), breaking the meaning of those block tags in the first place
  • The CL tries to fetch the execution hashes of the finalized and justified checkpoints from its p2p or checkpointz server. Possible, (and we want to implement it) but this PR is still helpful. If checkpointz faults and can't provide the blocks for finalized and justified checkpoint the network can't sync, potentially killing liveness on a catastrophic event.

See also: sigp/lighthouse#8382

@dapplion dapplion force-pushed the allow-zero-forkchoice-hashes branch from c943ecb to 7736063 Compare February 26, 2026 21:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant