Skip to content

Exclude slashed validators from proposing (EIP-8045) - #5115

Merged
jtraglia merged 6 commits into
ethereum:masterfrom
barnabasbusa:eip-8045-exclude-slashed-from-duties
Jun 1, 2026
Merged

Exclude slashed validators from proposing (EIP-8045)#5115
jtraglia merged 6 commits into
ethereum:masterfrom
barnabasbusa:eip-8045-exclude-slashed-from-duties

Conversation

@barnabasbusa

@barnabasbusa barnabasbusa commented Apr 16, 2026

Copy link
Copy Markdown
Member

Currently, slashed validators can still be selected as proposers, though their blocks are considered invalid by the state transition function, resulting in missed slots. This is in particular problematic after a mass slashing event, at which point there can be a long period with degraded chain performance, until all slashed validators are exited. If mass slashing also comes with general network disruption, the missed slots can also significantly complicate the recovery process. This change filters out slashed validators during proposer selection in get_beacon_proposer_indices, reducing disruption and increasing resilience in such scenarios.

@github-actions github-actions Bot added gloas testing CI, actions, tests, testing infra labels Apr 16, 2026
@barnabasbusa
barnabasbusa marked this pull request as ready for review April 16, 2026 12:52
@barnabasbusa barnabasbusa changed the title Gloas: exclude slashed validators from all duties (EIP-8045) add 8045 exclude slashed validators from all duties Apr 16, 2026
@jtraglia jtraglia changed the title add 8045 exclude slashed validators from all duties Exclude slashed validators from all duties (EIP-8045) Apr 16, 2026
Comment thread specs/gloas/beacon-chain.md Outdated
Comment thread specs/gloas/beacon-chain.md Outdated
Filter slashed validators out of the candidate pool upfront in
get_beacon_proposer_indices, before invoking compute_proposer_indices,
so the EIP-7917 proposer_lookahead only contains active and unslashed
indices.

EIP-8045 is scoped to proposer selection only; no other duties are
modified.
proposer_lookahead (epoch_processing):
- slashed validators do not appear in the newly appended lookahead
  epoch after process_proposer_lookahead
- a full SLOTS_PER_EPOCH worth of proposers is still produced when
  the bulk of active validators are slashed
@barnabasbusa
barnabasbusa force-pushed the eip-8045-exclude-slashed-from-duties branch from b770e35 to 1d76603 Compare May 29, 2026 14:43
@barnabasbusa barnabasbusa changed the title Exclude slashed validators from all duties (EIP-8045) Exclude slashed validators from proposing (EIP-8045) 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.

At the fork, the function upgrade_to_gloas is called after performing epoch transition. The epoch transition will call get_beacon_proposer_indices for the second half of the lookahead, which will not include the slashed validators. But the first half will include them as it was computed two epochs ago on Fulu.

I can't stress enough how much we need to test this situation:.

  • Pre fork there are no slashed validators.
  • Pre fork there are slashed validators in both epochs in the lookahead
  • Pre fork there are slashed validators and some slashed validators would be included in the second half without this change.

@jtraglia

jtraglia commented Jun 1, 2026

Copy link
Copy Markdown
Member

At ACDT today, we agreed to include this EIP in the specs for glamsterdam-devnet-5. I'm going to merge this PR so we can make the release. I'm pretty confident that the changes here are good.

  • Pre fork there are no slashed validators.
  • Pre fork there are slashed validators in both epochs in the lookahead
  • Pre fork there are slashed validators and some slashed validators would be included in the second half without this change.

Added tests for the latter two. I don't think the first one is that useful, but if others disagree we can always add it later.

@jtraglia
jtraglia merged commit af6e128 into ethereum:master Jun 1, 2026
28 checks passed
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

gloas testing CI, actions, tests, testing infra

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants