Comment monter un noeud sur la blockchain Massa ? Tutoriel complet

Comment monter un noeud Massa ?

Massa est une blockchain ayant pour objectif de maximiser la décentralisation sur un réseau proof of stake tout en conservant de très bonnes performances grâce à son infrastructure parallélisée (performance théorique de 10 000 transactions par seconde).

Actuellement en phase de testnet, Massa propose à ses utilisateurs de faire tourner un noeud (ou node) sur leur réseau afin de tester les performances de la blockchain en condition réelle. Afin d'encourager la décentralisation sur son réseau, Massa promet de récompenser les personnes ayant fait tourner un noeud lors du déploiement du mainnet.

Cet article est un guide vous permettant de mettre en place un node Massa. Il est basé sur mon expérience personnelle lors de la création de mon node sur la version 12.2 du testnet et sur le wiki officiel de Massa.

Pour en savoir plus sur la blockchain Massa et son fonctionnement, vous pouvez consulter l'article dédié à ce sujet ci-dessous.

Qu'est-ce qu'un noeud Massa ?

Un noeud validateur (ou node) est un ordinateur connecté à une blockchain proof of stake avec un certain nombre de jetons natifs bloqués (jetons stakés), il permet de créer et vérifier les blocs de transactions sur ce réseau.

Sur le testnet de Massa, un noeud peut fonctionner sur un ordinateur peu puissant (contrairement à d'autres blockchains proof of stake) et les jetons à bloquer sont gratuits pour favoriser la décentralisation.
L'objectif est ainsi d'ouvrir la construction de noeuds et le développement d'applications sur ce réseau en test au plus grand nombre.

proof_of_stake

Prérequis et conseils avant de vous lancer

Pour pouvoir lancer votre propre noeud Massa, vous aurez besoin d'une connexion stable et d'un ordinateur (dédié à cette tâche de préférence). Vous pouvez également utiliser un VPS mais celui-ci n'est pas recommandé car l'objectif de Massa est d'avoir la blockchain la plus décentralisée possible et vous subirez ainsi une pénalité sur vos points du programme de récompense.

Cet ordinateur ou VPS doit répondre à la configuration minimale requise :

  • Processeur avec 4 cœurs logiques (8 cœurs logiques seront nécessaires à terme)
  • 8 Go de RAM (16 Go seront nécessaires à terme)
  • 1 To de stockage libre
  • Une connexion stable avec au moins 15 Mb/s et une latence (ping) raisonnable

Il est possible de lancer son node sur n'importe quel système d'exploitation (Windows, MacOS, Linux) bien qu'utiliser Ubuntu soit la solution la plus facile et adaptée à cette utilisation.

Ne pas avoir peur des interfaces en lignes de commande en particulier Linux / Ubuntu : même si ce guide est accessible au plus débutant, il ne faut pas être effrayé à la vue de la moindre commande Linux ou problème rencontré.
Il ne faut pas hésiter à vous renseigner sur internet ou à demander de l'aide sur le discord officiel de Massa.

Télécharger les différentes ressources pour lancer le noeud

Windows natif

Installez les différentes ressources nécessaires au lancement d'un projet Rust sous Windows :

  • Installez Choco en lançant la commande ci-dessous dans l'invite de commande* Windows (en adminitrateur) :
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

*si vous ne trouvez pas l'invite de commande le programme s'appelle cmd.exe.

Ensuite une fois tous les composants indiqués ci dessus installés, vous devrez également :

  • Installer Rust
  • Installer Git pour Windows
  • Installer LLVM
Pour LLVM, installez la version win64

Dans le logiciel Git CMD installé, lancez les commandes suivantes :

git clone --branch testnet https://github.com/massalabs/massa.git

rustup default nightly

Désormais vous pouvez lancer les commandes dans la section “Démarrer le noeud et le client Massa” de cet article pour démarrer votre noeud.

Alternative Windows (WSL2 Ubuntu)

Ayant eu des difficultés à lancer mon noeud sur Windows avec la méthode conçut par Massa. Je vous propose ici une alternative : installer un sous-système Linux pour pouvoir installer les ressources nécessaires sous Ubuntu.

Grâce à la solution officielle de Microsoft, WSL2 nous permet de faire tourner Ubuntu en ligne de commande sur votre ordinateur Windows.

Tout d'abord, lancez Powershell ou l'invite de commande en administrateur. Pour cela, effectuez un clic gauche sur l'icône Windows dans votre barre des tâches et lancez Powershell Windows (Administrateur) ou Terminal Windows (Administrateur). Ensuite, exécutez la commande ci-dessous.

#Ceci est un commentaire, faites un copier/coller dans votre console de la commande ci-dessous :
wsl --install

Rappel : pour “coller” une ligne de code dans Powershell ou un invite de commande, il vous suffit de faire un clic droit dans la fenêtre.

Une fois le téléchargement et l'installation terminés, redémarrez votre ordinateur.
Vous devriez ensuite voir apparaitre dans vos applications téléchargées Ubuntu (la distribution Linux voulue), lancez-la. Il ne vous reste plus qu'à configurer la distribution en choisissant un nom d'utilisateur et un mot de passe (évidemment, notez bien ces deux informations) .

Vous pouvez maintenant suivre la suite de ce guide comme si vous étiez un utilisateur Ubuntu lambda.

WSL 2 Windows
Windows WSL2

Sous Linux et Windows WSL2

Pour télécharger les différentes ressources nécessaires au fonctionnement du noeud, vous devez exécuter diverses commandes dans le terminal de votre système d'exploitation ou dans WSL2 (pour les utilisateurs Windows).

Petit rappel : quelques commandes de base de Linux qui pourront vous être utiles par la suite

sudo                  #Vous donne les droits super utilisateur (root)
cd <chemin_dossier>   #Permet de naviguez dans les dossiers de votre système
cd ..                 #Retour dans le dossier parent 
nano <nom_fichier>    #Pour modifier un fichier
mkdir <nom_dossier>   #Créer un dossier
rm -rf <nom_fichier>  #Supprime un fichier

Avant tout, effectuez une mise à jour d'Ubuntu (même si vous venez d'installer la distribution).

