gallery/coinjoin publisher fr fini- correction
gallery/copy of schnorr signatures fr finale
gallery/freal_schnorr_signatures_applications
gallery/image tutoriel fr

Tutoriel : De zéro à une transaction c-lightning

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 celui de LND, cliquez ici!

 

C-lightning est une implémentation du réseau Lightning principalement écrite en C et le gRPC est réalisé en Python. C'est un projet open-source maintenue par Blockstream. Rusty Russell et Christian Decker sont les principaux développeurs de ce projet, mais il y a beaucoup d'autres contributeurs. Il n’est disponible que sous Linux pour le moment.

Ce sera un tutoriel qui sera un guide étape par étape pour c-lightning.

 

Partie 1 : 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=insert_a_username

rpcpassword=insert_a_password

 

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 à c-lightning.

 

Partie 2: Installation de c-lightning
 

Premièrement, nous devons installer les dépendances, exécuter ces commandes:

 

$ sudo apt-get update
$ sudo apt-get install -y \
 autoconf automake build-essential git libtool libgmp-dev \
 libsqlite3-dev python python3 net-tools zlib1g-dev libsodium\
 libbase58-dev

 

Cela devrait télécharger toutes les dépendances, mais si l’installation de libsodium ne fonctionne pas, voici comment le faire!

 

$ wget "https://download.libsodium.org/libsodium/releases/LATEST.tar.gz"

$ tar -xvf ./LATEST.tar.gz

$ cd libsodium-stable

$ ./configure

$ make && make check

$ sudo make install

 

Maintenant, pour c-lightning, voici les étapes, elles sont très simples.

 

$ git clone https://github.com/ElementsProject/lightning.git

$ cd lightning

$ ./configure

$ make

 

L’installation est terminée et vous êtes prêt à procéder à la création et à la modification du fichier de configuration.

 

Partie 3: Fichier de configuration c-lightning

 

$ ./lightningd/lightningd --network bitcoin --log-level debug &

$ ./cli/lightning-cli help

 

le fichier de configuration se retrouve dans le dossier .lightning sous le nom config.

 

$ nano ~/.lightning/config


Mon fichier de configuration ressemble à ceci, ce qui signifie que le réseau pour c-lightning sera le mainnet du Bitcoin, que le niveau de journalisation imprimer se situe au niveau du débogage, que nous diffusons notre addresse publique au reste du réseau et l'authentification nécessaire pour que c-lightning se branche a bitcoind.

 

network=bitcoin

log-level=debug

addr=0.0.0.0:9735

bitcoin-rpcuser=insert_the_same_username_as_bitcoin_rpc

bitcoin-rpcpassword=insert_the_same_password_as_bitcoin_rpc

 

Sauvegarder et quitter. Vous pouvez ensuite le lancer plus facilement.

 

$ ~/lightning/cli/lightning-cli stop

$ ~/lightning/lightningd/lightningd &

 

Partie 4: ajouter lightningd et lightning-cli à PATH

 

Pour ajouter lightningd et lightning-cli à votre PATH, tapez ces commandes, d’abord pour arrêter lightningd, puis pour accéder au fichier .profile.
 

$ $ ~/lightning/cli/lightning-cli stop

$ nano ~/.profile

 

Ajoutez ensuite ceci au bas du fichier:

 

export PATH=$PATH:~/lightning/lightningd

export PATH=~/lightning/lightnind:$PATH

export PATH=$PATH:~/lightning/cli

export PATH=~/lightning/cli:$PATH

 

Il y a d'autres moyens de le faire, mais cela fonctionnera. Vous devez créer un nouveau terminal pour qu'il prenne effet. Vous pouvez maintenant utiliser lightningd et lightning-cli directement:

 

$ lightningd &

$ lightning-cli getinfo

 

Remarque: si quelque chose comme "Autorisation refusée" ou "Trying to write on Read-mode only" apparaît, cela signifie que vous devez modifier le statut du propriétaire de certains fichiers.

 

$ ls -l ~/.lightning

 

gossip_store, lightning-rpc, lightningd.sqlite3 et hsm_secret apparaîtront probablement comme appartenant à sudo, comme ici.

