Installation d’un noeud complet Bitcoin sur un Raspberry PI 4

Voici ce que vous trouverez dans cet article

Prérequis

Avant de commencer, voici ce dont vous aurez besoin :

  • Raspberry Pi 4 (modèle B / 8 Go recommandé)
  • Carte microSD d'au moins 16 Go
  • Un SSD externe d’un minimum 1 TO
  • Alimentation officielle pour le Raspberry Pi
  • Clavier et écran (ou un ordinateur distant avec SSH)

Assurez-vous d'avoir tous les éléments nécessaires avant de commencer.

Étape 1 : Préparation du Raspberry Pi

  1. Téléchargez le système d'exploitation Raspberry Pi OS Lite : raspberrypi.com/software/operating-systems

  2. Utilisez par exemple Raspberry Pi Imager pour installer et pré configurer Raspberry Pi OS Lite sur la carte microSD.

  3. Insérez la carte microSD dans le Raspberry Pi.

  4. Connectez le Raspberry Pi à un écran à l'aide d'un câble HDMI, branchez un clavier, insérez la carte microSD, puis connectez l'alimentation pour démarrer le Raspberry Pi.

  5. Suivez les instructions à l'écran pour configurer Raspberry Pi OS Lite.

  6. Activer SSH pour pouvoir vous connecter à distance au Raspberry Pi

    	sudo systemctl enable ssh
    	sudo systemctl start ssh
    

Étape 2 : Installation des dépendances

Maintenant que le Raspberry Pi est prêt, nous allons installer les dépendances nécessaires à l'exécution de Bitcoin Core.

  1. Connectéz vous en SSH au Raspberry Pi : ssh utilisatuer@ip_raspberry_pi

  2. Mettez à jour le système d'exploitation en exécutant les commandes suivantes :

    sudo apt-get update
    sudo apt-get upgrade
    
  3. Installez les dépendances requises :

    sudo apt-get install vim build-essential autoconf libssl-dev libboost-dev libboost-chrono-dev libboost-filesystem-dev libboost-program-options-dev libboost-system-dev libboost-test-dev libboost-thread-dev libevent-dev libtool pkg-config
    

Étape 3 : Configuration du disque de stockage

Formater le SSD au format exFat avant de le brancher au Rasperry PI.

  1. Installez les driver exFat

     sudo apt install exfat-fuse
    
  2. Brancher le disque dur au Raspberry Pi et chercher son point de montage

     sudo blkid
    

    Il devrait être normalement /dev/sda2 (ou /dev/sda1)

  3. Créez le point de montage

     sudo mkdir /mnt/bitcoin
    
  4. Montez le disque

     sudo mount /dev/sda2 /mnt/bitcoin
    
  5. Vérifiez le montage

    df -h
    

    Le disque dur externe devrait apparaître dans la liste monté dans le point de montage créé.

    Filesystem      Size  Used Avail Use% Mounted on
    ...
    /dev/sda2       1.9T  320M  1.9T   1% /mnt/bitcoin
    ...
    
  6. Configurez le montage automatique

    Nous allons configurez le montage automatique du disque dur externe au démarrage du Raspberry PI.

    1. Trouver le PARTUUID (Identifiant unique attribué à une partition sur un disque dur ou un périphérique de stockage).
    sudo blkid
    
    1. Editez le fichier fstab
     vim /etc/fstab
    
    1. Ajoutez la ligne suivante
    PARTUUID=<partuuid> /mnt/bitcoin exfat defaults,auto,users,rw,nofail 0 0
    
    1. Sauvegardez et quittez.
  7. Re démarrer votre Raspberry Pi afin de tester le montage.

Étape 4 : Téléchargement et installation de Bitcoin Core

