Skip to content

Limit should_build_on_full checks to the previous slot - #5309

Merged
jtraglia merged 4 commits into
ethereum:masterfrom
nflaig:should-build-on-full-slot-guard
Jun 1, 2026
Merged

Limit should_build_on_full checks to the previous slot#5309
jtraglia merged 4 commits into
ethereum:masterfrom
nflaig:should-build-on-full-slot-guard

Conversation

@nflaig

@nflaig nflaig commented May 29, 2026

Copy link
Copy Markdown
Member

should_build_on_full runs the data availability check against the proposer's head regardless of the head's slot, unlike get_payload_status_tiebreaker which only decides between the empty and full variant for a block from the previous slot.

For a head from an earlier slot the variant has already been resolved by weight in get_head, so re-running the (by then stale) data availability vote can force the proposer onto the empty variant, reorging a full head the network has already accepted by weight. In such a case, the proposer won't even accept its own block as head.

Closes #5307

@github-actions github-actions Bot added the gloas label May 29, 2026
@nflaig nflaig changed the title Limit data availability check to previous slot Limit should_build_on_full data availability check to previous slot May 29, 2026
@nflaig nflaig changed the title Limit should_build_on_full data availability check to previous slot Limit should_build_on_full checks to the previous slot May 29, 2026

@potuz potuz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, thanks!

I'll let others weigh in on verbosity of the comments (I tend to like less comments and just let the code speak)

@nflaig

nflaig commented May 29, 2026

Copy link
Copy Markdown
Member Author

I'll let others weigh in on verbosity of the comments (I tend to like less comments and just let the code speak)

we can remove any comments, no strong opinion from my side

@jtraglia jtraglia left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, and I like the extra comment. I think we should keep it.

@jtraglia

Copy link
Copy Markdown
Member

Let's only merge this after other clients have time to review/approve.

@eserilev eserilev left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm!

wemeetagain pushed a commit to ChainSafe/lodestar that referenced this pull request May 31, 2026

@michaelsproul michaelsproul left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, I think this change is also compatible with the changes I had in mind for fixing the get_proposer_head spec, see comment thread starting from:

@twoeths twoeths left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this resolves #5307

@jtraglia
jtraglia merged commit a1fa555 into ethereum:master Jun 1, 2026
15 checks passed
nflaig added a commit to potuz/consensus-specs that referenced this pull request Jun 1, 2026
mergify Bot pushed a commit to sigp/lighthouse that referenced this pull request Jun 15, 2026
Changes implemented

Ensure bids are for a higher slot than their parent (ethereum/consensus-specs#5302)
Ignore PTC attestations for empty assigned slots (ethereum/consensus-specs#5281)
Limit should_build_on_full checks to the previous slot (ethereum/consensus-specs#5309)
Apply proposer boost if dependent roots match (ethereum/consensus-specs#5306)
Exclude slashed validators from proposing (EIP-8045) (ethereum/consensus-specs#5115)
Force the proposer to reorg late payloads (ethereum/consensus-specs#5210)
Remove support for old deposit mechanism in Fulu (ethereum/consensus-specs#4704)


  


Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>

Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>

Co-Authored-By: Eitan Seri-Levi <eserilev@gmail.com>

Co-Authored-By: Michael Sproul <michael@sigmaprime.io>

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Proposer builds an orphaned block due to conflict between get_head() and should_build_on_full()

8 participants