Skip to main content
netspecsEthereum networking

1.5.Addressing

Stage
Current
Validity
Active non-fork protocol.
Sources
3 pinned sources

Ethereum peers are addressed in two forms: signed node records carry endpoint fields for discovery, and composed multiaddrs carry endpoints for libp2p dialing.

ENR endpoint fields

An ENR carries endpoint information in its key-value pairs. The standard keys are ip (a 4-byte IPv4 address), tcp and udp (big-endian ports), and the IPv6-specific ip6, tcp6, and udp6. When no tcp6 or udp6 port is provided, the tcp or udp port applies to both addresses. A signed record keeps its endpoint information valid as long as the signature verifies.

Consensus ENR requirements

A consensus client's ENR MUST contain the compressed secp256k1 public key. It MAY carry an IPv4 and/or IPv6 address, a quic/quic6 port for the local libp2p QUIC (UDP) listener, a tcp/tcp6 port for the local libp2p TCP listener, and a udp/udp6 port for the local discv5 listener.

Multiaddrs

A multiaddr is a composed, self-describing address string that libp2p implementations use to dial and listen. Consensus clients convert the ENR records returned by discv5 into multiaddrs for their libp2p transports. The libp2p addressing specification defines the composition rules; the libp2p stack page states which transports a consensus peer must dial.

The node record page owns the ENR envelope itself.