Aller au contenu
buybitcoinsmart

Glossaire / Nœuds et logiciels

Addrv2

Qu'est-ce qu'Addrv2 ?
Addrv2 est le message pair-à-pair que les nœuds bitcoin utilisent pour diffuser des adresses de pairs que le message addr plus ancien ne peut pas exprimer, chacune étant étiquetée d'un identifiant de réseau d'un octet pour Tor v3, I2P ou Cjdns.

Spécifié dans BIP-155.

Le message addr plus ancien transporte un champ d'adresse fixe de 16 octets, qui ne peut pas contenir une adresse onion Tor v3 de 32 octets. Le BIP-155 remplace ce champ par un identifiant de réseau d'un octet plus une adresse allant jusqu'à 512 octets, dans la limite de 1 000 entrées par message. Faites tourner un nœud via Tor pour garder vos avoirs à l'écart de votre adresse IP domestique, et addrv2 est le moyen par lequel les autres nœuds apprennent son existence.

Comment cela fonctionne

Addrv2 conserve la forme du message qu'il remplace et réécrit un champ.

Chaque entrée porte cinq éléments : un horodatage Unix indiquant quand ce nœud a été vu connecté pour la dernière fois, un champ de bits de service passé en encodage CompactSize pour qu'il ne coûte plus systématiquement huit octets, un identifiant de réseau d'un octet, l'adresse elle-même, et un port de 16 bits qui doit être nul lorsque le réseau n'en a pas. Le BIP-155 réserve sept identifiants : 0x01 IPv4 sur 4 octets, 0x02 IPv6 sur 16, 0x03 Tor v2 sur 10, 0x04 Tor v3 sur 32, 0x05 I2P sur 32, 0x06 Cjdns sur 16 et 0x07 Yggdrasil sur 16. Un message portant plus de 1 000 entrées, une adresse plus longue que 512 octets ou une adresse dont la longueur ne correspond pas à son identifiant devraient tous être rejetés.

Deux de ces identifiants méritent une note. Tor v2 a cessé de fonctionner : la version 2.0.0 du BIP, datée du 2025-10-01, indique que les clients ne doivent plus diffuser ni relayer l'identifiant 0x03 et doivent l'ignorer à la réception, et Bitcoin Core conserve ce numéro dans son enum tout en documentant TORV2 comme n'étant plus pris en charge. Core n'implémente pas du tout le septième identifiant, puisque cette enum, BIP155Network dans src/netaddress.h, va de IPV4 = 1 à CJDNS = 6 et s'arrête là, avec MAX_ADDRV2_SIZE fixé aux mêmes 512 octets que ceux nommés par la spécification.

La prise en charge se négocie plutôt que de se supposer. Un nœud l'annonce en envoyant sendaddrv2, et le moment est strict : uniquement après le message version du pair et avant verack, ce que Core fait respecter en déconnectant un pair qui en envoie un trop tard. Ne l'envoyez jamais et le pair continue d'utiliser le format hérité, en abandonnant silencieusement tous les types d'adresses que l'ancien champ ne peut pas exprimer. La version 2.1.0, datée du 2026-08-03, a comblé une lacune connexe en décidant que les adresses IPv4 enveloppées dans de l'IPv6, la plage ::ffff:0:0/96, ne doivent pas circuler sous l'identifiant IPv6, parce qu'une machine qui arrive sous deux identifiants est comptée comme deux pairs distincts.

Où cela se voit

Addrv2 apparaît dans Bitcoin Core comme une étiquette de réseau plutôt que comme quelque chose que vous lisez directement.

L'appel getpeerinfo étiquette chaque connexion avec un nom de réseau, et getnodeaddresses en prend un en argument : le texte d'aide dans src/rpc/net.cpp utilise getnodeaddresses 4 "i2p" et -named getnodeaddresses network=onion count=12 comme exemples. L'appel getaddrmaninfo va plus loin, en décomposant le pool d'adresses stocké par réseau avec les comptages new, tried et total avant d'ajouter un total all_networks. Les lignes au-delà d'ipv4 et d'ipv6 contiennent des adresses qu'aucun message addr n'aurait pu encoder, quelle que soit la façon dont votre nœud en a entendu parler.

Le cas onion montre le peu qui circule réellement. Une adresse Tor v3 compte 56 caractères base32 avant le suffixe .onion, encodant une clé publique ed25519 de 32 octets, une somme de contrôle SHA3-256 de deux octets et un octet de version. Seule la clé publique passe sur le réseau, et le nœud récepteur reconstruit le reste, puisque la version vaut toujours 3 et que la somme de contrôle est fonction de ce qu'il détient déjà.

Pour un détenteur, ce sont des rouages avec une conséquence visible. Les portefeuilles qui acheminent tout via Tor par défaut, Wasabi entre autres, et les portefeuilles qui joignent votre propre nœud via Tor, comme Blockstream Green, dépendent tous du fait que les pairs onion soient trouvables en premier lieu.

Addrv2 vs une adresse bitcoin

Une adresse bitcoin et une adresse addrv2 partagent trois lettres et rien d'autre. Une entrée addrv2 est un emplacement sur un réseau, une réponse à la question de savoir où se trouve une machine, et aucune quantité de ces entrées ne peut recevoir des bitcoins. Collez une adresse onion dans le champ d'envoi d'un portefeuille et elle sera rejetée comme malformée, ce qui est le bon résultat.

À ne pas confondre avec

Questions fréquentes

Dois-je activer addrv2 sur mon nœud ?

Non. Bitcoin Core envoie le message sendaddrv2 pour vous, dans la fenêtre exigée par le BIP-155 : après le message version du pair et avant verack, et uniquement lorsque la version de protocole négociée est au moins 70016, car un logiciel plus ancien peut rejeter un type de message qu'il ne connaît pas. Un pair qui n'y répond jamais continue de recevoir l'ancien format addr.

Addrv2 chiffre-t-il le trafic de mon nœud ?

Non. Addrv2 change seulement les adresses dont un nœud est capable de parler, pas la façon dont le lien lui-même est protégé. Le chiffrement de la connexion est une négociation distincte, le transport v2 défini par le BIP-324, que Bitcoin Core signale par son propre bit de service.

Pourquoi le BIP-155 liste-t-il encore un identifiant de réseau pour Tor v2 ?

L'identifiant reste dans le tableau mais est signalé comme n'étant plus utilisé. La version 2.0.0 du BIP, datée du 2025-10-01, indique que Tor v2 n'est plus opérationnel et que les clients ne doivent pas diffuser ni relayer l'identifiant 0x03 et doivent l'ignorer à la réception. Bitcoin Core conserve TORV2 = 3 dans son énumération BIP155Network et documente l'identifiant comme n'étant plus pris en charge.

À lire ensuite

Termes associés

Plus de termes : Nœuds et logiciels

Lire cette page en anglais