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.