Guide dĂ©taillĂ© de A Ă Z de mise en place dâun validateur sur Ethereum 2.
Prérequis et implications
Devenir un validateur sur Ethereum 2 nâest pas quelque chose Ă prendre Ă la lĂ©gĂšre. Vous allez devoir bloquer 32 ETH (ou plus), sans pouvoir les retirer pendant un certain moment, et devoir vous assurer que votre validateur continue Ă ĂȘtre actif sur toute cette pĂ©riode, sans quoi vous perdrez une partie de vos ETH placĂ©s.
De grands pouvoirs impliquent de grandes responsabilités
Avant de vous jeter Ă lâeau, assurez-vous de pouvoir rĂ©pondre Ă lâaffirmatif Ă ces questions:
- Avez-vous 32 ETH ou plus à séquestrer pendant 3 ans ?
- Pourrez-vous accorder du temps Ă vos validateurs pendant 3 ans (mettre Ă jour les logiciels, sâassurer que le validateur fonctionne etcâŠ)
- Avez-vous un minimum de connaissances en anglais (pour les mises Ă jour, les dĂ©bats etcâŠ)
- Avez-vous accÚs à un interpreteur de commande (parfois appelé Terminal, ou Console de commande)
- Avez-vous lu notre poste dâintroduction Ă la preuve dâenjeu ?
Moins de 32 ETH ? Pas de panique !
Si vous nâavez pas 32 ETH, ou que vous ne vous sentez pas de devenir validateurs, vous pourrez toujours rejoindre des « staking pool« .
Prenez cependant le soin de vous renseigner sur les staking pool avant dây sĂ©questrer vos ETH ! Il y a beaucoup dâarnaques
Mise en place de la machine
PremiĂšre Ă©tape : mettre en place une machine qui servira de validateur.
Deux options sâoffrent Ă vous: vous pouvez utiliser une machine chez vous, ou bien un serveur hĂ©bergĂ© ailleurs. Les deux ont leurs avantages et inconvĂ©nients : facilitĂ© dâaccĂšs, stabilitĂ© de la connexion Ă internet, taille du disque dur, confiance en lâhĂ©bergeur⊠je vous laisse faire votre choix. Dans ce guide, je vais utiliser un hĂ©bergeur (aucun lien dâaffiliation, câest juste celui que jâutilise personellement), afin de montrer cette Ă©tape aussi. Si vous avez dĂ©jĂ un ordinateur chez vous (ou votre serveur est dĂ©jĂ mis en place), vous pouvez procĂ©der Ă lâĂ©tape « Mise en place des logiciels » directement !
Je peux perdre mes ETH ?!
Vous vous apprĂȘtez Ă sĂ©questrer au moins 32 ETH. Mais ĂȘtes-vous sĂ»r de connaĂźtre les risques et les pĂ©nalitĂ©s ? Plus de dĂ©tail dans lâappendice en bas de la page.
Cette partie va vous montrer comment:
- Louer un serveur chez un hébergeur (ici netcup.eu)
- Configurer le pare-feu
- Configurer les clĂ©s dâaccĂšs (ssh) et sây connecter
Louer un serveur
Allez câest parti ! Rendons-nous chez netcup.eu (ce guide nâest en aucun cas affiliĂ© ! Câest simplement lâoption que jâutilise personellement).
SĂ©lectionnez « Server », et cherchez lâoption VPS 6000 G9.
Quelle offre choisir ?
Ce qui importe, câest dâĂȘtre sĂ»r que le serveur tiendra la route en cas de perturbation sur le rĂ©seau. Aujourdâhui, il est recommandĂ© dâavoir au moins 4 CĆurs, 16 GB de RAM, 256Gb de SSD, juste pour faire tourner le Beacon Node (plus dâinfo sur ce terme plus tard dans le tutoriel) et les validateurs.
Cependant, à ça il faut ajouter lâinstance dâETH1, qui nĂ©cessite elle-mĂȘme 16Gb de RAM et 500 GB de SSD. Et si vous voulez, vous pouvez aussi lancer un slasher, ce qui prend des ressources supplĂ©mentaires.
Lâoption VPS 6000 est une option avec laquelle vous nâaurez pas de problĂšmes dans les annĂ©es Ă venir. Elle a largement de quoi faire, et tiendra la route mĂȘme en cas de conditions etrĂȘmes sur le rĂ©seau. Lâoption VPS 4000 est correcte et devrait ĂȘtre suffisante. Lâoption VPS 3000 fera pile lâaffaire pour le moment, mais il faudra sâattendre Ă devoir changer de plan dâici 1 an ou deux. Enfin, si vous ne comptez pas lancer dâinstance eth1 (si vous utilisez Infura par exemple), lâoption VPS 2000 sera suffisante.
Si pour vous les termes eth1, Infura, beacon node et validateurs sont du charabia, vous pouvez allez lire le « Petit récapitulatif » dan « Mise en place des logiciels ».
Une fois votre offre sĂ©lectionnĂ©e, vous devrez procĂ©der Ă la crĂ©ation de compte. Retenez bien les informations que vous entrez : une fois la demande effectuĂ©e, vous recevrez un appel de netcup.eu en anglais (ils sont allemands) et ils vous demanderont de bien confirmer : votre nom / prĂ©nom, votre adresse, votre code postale. Câest tout Ă fait normal (bien que dĂ©routant je vous le concĂšde !).
Une fois ces informations confirmĂ©es par tĂ©lĂ©phone, ils vous enverront vos identifiants de connexion par e-mail : les e-mails sont en allemand et en anglais, donc il faudra scroller jusquâen bas pour trouver la version anglaise !
Connectons-nous dâabord Ă notre espace client. Comme Ă©crit dans le mail, le lien est celui-lĂ : https://www.customercontrolpanel.de . Vos identifiants figurent aussi dans le mail (en orange sur la photo).
La premiĂšre Ă©tape Ă suivre est de sĂ©curiser notre compte client mettant en place le 2FA : un mĂ©chanisme de sĂ©curitĂ© qui vous demandera dâentrer un code fournit par votre tĂ©lĂ©phone lors de vos prochaines connexions. Pour ce faire, cliquez sur Master Data en bas Ă gauche.
Là vous pouvez cliquer sur le bouton « Enable two factor authentication ».
Bien maintenant que votre compte est sĂ©curisĂ©, vous pouvez procĂ©der au rĂšglement. La facture devrait ĂȘtre Ă peu prĂšs Ă©gale Ă trois fois le montant mensuel : pas de panique, cela suit une pĂ©riode de facturation trimestrielle.
Une fois le rÚglement effectué, vous devriez recevoir de nouvelles informations par e-mail : un e-mail intitulé « Access data for SCP » et un autre intitulé « Ihr vServer bei netcup ist bereit gestellt.
Dâabord par mesure de sĂ©curitĂ©, rendez-vous sur le servercontrolpanel (https://www.servercontrolpanel.de/SCP), connectez-vous avec les identifiants contenus dans le mail, et changez votre mot de passe (menu dĂ©roulant en haut Ă droite, puis Option).
Sur ce paneau de contrĂŽle, vous avez accĂšs Ă vos machines, et si vous cliquez sur lâune de vos machines, vous aurez un dĂ©tail de lâutilisation de celle-ci.
Vous pouvez maintenant vous connecter Ă la machine !
Connexion Ă la machine
Fini la rigolade ! On passe aux choses sérieuses ! Pour ce faire, nous allons utiliser ssh ! ssh est un programme qui permet de se connecter de façon sécurisée à un serveur.
Pour lâutiliser, rien de plus simple : depuis le terminal de votre machine, tapez ceci (en remplaçant « adresseip » par lâadresse IP de votre propre machine, qui vous a Ă©tĂ© communiquĂ©e dans le deuxiĂšme e-mail)
ssh root@adresseip
Le mot de passe demandĂ© est celui qui apparaĂźt dans lâemail que netcup vous a envoyĂ©. Ensuite, vous devriez avoir un message vous signalant que lâauthenticitĂ© de la machine ne peut pas ĂȘtre prouvĂ©e⊠câest normal, tapez « yes » !
PremiĂšre Ă©tapeâŠ. changer de mot de passe ! Et oui, sĂ©curitĂ©, sĂ©curitĂ©, sĂ©curitĂ© !
Entrez simplement :
passwd
Et choisissez un mot de passe solide (différent des autres mot de passe que vous utilisez habituellement !)
CrĂ©ation dâun utilisateur
Nous sommes actuellement connectĂ© en tant que lâutilisateur « root« . Câest en quelque sorte le superman de votre ordinateur : il a tous les droits. Câest une trĂšs mauvaise habitude, et un grand risque de sĂ©curitĂ© dâĂȘtre connectĂ© en tant que root, câest pourquoi nous allons crĂ©er un utilisateur !
La commande a entrer est celle-ci (en changeant utilisateur pour le nom dâutilisateur que vous dĂ©sirez crĂ©er).
adduser utilisateur
Suivez les instructions du terminal (soyez sĂ»rs de choisir un mot de passe solide !). Puis, ajoutez cet utilisateur Ă la liste des « sudoers » : câest la liste des utilisateurs qui sont autorisĂ©s Ă effectuer des actions en tant quâadministrateur (parfois). Tapez la commande ci-dessous (en remplaçant utilisateur par votre nom dâutilisateur choisi, Ă©videmment).
usermod -aG sudo utilisateur
Pour ĂȘtre sĂ»r que cela fonctionne correctement, dĂ©connectez-vous de la machine en tappant :
exit
Puis connectez-vous cette fois-ci en utilisant votre nom dâutilisateur :
ssh utilisateur@adresseip
SĂ©curisation de la machine
La sĂ©curitĂ©, câest important ! Câest pourquoi nous allons procĂ©der Ă la mise en place de trois mesures de sĂ©curitĂ© : lâauthentification par clĂ©, le changement de port SSH, et lâinstallation dâun pare-feu.
Je vais tenter dâexpliquer simplement Ă quoi servent ces deux mesures.
- Lâauthentification par clĂ© : pour vous connecter Ă votre machine vous avez utilisĂ© un mot de passe. Mais si votre mot de passe se fait hack, ou bien si vous avez choisi un mot de passe trop fragile, un hacker pourra facilement se connecter Ă votre machine. Câest pourquoi nous allons utiliser lâauthentification par clĂ© : vous allez crĂ©er une clĂ© SSH sur votre ordinateur, et câest grĂące Ă la prĂ©sence de cette clĂ© (et non le mot de passe) que vous serez autorisĂ© Ă vous connecter.
- Changer le port SSH : Le port par dĂ©faut pour se connecter en SSH sur nâimporte quelle machine est le 22. Cela veut dire quâun hacker essaiera par dĂ©faut de vous attaquer par le port 22. En le changeant Ă un autre port, il sera obligĂ© de deviner quel port vous avez choisi pour essayer de sây connecter. Cela complique nettement la tĂąche !
- Installer un pare-feu : Par dĂ©faut, tous vos ports sont ouverts. Un attaquant peut donc essayer de vous attaquer sur beaucoup de ports diffĂ©rents. Un pare-feu rĂ©soud ce problĂšme : il rĂ©duits les ports ouverts, et donc rend la surface dâattaque beaucoup plus petite.
Authentification par clé
Nous allons créer votre clé SSH qui vous servira à vous connecter au serveur. Commencez par vous déconnecter de votre serveur (exit). Ensuite, tappez cette commande :
ssh-keygen -t ed25519
Ensuite suivez les instructions sur votre console. Une fois terminé, il vous faudra ajouter cette clé à la liste des clés autorisées par votre serveur :
ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisatur@adresseip
Et voilĂ le travail ! Votre clĂ© apparaĂźt dĂ©sormais parmi les clĂ©s autorisĂ©es sur votre serveur. Cependant, le serveur autorise toujours Ă se connecter en fournissant le mot de passe de lâutilisateur : nous allons modifierons cela quand nous effectuerons le changement de port SSH.
Changer de port SSH
Commençons par mettre à jour notre systÚme.. Je ne vais pas détailler ces commandes mais en gros, elles mettent à jour le systÚme, retirent les logiciels dont on ne se sert pas et installent UFW
Sudo et privilĂšges dâadministrateur
Nous avons crĂ©Ă© un utilisateur qui nâest pas root car câest risquĂ© de lancer toutes les commandes en tant quâadministrateur. Cependant, de temps en temps nous avons besoin de lancer des commandes en tant quâadministrateur. La solution : ajouter « sudo » au dĂ©but de la commande que nous lançons. Il se peut que lancer sudo vous demande votre mot de passe : câest tout Ă fait normal !
sudo apt update && sudo apt upgrade
sudo apt dist-upgrade && sudo apt autoremove
sudo apt install -y ufw
Maintenant nous pouvons changer le port SSH. Vous nâavez quâĂ choisir un numĂ©ro de port entre 1024 et 49151, et vous assurez quâil ne sort pas en rouge lorsque vous tapez cette commande (en remplaçant numerodeport par le numĂ©ro de port que vous avez choisi) :
sudo ss -tulpn | grep numerodeport
Sâil sort en rouge, câest quâil est dĂ©jĂ utilisĂ© par votre ordinateur. Choisissez en un nouveau et recommencez !
Ensuite, mettez Ă jour votre fichier de configuration SSH. Lancez lâediteur de nexte nano:
sudo nano /etc/ssh/sshd_config
Ici vous aurez 4 lignes Ă modifier :
- Remplacer la ligne « Port 22 » par « Port NUMERODEPORT » en remplaçant NUMERODEPORT par le numéro que vous avez choisi (spécifie le port utilisé pour SSH).
- Enlever le « # » devant la ligne « #PubkeyAuthentication yes » (spécifie que nous acceptons la conneixon par clé).
- Remplacer la ligne « PasswordAuthentication yes » par « Password authentication no » (spécifie que nous voulons désactiver la connexion par mot de passe).
- Remplacer la ligne « PermitRootLogin yes » par « PermitRootLogin no » (spécifie que nous voulons interdire de se connecter en tant que root).
Appuyez ensuite sur CTRL+o (la touche contrĂŽle et la touche o en mĂȘme temps), puis Entrer, puis CTRL+x (la touche contrĂŽle et la touche x en mĂȘme temps). Câest la suite Ă tapper si lâon veut enregistrer un fichier et le fermer avec Nano.
Voici un GIF du dĂ©roulĂ© de lâopĂ©ration (avec comme exemple de port 39889).
Maintenant, nous pouvons redĂ©marrer le service SSH. Il suffit dâentrer cette commande :
sudo systemctl restart ssh
Attention, à compter de maintenant, pour vous connecter au serveur, la commande ne sera plus « ssh utilisateur@ip » mais « ssh -p NUMERODEPORT utilisateur @ip ».
Se connecter via lâinterface Netcup.eu
Si vous vous retrouvez dans un cas ou vous ne parvenez plus Ă vous connecter Ă la machine en SSH, sachez que vous pouvez toujours vous reconnecter en passant par lâinterface de de netcup.eu .
Plus dâinformation en bas de la page dans lâappendice.
Pour vous déconnecter, tapez:
exit
Puis reconnectez-vous :
ssh -p numerodeport utilisateur@adresseip
Installation du pare-feu
Maintenant faisons en sorte de rejeter les connexions par défaut :
sudo ufw default deny incoming
Acceptons les connections sur notre port SSH choisi :
sudo ufw allow numerodeportssh/tcp
Puisque nous allons utiliser Geth et Lighthouse, nous allons ouvrir les ports 30303 et 9000 (respectivement)
sudo ufw allow 30303
sudo ufw allow 9000
Mettons maintenant en marche ces pare-feu :
sudo ufw enable
Maintenant, en tapant « sudo ufw status verbose« , vous devriez avoir un rendu similaire (mon port choisi pour SSH est le 38998) :
Et voilà ! Votre machine est désormais installée et sécurisée. Nous pouvons passer à la prochaine étape : créer les clés des validateurs.
Créer les clés de validateurs
Mainnet vs Testnet
Ce guide dĂ©tail les Ă©tapes nĂ©cessaires pour la mise en place dâun validateur sur le « mainnet », câest-Ă -dire le rĂ©sau officiel Ethereum 2. Il existe cependant des « testnet », câest-Ă -dire des rĂ©seaux qui permettent de tester, sans mettre en jeu des « vrais » ETH. Je vous recommande dâabord dâessayer dâinstaller et de lancer correctement un validateur sur un testnet. Pour ce faire, il suffit de remplacer « mainnet » par le nom du testnet (au moment de lâĂ©criture, « pyrmont »).
Une fois le validateur ayant été correctement lancé sur le testnet, vous pourrez passer au mainnet !
Rendez-visite à ce site : https://github.com/ethereum/eth2.0-deposit-cli/releases/ et trouvez la version du logiciel pour linux : elle devrait se terminer par « linux-amd64.tar.gz« .
Voici à quoi elle ressemble au jour de création de ce guide :
Ensuite copiez-en le lien :
Maintenant, reprenez le terminal et tapez ces commandes (en remplaçant le lien « https:// » par le contenu de votre presse-papier (le lien que vous avez copiĂ© lors de lâĂ©tape prĂ©cĂ©dente)).
cd ~
sudo apt install -y curl
curl -LO https://github.com/ethereum/eth2.0-deposit-cli/releases/download/v1.1.0/eth2deposit-cli-ed5a6d3-linux-amd64.tar.gz
Vous venez de télécharger la version compressée du logiciel qui va vous servir à créer les clés de vos validateurs. Pour le décompresser, il vous suffit de taper :
tar xvf eth2deposit-cli-ed5a6d3-linux-amd64.tar.gz
rm -rf eth2deposit-cli-ed5a6d3-linux-amd64.tar.gz
cd eth2deposit-cli-ed5a6d3-linux-amd64
Les noms des fichiers pourraient diffĂ©rer sur votre machine : ici câest eth2deposit-cli-ed5q6d3 car câest la version actuelle, mais elle pourrait changer dans le futur. Pour lâafficher, lancez simplement la commande ls
.
Vous pouvez maintenant créer vos clés ! Entrez cette commande (en changeant nombredevalidateurs par le nombre de validateurs que vous comptez lancer) :
./deposit new-mnemonic --num_validators nombredevalidateurs --mnemonic_language=english --chain mainnet
Prenez votre temps ! Gardez vos secrets au chaudâŠ
Prenez le temps de bien vérifier la commande que vous venez de taper. Avez-vous bien remplacé le NOMBREDEVALIDATEURS par le nombre de validateurs que vous comptez lancer ? Avez vous bien bien écrit « mainnet » ?
Dans cette commande, vous allez devoir noter vos mots de passe. Je vous recommande de les Ă©crire sur un bout de papier, dâen faire une deuxiĂšme copie et garder les deux copies dans deux endroits diffĂ©rents.
Personne ne pourra vous sauver si vous oubliez vos mot de passe ou vos mnemonics : câest donc dâune importance capitale pour vous de vous appliquer pendant cette opĂ©ration.
PremiÚre étape : créer un mot de passe. Choisissez-en un (de préférence au hasard), de bonne qualité, et notez le sur le bout de papier. Ensuite lisez le bout de papier, et tapez-le ici. Soyez sûrs que ça correspond à ce que vous avez noté sur le bout de papier !
Ensuite vous verrez apparaĂźtre une liste de mots : câest ce que lâon appelle votre mnemonic. Notez-le prĂ©cieusement, en faisant bien attention Ă lâorthographe des mots (ils sont en anglais, attention aux faux amis!).
Vous devrez ensuite entrer, dans lâordre, le mnemonic (suite de mots) que vous venez de noter. Soyez sĂ»rs de taper ce que vous avez Ă©crit sur votre papier !
Si vous tapez la commande ls, vous devriez avoir le mĂȘme rendu :
Dans le dossier validator_keys se trouvent plusieurs fichier : un fichier deposit_dataâŠjson, et autant de keystore-mâŠjson que vous avez entrĂ© de numĂ©ro de validateurs. Le fichier deposit_data est un fichier unique qui contient des informations nĂ©cessaires pour pouvoir dĂ©poser des ETH pour staker : les fichier keystore-m sont des fichiers reprĂ©sentants vos clĂ©s de validateur. Ils seront utilisĂ©s par la suite !
Vous avez crĂ©Ă© vos clĂ© de validateur (ainsi que le fichier de deposit associĂ©, nous y reviendrons plus tard). Maintenant il est temps dâinstaller les logiciels !
Mise en place des logiciels
TroisiÚme étape: mettre en place les logiciels nécessaires au staking.
Ces instructions sont Ă©crites pour Ubuntu (Linux). Si vous utilisez une autre machine, il faudra probablement adapter quelques commandes !
Petit récapitulatif
Il y a trois logiciels principaux qui vont ĂȘtre exĂ©cutĂ©s par votre machine:
- Le client Ethereum 1 : Oui, cela peut paraĂźtre Ă©tonnant mais la chaĂźne Ethereum 2 a besoin de connaĂźtre lâĂ©tat de la chaĂźne Ethereum 1 afin de fonctionner correctement.
- Le Beacon Node (BN) : Câest le logiciel qui sâoccupe de communiquer avec les autres nĆuds du rĂ©seau, de la gestion de la base de donnĂ©e de la chaĂźne: bref câest lui qui fait le gros du travail.
- Le Validator Client (VC) : Câest le fameux « validateur » qui revient Ă toutes les sauces. Câest un logiciel relativement simple, qui ne sâoccupe de faire quâune seule chose: signer des transactions. PĂ©riodiquement, il doit signer des transactions, grĂące Ă sa clĂ© privĂ©e (clĂ© qui doit rester secrĂšte, bien cachĂ©e sur lâordinateur). Il demande au BN quels messages il doit signer, sâassure que les informations renvoyĂ©es par le BN sont correctes, puis signe le message et le transmet au BN, qui lui le transmettra aux autres nĆuds du rĂ©seau.
Ce qui est intĂ©ressant, câest que plusieurs VC peuvent se connecter au mĂȘme BN: en effet, on peut faire tourner des centaines de validateurs, qui se connectent tous au mĂȘme BN. Un VC ne consomme pas beaucoup (rappelez-vous, câest le BN qui fait la majoritĂ© du travail), en lancer plusieurs sur la mĂȘme machine permet donc dâaugmenter un peu la rentabilitĂ©.
Une question devrait vous traverser lâesprit : est-il possible de connecter son VC a un BN sur une autre machine ? La rĂ©ponse est oui ! Vous pourriez trĂšs bien connecter vos VCs au BN dâun ami, ou dâune entreprise, si vous leur faites confiance. Vous nâĂȘtes donc pas OBLIGE de faire tourner un BN, si vous faites confiance Ă un autre BN. Attention cependant : si le BN dans lequel vous avez confiance se met Ă mal agir (se dĂ©connecter, ĂȘtre piratĂ©âŠ), vous pourriez en faire les frais ! Câest pourquoi il est recommandĂ© de faire tourner son propre BN.
Le paragraphe prĂ©cĂ©dent sâapplique tout aussi bien au nĆud Ethereum 1 que vous devez lancer: vous pouvez dĂ©cider de ne pas en lancer, et de vous remettre Ă un ami / une entreprise (par exemple Infura). Cependant, comme pour le BN, câest dĂ©conseillĂ©, car on nâest jamais mieux servi que par soi-mĂȘme !
Machine peu performante
Si votre machine est peu performante, une solution pourrait ĂȘtre de ne pas lancer geth et dâutiliser un autre accĂšs Ă la chaĂźne Eth 1.
Un des services les plus connus est Infura. Un tutoriel est disponible dans lâappendix afin dâen savoir plus. Cependant, comme Ă©crit just au-dessus, il est FORTEMENT recommandĂ© de lancer son propre client Ethereum 1
Les clients
Il y a plusieurs implĂ©mentations de clients pour Ethereum 2 : les plus connus sont Lighthouse, Prysm, Teku, et Nimbus. Chaque client a ses spĂ©cificitĂ©s (que ce soit lâĂ©quipe derriĂšre, lâhistoire, les buts recherchĂ©s, le langage utilisĂ©, les caractĂ©ristiques techniques, la communautĂ© etcâŠ). Dans cet article, nous allons utiliser lâimplĂ©mentation Lighthouse, de lâĂ©quipe Sigma Prime.
Client Ethereum 1
De la mĂȘme maniĂšre que diffĂ©rent clients Ethereum 2 existent, il existe aussi plusieurs implĂ©mentations de client Ethereum 1. Les plus connus sont geth et openethereum (anciennement parity-ethereum). Dans ce tutoriel, jâutiliserai geth et parlerai de geth mais ce quâil faut comprendre câest « client Ethereum 1 ».
Nous avons deux possibilités pour lancer notre client :
- Classique : Nous téléchargeons les code source des clients, nous les compilons (ou téléchargeons directement le binaire), puis nous lançons les logiciels un par un (geth, BN et VC). Cette technique est standarde, fonctionne correctement et permet de personnaliser des paramÚtres.
- Docker-compose : Câest une technique qui repose sur lâutilisation dâun logiciel (docker-compose) qui fera tout ça Ă notre place. Voyez-ça comme un logiciel qui gĂšre les autres logiciels : nous lui disons simplement « lance-moi une instance de geth, un BN, un VC, et connecte-les ensemble), et tada, le tour est jouĂ© !
Jâai personellement optĂ© pour lâutilisation de docker-compose : ça rend la tĂąche trĂšs simple Ă utiliser, installer, et mettre Ă jour.
Docker et Docker-Compose
Afin de nous faciliter la tĂąche, nous allons utiliser un logiciel qui sâoccupera de lancer les autres logiciels Ă notre place. Je vous prĂ©sente : Docker !
Pour installer Docker sur Ubuntu, câest tout simple :
sudo apt install -y docker.io
Assurons-nous que Docker a bien été installé en lançant cette commande en la comparant au screenshot en-dessous.
sudo docker run hello-world
Si cette commande ne fonctionne pas, câest probablement que docker nâa pas Ă©tĂ© correctement installĂ©. Dans ce cas, veuillez suivre les instructions dâinstallations officielles.
Profitons-en pour aussi installer Docker-Compose
sudo apt install -y docker-compose
Maintenant que nous avons installĂ© le logiciel docker-compose, il ne nous reste plus quâĂ lui dire ce que nous voulons lui faire faire (lancer geth, un BN et un VC). Ca tombe bien : lâĂ©quipe de lighthouse a un dossier avec tout de dĂ©jĂ prĂ©parĂ© !
Assurons-nous dâabord dâĂȘtre dans le bon rĂ©pertoire :
cd ~
Puis téléchargeons le dossier de configuration
git clone https://github.com/sigp/lighthouse-docker/
La commande ls (qui liste les fichier du répertoire) devrait ressembler à cela maintenant :
Allez maintenant éditer le fichier de configuration. Déplacez-vous dans le bon répertoire :
cd lighthouse-docker
Faites une copie du fichier de configuration :
cp default.env .env
Et allez Ă©diter le fichier de configuration : (nâoubliez pas, pour quitter câest CTRL+O, Enter, CTRL+X)
nano .env
Voici la liste des paramĂštres Ă Ă©diter. Si le paramĂštre nâapparaĂźt pas dans cette liste, câest quâil doit ĂȘtre laissĂ© Ă sa valeur par dĂ©faut. Attention, si vous voulez vous mettre sur le rĂ©seau de test, alors le paramĂštre NETWORK ne sera pas mainnet mais le nom du testnet (par exemple pyrmont).
NETWORK=mainnet
START_VALIDATOR=YES
VALIDATOR_COUNT=2
START_GETH=YES
ENABLE_METRICS=YES
Bien entendu je vous laisse Ă©diter VALIDATOR_COUNT pour ĂȘtre Ă©gal au nombre de validateurs que vous avez choisi de crĂ©er.
Si vous avez une machine puissante, vous pouvez aussi mettre SLASHER=YES afin de mettre en route un slasher.
Maintenant notre fichier de configuraiton prĂȘt, nous devons importer les validateurs. Pour ce faire, copiez dâabord les clĂ©s de validateurs dans le fichier courant.
cp -r ../eth2deposit-cli-ed5a6d3-linux-amd64/validator_keys/ .
Bien entendu il se peut que le nom de votre dossier varie : comme précisé au-dessus le mien est eth2deposit-cli-ed5a6d3-linux-amd64 mais je vous laisse adapter la commande à votre machine.
Puis initialisez les clés grùce à cette commande :
sudo docker run -it -v $(pwd)/lighthouse-data:/root/.lighthouse -v $(pwd)/validator_keys:/root/validator_keys sigp/lighthouse lighthouse --network mainnet account validator import --directory /root/validator_keys
Nous sommes fin prĂȘts ! Nous allons ouvrir un gestionnaire de fenĂȘtre, afin de conserver notre fenĂȘtre ouverte (plus dâinfo dans lâencart juste en-dessous).
Dâabord installons tmux :
sudo apt install -y tmux
Puis lançons-le !
tmux
Et maintenant, la commande finale :
sudo docker-compose up
Et voilĂ ! Vous devriez voir plein de messages fuser dans tous les sens. Ces messages sont des « logs », câest-Ă -dire des messages qui dĂ©crivent le statut des diffĂ©rents logiciels (rappelez-vous, geth, BN et VC) qui tournent.
Si ces logs ne vous conviennent pas et vous voulez isoler seulement les logs du BN ou du VC, tappez :
sudo docker container ls --format '{{.Names}}'
Vous devriez avoir cela en sorite (peut-ĂȘtre deux lignes en plus si vous avez dĂ©jĂ lancĂ© grafana / prometheus).
Pour suivre seulement les logs du validateurs par exemple :
sudo docker logs lighthouse-docker_validator_client_1 --follow
Et pour suivre le BN :
sudo docker logs lighthouse-docker_beacon_node_1
Ces commandes est lançable mĂȘme si vous nâĂȘtes pas dans tmux, et vous pouvez les quitter Ă tout moment en appuyant sur CTRL+c .
tmux
Nous avons lancĂ© les logiciels Ă lâaide dâun gestionnaire de fenĂȘtre (appelĂ© tmux). Il permet aux logiciels de continuer Ă tourner en tĂąche de fond. Pour vous dĂ©tacher de cette fenĂȘtre et la laisser tourner en tĂąche de fond, il vous suffit dâappuyer sur CTRL+b puis la lettre d.
A chaque fois que vous voudrez retrouver vos logiciels (pour les arrĂȘter, ou les mettre Ă jour etc), il suffira de tapper tmux a. Vous pourrez donc faire des aller-retours jusquâĂ vos logiciels grĂące Ă ce gestionnaire de fenĂȘtre.
Vous pouvez quitter cet Ă©cran en appuyant sur CTRL+b puis d. Cela « dĂ©tache » lâĂ©cran tmux et vous renvoie vers lâĂ©cran de dĂ©part. Les logiciels continuer donc de tourner en tĂąche de fond. Pour retourner sur lâĂ©cran de tmux, tappez :
tmux a
Si vous voulez arrĂȘter complĂštement les logiciels : appuyez sur CTRL+c, puis entrez :
sudo docker-compose down
Mettre Ă jour
En tant que validateur sur le rĂ©seau, vous avez comme devoir de tenir vos logiciels Ă jour. Un tutoriel sur comment le faire est disponible dans lâappendix, en bas de la page
Maintenant que nous avons nos logiciels qui tournent, il ne nous reste plus quâune Ă©tape : effectuer le(s) dĂ©pĂŽt(s) dâETH sur le rĂ©seau ! Rendez-vous sur le site officiel : https://launchpad.ethereum.org/overview (vous pouvez prĂ©fixer le nom du testnet dĂ©sirĂ©, par exemple : https://pyrmont.launchpad.ethereum.org/overview pour le testnet de pyrmont).
Lisez attentivement les 10 étapes (un récapitulatif ne fais jamais de mal), et vous devriez arriver sur cette page:
Vous pouvez choisir les logiciels que lâon utilise : geth, puis Lighthouse
Maintenant indiquez le nombre de validateurs que vous voulez lancer (dans mon cas, 2)
Puis cochez la case qui certifie que vous avez copié vos mnemoniques et votre mot de passe, et cliquez sur Continue.
Sur la page suivante, vous allez uploader votre fichier deposit_data dont on a parlĂ© Ă tout Ă lâheure. Mais comment faire ? Le fichier se trouve sur mon serveur, pas du mon ordinateur ! Pas de panique ! Jâai la solution : scp !
scp est un programme qui permet de copier des fichiers depuis un serveur vers votre ordinateur (ou dans lâautre sens) de façon sĂ©curisĂ©.
Dâabord crĂ©ons un dossier pour stocker nos fichiers :
cd ~
mkdir validateurs
cd validateurs
Sur votre terminal, dĂ©connectez-vous de votre machine (tapez exit), puis entrez simplement (en remplacant, comme dâhabitudeâŠ) :
scp -r -P numerodeport utilisateur@adresseip:lighthouse-docker/validator_keys .
Et voilĂ le travail ! Vous devriez maintenant pouvoir cliquer sur le gros bouton + prĂ©sent sur la page, et aller chercher le fichier deposit_data qui se trouve dans le dossier validateurs, dans votre rĂ©pertoire dâutilisateur (home directory).
Maintenant vous devriez pouvoir uploader le fichier deposit_data :
Et vous devriez voir cet Ă©cran ! (si vous ne vous ĂȘtes pas trompĂ©s de rĂ©seau !)
Maintenant il faut faire le dĂ©pĂŽt. Je vous laisse suivre le tutoriel dâinstallation de Metamask (vous pouvez y connecter votre Ledger si jamais câest cela que vous utilisez)
Obtenir du gETH
Si vous vous apprĂȘtez Ă faire un dĂ©pĂŽt sur un testnet, la monnaie utilisĂ©e nâest pas lâETH mais le gETH (görli-ETH). Il peut sâobtenir via des faucets, ou en rejoignant le Discord dâEthStaker.
Une fois Metamask installĂ©, soyez sĂ»rs dâĂȘtre sur la bonne chaĂźne : Ethereum Mainnet pour un dĂ©pĂŽt sur le mainnet, et Goerli pour un dĂ©pĂŽt sur un testnet.
Vous nâavez plus quâĂ lancer la transaction⊠et tada ! Votre dĂ©pĂŽt aura Ă©tĂ© effectuĂ© ! Vous pouvez dĂ©sormais suivre lâĂ©tat de vos validateurs : dans metamask, cliquez sur la transaction que vous venez dâeffectuer.
Puis cliquez sur la flĂšche qui vous mĂšnera Ă lâexplorateur de block :
Et ici vous pouvez voir les clĂ©s publique associĂ©es ! Vous pouvez consulter lâĂ©tat de votre validateur en cliquant dessus.
Ici nous utilisons le site beaconscan. Un autre explorateur connu est beaconcha.in. Dans cette photo, mon dĂ©pĂŽt nâa pas encore Ă©tĂ© inclus : en effet, une votre dĂ©pĂŽt effectuĂ©, il faut du temps afin quâil soit « inclus » et que votre validateur apparaisse dans la liste « officielle » des validateurs. Plus dâinfo sur ce procĂ©dĂ©.
Monitoring
Cette partie est optionelle : il sâagit de mettre en place un systĂšme de monitoring (afin de garder un oeil sur sa machine !). Nous allons utiliser Grafana et Prometheus : Prometheus va se charger de rĂ©cupĂ©rer des donnĂ©es de nos logiciels (mĂ©moire utilisĂ©e etc), et Grafana se chargera de les afficher.
Encore une fois, docker va nous sauver ! Nous allons cloner le repo lighthouse-metrics qui a déjà tout de préparé pour nous :
cd ~
git clone https://github.com/sigp/lighthouse-metrics
cd lighthouse-metrics
Ensuite, nous allons lancer grafana et prometheus grĂące Ă la commande⊠docker-compose ! Notez lâutilisation de -d, qui permet de le lancer en tĂąche de fond.
sudo docker-compose up -d
Maintenant nous pouvons passer Ă la derniĂšre Ă©tape : visualiser les donnĂ©es ! DĂ©connectez-vous du serveur (tappez exit), et tappez la commande suivante (en remplacant, comme dâhabitude):
ssh -p numerodeport -L 127.0.0.1:3000:127.0.0.1:3000 utillisateur@adresseip
Et maintenant, sur votre navigateur, tapez cette URL : localhost:3000 ! Vous devriez arriver sur un panneau de configuration ! Le nom dâutilisateur est admin et le mot de passe changeme. Ensuite, vous devrez cliquer sur le bouton Manage
Puis cliquez sur le bouton Import
Maintenant vous devez visiter cette page et en copier le contenu, et le coller le contenu dans la box « Import panel via JSON »
Puis cliquez sur Load et Import et⊠tada !!
Câest un panneau de monitoring global, il vous est bien sĂ»r possible de modifier et lâadapter Ă vore convenance !
Aller plus loin
Des amĂ©liorations sont toujours possibles ! Vous pourriez crĂ©er des services qui se relancent automatiquement, avoir un systĂšme de sauvegarde, avoir un meilleur systĂšme de logging⊠cependant ce guide nâest lĂ que pour couvrir les bases. Il ne faut vraiment pas hĂ©siter Ă aller chercher de lâaide et poser des questions, voici donc quelques recommandations de site / communautĂ©s qui pourraient vous intĂ©resser :
https://reddit.com/r/ethstaker/ : Le subreddit dâune communautĂ© de staker (je vous recommande de rejoindre le Discord, câest un des meilleurs endroits pour poser des questions)
https://reddit.com/r/ethereum : Le subreddit officiel dâEthereum
https://lighthouse-book.sigmaprime.io/ : La documentation officielle de Lighthouse
https://docs.prylabs.network/docs/getting-started/ : La documentation officielle de Prysm
https://docs.teku.consensys.net/en/latest/ : La documentation officielle de Teku
https://status-im.github.io/nimbus-eth2/ : La documentation officielle de Nimbus
Pour se renseigner sur le protocole en général il y a bien entendu :
â La spĂ©cification officielle : https://github.com/ethereum/eth2.0-specs
â Cet article que jâai particuliĂšrement apprĂ©ciĂ© : https://ethos.dev/beacon-chain/
â Les spĂ©cifications commentĂ©es de Vitalik et de Ben Edgington
Appendice
Détails sur les pénalités
Base de données des Slashings
Une des rĂšgles du rĂ©seau est quâun validateur ne doit jamais publier deux messages conflictuels pour un mĂȘme block. Pour ĂȘtre sĂ»r quâil ne publie jamais de messages conflictuels, un validateur tient Ă jour une base de donnĂ©e de tous les messages quâil a envoyĂ©. Cette base de donnĂ©e (souvent appellĂ©e slashing protection database, et situĂ©e dans ~/lighthouse-docker/lighthouse-data) est TRES importante, car si vous la perdez, votre validateur pourrait bien publier deux messages conflictuels et se faire pĂ©naliser !
Il est donc recommandĂ© dâen faire une sauvegarde rĂ©guliĂšrement ! Et si vous la perdez, il est recommandĂ© dâattendre plusieurs heures avant de relancer votre validateur, afin de rĂ©duire les chances quâil produise des messages conflictuels.
Il y a deux grosses catégories de pénalités que vous pourriez encourir :
- Slashing : une grosse partie de vos ETH sont retirĂ©s instantanĂ©ment, et votre validateur se fait exclure (il ne peut plus staker). Cela pourrait se produire si vous lancez deux fois le mĂȘme validateur, ou si vous utillisez une version malicieuse dâun client. Cela pourrait aussi se produire dans le cas ou vous perdez votre base de donnĂ©e de protection (voir lâencart juste au-desus).
- Leaking : Câest le fait dâavoir une « fuite » dâETH dĂ» Ă une absence. Si votre validateur nâest pas en ligne, il subit des pertes. Ces pertes sont proportionelles au nombre de validateurs qui sont hors-ligne en mĂȘme temps que vous. Si vous ĂȘtes tout seul, les pĂ©nalitĂ©s sont minimes (de lâordre de 0.3% par semaine, ce qui vous laisse LARGEMENT le temps de revenir en ligne), mais si la moitiĂ© du rĂ©seau en hors-ligne en mĂȘme temps, alors les pĂ©nalitĂ©s augmentent trĂšs rapidement. Il y a donc un risque Ă avoir votre machine chez un hĂ©bergeur type AWS ou netcup.eu : sâils tombent en panne, vous ne serez pas le seul Ă ĂȘtre hors-ligne et encourerez donc des peines plus Ă©levĂ©esâŠ
Se connecter via lâinterface de Netcup.eu
Rendez-vous sur le servercontrolpanel et cliquez sur votre machine. Ensuite cliquez sur la « Console » en haut Ă droite de lâĂ©cran (entourĂ© en rouge sur la photo).
Une fenĂȘtre pop-up devrait sâouvrir (si elle ne sâouvre pas vĂ©rifiez les paramĂštres de votre navigateur). Ici, il vous suffit de vous connecter en entrant dâabord le nom dâutilisateur, puis le mot de passe de votre utilisateur. Si vous nâavez pas encore dâutilisateur, utilisez les identifiants de root.
Cela vous donne accĂšs Ă un shell classique : Ă vous de rĂ©soudre les problĂšmes afin de pouvoir vous reconnecter depuis votre interprĂȘteur ! (Probablement un problĂšme de port SSH / pare-feuâŠ)
Infura et autres ETH1 endpoints
Si votre machine est peu performante, une solution possible est dâutiliser un « fournisseur » dâaccĂšs Ă ETH1 plutĂŽt que de faire tourner votre propre instance de geth. Câest plus risquĂ© (car vous devez faire confiance Ă votre fournisseur plutĂŽt que de lancer un client par vous-mĂȘme), mais cela devrait rĂ©duire les ressouces utilisĂ©es par votre machine.
Infura
Je vais ici donner un exemple de mise en place avec Infura. Si vous avez dĂ©jĂ votre fournisseur dâaccĂšs Ă Ethereum 1, vous pouvez passer cette Ă©tape.
Rendez-vous sur le site infura.io et créez un nouveau compte.
Une fois votre compte crĂ©Ă©, cliquer sur lâonglet Ethereum dans la barre de gauche.
CrĂ©ez ensuite un nouveau projet en cliquant sur « Create New Project » (il se peut que lâinterface soit diffĂ©rente si câest votre premier projet)
Ensuite cliquez sur votre projet et allez dans lâonglet Settings.
En bas de la page vous trouverez les informations qui nous intĂ©ressent : le menu dĂ©roulant vous permet de choisir le rĂ©seau (mainnet pour le rĂ©seau officiel, Görli pour les testnets). Puis vous pouvez copier lâURL (entourĂ© en rouge) qui vous servira dans lâĂ©tape suivante.
Modifications Ă apporter
GrĂące Ă docker-compose, cette modification est un rĂ©el jeu dâenfant : il nây a que deux lignes Ă modifier !
nano .env
Ensuite les deux lignes Ă modifier sont : START_GETH qui doit ĂȘtre vide, et VOTING_ETH1_NODES qui doit ĂȘtre mis Ă lâURL du fournisseur dâaccĂšs Ă ETH1 (celui que vous avez copiĂ© si vous avez suivi le tutoriel Infura).
START_GETH=
VOTING_ETH1_NODES=urldufournisseur
Les autres paramÚtres sont à laisser comme dans décrit plus haut dans le guide.
Et voilà le travail ! Maintenant lorsque vous lancerez vos logiciels (sudo docker-compose up), vous passerez par votre fournisseur plutÎt que par geth ! Vous pouvez donc supprimer le dossier geth maintenant pour libérer de la place sur votre machine :
sudo rm -rf ~/lighthouse-docker/geth-data
Migrer vos validateurs
La migration de validateurs dâun serveur Ă un autre est une opĂ©ration facile mais qui nĂ©cessite une attention particuliĂšre. Le dossier important Ă copier se trouve dans lighthouse-data/mainnet/validators
(ou /testnet/ si sur testnet).
Attention, cette migration ne sert que si vous changez de machine mais comptez utiliser le meme client (Lighthouse). En attendant lâEIP-3076, changer de client nâest PAS recommandĂ©.
De plus nous copierons aussi le dossier secret
afin dâĂ©viter de devoir importer les validateurs de nouveau.
Ok premiĂšre Ă©tape : sâassurer que nos validateurs sont Ă©teints. Pour ça :
tmux a
Puis CTRL+c et ensuite
sudo docker-compose down
Sont-ils vraiment Ă©teints ?
Pour vous assurer que vos validateurs sont Ă©teints, vous pouvez entrer la commande sudo docker container ls --format {{.Names}}
et vĂ©rifier que rien la sortie de cette commande est vide (ou au moins quâelle ne contient pas « validator_client ».
Nous allons devoir autoriser la connexion en tant que root. Oui câest une mauvaise pratique, et nous ne le ferons que temporairement, car les fichiers qui se trouvent dans validators
appartiennent Ă root.
Pour ce faire, il faut aller éditer le fichier /etc/ssh/sshd_config et changer la ligne « PermitRootLogin no » en « PermitRootLogin yes« . Pour que cette modification ait lieu, il faut ensuite redémarrer le service ssh : sudo systemctl restart ssh.
Maintenant vous pouvez vous déconnecter de la machine (exit), et vous déplacer dans le dossier Validateurs que nous avions créé précédemment.
cd ~/validateurs
De lĂ il ne nous reste plus quâĂ copier le dossiers validators ainsi que les dossiers secrets et wallets (les derniers ne sont pas nĂ©cessaires mais ils son pratiques). Bien sĂ»r il vous faut remplacer numerodeportssh, utilisateur, et adresseip (et mainnet si vous utilisez un testnet).
scp -r -P numerodeportssh root@adresseip:/home/utilisateur/lighthouse-docker/lighthouse-data/mainnet/validators .
scp -r -P numerodeportssh root@adresseip:/home/utilisateur/lighthouse-docker/lighthouse-data/mainnet/secrets .
scp -r -P numerodeportssh root@adresseip:/home/utilisateur/lighthouse-docker/lighthouse-data/mainnet/wallets .
Une fois cette opération effectuée, vous pouvez retourner sur le serveur et retirer le login en tant que root (PermitRootLogin).
Maintenant il faut faire le chemin inverse : câest Ă dire envoyer vos dossiers validators et secrets sur votre nouvelle machine, dans le bon rĂ©pertoire. Je pars du principe ici que la nouvelle machine est dĂ©jĂ crĂ©e, et que vous avez dĂ©jĂ clonĂ© les repo lighthouse-docker (que vous avez suivi ce tuto quoi !). Assurez-vous aussi que PermitRootLogin est mis sur yes. La manipulation est simple :
scp -r -P numerodeportssh validators root@adresseip:/home/utilisateur/lighthouse-docker/lighthouse-data/mainnet/validators
scp -r -P numerodeportssh wallets utilisateur@adresseip:/home/utilisateur/lighthouse-docker/lighthouse-data/mainnet/wallets
scp -r -P numerodeportssh secrets utilisateur@adresseip:/home/utilisateur/lighthouse-docker/lighthouse-data/mainnet/secrets
Enfin nous allons copier le dossier validator_keys afin quâil soit sur notre serveur aussi :
scp -r -P numerodeport ~/validateurs/validator_keys utilisateur@adresseip:lighthouse-docker/validator_keys
Et voilà ! Le tour est joué ! Vous pouvez commencer à valider sur cette nouvelle machine ! Assurez-vous de bien avoir remis PermitRootLogin no, et assurez-vous de bien avoir éteint votre ancienne machine !
Mettre Ă jour les logiciels
Eh oui, en tant que validateur sur le rĂ©seau, il vous faudra vous assurer dâĂȘtre Ă jour !
Dâabord Ă©teindre grafana et prometheus :
cd ~/lighthouse-metrics
sudo docker-compose down
Puis Ă©teindre le BN, geth et les VC en attachant tmux
tmux a
Puis en lâinterrompant (CTRL+c), puis en le stoppant :
sudo docker-compose down
Quittez votre session tmux en appuyant sur CTRL+d.
Maintenant vous pouvez mettre Ă jour les paquets :
sudo apt update && sudo apt upgrade
Puis mettre Ă jour les logiciels :
cd ~/lighthouse-metrics && git checkout . && git pull origin stable && sudo docker-compose pull
cd ~/lighthouse-docker && git checkout . && git pull && sudo docker-compose pull
Maintenant il faut retourner Ă lâĂ©tape de crĂ©ation du fichier .env (en haut de cette page !), puis vous pourrez relancer les logiciels : dâabord tmux, puis sudo docker-compose up, puis CTRL+b, puis d, ensuite cd ~/lighthouse-metrics, puis sudo docker-compose up -d !
The post Guide pour débutants : staker sur Ethereum 2 ! first appeared on Ethereum France.