Aller au contenu
buybitcoinsmart

Glossaire / Lightning et couche 2

Protocole de gossip

Qu'est-ce que le protocole de gossip ?
Le protocole de gossip est le moyen par lequel les nœuds Lightning diffusent entre eux les annonces signées de canaux et de nœuds, afin que chaque nœud puisse construire sa propre carte du réseau sans interroger un serveur.

Lightning n'a pas d'annuaire : les nœuds se disent donc mutuellement ce qui existe et chaque nœud conserve sa propre copie. Le BOLT 7 définit trois messages pour cela, et un nœud qui en reçoit un devrait ignorer un canal dont la sortie de financement compte moins de 6 confirmations. Votre portefeuille trouve une route parce que lui, ou un nœud auquel il fait confiance, a d'abord écouté ces échanges.

Comment cela fonctionne

Le protocole de gossip transporte trois types de messages, et chacun doit prouver quelque chose on-chain ou par signature avant qu'un pair accepte de le relayer.

channel_announcement (type 256) affirme qu'un canal existe. Le nœud qui le reçoit recherche la sortie de financement sur la blockchain : un message dont la sortie n'est pas le script P2WSH attendu, ou est déjà dépensée, doit être ignoré, et un message dont la sortie compte moins de 6 confirmations devrait être ignoré, sauf si l'écart est assez faible pour que le nœud puisse simplement être en retard sur les blocs. Annoncer un canal coûte donc une véritable transaction on-chain, ce qui constitue tout le dispositif anti-spam : personne ne peut inventer mille canaux gratuitement.

node_announcement (type 257) porte les informations propres à l'opérateur. Les nœuds non associés à un canal déjà connu sont ignorés, "to avoid trivial denial of service attacks", afin qu'un opérateur sans enjeu n'atteigne jamais la carte de quiconque.

channel_update (type 258) porte les prix, un par sens, et c'est le message qui change réellement. Les frais et le delta d'expiration s'y trouvent, et lorsqu'un opérateur augmente ses frais, la spécification recommande que ce même opérateur continue d'accepter les anciens paramètres pendant au moins 10 minutes, car le nouveau message doit circuler.

La propagation est délibérément lente. Un nœud stocke ce qu'il reçoit, remplace les mises à jour plus anciennes provenant de la même origine, et vide le lot toutes les 60 secondes ; la spécification parle d'une diffusion échelonnée, ce qui empêche un opérateur très actif de saturer la bande passante de tout le monde.

L'oubli est lui aussi spécifié. Une fois la sortie de financement d'un canal dépensée, un nœud attend 72 confirmations de blocs avant d'abandonner le canal, afin qu'un splice ait le temps de s'annoncer au lieu de ressembler à une fermeture. Par ailleurs, si le channel_update le plus récent dans l'un ou l'autre sens date de plus de deux semaines (1 209 600 secondes), un nœud peut élaguer le canal purement et simplement.

Où cela se voit

Le gossip explique qu'un nœud Lightning fraîchement démarré soit inutile pendant un moment, puis ne le soit plus d'un coup.

À la connexion, un nœud demande ce qui lui manque : query_channel_range (type 263) pour savoir quels canaux existent sur une plage de blocs, query_short_channel_ids (261) pour récupérer ceux qu'il n'a jamais vus, et gossip_timestamp_filter (265) pour fixer une fenêtre temporelle sur tout ce qui est envoyé ensuite. Ce dernier message est un interrupteur plutôt qu'une préférence : tant que vous ne l'avez pas envoyé, un pair ne vous transmet rien qu'il n'ait généré lui-même, ce qui permet à un petit appareil de rester petit.

Les conséquences arrivent jusqu'à votre portefeuille sous forme de frais. Une estimation de route est assemblée à partir des messages channel_update que votre portefeuille détient sur le moment, si bien qu'une vue périmée produit des tentatives échouées et des prix qui ne correspondent pas à ce qui vous a été montré. Les portefeuilles mobiles s'appuient sur la carte de quelqu'un d'autre : Phoenix fait tourner un véritable nœud en auto-conservation sur le téléphone, mais se connecte via les propres nœuds d'ACINQ, au prix que notre avis consigne, à savoir qu'ACINQ connaît la destination et le montant de vos paiements. Un compte conservé par une plateforme se passe entièrement du gossip, puisque l'entreprise route pour vous.

Protocole de gossip vs messages P2P

Le protocole de gossip s'exécute entre les nœuds Lightning ; les messages P2P du bitcoin s'exécutent entre les nœuds bitcoin, et les deux ne partagent rien d'autre qu'une habitude de diffusion.

Un nœud bitcoin relaie des transactions et des blocs avec des commandes telles que inv, getdata et tx, et ne sait rien des canaux de quiconque. Le gossip Lightning est une conversation distincte qui transporte les types de messages 256 à 265, et il ne touche à la blockchain que pour vérifier qu'une sortie de financement annoncée est réelle et non dépensée. Aucun paiement n'est jamais diffusé par gossip : les montants et les destinations voyagent dans des paquets oignon que les nœuds intermédiaires ne peuvent pas lire, si bien que la carte publique indique où sont les canaux, jamais ce qui les a traversés.

À ne pas confondre avec

Questions fréquentes

Le protocole de gossip expose-t-il mes paiements Lightning ?

Non, le gossip ne transporte que des annonces de canaux et de nœuds, jamais de paiements. Le graphe public indique quels canaux existent, à qui ils appartiennent et ce qu'ils facturent, tandis que le montant et la destination d'un paiement voyagent dans des paquets oignon que les nœuds intermédiaires ne peuvent pas lire.

Pourquoi mon portefeuille Lightning a-t-il annoncé des frais puis en a-t-il facturé d'autres ?

En général parce que la copie du graphe que détient votre portefeuille est périmée. Les prix vivent dans les messages channel_update qu'un opérateur peut modifier quand il le souhaite, et la spécification recommande seulement que l'opérateur lui-même continue de respecter ses anciens paramètres pendant au moins 10 minutes, le temps que les nouveaux circulent.

Les canaux privés apparaissent-ils dans le gossip ?

Non. Un canal ne fait l'objet d'un gossip que lorsque les deux pairs signent un channel_announcement, ce que la spécification considère comme déclarant qu'ils sont prêts à router pour le réseau public, de sorte qu'un canal non annoncé reste invisible et qu'une facture qui en utilise un doit porter à la place une indication de route.

À lire ensuite

Sources

Dernière vérification le 6 septembre 2026.

Termes associés

Plus de termes : Lightning et couche 2

Lire cette page en anglais