Babylon Chain : Configuration de votre nœud validateur

Babylon est un projet d’infrastructure qui inaugure un protocole de staking de Bitcoin pour renforcer la sécurité des réseaux de Preuve d’Enjeu (PoS) et des applications décentralisées (DApps). Ce protocole innovant permet aux détenteurs de Bitcoin de staker leurs actifs, de gagner des récompenses et de renforcer la sécurité des chaînes PoS et des DApps.

Babylon Chain a clôturé une levée de fonds de 18 millions de dollars pour le staking de Bitcoin. Polychain Capital et Hack VC ont dirigé le tour de financement de série.

Le réseau Babylon repose sur l’application phare BabylonD, construite sur le kit de développement logiciel Cosmos SDK. Actuellement en phase de testnet, le projet a démontré un potentiel remarquable en sécurisant avec succès 18 millions de dollars de financement de la part de nombreux fonds de capital-risque de premier plan. Ce soutien financier précoce souligne l’intérêt significatif et la confiance accordés à l’approche innovante du réseau Babylon et à ses perspectives d’avenir.

Partie 1 : Commander et configurer votre VPS

Pour commencer l’installation de votre nœud, vous devrez d’abord louer un VPS (serveur privé virtuel). L’utilisation d’un VPS présente plusieurs avantages, tels qu’une performance améliorée, une évolutivité et une fiabilité accrues. Je vais vous guider à travers le processus de location d’un VPS à moindre coût et vous montrer comment le configurer.

Contabo est mon choix privilégié en raison de sa combinaison de prix abordables, de performances fiables et d’une interface utilisateur conviviale. Je tiens à préciser que je ne suis pas affilié à leur programme partenaire et qu’il n’y a aucun avantage personnel pour moi à recommander leur service.

Spécifications matérielles minimales requises pour ce nœud :

4 CPU 6 Go de RAM 50 Go SSD

Compte tenu des modestes besoins matériels, je vous suggère d’opter pour le forfait Cloud VPS M, car il offre un équilibre approprié entre performances et efficacité pour ces besoins.

Partie 2 : Connexion à votre VPS via SSH

  1. Téléchargez PuTTY : Si vous ne l’avez pas déjà, téléchargez PuTTY depuis le site officiel : Téléchargement PuTTY.
  2. Ouvrez PuTTY : Une fois téléchargé et installé, lancez PuTTY.
  3. Remplissez les détails de connexion :
    • Entrez l’adresse IP de votre VPS dans le champ « Host Name (or IP address) ».
    • Assurez-vous que le port est configuré sur 22 (le port par défaut pour SSH).
  4. Lancez la connexion : Cliquez sur « Open » en bas de la fenêtre PuTTY.
  5. Si c’est votre première connexion à cette adresse IP, PuTTY vous demandera de confirmer l’ajout de la clé SSH à la liste des clés connues. Acceptez cela.

Une fois que l’interface du serveur est ouverte, vous serez invité à fournir les détails de connexion ; entrez simplement « root » comme utilisateur et utilisez votre mot de passe choisi.

Félicitations ! Vous êtes maintenant connecté avec succès à votre serveur :

Partie 3 : Préparatifs

Pour continuer, nous pouvons mettre à jour les paquets en exécutant les commandes suivantes dans le terminal. La première partie de la commande (sudo apt update) met à jour les listes de paquets pour les mises à jour, et la deuxième partie (sudo apt upgrade -y) effectue réellement les mises à jour avec le drapeau « -y » permettant la confirmation automatique des invites pendant le processus de mise à jour : Copier-Coller le code suivant:

sudo apt update && sudo apt upgrade -y

Partie 4 : Configuration du nom du validateur

Changez d’abord « YOUR_MONIKER_GOES_HERE » par le nom de votre validateur choisi, puis saisissez cette commande :

exemple: MONIKER=Babynode ou MONIKER=votrenom

MONIKER="YOUR_MONIKER_GOES_HERE"

Partie 5 : Installer les dépendances et installer GO

1- Installer les outils de construction

sudo apt -qy install curl git jq lz4 build-essential

2- Installer GO

sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.20.12.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)

Partie 6 : Télécharger et compiler les binaires

1- Cloner le dépôt du projet

cd $HOME
rm -rf babylon
git clone https://github.com/babylonchain/babylon.git
cd babylon
git checkout v0.7.2

2- Compiler les binaires

make build

3- Préparer les binaires pour Cosmovisor

mkdir -p $HOME/.babylond/cosmovisor/genesis/bin
mv build/babylond $HOME/.babylond/cosmovisor/genesis/bin/
rm -rf build

4- Créer des liens symboliques pour l’application

Sudo ln -s $HOME/.babylond/cosmovisor/genesis $HOME/.babylond/cosmovisor/current -f
sudo ln -s $HOME/.babylond/cosmovisor/current/bin/babylond /usr/local/bin/babylond -f

