J’ai enfin pris le temps de m’intéresser sérieusement aux Lightning Network (qu’on notera LN) et c’est beaucoup plus puissant que ce que je pensais !
Les avantages
- Paiement instantanés validés définitivement en quelques secondes.
- Trustless, pas de tiers de confiance. On peut passer par des intermédiaires dans certains cas (voir plus bas) mais pas besoin de leur faire confiance, on est assuré à 100% qu’ils ne peuvent pas nous voler. C’est le point le plus important, ce n’est pas le cas de g1sms par exemple (il faut faire confiance au tiers gérant le serveur g1sms de référence).
- Permet des paiements en mode hors-ligne entre 2 personnes qui se connaissent au préalable.
- Allège la blockchain : les paiement instantanés se font hors-blockchain, c’est ce qui permet l’instantanéité et ça permet aussi d’alléger fortement la blockchain (moins de transactions dans les blocs).
Le principe général
Pour utiliser les Lightning Network, l’utilisateur doit ouvrir un “chanel” avec d’autres comptes (personnes ou/et robots), qu’on nommera ses “contacts”. Il peut alors réaliser des échanges instantanés avec tous ses contacts mais également avec n’importe-quel entité qui a au moins un contact commun avec lui.
Les comptes et les chanel forment un graphe, un peu comme notre toile de confiance, sauf que les liens sont bidirectionnels. Pour faire l’analogie c’est comme si vous pouviez échanger instantanément avec n’importe-quel entité se trouvant à 2 pas de vous.
J’utilise le terme “entité” et non personne car les chanels LN peuvent être utilisées indifféremment avec des simples portefeuilles ou des comptes membres.
2 types de paiement
Le paiement direct
Nécessite que les 2 personnes qui échangent se connaissent au préalable.
Ce paiement peut s’effectuer hors-ligne par échange de qrcode (ou échange de fichiers par n’importe-quel canal).
Il peut également s’effectuer en ligne pour s’échanger les données par le réseau (on peut alors passer par un serveur pour faire l’intermédiaire, mais ce dernier ne réalise aucun traitement, c’est juste un messagé).
Le paiement relais
Nécessite une connexion à internet lors du paiement. Les 2 personnes qui souhaitent échanger vont passer par un intermédiaire (le plus souvent un robot qui tournent 24/7 sur un serveur) mais sans avoir besoin de faire confiance en cet intermédiaire car il lui sera mathématiquement impossible de détourner le transfert.
On peut voir ces robots intermédiaires comme des pod Diaspora ou Mastodon par exemple. Il suffit que les 2 personnes aient au moins un compte sur le même pod pour réaliser un paiement instantanné.
Dans le cas où le serveur relais n’est pas honnête, les 2 personnes qui souhaitaient échanger sont garanties à 100% de pouvoir récupérer leur monnaie d’avant l’échange. Il leur suffit alors de blacklister ce serveur et d’en utiliser un autre. Ou de créer un channel entre eux pour ne plus avoir besoin d’intermédiaire.
Trois remarques très importantes :
- Les 2 personnes qui échangent ne donnent pas leur clé privée à l’intermédiaire, il n’en a pas besoin.
- L’utilisation d’un intermédiaire n’est pas nécessaire, c’est juste plus pratique car cela permet de ne pas ouvrir un nouveau channel chaque fois qu’on échange avec une nouvelle personne.
- Chaque partie peut décider unilatéralement de récupérer ses fonds à tout moment, et n’a pas besoin de l’accord des autres.
Dans la pratique
L’utilisateur qui souhaite réaliser des paiements instantanés devra installer et utiliser un client spécial (nom à trouver, type “light transfert”). Depuis ce client spécial il pourra :
- Demander à ouvrir un channel avec un nouveau contact (une clé publique quelconque)
- Envoyer un paiement instantané a un de ses contacts.
- Envoyer un paiement relais (il suffirait de scanner ou saisir la clé publique du destinataire et le client donnera la liste des intermédiaires possibles, la liste des “pod” en commun).
- Fermer un channel (avec une personne physique ou un pod), ce qui lui permet de récupérer les fonds.
Pour ouvrir un channel il faut injecter de la monnaie dedans (montant à choisir). La monnaie injectée reste ensuite dans le réseau LN (elle peut être récupérée a tout moment).
Le réseau LN fonctionne un peu comme une monnaie complémentaire mais garantie à 100% sur la monnaie de base via des preuves cryptographiques et surtout ce réseau fonctionne de façon totalement décentralisée ET trustless (pas besoin de faire confiance à qui que ce soit).
Pour que la Ğ1 en bénéficie
Il y a 3 choses à faire :
- Modifier le protocole DUBP pour le rendre compatible avec les Lightning Network
- Développer les “pod LN”
- Développer le client spécial (au moins sous version app mobile, on peut aussi avoir une version desktop bien sur, on peut trouver un nom sympa du style “lightĞ1” pour “La Ğ1 a la vitesse de la lumière”).
Autant dire qu’il y a du boulot
La partie pod LN pourrait me tenter (ça pourrait être un module optionnel de Dunitrust), j’ouvrirai bien un crowfunding pour ça.
Pour la partie client si ça tente quelqu’un je peux aider sur toute la compréhension de la cryptographie et user story (oui j’aime bien le fonctionnel aussi).
Les modifications à faire sur le protocole DUBP
- Modifier le comportement de la fonction CSV pour qu’elle se base sur les temps d’écriture des transactions et pas les temps d’émission.
- Supprimer la contrainte txWindow, les transactions d’engagement émises sur le réseau LN doivent rester valides indéfiniment. Pour élaguer les mempool, il suffit aux noeuds d’associer un “timestamp de réception” a chaque document tx reçue puis a fréquence régulière de supprimer les tx reçues il y a plus de X secondes.
Et je crois que c’est tout.
Comment ça marche
Bien entendu les LN ne sont pas magiques, ils se basent sur des enchevêtrements cryptographiques très complexes et avec beaucoup de subtilités.
Ils sont le fruit de nombreuses années de recherches de différents expert en crypto à travers le monde, et toutes les spéc sont libres (sous licence CC-BY), on peut donc en faire bénéficier la Ğ1
Bien sûr ça demandera des centaines voir milliers d’heures de travail, mais de mon point de vue le jeu en vaut la chandelle.
Une explication détaillée et en français du fonctionnement cryptographique des LN :
https://bitconseil.fr/bitcoin-lightning-network-histoire-fonctionnement/
Le white paper officiel : http://lightning.network/lightning-network-paper.pdf
Les RFC techniques des implémentations existantes (dans d’autres crypto-currencies) : bolts/00-introduction.md at master · lightning/bolts · GitHub
Peut-être que certains connaissaient déjà très bien, mais je pense que beaucoup de lecteurs de ce forum ne connaissent pas ou mal les LN et ne savent donc pas ce que les LN pourraient apporter à la Ğ1. Perso c’était mon cas, j’ai entendu parler des LN il y a 3 ans déjà mais je ne m’étais jamais penché dessus et j’étais loin de me douter de tout leur potentiel.