Admission
A candidate becomes an execution peer only after RLPx authentication, Hello
negotiation, and a compatible eth Status.
A client rejects self-connections, duplicate node identities, failed authentication, a missing capability required by its task, and incompatible chain status.
Connection maintenance
p2p Ping and Pong check that an idle RLPx session remains responsive. A
ping timeout is a defined disconnect reason.
Clients keep local limits for inbound peers, outbound peers, and trusted static peers. The wire specification does not set those counts.
Reputation
The wire specifications leave peer scoring to implementations. A client may lower local reputation when a peer repeats false announcements, violates request semantics, or sends malformed protocol data. Invalid transactions are normally discarded without disconnecting because peers can use different pool policies.
Availability is not validity. One missing response can result from pruning, rate limits, a reorg, or network loss. Clients use repeated behavior and the peer's advertised serving range before they apply a lasting penalty.
Disconnect policy
RLPx defines reasons for protocol breach, useless peers, capacity, duplicate connections, incompatible versions, invalid identity, shutdown, self-connect, and ping timeout.
A peer that receives Disconnect closes the session. The sender can wait
briefly before it closes TCP so the peer can process the reason.
Preserved boundaries
- Discovery records supply candidates, not admission.
- RLPx proves node identity, not chain identity.
ethStatusproves initial compatibility, not later correctness.- Local scoring changes peer choice, not protocol validity.
Design rationale
Separate checks stop one weak signal from becoming a permanent peer judgment. They also let clients tune resource policy without changing the shared wire protocol.
History
Execution clients have always kept local peer limits and reputation. Later
eth versions added fork and history-range signals that improve peer choice.