Tutoriel : De zéro à une transaction LND

La semaine dernière, nous avons illustré le protocole de réseau Lightning, BOLTs (bases de la technologie Lightning), au moyen d’un diagramme visuel qui, nous l’espérons, a contribué à la compréhension de cette technologie par la communauté. Si vous n’avez pas eu le temps d’y jeter un coup d’oeil, n’hésitez pas à le regarder ici!

 

Cette semaine, nous souhaitons nous impliquer dans la mise en œuvre de cette technologie afin de comprendre son fonctionnement dans le monde réel. Nous avons créé des tutoriels pour les deux principales implémentations, LND & C-lightning. Pour voir le c-lightning, cliquez ici!

 

LND est une implémentation complète du protocole du réseau Lightning. C’est un projet open-source auquel tout le monde peut contribuer si vous suivez les instructions. Il est entretenu et principalement réalisé par Lightning Labs Inc. LND est un logiciel de ligne de commande, ce qui signifie qu’il n'y a pas d’interface utilisateur graphique intégrée, Il est conçu pour fonctionner en tant que serveur principal (nœud) pour les autres applications susceptibles d’apporter l’interface graphique. C'est aussi un portefeuille Bitcoin Mainnet et un portefeuille réseau Lightning.

 

Ce sera un tutoriel qui sera un guide pas à pas pour l'installation et la configuration de Bitcoind, LND, et l'utilisation de LND jusqu'à l'éxécution d'une transaction.

 

Windows ou MacOS

 

Tout d’abord, pour exécuter LND localement sur votre ordinateur Windows 10 ou MacOS, reportez-vous au Node Launcher de Pierre Rochard, c’est un logiciel très simple qui s’exécutera très facilement et vous n’aurez même pas besoin d’installer bitcoind au préalable. Vous pouvez toujours nous contacter si vous avez des difficultés à l'utiliser.

https://github.com/lightning-power-users/node-launcher

 

Mais pour Linux, cela se passe différemment, voici donc un tutoriel pour installer LND sur une machine Debian telle que Ubuntu 18.04. J'utiliserai toujours bitcoind comme back-end.

 

Partie 1 de Linux: Configuration de Bitcoind

Pour installer bitcoind sur une machine Linux telle que Ubuntu, référez-vous à un guide étape par étape génial sur Medium,  c'est bien mieux que tout ce que j'aurais pu écrire. Dans ce processus, il construit complètement à partir de la source tout en vérifiant l'authenticité des paquets. Ce texte est en anglais par contre. Si vous désirez que nous le traduisons, dites-nous le et nous pourrons le faire.

https://hackernoon.com/a-complete-beginners-guide-to-installing-a-bitcoin-full-node-on-linux-2018-edition-cb8e384479ea

 

Si vous ne voulez pas compiler depuis les sources pour une raison quelconque, il existe un moyen plus simple d’installer bitcoind et bitcoin-qt (version graphique), il vous suffit d’exécuter ces commandes:

$ sudo apt-add-repository ppa:bitcoin/bitcoin

$ sudo apt-get update

$ sudo apt-get install bitcoin-qt bitcoind

 

Une fois installé, vous pouvez créer un fichier de configuration en exécutant cette commande. 

$ nano ~/.bitcoin/bitcoin.conf

 

Mon fichier de configuration ressemble à ceci et c'est le minimum nécessaire pour exécuter lnd:

server=1

listen=1

daemon=1

rpcuser=inserer_un_nom_d'usager

rpcpassword=inserer_un_mot_de_passe

zmqpubrawblock=tcp://127.0.0.1:28332

zmqpubrawtx=tcp://127.0.0.1:28333

#Si vous le souhaitez, décommentez ce qui suit, ce sera une installation plus longue et plus lourde, mais rendra lnd plus rapide.

#txindex=1

 

Vous pouvez aussi modifier votre fichier de configuration avec cet outil génial de Jameson Lopp.