Maintenant que les dépendances sont installées, nous pouvons procéder à la compilation et à l'installation de Bitcoin Core.

  1. Téléchargez la dernière version de Bitcoin Core à partir du site officiel : bitcoincore.org/bin

    wget https://bitcoincore.org/bin/bitcoin-core-VERSION/bitcoin-VERSION-arm-linux-gnueabihf.tar.gz
    

    Assurez-vous de remplacer VERSION par la version la plus récente de Bitcoin Core.

  2. Extrayez les fichiers de l'archive téléchargée

    tar -xvf bitcoin-VERSION.tar.gz
    
  3. Installez bitcoind:

    sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-VERSION/bin/*
    

Étape 5 : Le daemon bitcoind

Après avoir préparé le disque dur externe et installé bitcoind, vous êtes maintenant prêt à mettre en marche le daemon bitcoind. Pour cela, exécutez la commande ci-dessous, qui initiera le daemon tout en spécifiant le disque dur externe comme répertoire de stockage des données.

  1. Démarrez Bitcoin Core

    Exécuter la commande suivante :

     bitcoind -daemon --datadir=/mnt/bitcoin
    

    Si tout est ok, le message suivant devrait être affiché

    Bitcoin Core starting
    
  2. Redémarrer le daemon bitcoind au démarrage du Raspberry PI

    Pour démarrer le processus automatiquement, éditez la crontab

     crontab -e
    

    Et ajouter la ligne suivante :

     @reboot /usr/local/bin/bitcoind -daemon --datadir=/mnt/bitcoin
    

    Sauvegardez et quitter.

Étape 6 : La commande bitcoin-cli

bitcoin-cli est un utilitaire en ligne de commande qui permet d'interagir avec votre noeud Bitcoin.

Le daemon utilisant un répertoire de donnée personnalisé. Il faudrait le spécifier à chaque utilisation de la commande.

Pour simplifier l’utilisation, nous allons créer un alias.

  1. Editer le fichier ~/.bashrc

    vim ~/.bashrc
    
  2. Ajouter la ligne suivante :

    alias bitcoin-cli='bitcoin-cli -datadir=/mnt/bitcoin'
    

    Sauvegardez et quittez.

  3. Recharger le fichier

    source ~/.bashrc
    

Étape 7 : Tester l’accessibilité de votre noeud

Si vous utilisez votre propre noeud pour contribuer au réseau Bitcoin, il est essentiel de vous assurer qu’il accepte les connexions entrantes.

Pour vérifier cela, vous pouvez effectuer un test grâce au site web : bitnodes.io/#join-the-network

Sur cette page, saisissez votre adresse IP et le port (Par défaut 8333).

Cela permettra de vérifier la disponibilité et la connectivité de votre nœud avec le reste du réseau Bitcoin.

Attention : il vous faudra sûrement ouvrir le port dans l’interface d’administration de votre box / routeur afin d’accepter les connexion entrante.

Commandes utiles

Connaitre l'état de synchronisation de votre noeud avec le réseau

bitcoin-cli getblockchaininfo

Tant que initialblockdownload est à true, votre noeud n'a pas fini de se synchroniser.

{
  "chain": "main",
  "blocks": 799412,
  "headers": 799412,
  "bestblockhash": "00000000000000000000b9e5f6ec3c4bfa68c5b1adefb98c5bbee93f3ab2920e",
  "difficulty": 53911173001054.59,
  "time": 1689780342,
  "mediantime": 1689777035,
  "verificationprogress": 0.9999920218746856,
  "initialblockdownload": true,
  "chainwork": "00000000000000000000000000000000000000004f57bb7ccfe9f3887fc18419",
  "size_on_disk": 564129643755,
  "pruned": false,
  "warnings": ""
}

Informations de la blockchain Bitcoin

  • "chain": Le nom de la blockchain actuelle. Dans ce cas, il s'agit de la blockchain principale (main).

  • "blocks": Le nombre de blocs dans la blockchain.

  • "headers": Le nombre de blocs dont les en-têtes ont été validés. Dans ce cas, les en-têtes de tous les blocs ont été validés.

  • "bestblockhash": Le hash du bloc le plus récent de la blockchain.

  • "difficulty": La difficulté actuelle de minage d'un bloc.

  • "time": Le timestamp actuel.

  • "mediantime": Le timestamp médian des blocs les plus récents. Cela peut être utile pour estimer le temps actuel sur le réseau Bitcoin.

  • "verificationprogress": La proportion de la blockchain qui a été vérifiée par le noeud. Dans ce cas, 99.99% de la blockchain a été vérifiée.

  • "initialblockdownload": Indique si le neuud est en train de télécharger la blockchain. Dans ce cas, le nœud est en train de télécharger la blockchain.

  • "chainwork": La quantité de travail nécessaire pour miner tous les blocs de la blockchain.

  • "size_on_disk": La taille de la blockchain sur le disque dur, en octets.

  • "pruned": Indique si la blockchain a été réduite sur le noeud. Dans ce cas, la blockchain est complète.

  • "warnings": Une liste d'avertissements concernant l'état de la blockchain ou du noeud.