TLV
TLV (Type-Length-Value) est le format extensible de Lightning pour ajouter des champs aux messages et HTLC. Utilisé par keysend, BOLT-12, blinded paths. Garantit la rétrocompatibilité.
Définition et origine
TLV signifie Type-Length-Value. C'est un format d'encodage générique utilisé depuis des décennies dans les protocoles réseau (ISO 7816, ASN.1, etc.) pour transporter des champs optionnels et extensibles. Il a été adopté dans Lightning par le BOLT-1 en 2019 comme mécanisme standard pour étendre les messages sans casser la compatibilité.
Comment ça fonctionne
Un TLV record contient trois éléments :
| Champ | Encodage | Rôle | |---|---|---| | Type | BigSize (1 à 9 octets) | Identifiant unique du champ | | Length | BigSize | Taille du Value en octets | | Value | Length octets | Contenu effectif |
Les types pairs (even) sont obligatoires : un nœud qui les reçoit sans les comprendre doit refuser. Les types impairs (odd) sont optionnels : un nœud peut les ignorer s'il ne les connaît pas. Cette règle « it's ok to be odd » est essentielle pour la rétrocompatibilité de Lightning.
Cas d'usage
| Fonctionnalité | TLV utilisé | |---|---| | Keysend | Type 5482373484 pour preimage | | Podcast 2.0 (boostagrams) | Types personnalisés avec message | | BOLT-12 | Offers, invoices, refunds en TLV | | Blinded paths | Métadonnées de routage | | Routing onion | Payload variable-length |
Par exemple, dans un paiement keysend, un wallet attache souvent un type 34349334 contenant un message texte UTF-8 lisible par le destinataire.
Avantages
- Extensibilité sans hard fork du protocole
- Lecture en flot, parsing O(n)
- Distinction obligatoire/optionnel via parité du type
- Format binaire compact
Limites
| Sujet | Détail | |---|---| | Pas de schéma global | Chaque BOLT définit ses types | | Risque de collision | Coordination via spec officielle | | Verbosité minimale | BigSize économe mais pas zéro |
À retenir
TLV est l'ADN extensible de Lightning : tout nouvel ajout (Trampoline, BOLT-12, Blinded Paths, Liquidity Ads) passe par lui. Comprendre ce format aide à lire les specs BOLT et à débugger les paiements complexes.
Termes lies
- BOLT-12 (Offers)BOLT-12 introduit les Offers : des « factures réutilisables » Lightning. Permet recouverts récurrents, demandes statiques, métadonnées riches. Combiné aux blinded paths pour la confidentialité. Implémenté par CLN, LND et Phoenix.
- KeysendKeysend permet d'envoyer un paiement Lightning sans invoice : l'expéditeur génère la preimage et la transmet via TLV. Pratique pour les pourboires et apps de chat (Sphinx). Implémenté par LND, CLN.
- Blinded pathsLes blinded paths cachent le destinataire d'un paiement Lightning derrière une route aveuglée. Améliorent la confidentialité du recouvert. Cœur technique de BOLT-12.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.