Skip to main content
netspecsEthereum networking

3.6.2.Peering and scoring

Stage
Current
Version
Sources
2 pinned sources

A consensus node keeps enough peers for global topics and each subnet required by local duties. Discovery supplies candidates; the connection manager chooses inbound and outbound peers while preserving fork compatibility, subnet coverage, address diversity, and local resource limits.

Gossipsub parameters

The consensus profile uses /meshsub/1.1.0 with stable mesh target D = 8, D_low = 6, D_high = 12, and lazy gossip target D_lazy = 6. Heartbeats run every 0.7 seconds. The message cache keeps six windows and gossips three; the fanout lifetime is 60 seconds. The seen-message lifetime is SLOT_DURATION_MS * SLOTS_PER_EPOCH * 2 / 1000 seconds. These values shape the mesh and do not replace an implementation's local connection budget.

Score inputs and outcomes

Application validators return ACCEPT, IGNORE, or REJECT. A valid first delivery and useful mesh delivery contribute to the local topic score. Invalid SSZ, bad signatures, wrong subnets, malformed Snappy, and size violations are negative application behavior. Slow delivery, IP concentration, and repeated request or stream faults also inform local scoring. The consensus specification does not prescribe one numeric aggregate score or a single disconnect threshold.

An ignored duplicate or a message that arrives before its parent is known is not an invalid message and should not incur an invalid-delivery penalty. A rejected message may be downscored, pruned, or disconnected according to local policy. Optional queues MUST have finite bounds.

Data-availability peers

The data-availability profile uses 128 data-column subnets and deterministic custody groups. A node uses cgc and metadata to select peers that should serve the columns it must sample. It confirms the claim with column requests. A peer that fails samples for a group it advertises may be downscored or disconnected. A node connected to validators with combined balance at least 4,096 ETH must act as a supernode in the Fulu specification. A supernode subscribes to all data-column subnets and custodies all columns, so its connection and storage budget must reflect that role.

Resource control

Implementations cap total and per-peer connections, concurrent streams, open requests, queued messages, decompression work, and response rate. Req/Resp allows at most two concurrent requests per protocol ID. Exceeding a declared length or global payload bound is a stream fault; the requester may reset the stream and reduce the peer's local score.

Failure boundaries

Retry a missing block, sidecar, or sample with another peer when the request is valid but the resource is unavailable. Use 3: ResourceUnavailable for a defined serving-window miss. Prune or disconnect for repeated invalid payloads, framing violations, rate abuse, or an advertised custody service that fails validated samples. Keep these decisions local; an ENR bit or score does not become a portable protocol fact.

Scope and status

This page defines mesh parameters, application scoring outcomes, and resource controls. Exact custody derivation and serving windows live on data availability custody.