Tutoriel : installer un noeud Bitcoin + Lightning Network

4
10562

Dans ce tutoriel nous allons installer un noeud Bitcoin ainsi qu’Eclair, l’implémentation du Lightning Network de la société française Acinq.

1. Choix du matériel – Installation du système d’exploitation

Si votre objectif est une utilisation personnelle, un pc classique, voir même un Raspberry Pi, feront l’affaire. Pour que votre node devienne un relai conséquent du réseau, la location d’un serveur dédié est recommandée.

En avril 2020, la blockchain et les index nécessaires pour Eclair occupent 318 Go, un stockage de 1 To est donc recommandé, mais 500 Go peuvent être encore suffisants.

Commençons par installer Ubuntu, une distribution Linux des plus utilisées. Pour un PC personnel, une solution simple est de flasher ubuntu sur une clé usb, puis de démarrer votre PC sur cette clé :

  • Allez sur le site officiel d’Ubuntu et téléchargez la version LTS la plus récente. La 18.04 à l’écriture de cet article.
  • Téléchargez balena etcher.
  • Lancez balena etchez puis sélectionnez l’iso d’Ubuntu téléchargée précédemment ainsi que la clé usb, puis flashez-la.

Une fois la clé flashée, branchez-la et démarrez le PC sur celle-ci, puis suivez le processus d’installation d’Ubuntu.

2. Installation d’un noeud complet (full node)

On retrousse nos manches, et c’est parti !

Commençez par mettre à jour tous les paquets d’Ubuntu :
sudo apt update && sudo apt upgrade
Ensuite ajoutez un nouvel utilisateur, sur lequel nous ferons tourner notre noeud :
sudo adduser bitcoin
Entrez un password et laissez les autres champs demandés vides.

C’est le moment d’installer Bitcoin Core, pour cela allez sur bitcoin.org rubrique « Télécharger » et téléchargez la version « Linux (tgz) », placez le fichier à la racine ~.

Pour nous protéger d’une attaque potentielle, nous allons vérifier que le fichier téléchargé est le bon. C’est une habitude à prendre, surtout sur un matériel qui manipule des données importantes comme du Bitcoin. Pour cela téléchargez le fichier SHA256SUMS.asc en cliquant sur le lien « vérifier les signatures de version ». Ouvrez ensuite un Terminal, allez dans le répertoire ou se trouve les fichiers téléchargés et tapez la commande : sha256sum bitcoin-0.19.1-x86_64-linux-gnu.tar.gz Vérifiez que le résultat retourné correspond à la bonne entrée dans le fichier SHA256SUMS.asc.

