Reject inclusion lists containing an empty transaction - #11192
Merged
mehdi-aouadi merged 2 commits intoAug 31, 2026
Merged
Conversation
barnabasbusa
force-pushed
the
fix/heze-il-serialized-size
branch
2 times, most recently
from
August 28, 2026 13:34
41a4903 to
f05d934
Compare
consensus-specs#5576 keeps the raw transaction byte bound for inclusion lists and derives the gossip message bound from it as the size of a list of one-byte transactions; that derivation requires every transaction to be non-empty, so gossip validation rejects empty ones. Claude-Session: https://claude.ai/code/session_01YHCg1Q6QaZn8rPjB7za3UB
barnabasbusa
force-pushed
the
fix/heze-il-serialized-size
branch
from
August 28, 2026 14:11
f05d934 to
9f6c3e0
Compare
mehdi-aouadi
left a comment
Contributor
There was a problem hiding this comment.
Could you please add this check too: https://github.com/ethereum/consensus-specs/pull/5576/changes#diff-2bd43b6a1876bf339bd0464c2ee6557f41c72eca7e57b8383aeeab962cd8b9ecR276
It must be performed in ForkChoice::onInclusionList
2 tasks
mehdi-aouadi
merged commit Aug 31, 2026
2090f4b
into
Consensys:focil-devnet-0
73 of 75 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Description
Follow-up for ethereum/consensus-specs#5576 (issue ethereum/consensus-specs#5575). The spec keeps the raw transaction byte bound (
MAX_TRANSACTIONS_BYTES_PER_INCLUSION_LIST) and derives theinclusion_listgossip message bound from it as the size of a list of one-byte transactions (MAX_SIGNED_INCLUSION_LIST_SIZE = 41112); that derivation is only finite if every transaction is non-empty, so the gossip rules gain[REJECT] every transaction in message.transactions is non-empty.This adds that check to
SignedInclusionListValidator(with a test). Teku has no topic-specific gossip size constant for inclusion lists, so nothing else changes. Lodestar counterpart: ChainSafe/lodestar#9936.Fixed Issue(s)
ethereum/consensus-specs#5575
Documentation
doc-change-requiredlabel to this PR if updates are required.Changelog
https://claude.ai/code/session_01YHCg1Q6QaZn8rPjB7za3UB
Note
Low Risk
Localized Heze inclusion-list validation with no auth or persistence changes; behavior is additive rejection of invalid gossip.
Overview
Implements the new consensus-specs gossip rule that every transaction in a Heze inclusion list must be non-empty, matching ethereum/consensus-specs#5576 (needed so derived
MAX_SIGNED_INCLUSION_LIST_SIZEstays well-defined).Gossip validation:
SignedInclusionListValidatornow **[REJECT]**s anySignedInclusionListwhosetransactionscontain a zero-byte entry.Fork-choice import:
ForkChoice.onInclusionListapplies the same rule before timeliness/store handling, returningInclusionListImportResultwithEMPTY_TRANSACTIONvia a newfailedEmptyTransaction()factory onInclusionListImportResult.Unit tests cover both the validator reject path and fork-choice import (list is not stored).
Reviewed by Cursor Bugbot for commit b496ce0. Bugbot is set up for automated code reviews on this repo. Configure here.