#Téléchargement et installation des mises à jour
sudo apt update && sudo apt upgrade -y 
 
#Vous donne les droits super utilisateur (root)
sudo -i

Installez ensuite les ressources pour faire tourner votre node en exécutant les commandes ci-dessous dans l'ordre.

#Installe les librairies nécessaires
sudo apt install pkg-config curl git build-essential libssl-dev
  
#Installe rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

#Configure le chemin 
source $HOME/.cargo/env

#Installe nigthly
rustup toolchain install nightly

#Le définit par défaut
rustup default nightly

#Installe Libclang
sudo apt-get install -y libclang-dev

#Téléchargement du testnet Massa le plus récent depuis leur Github
git clone --branch testnet https://github.com/massalabs/massa.git

Une fois tout cela installé, vous devriez voir apparaître… rien du tout !🙂. C'est tout à fait normal, il vous faut maintenant démarrer votre nœud.

Démarrer le noeud et le client Massa

Pour démarrer votre noeud, lancez les commandes suivantes (en remplaçant <PASSWORD> par le mot de passe de votre choix) :

#Pour Linux :
cd massa/massa-node/
RUST_BACKTRACE=full cargo run --release -- -p <PASSWORD> |& tee logs.txt

#Pour Windows dans Git CMD : 
cd massa\massa-node
cargo run --release -- -p <PASSWORD>

Pour arrêter votre noeud :

CTRL + C

Une fois la compilation terminée (cette étape peut prendre plusieurs minutes la 1ère fois), le noeud démarre et des informations sur celui-ci apparaissent.

Terminal node massa
Fenêtre de votre noeud Massa une fois lancé

Puis dans une seconde fenêtre de terminal, exécutez les commandes suivantes pour lancer le client :

#Pour Linux
cd massa/massa-client/
cargo run --release -- -p <PASSWORD>

#Pour Windows dans Git CMD
cd massa\massa-client
cargo run --release -- -p <PASSWORD>

Pour fermer le client :

CTRL + C

Une fois la compilation terminée (cette étape peut prendre plusieurs minutes la 1ère fois), une liste de commande permettant d'interagir avec votre node s'affiche.

Client node massa
Fenêtre du client Massa

Créer un wallet Massa

Pour permettre à votre noeud Massa de valider des blocs sur le testnet, il vous faut désormais un portefeuille contenant au moins un “roll”. Dans un premier temps, nous allons donc créer notre wallet.

Dans votre client massa, exécuter les commandes suivantes :

#Génère votre clé privée et votre adresse de wallet
wallet_generate_secret_key

#Affiche les infos de votre wallet (clé privée, clé publique et adresse)
wallet_info

