Installer le client Chia officiel

Chia: qu'est ce que c'est ?

Pour une brève explication du ce protocole, référez vous à l'article suivant.

Installation du client officiel

Prérequis

Pour installer le client officiel, il faut au préalable préparer son ordinateur. Je présente ici un tutoriel pour Linux, en ligne de commande. Celui-ci devrait donc fonctionner sur un PC (type x86/AMD64) ou un SBC (type Raspberry Pi ou Orange PI. Vous trouverez probablement des tutoriels utilisant l'interface graphique, mais ce n'est absolument pas nécessaire (et vous le comprendrez volontiers, un GPU est une place perdue pour du stokage et une consommation électrique inutile).

Je ne présente pas l'installation de linux, mais j'ai basé ce tutoriel sur une distribution à base d'APT (type Debian ou Ubuntu).

Installation

Une fois l'ordinateur installé et l'accès à une console fonctionnel (type SSH ou via un terminal), il faut:

1. Mettre à jour le système

$ sudo apt-get update
$ sudo apt-get upgrade -y

2. Installer les dépendances et le code source de la blockchain

$ sudo apt install git -y
$ cd && git clone https://github.com/Chia-Network/chia-blockchain.git -b latest --recurse-submodules

3. Installer la blockchain (et les dépendances Python)

$ cd chia-blockchain
$ bash install.sh

4. Entrer dans l'environnement virtuel python du client

$ . ./activate

À faire à chaque fois lorsque vous ouvrez une console pour avoir accès à la commande chia ci-dessous.

5. Créer ses clés du portefeuille (à faire une seule fois)

$ chia init
$ chia keys generate
$ chia keys show --show-mnemonic-seed

Copier ces informations dans un fichier sécurisé. Ces 24 mots protègent et identifient votre portefeuille. Les perdre, c'est perdre votre argent. Garder aussi les addresses (très importantes pour recevoir et envoyer des fonds).

6. Démarrer les services

$ chia start -d farmer

(et chia stop -d all pour les arrêter.

7. Commencer à planter

Personnellement, j'utilise la commande suivante:

$ chia plots create -k 32 -n 33 -t /chia/plot0/ -d /chia/farm

Il faut expliquer les arguments ici:

  1. k 32 C'est la taille du plot. Actuellement les plots de taille 32 sont utilisés (ça correspond à environ 100GB), mais vous pouvez aussi utiliser k 33 (qui génèrera des plots plus grands, c'est utile pour remplir un disque lorsque 2 plots de 100GB ne rentreraient plus, vous le remplacez par un plot de 150GB)
  2. n 33 C'est le nombre de plot à fabriquer. La commande est séquentielle, il ne s'attaquera au plot 2 qu'après avoir fini le plot 1. En gros, vous diviser la taille de vos disques de farm par 110GB et c'est ce que vous indiquez ici
  3. t /chemin/ C'est l'endroit où fabriquer le plot. Typiquement, l'endroit où vous avez monté votre disque SSD.
  4. d /chemin/ C'est l'endroit où vous stockez vos plots (votre ferme).

8. Surveiller l'état du logiciel

Lors du premier lancement, le système doit se synchroniser avec la blockchain, ce qui est assez lent (compter 2 jours environ, à la date d'écriture de cet article). Vous pouvez surveiller son état via la commande:

$ chia show -c -s

Qui doit vous retourner quelque chose dans ce genre:

Current Blockchain Status: Full Node Synced

Peak: Hash: 1cef650b28632ebca0dd124e15402c09ed30f87fc5371b73565575fbe2e493e1
      Time: Tue Jun 08 2021 17:00:12 CEST                  Height:     402467

Estimated network space: 20.132 EiB
Current difficulty: 1448
Current VDF sub_slot_iters: 118489088
Total iterations since the start of the blockchain: 1317929356460

  Height: |   Hash:
   402467 | 1cef650b28632ebca0dd124e15402c09ed30f87fc5371b73565575fbe2e493e1
   402466 | 337b5ad992c3b8e8cbfb7c1a68b4a68d63f68ae8bebfccd7841f51e12bf1d4d9
   402465 | 56ba7d3f53784a7145596fc77150acb38d638e59387d33dc8acb2ae708dcc762
   402464 | 74cb10bf0a4e71fd9e6736c5203a75253d548dfe2f2edda3a3add008c95adb9a
   402463 | ca3baba9caed4c2d3815b1169497818d1824869beb49860f0d35367894ce30ee
   402462 | 5d898ca033162b9ef96032e5e59185b8653093ae2ba2878bd5d8eae91c1dfacd
   402461 | 0c5a5a875d1edfb5cc889c884fb6eb42a0b96bd8662a8b5ad9a45d3ecf5b51e1
   402460 | d4fffc9697b2dd768251bb4fc67d3dd3f7ccc6ff3b93b21c1e6f4fec6d36db26
   402459 | 7889774e3297a783c1ccda277234597387eda5c38005c3e7883ef9b19e92c558
   402458 | ca2f1354fba1b51d33c4928e1fb6324d275ac0c730151399821db0b32b21f0b4

Connections:
Type      IP                                     Ports       NodeID      Last Connect      MiB Up|Dwn
WALLET    127.0.0.1                              39336/8449  f4155955... Jun 08 17:01:06     18.5|0.1
FULL_NODE 94.112.245.173                          8444/8444  18e44ca4... Jun 08 17:01:06      0.1|40.1
                                                 -SB Height:   402467    -Hash: 1cef650b...
FULL_NODE 217.165.112.142                        49859/8444  aead4176... Jun 08 17:01:06      0.2|1.6
                                                 -SB Height:   402467    -Hash: 1cef650b...
FULL_NODE 146.0.42.46                             8444/8444  51ce3b10... Jun 08 17:01:05      0.0|1.7
                                                 -SB Height:   402467    -Hash: 1cef650b...
FULL_NODE 61.187.188.242                          8444/8444  8b64aad1... Jun 08 17:01:04      0.1|0.0
                                                 -SB Height:        0    -Hash:  Info...
FULL_NODE 112.235.236.17                          8444/8444  5305cc75... Jun 08 16:50:43      0.0|0.0
                                                 -SB Height:   400140    -Hash: ff6631e3...
FULL_NODE 184.147.5.110                           8444/8444  43810a21... Jun 08 17:01:03      0.1|1.2
                                                 -SB Height:   402454    -Hash: ce409720...
FULL_NODE 24.159.43.190                           8444/8444  1e978922... Jun 08 17:01:06      0.0|1.6
                                                 -SB Height:   402467    -Hash: 1cef650b...
FULL_NODE 84.32.165.67                            8444/8444  cb07e3d8... Jun 08 16:50:43      0.0|0.0
                                                 -SB Height:   401126    -Hash: 5ad7364b...
FULL_NODE 119.36.140.69                           8444/8444  e4b64e42... Jun 08 16:34:47      0.0|0.0
                                                 -SB Height:   400788    -Hash: fe51c2f1...

Si vous êtes synchronisé (comme dans l'exemple ci dessus), le status est Full Node Synced, sinon, il vous liste le bloc le plus haut de la chaîne (il faut donc patienter jusqu'à ce qu'il ait téléchargé et vérifié la chaîne jusqu'à ce block).

Pour savoir le status de votre ferme, c'est la commande suivante:

$ chia farm summary

qui retourne:

Farming status: Farming
Total chia farmed: 0.0
User transaction fees: 0.0
Block rewards: 0.0
Last height farmed: 0
Plot count: 1
Total size of plots: 104.120 GiB
Estimated network space: 19.279 PiB
Expected time to win: 96 years

Quelques astuces utiles

Ne pas perdre ses plots

Sous Linux en général, une commande qui dure longtemps s'arrêtera lorsque le terminal qui l'a lancé se coupe. Pour éviter cela, il faut soit démoniser la commande (c'est à dire, couper les liens avec le terminal et l'attacher au processus d'init du système), soit la faire tourner dans un terminal virtuel.

Dans le premier cas, vous ajoutez nohup devant votre commande (et & à la fin pour avoir la main sur le terminal). La sortie terminal de la commande va être sauvegardée dans un fichier de log (par défaut nohup.out).

Dans le deuxième cas, vous devez utiliser un utilitaire comme screen ou tmux. Chaque utilitaire a ses affictionados, personnellement, j'utilise screen.

Avec screen, la commande d'échappement est Ctrl+A, vous commencer un terminal virtual avec un screen -a et vous rattachez à un terminal existant avec screen -r. Vous listerez les terminaux avec screen -list. Pour scroller dans le terminal virtuel, il faut presser Ctrl+A puis Esc (ensuite, utiliser les flèches du clavier) puis Esc Esc (2 fois donc) pour revenir à la version live.

Points de montages

Bien que chia soit assez souple pour préciser l'endroit où se trouve vos fermes, cela implique de modifier la configuration du client chia à chaque fois que vous faîtes une modification, d'arrêter le client (via chia stop -d all) et de le relancer. Sous linux, il est bien plus pratique de profiter d'un point de montage virtuel pour vos fermes. Ce point de montage fusionnera les points de montages individuels de vos disques en un répertoire unique où tous les fichiers seront mélangés.

Pour cela, je vous recommande d'utiliser mergerfs qui est un système de fichier virtuel de type Fuse simple à utiliser et efficace. Ils fournissent même des paquets dpkg pour debian tout compilés ici, prenez celui qui correspond à votre distribution.

Vous monterez ensuite vos disques de fermage dans un répertoire spécifique à chaque disque (j'ai choisi /chia/farmX avec X étant le numéro du disque). Puis je demande à mergerfs de présenter un point de montage virtuel sur /chia/farm en ajoutant cette ligne dans mon fichier /etc/fstab:

/chia/farm[0-9]* /chia/farm                           fuse.mergerfs  allow_other,use_ino,cache.files=partial,dropcacheonclose=true,category.create=mfs 0 0

(Puis, à faire une fois: sudo mount /chia/farm)

Lorsque vous ajoutez un disque, vous pouvez lancer la commande suivante:

$ sudo umount -l /chia/farm
$ sudo mount /chia/farm

La première commande fait un "lazy unmount", c'est à dire que le démontage du chemin n'aura lieu que lorsque le dernier programme l'utilisant se sera arrêté. La deuxième commande met à jour le montage et fera donc apparaître le nouveau disque.

Article précédent Article suivant

Articles en relation