AFAICT, as of commit a0a422c, we have 2 different logics to evict outbound peers : lagging-chain (ConsiderEviction
) and (CheckForStaleTipAndEvictPeers
). The former to sanitize out lazy/buggy peers who have never sent us a valid header and are always staying behind our tip, the latter triggered in case of stale tip due to block variance to seek a better chain by rotating our outbound peers if we already reach an outbound limit (EvictExtraOutboundPeers
).
Block-relay-only peers were introduced by #15719. Contrary to outbound full-relay peers who provided us at least a useful header, they’re not protected by lagging-chain eviction.
We actually have a comment inside ProcessHeadersMessage
indicating the contrary behavior. We should either document cleanly that block-relay-only aren’t protected or effectively extend the scope of protection to them.
Hinted during #19724 review, see #19724 (review)