Une fois votre wallet généré et ses infos affichés, sauvegardez votre clé privée et votre adresse qui pourront vous être utiles pour restaurer votre portefeuille et recevoir des tokens MASS. Vous pouvez également utiliser cette commande pour connaître votre nombre de tokens et de “rolls” (encadré en rouge sur l'image ci-dessous).

wallet info
Commande wallet_info

Pour obtenir vos premiers jetons MASS, allez sur le Discord officiel de Massa et envoyez un message contenant votre adresse dans le channel “testnet-faucet“.

Vous recevrez ainsi 100 MASS pour acheter votre premier “roll” et commencer le staking.

massa faucet
Faucet Massa sur discord

Staking sur votre noeud Massa

Avec vos 100 MASS dans votre portefeuille, il ne vous reste plus qu'à acheter un “roll” en effectuant la commande ci-dessous dans votre client et votre noeud commencera à valider des blocs du testnet.

#Pour acheter 1 roll sans frais
buy_rolls <TON_ADRESSE> 1 0

#Activer le staking sur votre adresse
node_add_staking_secret_keys <TA_CLE_SECRETE>

Remarque: Une fois cette commande effectuée les “rolls” seront actifs au bout de 3 cycles (soit 2h environ). Ces derniers vous donnent une probabilité d'être sélectionné comme producteur d'un bloc proportionnellement à votre nombre de “rolls”. Lorsque vous produisez un bloc, vous gagnez 0,3 MASS sur le testnet. Ces “rolls” seront automatiquement revendus si votre node manque la validation de 70% des blocs d'un cycle ou plus.
Assurez-vous donc d'avoir un système stable et disponible 24h/24 pour gagner le plus de points possible sur le programme de récompense de Massa comme nous allons le voir ci-dessous.

S'inscrire au programme de récompense de Massa

Pour récompenser les utilisateurs faisant tourner un noeud Massa, un programme de récompense est mis en place sur le discord officiel du projet. Pour rejoindre ce programme, il vous suffit de réagir au premier message du channel “testnet-reward-registration”. Vous recevrez ensuite un message privé de MassaBot qui vous indique une commande à envoyer à votre client Massa ressemblant à ceci :

node_testnet_rewards_program_ownership_proof <TON_ADRESSE> XXXXXXXXXXXXXX 

Le client vous retourne alors une longue suite de chiffres et de lettres qu'il vous faut envoyer en message privé à MassaBot. Une fois le message envoyé, le bot devrait réagir à votre message et confirmer l'association de votre compte discord à votre noeud par message.

Programme recompense Massa
Discord MassaBot – Inscription au programme de récompense

Vous gagnez ainsi des points à chaque cycle (30-40 min) où votre noeud est actif sur le testnet. Vous gagnez également un bonus si votre noeud est “routable”. Vous pouvez régulièrement consulter le nombre de points obtenu en envoyant “info” à MassaBot.

Remarque : Vous n'avez pas besoin de faire la course au nombre de “roll” : vous ne gagnez pas plus de points sur le testnet en ayant plus de “rolls”, juste plus de jeton MASS (or ces derniers ne valent rien sur le testnet). A contrario, il vous faut un système le plus stable possible pour ne louper aucun bloc.

Avoir un noeud routable / ouvrir les ports de son réseau (Facultatif)

Pour améliorer la diffusion du réseau, le testnet Massa récompense les utilisateurs ayant un noeud “routable”, c'est-à-dire, un noeud acceptant les connexions entrantes pour diffuser le réseau auprès de nouveaux nodes.

Dans un premier temps, si votre noeud se trouve sur un réseau pour particulier, il vous faut ouvrir les ports pour Massa sur la box de votre opérateur et les rediriger vers votre ordinateur.
Dans ce guide, l'ouverture des ports a été faite avec une box Orange mais vous pouvez reproduire cette manipulation avec n'importe quel autre opérateur similairement.

Accédez à l'interface de configuration de votre box (en recherchant 192.168.1.1 dans un navigateur pour l'opérateur Orange par exemple).

Dans les paramètres avancés, cliquez sur “Réseau”.

orange ouverture port 1

Puis donnez à votre ordinateur une IP fixe local dans DHCP.

orange ouverture port 2

Enfin, ouvrez les ports pour Massa (31244, 31245 et 33035) dans NAT/PAT.

orange ouverture port 3

Il vous faut maintenant ouvrir ces mêmes ports sur le système d'exploitation de votre ordinateur.
Remarque : si vous utilisez WSL2 il est nécessaire d'effectuer la manipulation pour Windows et Linux