https://jlopp.github.io/bitcoin-core-config-generator/

 

vous pouvez alors lancer bitcoind en entrant simplement ceci dans la cli.

$ bitcoind

 

ou pour la version graphique:

$ bitcoin-qt

 

Vous avez maintenant lancé bitcoind et la synchronisation de la blockchain a commencé. Cela peut prendre plusieurs jours, pour vérifier sa progression, entrez cette commande:

$ bitcoin-cli getblockchaininfo

 

Une fois cette étape terminée, vous êtes prêt à passer à LND.

Partie 2 : Installer LND

Cette partie est basée sur le guide d'installation officiel dans le dépôt Github.

https://github.com/lightningnetwork/lnd/blob/master/docs/INSTALL.md

Tout d’abord, installez Git et Make qui seront nécessaires pour installer LND. Ensuite, téléchargez Go en tant que paquet chiffré.

$ sudo apt-get install git make

$ sudo apt-get update

$ wget https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz

$ sha256sum go1.11.5.linux-amd64.tar.gz | awk -F " " '{ print $1 }'

 

La sortie de la dernière commande doit être: "ff54aafedff961eb94792487e827515da683d61a5f9482f668008832631e5d25".

S'il correspond, c'est le bon package et vous pouvez procéder à son installation en le décompressant au préalable.

$ tar -C /usr/local -xzf go1.11.5.linux-amd64.tar.gz

$ export PATH=$PATH:/usr/local/go/bin

 

Ensuite, vous devrez configurer votre environnement $GOPATH dans le répertoire approprié et ajouter $GOPATH/bin à votre PATH. Cela signifie simplement que vous pourrez utiliser lnd et lncli en tant que commandes directes, sans indiquer leur emplacement. Pour éviter de refaire cela à chaque fois que vous ouvrez une fenêtre de terminal, procédez comme suit pour que ce soit de défaut :

$ sudo nano ~/.profile

 

Cela ouvrira le fichier .profile. Ajoutez les lignes suivantes à la fin du fichier et enregistrez-le.

export GOPATH=~/gocode

export PATH=$PATH:$GOPATH/bin

 

Ouvrez une nouvelle fenêtre de terminal afin qu'elle prenne effet et exécutez ces commandes pour installer LND.

$ go get -d github.com/lightningnetwork/lnd

$ cd $GOPATH/src/github.com/lightningnetwork/lnd

$ make && make install

 

Exécutez cette commande pour vous assurer qu'il a été installé correctement.

$ make check

 

vous pouvez ensuite lancer lnd pour vérifier si cela fonctionnerait.

$ lnd

S’il s’agit de la sortie, cela signifie que l’installation ne s’est pas bien déroulée. Vérifiez que vous n'avez pas sauté une étape. Si ce n'est pas le cas et que cela ne fonctionne toujours pas, vous pouvez nous contacter via Twitter pour une réponse rapide ou demander de l'aide pour Slack Channel de LND.

Mais si ce qui suit est la sortie, LND est installée et vous pouvez passer à la partie suivante.

Partie 3 : fichier de configuration LND

Cette étape concerne la modification du fichier de configuration LND en fonction de vos besoins. Tout d’abord, pour créer un fichier de configuration, exécutez cette commande.

$ nano ~/.lnd/lnd.conf

 

Un fichier texte s'ouvrira dans votre terminal. Vous pouvez entrer la configuration souhaitée dans ce fichier. Pour trouver toutes les propriétés potentielles, cliquez ici. Si vous souhaitez rester simple comme je l'ai fait, voici mon fichier de configuration, le premier est nécessaire, la deuxième partie est facultative si vous souhaitez recevoir les transactions entrantes du réseau et la troisième est si vous souhaitez connecter un portefeuille à un autre appareil à LND.

 

#premier

bitcoin.active=1

bitcoin.mainnet=1

bitcoin.node=bitcoind

bitcoind.zmqpubrawblock=tcp://127.0.0.1:28332

