Bitcoin / Installation d'un nœud Lightning sur Raspberry Pi 1

|

Cette procédure a été réalisée sur un Raspberry Pi 1 Modele B+ tournant sous Raspian stretch lite.

Ce Raspberry est doté d’un CPU mono-cœur cadencé à 700 MHz, et de 512 Mo de RAM.

Il s’agit plus ici de s’amuser que d’obtenir un nœud Lightning fonctionnel ; nous sommes aux limites de ce que peut supporter un machine aussi modeste.

La blockchain a été au préalable téléchargée depuis une autre machine, puis mise à disposition du Raspberry via un partage NFS.

Prérequis

Augmentation de la swap à 1 Go via /etc/dphys-swapfile :

CONF_SWAPSIZE=1000

Prise en compte du changement :

sudo /etc/init.d/dphys-swapfile restart

Allocation de mémoire GPU au minimum via /boot/config.txt :

gpu_mem=16

Installation de Go et git :

sudo apt-get install git
wget https://storage.googleapis.com/golang/go1.8.linux-armv6l.tar.gz
sudo tar -C /usr/local -xzf go1.8.linux-armv6l.tar.gz

Mise à jour du PATH :

echo 'export PATH=$PATH:/usr/local/go/bin' >> $HOME/.profile
export PATH=$PATH:/usr/local/go/bin
echo 'export GOPATH=~/gocode' >> $HOME/.profile
export GOPATH=~/gocode
echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.profile
export PATH=$PATH:$GOPATH/bin

Installation de Glide :

go get -u github.com/Masterminds/glide

Installation de lnd

git clone https://github.com/lightningnetwork/lnd $GOPATH/src/github.com/lightningnetwork/lnd
cd $GOPATH/src/github.com/lightningnetwork/lnd
glide install
go install . ./cmd/...

Ca va prendre un bon bout de temps…

Installation de btcd

git clone https://github.com/roasbeef/btcd $GOPATH/src/github.com/roasbeef/btcd
cd $GOPATH/src/github.com/roasbeef/btcd
glide install
go install . ./cmd/...

Là aussi, il faudra être patient…

Démarrage de btcd

btcd --testnet --txindex --rpcuser=mon_login --rpcpass=mon_password

Le démarrage va être très long. Dans mon cas, cela a pris trois heures :

2018-01-03 01:54:46.270 [INF] CHAN: Loading block index.  This might take a while...
2018-01-03 05:01:28.493 [WRN] CHAN: Unknown new rules activated (bit 1)

Création d’un fichier ~/.lnd/lnd.conf

Cela simplifiera le lancement le lnd :

[Application Options]
debuglevel=info
debughtlc=true
maxpendingchannels=10
externalip=<mon_ip_externe>
peerport=9735

[Bitcoin]
bitcoin.active=1
bitcoin.rpcuser=mon_login
bitcoin.rpcpass=mon_password

On doit d’assurer que le port 9735 est bien accessible depuis internet (redirection de port à mettre en place si nécessaire).

Lancement de lnd

lnd --bitcoin.active --bitcoin.testnet

Il lui faudra un petit bout de temps pour réussir à se caler avec btcd.

Création d’un wallet Bitcoin

lncli create
Input wallet password:
Confirm wallet password:

On doit choisir un mot de passe.

Durant mes multiples essais, j’ai obtenu à plusieurs reprises une erreur out of memory à ce moment précis. L’augmentation de la swap (détaillée en début d’article) a corrigé le problème. Avec un Pi doté d’un Go de RAM, il n’y a sans doute pas de problème.

Si on relance lnd par la suite, il faudra déverrouiller le wallet via :

lncli unlock

Génération d’une adresse Bitcoin

lncli newaddress np2wkh

Bien noter cette adresse car elle ne sera pas affichée ultérieurement.

Alimenter l’adresse en tBTC (testnet bitcoins)

Via ce faucet par exemple : https://testnet.manu.backend.hamburg/faucet

Connexion à un autre nœud

On peut trouver des adresses de nœuds sur https://explorer.acinq.co

lncli connect 03f113414ebdc6c1fb0f33c99cd5a1d09dd79e7fdf2468cf1fe1af6674361695d2@51.15.213.104:9735

BTCD + LND sur Pi1