Passer au contenu principal
Change page

Adresses réseau

Les nœuds Ethereum doivent s'identifier avec quelques informations de base pour se connecter à des pairs. Pour s'assurer que tout pair potentiel puisse interpréter ces informations, elles sont relayées dans l'un des trois formats standardisés que tout nœud Ethereum peut comprendre : multiaddr, enode ou Ethereum Node Records (ENR). Les ENR sont la norme actuelle pour les adresses réseau Ethereum.

Prérequis

Une certaine compréhension de la couche réseau d'Ethereum est requise pour comprendre cette page.

Multiaddr

Le format d'adresse de nœud Ethereum d'origine était le « multiaddr » (abréviation de « multi-addresses »). Multiaddr est un format universel conçu pour les réseaux pair à pair. Les adresses sont représentées sous forme de paires clé-valeur, les clés et les valeurs étant séparées par une barre oblique (slash). Par exemple, le multiaddr pour un nœud avec l'adresse IPv4 192.168.22.27 écoutant sur le port TCP 33000 ressemble à ceci :

/ip4/192.168.22.27/tcp/33000

Pour un nœud Ethereum, le multiaddr contient l'ID du nœud (un hash de sa clé publique) :

/ip4/192.168.22.27/tcp/33000/p2p/5t7Nv7dG2d6ffbvAiewVsEwWweU3LdebSqX2y1bPrW8br

Un enode est un moyen d'identifier un nœud Ethereum à l'aide d'un format d'adresse URL. L'ID de nœud hexadécimal est encodé dans la partie nom d'utilisateur de l'URL, séparé de l'hôte par un signe @. La spécification définit uniquement le nom d'hôte comme une adresse IP ; cependant, la plupart des clients (tels que Geth et Besu) acceptent également un nom DNS à cet endroit et le résolvent en une adresse IP au démarrage. Il s'agit d'un comportement spécifique au client plutôt que d'une partie du standard. Le port dans la section du nom d'hôte est le port d'écoute TCP. Si les ports TCP et UDP (découverte) diffèrent, le port UDP est spécifié comme paramètre de requête « discport ».

Dans l'exemple suivant, l'URL du nœud décrit un nœud avec l'adresse IP 10.3.58.6, le port TCP 30303 et le port de découverte UDP 30301.

enode://6f8a80d14311c39f35f516fa664deaaaa13e85b2f7493f37f6144d86991ec012937307647bd3b9a82abe2974e1407241d54947bbb39763a4cac9f77166ad92a0@10.3.58.6:30303?discport=30301

Ethereum Node Records (ENR)

Les Ethereum Node Records (ENR) sont un format standardisé pour les adresses réseau sur Ethereum. Ils remplacent les multiaddr et les enodes. Ils sont particulièrement utiles car ils permettent un plus grand échange d'informations entre les nœuds. L'ENR contient une signature, un numéro de séquence et des champs détaillant le schéma d'identité utilisé pour générer et valider les signatures. L'ENR peut également être rempli avec des données arbitraires organisées sous forme de paires clé-valeur. Ces paires clé-valeur contiennent l'adresse IP du nœud et des informations sur les sous-protocoles que le nœud est capable d'utiliser. Les clients de consensus utilisent une structure ENR spécifique (s'ouvre dans un nouvel onglet) pour identifier les nœuds d'amorçage (boot nodes) et incluent également un champ eth2 contenant des informations sur le fork Ethereum actuel et le sous-réseau de diffusion (gossip) d'attestation (cela connecte le nœud à un ensemble particulier de pairs dont les attestations sont agrégées ensemble).

Complément d'information