bitcoind.zmqpubrawtx=tcp://127.0.0.1:28333

bitcoind.rpcuser=inserer_le_meme_nom_ d'usager_que_dans_la_configuration_bitcoin

bitcoind.rpcpass=inserer_le_meme_mot_ de_passe_que_dans_la_configuration_bitcoin

 

#deuxième

externalip=VOTRE_IP_PUBLIQUE

listen=0.0.0.0:9735

 

#troisième

rpclisten=0.0.0.0:10009

tlsextraip=IP_D'UN_APPAREIL_QUE_VOUS _DESIREZ_CONNECTER_PAR_RPC

 

Enregistrez ce fichier et votre configuration est prête.

Partie 4: Lancer LND

Vous pouvez ensuite lancer lnd de différentes manières. Soit de la manière habituelle, mais vous devrez ouvrir une nouvelle fenêtre de terminal pour utiliser lncli et si vous fermez la première fenêtre de terminal, lnd s’arrête.

$ lnd

 

Soit en arrière-plan, mais une fois que vous fermez le terminal, lnd s'éteindra. vous devez également tail le log file.

$ lnd &

$ tail ~/.lnd/logs/bitcoin/mainnet/lnd.log

 

La dernière option consiste à exécuter lnd en arrière-plan et que cela ne s’arrête pas lorsque vous fermez la fenêtre du terminal, exécutez cette commande si vous le souhaitez.

$ nohup lnd > /dev/null 2> ~/.lnd/err.log &

 

L'une ou l'autre de ces commandes fera lancer lnd pour la première fois, vous devrez donc créer un mot de passe. dans le premier scénario, vous devrez ouvrir un nouveau terminal, dans les deux autres, vous pourrez simplement continuer sur le même terminal. Entrez la commande suivante et suivez les étapes.

$ lncli create

Back up your 24 words seed generated safely. Keep in mind that this is only a backup for your bitcoin main net coins and not your lightning channels. Then unlock your wallet with this command :

$ lncli unlock

 

LND will sync with the network, this might take some time, around half an hour. You can check its state with this command. Once this becomes true, you are synced and ready to proceed.

$ lncli getinfo

Sauvegardez vos 24 mots de semences générés en toute sécurité. N'oubliez pas qu'il ne s'agit que d'une sauvegarde de vos Bitcoin sur le Mainnet, et non de vos canaux Lightning. Puis déverrouillez votre portefeuille avec cette commande:

$ lncli unlock

LND se synchronise avec le réseau, cela peut prendre un certain temps, environ une demi-heure. Vous pouvez vérifier son état avec cette commande. Une fois que cela devient vrai, vous êtes synchronisé et prêt à continuer.

$ lncli getinfo

Partie 5 : configuration réseau et port 

Pour autoriser les connexions entrantes pour votre nœud bitcoin et votre nœud Lightning, vous devez ouvrir les ports 8333 et 9735 et les transférer correctement à vos nœuds respectifs.

Pierre Rochard’s a écrit un article qui devrait répondre à toutes vos questions sur le transfert de port pour Bitcoin et Lightning. https://medium.com/@pierre_rochard/bitcoin-and-lightning-nodes-port-forwarding-faq-f92ca5c50d5d

Cette partie est évidemment facultative, mais si vous décidez de le faire, voici un guide complet à ce sujet.

https://bitcoin.org/en/full-node#network-configuration

Pour vérifier si vos ports sont ouverts, utilisez cet outil simple.

https://www.yougetsignal.com/tools/open-ports/

Partie 6: Déposer des fonds dans le portefeuille BTC

De retour à LND, déposons des fonds dans le portefeuille btc. Vous devez d’abord générer une adresse, il peut s’agir d’un np2wkh ou d’un p2wkh. Ce sont deux adresses segwit, p2wkh étant un segwit natif et np2wkh commence par un 3 et est compatible avec les portefeuilles qui ne supportent pas segwit. Ainsi, si vous vous retirez de la plupart des échanges, vous devrez utiliser une adresse np2wkh car ils ne sont toujours pas compatibles. Alors lancez l’une de ces commandes en fonction de vos besoins:

$ lncli newaddress np2wkh

$ lncli newaddress p2wkh

Il vous suffit de coller l'adresse sur votre autre portefeuille Bitcoin et de choisir le montant souhaité.

Si vous voulez le convertir au format QR CODE, il existe un moyen simple de le faire avec un programme appelé qrencode.

$ sudo apt-get install qrencode

$ qrencode -o qrcodefilename.png ‘ADDRESSE'

 

Remplacez simplement ADDRESSE par votre adresse et remplacez le nom du fichier. Le code QR sera disponible dans le dossier dans lequel vous vous trouvez. Vous pouvez le faire pour à peu près tout le reste, comme une clé publique de noeud, une facture, etc.

Une fois que vous avez effectué la transaction sur votre autre portefeuille, vous pouvez vérifier si les fonds sont disponibles en entrant l’une ou l’autre de ces commandes. Elles se définissent toutes très bien:

$ lncli walletbalance

$ lncli listchaintxns

$ lncli listunspent

 

Une fois la transaction confirmée, vous pouvez ouvrir un canal pour utiliser le réseau Lightning.

Partie 7: Ouvrir un Canal Lightning

Nous avons choisi comme exemple le nœud LightningPowerUsers de Pierre Rochard, car c’est l’un des meilleurs nœuds du réseau.  https://lightningpowerusers.com/home/


Tout d’abord, connectez-vous sur la couche p2p à l’autre nœud en exécutant la commande suivante:

$ lncli connect 0331f80652fb840239df8dc99205792bba2e559a05469915804c08420230e23c7c @74.108.13.152:9735


Vous vous assurez que vous êtes bien connecté en exécutant cette commande:

$ lncli listpeers

 

Ensuite, pour ouvrir un canal avec cet homologue, exécutez cette commande:

$ lncli openchannel --node_key= 03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f --local_amt=10000

 

Vous pouvez vérifier son statut de confirmation en exécutant l’une des commandes suivantes:

$ lncli channelbalance

$ lncli listchannels

 

Une fois que votre transaction reçoit suffisamment de confirmations sur la couche de base, vous êtes enfin prêt à utiliser le réseau Lightning!

Partie 8: Faire une transaction Lightning

Faisons un test avec Lapp Yalls.org, choisissez un article au hasard et sélectionnez Payer pour continuer à lire.

Copiez la demande de paiement et collez-la sur cette commande:

$ lncli sendpayment --pay_req=PASTE_IT_HERE

 

On vous demandera de confirmer, entrez simplement: yes

Voilà, vous avez terminé votre première transaction lightning avec LND!

Partie 9: Recevoir un paiement LN

Pour recevoir un paiement, vous devez avoir un canal entrant ou avoir poussé des fonds de l'autre côté du canal en effectuant un paiement. Tout d’abord, si vous n’avez personne qui crée un canal entrant vers votre nœud, LightningPowerUsers le fera si vous créez un canal sortant vers le nœud d’abord. Pour en savoir plus, consultez le site Web ici.

N'oubliez pas que vous devrez ouvrir et transférer le port 9735 pour que quelqu'un puisse vous créer un canal entrant. Vous pouvez également simplement dépenser de l'argent sur votre canal sortant et cet argent dépensé pourra vous être remboursé par d'autres nœuds pouvant être acheminés vers le vôtre par vos canals sortants.

Pour créer une facture, exécutez cette commande, remplacez 50000 par le nombre de satoshis que vous souhaitez facturer:

$ lncli addinvoice 50000


Pour vérifier que vous avez bien reçu le paiement, exécutez cette commande:

$ lncli listinvoices

 

J'espère que vous avez apprécié ce tutoriel, contactez-nous sur Twitter si vous rencontrez des problèmes et nous vous aiderons dans nos plus grandes capacités.