22 février 2019

gallery/root2
gallery/root
gallery/channels
gallery/screenshot_2019-02-13_21-00-55

Exécutez ces commandes pour changer la propriété de ces fichiers pour obtenir ce résultat.

 

$ sudo chown USERNAME lightningd.sqlite3   

$ sudo chown USERNAME lightning-rpc

$ sudo chown USERNAME gossip_store

$ sudo chown root hsm_secret

J'aimerais également ajouter que la sauvegarde de hsm_secret sauvegardera vos fonds en chaîne. Pour plus d'informations à ce sujet, vous pouvez consulter cette demande de problème sur le référentiel officiel: https://github.com/ElementsProject/lightning/issues/1156

 

Il devrait maintenant vous permettre de l'appeler directement sans utiliser sudo.

 

$ lightningd &

$ lightning-cli getinfo

 

Vous pouvez également lancer lighntingd en mode daemon:

 

$ lightningd --daemon

$ lightning-cli getinfo

 

Partie 5: Configuration du réseau et du 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 et ouvrir un canal

 

Nous sommes maintenant prêts à passer aux commandes lightning-cli. Dans un premier temps, nous devons nous connecter à un autre nœud pour synchroniser le graphe de canal. J’ai choisi le nœud LightningPowerUsers de Pierre Rochard pour se connecter, puis pour ouvrir un canal car je le considère comme l’un des meilleurs nœuds du réseau:

 

$ lightning-cli connect 0331f80652fb840239df8dc99205792bba2e559a05469915804c08420230e23c7c@ 74.108.13.152:9735

 

La synchronisation est automatique et prendra probablement quelques minutes. Il est maintenant temps de générer une adresse bitcoin pour recevoir des fonds en chaîne.

 

$ lightning-cli newaddr

 

La commande précédente renverra une adresse bc1 native segwit. Si vous avez besoin d'une adresse segwit p2sh qui commence dans un 3 et qui est compatible avec les portefeuilles ou les échanges non segwit, exécutez cette commande à la place.

 

$ lightning-cli newaddr p2sh-segwit

 

Faites la transaction en envoyant des bitcoins à l'adresse #reckless, mais gardez toujours à l'esprit que ce logiciel est toujours en phase bêta, donc expérimentale. Exécutez cette commande pour vérifier si le bitcoin a bien été reçu.

 

$ lightning-cli listfunds

 

Une fois la transaction confirmée, il est maintenant temps d’ouvrir un canal pour accéder au réseau Lightning en exécutant cette commande.

 

$ lightning-cli fundchannel 0331f80652fb840239df8dc99205792bba2e559a05469915804c08420230e23c7c amount_in_satoshis

 

La transaction de financement nécessite trois confirmations pour que la chaîne soit disponible, donc cela prendra environ une demi-heure. Une fois la confirmation effectuée, vous pourrez trouver le canal en exécutant la commande suivante:

 

$ lightning-cli listchannels | grep ‘your_node_pubkey’

Une fois que votre canal apparaît en exécutant la commande précédente, vous êtes maintenant prêt à effectuer une transaction sur le réseau Lightning!

 

Partie 7: Effectuer et recevoir une transaction

 

Je teste habituellement mon noeud en effectuant un micro-paiement à yalls.org pour lire un article qui m'intéresse. Cliquez sur un article qui vous intéresse et ensuite sur "Pay to Continue Reading".

 

C'est la commande pour payer une facture. Évidemment, modifiez la dernière partie de l'identifiant de demande de paiement de la facture que vous souhaitez payer.

 

$ lightning-cli pay lnbc1500n1pwfja4pp5xmw9m37spxhlppmd4y……………

 

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 votre port 9735 doit être ouvert et transféré. Mais vous pouvez aussi 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.


C'est la commande pour créer une facture, cela créera une facture pour 50000000 msatoshi ou 0,0005 btc avec le label: reckless et la description: craig_wright_est_un_fraudeur.

 

$ lightning-cli invoice 50000000 reckless craig_wright_est_un_fraudeur

 

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.