Le fichier n’étant pas corrompu, décompressez-le :
tar -xvf bitcoin-0.19.1-x86_64-linux-gnu.tar.gz
Puis installez bitcoin core :
sudo install -m 0755 -o root -g root -t /usr/local/bin/ bitcoin-0.19.1/bin/*

Connectez vous maintenant en tant que l’utilisateur bitcoin, celui qui va faire tourner le noeud, en tapant :
su – bitcoin

Vérifiez que l’installation s’est bien effectuée, la commande suivante doit retourner la version installée :
bitcoind –version

Ensuite, avant de lancer Bitcoin Core, il faut créer le fichier de configuration, pour cela tapez la commande :
nano ~/.bitcoin/bitcoin.conf

Puis collez le texte suivant dans le fichier :

#datadir=/data # Si vous avez plusieurs disques 
et/ou que vous voulez mettre les data dans un autre répertoire
daemon=1
server=1
# Txindex necessaire pour Eclair
txindex=1
rpcuser=mybitcoinnode
# Mettez un password fort ici
rpcpassword=password
zmqpubrawblock=tcp://127.0.0.1:29000
zmqpubrawtx=tcp://127.0.0.1:29000

Configurons maintenant un service pour bitcoind, afin de le faire tourner en tâche de fond.
Pour cela retournez sur votre compte administrateur (le compté créé à l’installation d’Ubuntu) :
su – MainUser
Créez le fichier bitcoind.service :
sudo nano /etc/systemd/system/bitcoind.service
Collez la configuration suivante :

[Unit]
Description=Bitcoin daemon
After=network.target

[Service]
User=bitcoin
Group=bitcoin
Type=forking
PIDFile=/home/bitcoin/.bitcoin/bitcoind.pid
ExecStart=/usr/local/bin/bitcoind -pid=/home/bitcoin/.bitcoin/bitcoind.pid
KillMode=process
Restart=always
TimeoutSec=120
RestartSec=30

[Install]
WantedBy=multi-user.target

Ensuite démarrez le service :
systemctl daemon-reload
systemctl start bitcoind.service

Et vérifier s’il est bien lancé :
systemctl status bitcoind.service

Le service bitcoind tourne maintenant en tâche de fond, et se lancera automatiquement quand vous démarrez l’ordinateur.

Pour voir l’avancement de la synchronisation de la blockchain :
su – bitcoin
bitcoin-cli getblockchaininfo

Le champ « blocks » indique le dernier block téléchargé.

Il faudra probablement plusieurs jours à votre PC pour se synchroniser (une demi-journée pour un bon serveur dédié).

3. Configuration réseau

Si vous êtes chez vous, il est très probable que votre routeur (votre box) réalise du NAT, il faut donc que vous configurer du port forwarding pour le bon fonctionnement d’Eclair. N’ayez pas peur, cela vous occupera pendant que votre PC rapatrie plus de 11ans de transactions 😉

Cela n’est pas très compliqué, mais le procédé est différent selon votre routeur / opérateur. Faites une recherche internet : « configurer redirection de port [votreOperateur/box] ». Vous trouverez facilement des tutoriaux.

Dans notre cas, il va falloir rediriger le port 9735, avec le protocole TCP, depuis l’IP de votre box, jusqu’à l’IP de votre PC.

4. Installation d’éclair

Connectez-vous en administrateur :
su – MainUser

Installez les paquets suivants, nécessaires pour la suite :
sudo apt-get install jq && sudo apt-get install curl && sudo apt-get install openjdk-11-jdk && sudo -apt-get install unzip


Téléchargez la dernière version d’eclair sur le github: https://github.com/ACINQ/eclair/releases

Puis dézipez le fichier :
unzip eclair-node-0.3.4-24aa710-bin.zip
Installez ensuite eclair :
sudo install -m 0755 -o root -g root -t /usr/local/bin/ eclair-node-0.3.4-24aa710/bin/*
sudo install -m 0755 -o root -g root -t /usr/local/lib/ eclair-node-0.3.4-24aa710/lib/*


Connectez-vous en tant que bitcoin :
su – bitcoin

Ensuite, avant de lancer Eclair, il faut créer le fichier de configuration, pour cela tapez la commande :
nano ~/.eclair/eclair.conf

Puis collez le texte suivant dans le fichier (en changeant certains paramètres) :

eclair.server.port=9735
eclair.server.public-ips=["xx.xx.xx.xx"]
eclair.bitcoind.rpcuser=mybitcoinnode
eclair.bitcoind.rpcpassword=password
eclair.bitcoind.zmqblock="tcp://127.0.0.1:29000"
eclair.bitcoind.zmqtx="tcp://127.0.0.1:29000"
eclair.node-alias=NomPublicDeVotreNode
eclair.node-color=68f442
eclair.api.enabled=true
eclair.api.password=UnPasswordFort

Connectez-vous maintenant en tant qu’administrateur :
su – MainUser

Créez le fichier eclair.service :
sudo nano /etc/systemd/system/eclair.service

Collez-y la configuration suivante :

[Unit]
Description=Eclair Lightning Node
Requires=bitcoind.service
After=bitcoind.service

[Service]
User=bitcoin
Group=bitcoin
Type=simple
ExecStart=/bin/bash /usr/local/bin/eclair-node.sh
RestartSec=60

[Install]
WantedBy=multi-user.target

Ensuite démarrez le service :
systemctl daemon-reload
systemctl start eclair.service

Et vérifier s’il est bien lancé :
systemctl status eclair.service

Voila votre noeud Lightning est opérationnel !

Pour pouvoir interroger simplement le noeud, configurez maintenant eclair-cli :
sudo nano /usr/local/bin/eclair-cli
Editez la ligne contenant « api-password » en enlevant le # du début et en mettant le même password que dans le fichier eclair.conf à la ligne eclair.api.password.

Voilà vous pouvez maintenant utiliser eclair-cli :
su – bitcoin
eclair-cli getinfo

5. Alimenter son noeud et créer son premier channel

Votre noeud est opérationnel, mais il n’est pas encore connu du réseau, et ne peut relayer aucune transaction, car aucun channel n’a été créé. Mais avant de créer votre premier channel il va falloir envoyer des bitcoins sur votre wallet Bitcoin core :

Encryptez votre wallet :
  bitcoin-cli -stdin encryptwallet [strongPassword]
Backupez votre wallet :
  bitcoin-cli backupwallet ~/walletbackup.dat
Générez une nouvelle addresse :
  bitcoin-cli -named getnewaddress address_type=bech32

Envoyer maintenant des fonds sur cette adresse.

Le fonctionnement de Lightning Network et la création de channels pourrait nécessiter plusieurs articles à part entière. Nous allons nous limiter à un exemple de création de channel, avec le noeud Lightning de bitcoin.fr bien sûr 🙂
Pour cela récupérons d’abord les informations sur ce noeud sur le site 1ml : https://1ml.com/node/028331898ddfd97c3579f313458c26f495cfc0c0e1dc762b710a5c4f82192a16b1

Commencez par déverrouiller votre wallet :
bitcoin-cli walletpassphrase [password] 600
Ensuite connectez vous à bitcoin.fr
eclair-cli connect —uri=028331898ddfd97c3579f313458c26f495cfc0c0e1dc762b710a5c4f82192a16b1@51.15.21.116:9735
Et maintenant ouvrez un channel, de 1 millions de satoshis (0,01BTC) :
eclair-cli open –nodeId=028331898ddfd97c3579f313458c26f495cfc0c0e1dc762b710a5c4f82192a16b1 –fundingSatoshis=1000000

Attendez maintenant 6 blocs et vous devriez voir votre noeud sur les explorers, tel que https://1ml.com et https://explorer.acinq.co

Des idées pour votre 1er paiement lightning :
– Achetez vous un pixel sur https://satoshis.place
– Envoyez un tip à bitcoin.fr : https://tippin.me/@bitcoinpointfr
– Nourrissez des poulets en direct : https://pollofeed.com

Annexes : Cheat Sheet

Ci-dessous, quelques commandes utiles pour la configuration et l’utilisation de votre node fraichement installé.

### Info du noeud BTC core
bitcoin-cli -getinfo
bitcoin-cli getwalletinfo
bitcoin-cli getblockchaininfo
bitcoin-cli getnetworkinfo

### Info du noeud eclair
L'api complète d'eclair : https://acinq.github.io/eclair/#introduction
eclair-cli getinfo
# La liste de tous les channels
eclair-cli channels
# Les transactions relayees
eclair-cli audit
# Info simples des channels ouverts
eclair-cli channelstats
eclair-cli usablebalances

### Ouvrir un channel
bitcoin-cli walletpassphrase [password] 600
eclair-cli connect --uri=xxxxx@xx.xx.xx.xx:9735
eclair-cli open --nodeId=xxxxx --fundingSatoshis=1000000

### Faire des paiements lightning
eclair-cli payinvoice --invoice=
eclair-cli createinvoice --amountMsat=10000 --description="Test invoice"

### Mettre à jour les channels
eclair-cli updaterelayfee --channelId=xxxxx --feeBaseMsat=50 --feeProportionalMillionths=10

### Redemarrer les services si besoin
systemctl status bitcoind.service
systemctl stop bitcoind.service
systemctl daemon-reload && systemctl start bitcoind.service

systemctl status eclair.service
systemctl stop eclair.service
syssystemctl daemon-reloadt && systemctl start eclair.service

A propos de l’auteur

Trigger, développeur multitâche et bitcoiner maximaliste.
Twitter : @Trigger_jw