Partie 7 : Configurer Cosmovisor et créer le service correspondant

1- Télécharger et installer Cosmovisor

go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest

2- Créer et démarrer le service

sudo tee /etc/systemd/system/babylon.service > /dev/null << EOF
[Unit]
Description=babylon node service
After=network-online.target

[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.babylond"
Environment="DAEMON_NAME=babylond"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/.babylond/cosmovisor/current/bin"

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable babylon.service

Partie 8 : Initialiser le nœud

1- Configurer les paramètres du nœud

babylond config chain-id bbn-test-2
babylond config keyring-backend test
babylond config node tcp://localhost:16457

2- Initialiser le nœud

babylond init $MONIKER --chain-id bbn-test-2

3- Télécharger la genèse et le carnet d’adresses

curl -Ls https://snapshots.kjnodes.com/babylon-testnet/genesis.json > $HOME/.babylond/config/genesis.json
curl -Ls https://snapshots.kjnodes.com/babylon-testnet/addrbook.json > $HOME/.babylond/config/addrbook.json

4- Ajouter des seeds

sed -i -e "s|^seeds *=.*|seeds = \"3f472746f46493309650e5a033076689996c8881@babylon-testnet.rpc.kjnodes.com:16459\"|" $HOME/.babylond/config/config.toml

5- Définir le prix de gaz minimum

sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.00001ubbn\"|" $HOME/.babylond/config/app.toml

6- Définir l’élagage

sed -i \
  -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
  -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
  $HOME/.babylond/config/app.toml

7- Définir les ports personnalisés

sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:16458\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:16457\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:16460\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:16456\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":16466\"%" $HOME/.babylond/config/config.toml
sed -i -e "s%^address = \"tcp://localhost:1317\"%address = \"tcp://0.0.0.0:16417\"%; s%^address = \":8080\"%address = \":16480\"%; s%^address = \"localhost:9090\"%address = \"0.0.0.0:16490\"%; s%^address = \"localhost:9091\"%address = \"0.0.0.0:16491\"%; s%:8545%:16445%; s%:8546%:16446%; s%:6065%:16465%" $HOME/.babylond/config/app.toml

Partie 9 : Télécharger la dernière snapshot de la chaîne

curl -L https://snapshots.kjnodes.com/babylon-testnet/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.babylond
[[ -f $HOME/.babylond/data/upgrade-info.json ]] && cp $HOME/.babylond/data/upgrade-info.json $HOME/.babylond/cosmovisor/genesis/upgrade-info.json

Partie 10 : Démarrer le service et vérifier les journaux

sudo systemctl start babylon.service && sudo journalctl -u babylon.service -f --no-hostname -o cat

Partie 11 : Devenir un validateur

Création de clé et obtention de fonds pour les validateurs :

Les validateurs doivent disposer de fonds pour deux raisons principales :

  1. Auto-délégation : Les validateurs doivent miser leurs propres fonds pour démontrer leur engagement envers le réseau.
  2. Frais de transaction : Ces fonds sont nécessaires pour couvrir les coûts associés à la soumission des transactions de signature BLS.

Pour le moment, les validateurs sont restreints à l’utilisation du backend de clés de test. Toutefois, Babylon a l’intention de développer son support en incluant une variété de backends cryptés proposés par le Cosmos SDK à l’avenir.

Partie 11a : Créer une nouvelle clé

babylond keys add wallet

Partie 11b : Obtenir des fonds du Faucet du Babylon Testnet

Pour recevoir des fonds, rendez-vous sur le canal #faucet sur le serveur Discord officiel de Babylon. Ici, vous pouvez demander des fonds en partageant l’adresse que vous avez créée précédemment. Une fois dans le canal #faucet, soumettez votre demande en tapant !faucet suivi de votre adresse. Par exemple, vous taperiez ceci pour demander des fonds pour cette adresse spécifique : !faucet bbnxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Vous pouvez vérifier le solde de votre portefeuille avec cette commande sur votre terminal (cela peux mettre 15min pour recevoir vos tokens), Assurez-vous d’avoir reçu avec succès 1 100 000 ubbn :

babylond q bank balances $(babylond keys show wallet -a)

Partie 11c : Générer une paire de clés BLS

En tant que validateur, vous devez fournir une signature BLS à la fin de chaque époque. Dans ce but, il est essentiel de disposer d’une paire de clés BLS, utilisée pour signer des informations. Cela doit être fait en utilisant l’adresse établie à l’étape précédente.

babylond create-bls-key $(babylond keys show wallet -a)

L’exécution de cette commande générera une clé BLS, qui sera ensuite stockée dans le fichier $HOME/.babylond/config/priv_validator_key.json. Ce fichier contient également la clé privée utilisée par le validateur pour signer les blocs. Il est crucial de sécuriser ce fichier de manière adéquate pour maintenir l’intégrité et la sécurité de vos opérations de validation. Après la création d’une clé BLS, vous devrez redémarrer votre nœud pour charger cette clé en mémoire.

sudo systemctl start babylon.service && sudo journalctl -u babylon.service -f --no-hostname -o cat

Partie 11d : Mettre à jour les paramètres de configuration

De plus, il est nécessaire de définir le nom de la clé que votre validateur utilisera pour soumettre les transactions de signature BLS. Cela se fait dans le fichier $HOME/.babylond/config/app.toml. Vous devez modifier ce fichier pour attribuer le nom de clé à celui associé aux fonds dans votre trousseau de clés.

sed -i -e "s|^key-name *=.*|key-name = \"wallet\"|" $HOME/.babylond/config/app.toml

Enfin, il est vivement recommandé d’ajuster le paramètre timeout_commit dans le fichier $HOME/.babylond/config/config.toml. Ce paramètre détermine la durée pendant laquelle un validateur attend avant de valider un bloc et de passer à une nouvelle hauteur. En accord avec l’objectif de Babylon de maintenir un intervalle de 10 secondes entre les blocs, vous devriez configurer cette valeur en conséquence.

sed -i -e "s|^timeout_commit =.|timeout_commit = \"10s\"|" $HOME/.babylond/config/conf

Partie 12 : Créer le validateur

Contrairement aux chaînes traditionnelles Cosmos SDK, établir un validateur sur Babylon nécessite l’utilisation de la commande babylond tx checkpointing create-validator. Ce processus suppose la présence d’une clé de validateur BLS dans le fichier $HOME/.babylond/config/priv_validator_key.json.

Les validateurs de Babylon ont la responsabilité de soumettre une transaction de signature BLS à la fin de chaque époque, actuellement environ toutes les 30 minutes. Ces transactions entraînent des frais de gaz fixes de 100ubbn. Par conséquent, il est crucial pour les validateurs de s’assurer qu’ils disposent de fonds non délégués suffisants dans leur trousseau de clés pour couvrir ces frais de transaction récurrents.

Vérifiez l’état de synchronisation du réseau avec la commande :

babylond status | jq .SyncInfo

Dès que la valeur de catching_up devient « false », vous pouvez passer à l’étape finale.

Assurez-vous d’avoir ajusté moniker, details et website pour correspondre à vos valeurs.

babylond tx checkpointing create-validator \
--amount 1000000ubbn \
--pubkey $(babylond tendermint show-validator) \
--moniker "VOTRE_NOM_DE_MONIKER" \
--details "VOS_DETAILS" \
--website "VOTRE_URL_DE_SITE_WEB" \
--chain-id bbn-test-2 \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--from wallet \
--gas-adjustment 1.4 \
--gas auto \
--gas-prices 0.00001ubbn \
-y

Pour obtenir le statut de validateur actif, il est essentiel de lier plus de jetons ubbn que le validateur ayant le plus faible montant lié dans le classement actuel (sauf si l’ensemble des validateurs n’est pas complet). De plus, vous devez avoir un minimum de 10 000 000 de jetons ubbn liés.

Félicitations ! Vous êtes maintenant un validateur sur le réseau Babylon. Dans les 30 minutes, le validateur devrait apparaître dans la liste à l’adresse https://babylon.explorers.guru/validators (vous pouvez le trouver en recherchant l’adresse du portefeuille ou votre Moniker, puis en le trouvant dans les délégations à votre validateur sur ce portefeuille).

Veuillez noter que votre nœud sera initialement répertorié comme « inactif » lors de sa première apparition :

Pour devenir un validateur actif, vous devez avoir plus de jetons ubbn liés que le dernier validateur, assurant ainsi un pouvoir de vote supérieur. Actuellement, le dernier validateur a 11 BBN liés. Obtenez des jetons de test depuis le faucet et déléguez-les à votre nœud en utilisant la commande :
babylond tx epoching delegate $(babylond keys show wallet --bech val -a) 1000000ubbn --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y

Si vous rencontrez des problèmes, je recommande de consulter d’abord la documentation officielle. Node Jumper propose également un cheet sheat utile. Pour une assistance supplémentaire, posez vos questions dans le canal « Développement » sur le serveur Discord officiel. N’hésitez pas à me contacter directement si vous avez besoin d’aide.


Avis de non-responsabilité: Veuillez noter que le contenu fourni est destiné uniquement à des fins éducatives, informatives et de divertissement, et ne devrait pas être considéré comme des conseils financiers. En résumé, effectuez toujours vos propres recherches, évaluez les informations de manière critique et demandez conseil à des professionnels lorsque nécessaire. Restez informé, faites preuve de prudence et prenez des décisions éclairées en fonction de vos propres circonstances uniques.