Ouvrir les ports – Windows

Pour ouvrir les ports sous Windows, recherchez “Pare-feu” dans Cortana et allez dans les paramètres avancés de celui-ci.

pare feux windows

Ensuite, dans “Règles de trafic entrant”, créez une nouvelle règle pour des ports spécifiques. Sélectionnez TCP et entrez les ports nécessaires (31224, 31245 et 33035).

pare feux windows 2

Vous pouvez ensuite tester l'ouverture de vos ports avec ce site en renseignant l'IP de votre noeud et les ports ouverts.

Ouvrir les ports – Linux

Ouvrez les ports 31244,31245 et 33035 à l'aide de la commande ci-dessous :

sudo ufw allow <PORT>

Vous pouvez ensuite utiliser cette commande pour tester l'ouverture de vos ports.

#Test de l'ouverture des ports de votre ordinateur
nc -zvw3 <VOTRE_IP> <PORT>

Fichier de configuration de votre noeud (Linux)

Dernière étape pour avoir votre noeud “routable”, modifier config.toml dans les fichiers de configuration de votre node. Pour cela, arrêter votre noeud et lancez les commandes suivantes :

cd massa/massa-node/config

nano config.toml

#Dans ce fichier config vide, ajoutez l'IP de votre noeud en écrivant :
[network]
routable_ip = "<TON_IP>"

#Sauvegardez et quittez le fichier
CTRL + S
CTRL + X
configuration routable massa config.toml

Vous pouvez tester l'ouverture de vos ports (31244, 31245 et 33035) avec le site Port Checker et suivre l'état de votre noeud en direct avec Paranormal Brothers.

Enfin, n'oubliez pas d'envoyer à MassaBot l'IP de votre node pour obtenir des points supplémentaires pour être devenu routable.

Mettre à jour son noeud Massa

Pour garder votre noeud connecté au testnet et obtenir les divers correctifs de Massa, il est nécessaire d'effectuer le plus rapidement les mises à jour lorsque celles-ci sont disponibles. Restez à l'affut des mises à jour annoncées sur le discord officiel.

Lorsque qu'une mise à jour est disponible, arrêtez votre node et installez la mise à jour avec les commandes suivantes :

#Mise à jour de rustup :
rustup default nightly
rustup update

#Mise à jour de la blockchain Massa :
cd massa/
git checkout testnet
git pull

Pour aller plus loin : installer un script docker (Facultatif)

Pour les utilisateurs Linux et WSL2, un outil a été mis en place par un membre de la communauté Massa permettant d'automatiser la maintenance de votre noeud Massa. En effet, ce script docker créé par Dockyr, permet d'automatiquement redémarrer votre node en cas de problème, de récupérer les 100 MAS quotidiens sur le faucet massa, de créer automatiquement une liste de nodes routables sur lesquels vous pouvez bootstrap et plein d'autres fonctionnalités dont je vous invite à découvrir.

Pour faire fonctionner cette automatisation de votre node, il vous faut dans un premier temps installer Docker.

curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh get-docker.sh

Remarque : Pour les utilisateurs WSL2, il est également nécessaire d'installer ce logiciel sous Windows au préalable.

Créez ensuite un dossier massa_mount qui contiendra tous les fichiers nécessaires à l'utilisation du docker.

mkdir massa_mount

Téléchargez et lancez le docker.

#Téléchargement du docker d'automatisation massa-node et récupération des fichiers 
docker run -d -v <CHEMIN>/massa_mount:/massa_mount -p 31244-31245:31244-31245 -p 33035:33035 --name massa-node rykcod/massa
tail -f ./massa_mount/
tail -f ./massa_mount/logs/massa-guard/<DATE>-massa_guard.txt

#Lancer le docker d'automatisation
docker start massa-node
#Arrêter le docker
docker stop massa-node

Une fois le docker lancé, votre noeud et les automatisations devraient fonctionner. Vous pouvez tout de même interagir directement avec votre node avec les commandes ci-dessous :

#Rentrer dans le container
docker exec -it massa-node /bin/bash

#Ouvrir le client
screen -x massa-client

#Fermer votre fenêtre client ou sortir du container
CTRL + A + D

Une vidéo sur l'installation de l'automatisation docker a été créée par le développeur pour vous aider.

Ressources supplémentaires sur les noeud et la blockchain Massa