Aller au contenu
buybitcoinsmart

Glossaire / Lightning et couche 2

Bit de fonctionnalité

Qu'est-ce qu'un bit de fonctionnalité ?
Un bit de fonctionnalité indique aux autres nœuds Lightning que votre nœud prend en charge une extension précise du protocole, les numéros impairs la marquant comme facultative et les numéros pairs comme obligatoire.

Lightning ne transporte aucun numéro de version que les pairs pourraient comparer : deux nœuds déterminent ce qu'ils peuvent faire ensemble en échangeant un champ de bits au moment de la connexion. Le BOLT 9 attribue 25 paires nommées, du bit 0 au bit 67, et personne ne peut activer les deux bits d'une même paire. Si votre portefeuille refuse une facture qu'un autre portefeuille paie, un bit de fonctionnalité manquant est une chose à vérifier.

Comment cela fonctionne

Les bits de fonctionnalité se comptent depuis le bit de poids faible d'un champ de bits, en partant du bit 0, qui vaut 0x1 et compte comme pair.

Ils sont attribués par paires, et l'appariement est toute l'astuce : le bit impair signifie que le nœud prend en charge la fonctionnalité, le bit pair qu'il l'exige. Une capacité peut donc être livrée comme facultative, se répandre discrètement, puis être relevée au rang d'obligatoire, ce que le BOLT 9 dit que les nœuds obsolètes refuseront, de sorte que l'incompatibilité apparaît quand deux nœuds se rencontrent plutôt qu'en cours de paiement. Les exigences disent le reste clairement : un nœud d'origine ne doit pas activer les deux bits d'une paire, et un nœud récepteur qui voit malgré tout les deux traite la fonctionnalité comme obligatoire.

Certaines fonctionnalités reposent sur d'autres, et l'expéditeur porte toute la chaîne. Les paiements multifragments de base occupent les bits 16 et 17 et dépendent de payment_secret ; les canaux zeroconf occupent 50 et 51 et dépendent d'option_scid_alias ; option_onion_messages_only_channels aux bits 66 et 67 dépend des messages oignon ordinaires. Le nœud d'origine doit activer chaque dépendance transitive, de sorte que le code derrière une seule fonctionnalité peut supposer que les bits de soutien sont présents plutôt que de les revalider.

Cinq des 25 paires ne portent plus que la mention ASSUMED : 0/1, 8/9, 12/13, 14/15 et 44/45. Chacune est devenue si répandue que tout nœud est supposé l'avoir, et la sémantique ne subsiste que dans les révisions antérieures de la spécification. Le tableau saute aussi des numéros, rien n'étant attribué à 2/3, 20/21, 30/31, 32/33, 52 à 59 ni à 64/65, de sorte que les lacunes sont ordinaires.

Où cela se voit

Les bits de fonctionnalité circulent à plusieurs endroits distincts, et la colonne Context du tableau du BOLT 9 indique auquel de ces endroits chaque paire appartient, cette colonne étant vide sur six des 25 lignes.

I désigne le message init que deux pairs échangent à la connexion, N un node_announcement diffusé dans le graphe de gossip, C un channel_announcement, 9 une facture BOLT 11, B le champ allowed_features d'un chemin aveuglé, et T le channel_type convenu à l'ouverture d'un canal. Beaucoup de bits n'apparaissent que dans un seul contexte : option_payment_metadata, bits 48 et 49, n'existe que dans les factures, tandis qu'option_anchors aux bits 22 et 23 apparaît dans init, dans le gossip et comme type de canal, mais jamais dans une facture.

Lorsque deux contextes divergent, la facture l'emporte : la justification du BOLT 9 indique que pour les indicateurs portés à la fois dans node_announcement et dans la facture BOLT 11, les valeurs de la facture prévalent sur celles annoncées. C'est pourquoi un portefeuille lit les capacités sur la facture que vous avez collée, et non sur ce que la destination a annoncé au réseau de gossip des heures plus tôt.

Phoenix, développé par ACINQ sur son implémentation Eclair, fait tourner un vrai nœud sur votre téléphone, de sorte que la question de savoir s'il accepte un paiement multifragments ou une route aveuglée se règle par un champ de bits échangé avec son pair, et non par une page marketing. Muun affiche l'on-chain et Lightning comme un seul solde, et ses paiements Lightning se résument encore aux bits de la facture.

Bit de fonctionnalité vs bit de version

Un bit de fonctionnalité négocie une capacité entre deux pairs Lightning ; un bit de version signale un soft fork dans un en-tête de bloc bitcoin. Le BIP-9 donne aux mineurs les bits 0 à 28 du champ version de l'en-tête et verrouille un déploiement à 1 916 d'une fenêtre de 2 016 blocs sur le réseau principal, après quoi il est actif pour chaque bloc suivant. Un bit de fonctionnalité ne lie personne : c'est une déclaration entre deux pairs, vraie sur une connexion et fausse sur la suivante, sans seuil, sans délai et sans activation à l'échelle du réseau. Lightning négocie ce qu'une paire de nœuds fera l'un pour l'autre ; bitcoin décide ce que tout le monde doit accepter.

À ne pas confondre avec

Questions fréquentes

Pourquoi les bits de fonctionnalité Lightning sont-ils attribués par paires ?

Pour qu'une fonctionnalité puisse commencer comme facultative et devenir ensuite obligatoire. Le bit impair d'une paire dit que le nœud prend en charge la fonctionnalité et le bit pair qu'il l'exige, et le BOLT 9 note qu'un bit pair obligatoire sera refusé par les nœuds obsolètes, de sorte que l'incompatibilité apparaît quand deux nœuds se connectent plutôt qu'au milieu d'un paiement.

Que se passe-t-il si l'autre partie ne prend pas en charge un bit de fonctionnalité dont mon paiement a besoin ?

Le paiement échoue et votre argent reste où il est. La négociation des fonctionnalités a lieu avant que quoi que ce soit soit engagé, de sorte qu'une capacité non prise en charge se manifeste par une connexion refusée ou une route que votre portefeuille ne tentera pas, et non par un solde bloqué.

Dois-je activer un bit de fonctionnalité marqué ASSUMED ?

Non. Le BOLT 9 marque cinq paires comme ASSUMED, aux bits 0/1, 8/9, 12/13, 14/15 et 44/45, parce que ces fonctionnalités sont devenues si répandues que tout nœud est considéré comme les ayant et que les indicateurs peuvent être ignorés sans risque.

À lire ensuite

Termes associés

Plus de termes : Lightning et couche 2

Lire cette page en anglais