La reconversion, parent pauvre des politiques d…
Le réseau Lightning est un réseau permettant d’envoyer des transactions sur Internet de manière quasi instantanée, tout en bénéficiant de la sécurité de la blockchain Bitcoin
Le réseau Lightning est un réseau permettant d’envoyer des transactions sur Internet de manière quasi instantanée, tout en bénéficiant de la sécurité de la blockchain Bitcoin. Dans un précédent article, nous avons présenté le fonctionnement de la technologie Lightning. Aujourd’hui nous vous proposons un tutoriel d’utilisation de ce protocole
La technologie Lightning Network est encore en phase expérimentale, et son utilisation n’est pas intuitive. Chez Sia Partners, nous tenions tout de même à expliquer dans les détails l’installation et l’utilisation des logiciels se basant sur le protocole Lightning.
Plusieurs implémentations logicielles de la technologie Lightning existent, sur ordinateur comme sur mobile, elles suivent le même protocole[1] et sont donc compatibles entre elles.
Nous avons testé le logiciel lnd[2] sur ordinateur, ainsi que la version Android du logiciel eclair[3] . Nos tests ont été réalisés à la fois sur le réseau de test Bitcoin (Testnet) et sur le réseau principal (Mainnet).
lnd est l’implémentation officielle du protocole Lightning. Elle est développée par l’entreprise Lightning Labs. Le logiciel est gratuit et disponible en open-source.
lnd nécessite d’avoir un nœud bitcoin complet[4] synchronisé sur son ordinateur pour avoir accès aux données de la blockchain. L’utilisation d’un nœud léger[5] est encore au stade expérimental. L’utilisation avec un nœud compressé (prunned) n’est pas possible.
Nous avons donc tout d’abord installé le logiciel bitcoind, le logiciel Bitcoin de référence et nous avons synchronisé bitcoind avec le réseau. Une fois que la blockchain est synchronisée (ce qui peut prendre plusieurs heures voire plusieurs jours), il est possible de lancer le logiciel lnd.
Une fois que les données de la blockchain sont disponibles, il est possible de créer un compte Lightning avec la commande
lncli create
Par défaut le compte est bloqué et il faut le débloquer (avec son mot de passe) avec la commande
lncli unlock
Il est par la suite possible de créer une adresse Bitcoin NP2WKH (Nested Pay to Witness Key Hash) avec la commande
lncli newaddress np2wkh
Une fois que la commande est lancée, le serveur lnd nous renvoie l’adresse NP2WKH, par exemple :
{
"address” : "2NDg3baNXnN4fmLY9mwY9TzKXQdVbRHegQw"
}
Cette adresse Bitcoin nous sera nécessaire pour créer la transaction Script multi-signée qui créera un canal de paiement entre notre nœud et un autre nœud Lightning.
Il faut par la suite envoyer une petite quantité de bitcoins sur cette adresse, qui serviront à payer les frais de transactions et à ouvrir le canal de paiement.
Avant d’ouvrir un canal, il faut connaître un autre nœud avec qui ouvrir le canal[6]. Il est préférable de choisir un nœud avec plusieurs canaux déjà ouverts pour faciliter l’acheminement de nos futures transactions sur Lightning[7].
Une fois le nœud choisi, il faut tout d’abord établir une connexion Internet sécurisée entre nous et ce nœud avec la commande lncli connect, en précisant l’adresse du nœud, l’adresse IP et le port de connexion.
Par exemple :
lncli connect 0260d9119979caedc570ada883ff614c6efb93f7f7382e25d73ecbeba0b62df2d7@88.99.209.230:9735
Après la connexion, nous pouvons initier le canal de paiement avec la commande lncli openchannel, en précisant l’adresse Lightning du nœud, le montant (en satoshi) à stocker sur le canal et les frais de routage.
Par exemple :
lncli --network testnet openchannel --node_key 0260d9119979caedc570ada883ff614c6efb93f7f7382e25d73ecbeba0b62df2d7 --local_amt 20000 --sat_per_byte 1
Cette commande lance une transaction sur le réseau Bitcoin qui ouvre le canal de paiement comportant 20 000 satoshis[9]. Une fois que cette transaction est ajoutée dans un bloc par un mineur, le canal devient utilisable. Les satoshis ne seront plus utilisable sur Bitcoin jusqu'à la fermeture du canal via une autre transaction Bitcoin.
Dans Lightning Network, l’envoi d’une transaction passe d’abord par la création d’une facture qui correspond à une demande de paiement. Cette création se fait avec la commande lncli addinvoice en précisant éventuellement un montant[10], une date d’expiration (fixée à une heure par défaut dans lnd) et une note d’information.
Exemple :
lncli addinvoice --amt=6969 --memo="Test Sia Partners"
Le résultat obtenu est un hash de la forme suivante :
lntb1pw6twskpp58952qm927ersyxwa8w9wkrt0v2zlaz2c7pmrpcfqaftvn3fuv8nqdqqcqzpgjdvgcswq 9c28l9vwyj2ef72drn07p087rsnrdc53xen5v8dcldn8vhfmrplkykpkejhah89k6jmum2ce7rpxp9e93nxgfl xyekc98lgquclpuu
Cet hash doit ensuite être transmis au débiteur. Cette personne doit ensuite valider la demande de paiement avec la commande
lncli sendpayment
Par exemple :
lndcli sendpayment --pay_req=lntb1pw6twskpp58952qm927ersyxwa8w9wkrt0v2zlaz2c7pmrpcfqaf tvn3fuv8nqdqqcqzpgjdvgcswq9c28l9vwyj2ef72drn07p087rsnrdc53xen5v8dcldn8vhfmrplkykpkejha h89k6jmum2ce7rpxp9e93nxgflxyekc98lgquclpuu
Une fois que la demande de paiement est exécutée par l’autre nœud, la transaction est instantanée et nous recevons les bitcoins sur notre nœud Lightning.
Le logiciel eclair mobile est plus simple à utiliser que lnd car il possède une interface graphique et qu’il se connecte à un serveur electrum pour avoir accès aux données de la blockchain, ainsi il n’est pas nécessaire de télécharger toute la blockchain Bitcoin.
Eclair mobile est disponible sur le Play store :
https://play.google.com/store/apps/details?id=fr.acinq.eclair.wallet.mainnet2&hl=fr
Après l’installation de l’application, il faut patienter durant la synchronisation du portefeuille avec le réseau Lightning.
Il faut tout d’abord envoyer quelques bitcoins sur l’adresse Bitcoin générée par l’application.
Par la suite, nous pouvons ouvrir un canal de paiement.
Lors de la création d’un canal, Eclair mobile nous offre la possibilité de choisir entre la connexion avec un nœud aléatoire, avec un nœud ACINQ ou bien de copier l’adresse d’un nœud que nous connaissons déjà. Il faut choisir le montant du canal et ouvrir le canal.
Une fois que le canal est ouvert, nous pouvons générer des demandes de paiement et également valider les demandes de paiement que nous recevons. Les demandes de paiement peuvent être généré soit sous format texte/hash (comme sur lnd), soit sous format QR code. L’autre utilisateur doit copier la demande de paiement (ou scanner le QR code) et la valider. Le paiement est envoyé sur le réseau Lightning sur la forme d’une transaction.
Nous recevons une notification lors de la validation de la transaction, qui se fait généralement en quelques secondes.
Sur la page principale de l’application, nous avons accès à notre historique des paiements effectués et reçus.
Parmi les multiples implémentations du protocole Lightning, les logiciels lnd et eclair mobile sont parfaitement utilisables, du moment que l’on maîtrise la technologie Bitcoin et le fonctionnement du réseau Lightning.
Il est recommandé de ne pas laisser une grande somme de bitcoins sur un canal Lightning, la technologie n’étant pas encore mature, les risques de se faire voler ou de perdre ses bitcoins existent.
Nous pouvons tout de même noter que les implémentations mobiles sont plus simples à utiliser et plus en adéquation avec la technologie Lightning, car c’est notre smartphone que nous allons généralement utiliser pour les micropaiements (dans les commerces, entre amis, …).
Les équipes de Sia Partners sont à votre disposition pour vous aider dans la réalisation de vos projets autour de Bitcoin et de Lightning Network, de l’idéation jusqu’a à la mise en production, en passant par la réalisation de POC.
[4] Un nœud complet stocke et vérifie toute la blockchain Bitcoin, qui pèse environ 250 Go actuellement
[5] Un nœud léger ne stocke pas toute la blockchain mais uniquement les transactions de l’utilisateur, il doit communiquer avec un nœud complet pour avoir accès aux restes des informations de la blockchain.
[6] La plupart des nœuds imposent un montant minimal sur le canal, par exemple 20 000 satoshis.
[7] Il n’y a pas de limite dans le nombre de canaux de paiements que nous pouvons ouvrir, si ce n’est les frais d’ouverture et de fermeture.
[9]1 satoshi = 0,00000001 bitcoin
[10] Le montant maximal transférable correspond au montant qui a été bloqué sur le canal, 20 000 satoshis dans notre cas