Skip to content

sync: cap pending Gloas column sidecars per peer - #16777

Open
satushh wants to merge 6 commits into
developfrom
per-peer-cap-pending-gloas-columns
Open

sync: cap pending Gloas column sidecars per peer#16777
satushh wants to merge 6 commits into
developfrom
per-peer-cap-pending-gloas-columns

Conversation

@satushh

@satushh satushh commented May 12, 2026

Copy link
Copy Markdown
Member

What type of PR is this?

feature

What does this PR do? Why is it needed?

Implements ethereum/consensus-specs#5199 (Gloas data column sidecar queueing).

When a Gloas data column sidecar arrives over gossip before its beacon block has been seen, it's queued for deferred validation. Today in develop, that queue admits sidecars on first-come-first-served basis and stores only one per (root, index), which means a single peer can occupy every queue slot and a malicious peer's invalid sidecar can hide behind another peer's good one.

Changes

  1. Per-peer queue caps to prevent any single peer from monopolizing queue space:
    - maxPendingGloasColumnsPerPeer = 128 (total queued columns per peer).
    - maxPendingGloasRootsPerPeer = 2 distinct block roots per peer (could be increased if it is too strict).
    - Counters tracked on Service (pendingGloasPeerColumnCounts, pendingGloasPeerRootCounts) and released on flush/prune.
  2. Multi-peer sidecar retention. pendingColumnEntry.sidecar/peer → pendingColumnEntry.sidecars map[peer.ID]*DataColumnSidecarGloas. The queue now retains every (peer, sidecar) pair received for a (root, index), deduplicated per peer.
  3. Per-peer attribution on deferred validation. Every peer that forwarded a sidecar for an unseen-block (root, index) is retained, so when the block arrives and verification runs, each peer's offering is verified individually and bad peers can be downscored by ID.

Acknowledgements

  • I have read CONTRIBUTING.md.
  • I have included a uniquely named changelog fragment file.
  • I have added a description with sufficient context for reviewers to understand this PR.
  • I have tested that my changes work as expected and I added a testing plan to the PR description (if applicable).

@satushh satushh added the gloas label May 12, 2026
@github-project-automation github-project-automation Bot moved this to Unassigned in Gloas May 12, 2026
@satushh
satushh marked this pull request as ready for review May 14, 2026 12:27
@satushh satushh changed the title [WIP] sync: cap pending Gloas column sidecars per peer (spec 5199) sync: cap pending Gloas column sidecars per peer (spec 5199) May 14, 2026
@satushh satushh changed the title sync: cap pending Gloas column sidecars per peer (spec 5199) sync: cap pending Gloas column sidecars per peer May 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Unassigned

Development

Successfully merging this pull request may close these issues.

1 participant