Skip to content

fix use updated finalized_slot for justifiability#443

Merged
tcoratger merged 5 commits intoleanEthereum:mainfrom
bomanaps:fix/use-updated-finalized-slot-for-justifiability
Mar 10, 2026
Merged

fix use updated finalized_slot for justifiability#443
tcoratger merged 5 commits intoleanEthereum:mainfrom
bomanaps:fix/use-updated-finalized-slot-for-justifiability

Conversation

@bomanaps
Copy link
Contributor

🗒️ Description

The justifiability checks were using self.latest_finalized.slot which remains immutable during attestation processing, causing different finalization behavior when votes are packed in one block versus spread across multiple blocks, this fix changes lines 489 and 543 to use the mutable finalized_slot variable that gets updated when finalization advances mid-loop, this aligns with the original 3sf-mini spec behavior at https://github.com/ethereum/research/blob/master/3sf-mini/consensus.py where state.latest_finalized_slot is updated and immediately visible to subsequent votes in the same block.

🔗 Related Issues or PRs

✅ Checklist

  • Ran tox checks to avoid unnecessary CI fails:
    uvx tox
  • Considered adding appropriate tests for the changes.
  • Considered updating the online docs in the ./docs/ directory.

@tcoratger
Copy link
Collaborator

@bomanaps To avoid this behaviour to happen again, could we have a simple unit test or even better a test vector to flag this behaviour? Meaning a test that didn't pass before and that passes now.

@bomanaps
Copy link
Contributor Author

@bomanaps To avoid this behaviour to happen again, could we have a simple unit test or even better a test vector to flag this behaviour? Meaning a test that didn't pass before and that passes now.

Added the test vector

@tcoratger tcoratger merged commit 51e7779 into leanEthereum:main Mar 10, 2026
12 checks passed
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.

2 participants