From d46d27514a9bfba509be8f0d9dd310fdca593a45 Mon Sep 17 00:00:00 2001 From: Manu NALEPA Date: Tue, 2 Apr 2024 13:40:24 +0200 Subject: [PATCH 1/3] `p2p-interface.md`: Add `quic` ENR entry. --- specs/phase0/p2p-interface.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/specs/phase0/p2p-interface.md b/specs/phase0/p2p-interface.md index ff1bd03a1d..e8c2ce9d63 100644 --- a/specs/phase0/p2p-interface.md +++ b/specs/phase0/p2p-interface.md @@ -959,7 +959,8 @@ The Ethereum Node Record (ENR) for an Ethereum consensus client MUST contain the The ENR MAY contain the following entries: - An IPv4 address (`ip` field) and/or IPv6 address (`ip6` field). -- A TCP port (`tcp` field) representing the local libp2p listening port. +- A TCP port (`tcp` field) representing the local libp2p TCP listening port. +- A QUIC port (`quic` field) representing the local libp2p QUIC (UDP) listening port. - A UDP port (`udp` field) representing the local discv5 listening port. Specifications of these parameters can be found in the [ENR Specification](http://eips.ethereum.org/EIPS/eip-778). From 337cd1edbdd9b6889648fce989838b38925f645a Mon Sep 17 00:00:00 2001 From: Manu NALEPA Date: Thu, 8 Aug 2024 17:13:06 +0200 Subject: [PATCH 2/3] ENR structure: Add `tcp6`, `quic6` and `udp6`. As discussed in ACDC #139. --- specs/phase0/p2p-interface.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/specs/phase0/p2p-interface.md b/specs/phase0/p2p-interface.md index e8c2ce9d63..fa569573f3 100644 --- a/specs/phase0/p2p-interface.md +++ b/specs/phase0/p2p-interface.md @@ -959,9 +959,9 @@ The Ethereum Node Record (ENR) for an Ethereum consensus client MUST contain the The ENR MAY contain the following entries: - An IPv4 address (`ip` field) and/or IPv6 address (`ip6` field). -- A TCP port (`tcp` field) representing the local libp2p TCP listening port. -- A QUIC port (`quic` field) representing the local libp2p QUIC (UDP) listening port. -- A UDP port (`udp` field) representing the local discv5 listening port. +- An IPv4 TCP port (`tcp` field) representing the local libp2p TCP listening port and/or the corresponding IPv6 port (`tcp6` field). +- An IPv4 QUIC port (`quic` field) representing the local libp2p QUIC (UDP) listening port and/or the corresponding IPv6 port (`quic6` field). +- An IPv4 UDP port (`udp` field) representing the local discv5 listening port and/or the corresponding IPv6 port (`udp6` field). Specifications of these parameters can be found in the [ENR Specification](http://eips.ethereum.org/EIPS/eip-778). From 8ab7bc60a5c5f7d709951e1486a9556d471e3ffb Mon Sep 17 00:00:00 2001 From: Manu NALEPA Date: Thu, 12 Dec 2024 10:19:49 +0100 Subject: [PATCH 3/3] Address jxs comment. --- specs/phase0/p2p-interface.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specs/phase0/p2p-interface.md b/specs/phase0/p2p-interface.md index fa569573f3..48228f0ff0 100644 --- a/specs/phase0/p2p-interface.md +++ b/specs/phase0/p2p-interface.md @@ -123,8 +123,8 @@ This section outlines the specification for the networking stack in Ethereum con Even though libp2p is a multi-transport stack (designed to listen on multiple simultaneous transports and endpoints transparently), we hereby define a profile for basic interoperability. -All implementations MUST support the TCP libp2p transport, and it MUST be enabled for both dialing and listening (i.e. outbound and inbound connections). -The libp2p TCP transport supports listening on IPv4 and IPv6 addresses (and on multiple simultaneously). +All implementations MUST support the TCP libp2p transport, MAY support the QUIC (UDP) libp2p transport, and MUST be enabled for both dialing and listening (i.e. outbound and inbound connections). +The libp2p TCP and QUIC (UDP) transports support listening on IPv4 and IPv6 addresses (and on multiple simultaneously). Clients must support listening on at least one of IPv4 or IPv6. Clients that do _not_ have support for listening on IPv4 SHOULD be cognizant of the potential disadvantages in terms of