The pinned Lean repository contains a working future network profile. It is not an activated Ethereum protocol. This page records its concrete wire surface and keeps that status separate from the current consensus network.
Status
The profile is implementation evidence only. It has no activation fork or deployment claim in the pinned repository and may change before a stable Lean network specification exists.
Network profile
Lean uses libp2p over QUIC with TLS 1.3 and ALPN libp2p. It negotiates
gossipsub 1.2.0. Application objects use SSZ and framed Snappy. Requests carry
a protobuf-varint uncompressed length before the Snappy frame. The maximum
uncompressed payload is 10 MiB; decoders reject a larger declared length before
decompression and check the decompressed length after decoding.
Gossip topics use:
/leanconsensus/{gossip_digest}/{topic_name}/ssz_snappy
block carries signed Lean blocks.
Attestation subnets carry individual signed votes.
aggregation carries committee aggregates.
Request protocols
Status exchanges finalized and head checkpoints. Its protocol ID is
/leanconsensus/req/status/1/ssz_snappy.
The root method uses
/leanconsensus/req/blocks_by_root/1/ssz_snappy and requests up to 1,024
Bytes32 roots.
The range method uses
/leanconsensus/req/blocks_by_range/1/ssz_snappy and requests an inclusive
start_slot plus a count no greater than 1,024. It has no step field.
Requests use a varint length followed by a framed Snappy SSZ object. Responses
add a one-byte code: 0 success, 1 invalid request, 2 server error, or 3
resource unavailable, followed by the same framed object. The total response
timeout is 10 seconds. Range servers retain at least 3,600 recent slots; a
request below that moving window receives RESOURCE_UNAVAILABLE.
Failure handling
Peers with a mismatched gossip digest do not share topics. Decoders reject oversized payloads, malformed varints, bad Snappy frames, length mismatches, and invalid SSZ. Request handlers reject a root list above 1,024 or a range count above 1,024. Resource-unavailable responses cover requests below the serving window.
Design rationale
The profile keeps the same split between gossip for live data and request streams for recovery while using Lean-specific topics and objects.
Source scope
These names and limits come from the pinned implementation modules. Lean's transport and topic names are not a commitment to the active Ethereum consensus network.