Slashing : les risques derrière le staking sur Ethereum 2.0
Avec l’arrivée de la phase 0 d’Ethereum 2.0 le 1er décembre, de nombreux utilisateurs souhaitent sauter sur l’occasion pour staker leurs ETH et générer quelques profits. Cependant, plusieurs risques sont à prendre en compte, notamment le collatéral pouvant se dilapider à cause du processus appelé « slashing ».
La phase 0 d’Ethereum 2.0 : le Proof of Stake
Nous en parlions récemment. Ethereum 2.0 est une mise à jour découpée en 3 phases. La première, appelée phase 0, permettra le lancement de la beacon chain.
La beacon chain sera la colonne vertébrale d’Ethereum 2.0. C’est cette chaîne qui aura pour mission d’assurer le consensus, à savoir le Proof of Stake, ainsi que de synchroniser l’ensemble des shard chains qui arriveront par la suite.
Comme nous venons de le voir, Ethereum 2.0 marque la transition d’un modèle de consensus basé sur le Proof of Work au Proof of Stake.
Dans le cas du Proof of Work, les validateurs de blocs (les mineurs) se font concurrence dans la résolution du bloc en déployant de la puissance de calcul. Celui qui valide le bloc empoche la récompense des nouvelles pièces créées.
Le Proof of Stake, quant à lui, se veut moins énergivore . Dans ce système, les validateurs doivent mettre en séquestre un montant défini de cryptomonnaies pour pouvoir participer au processus. Cette somme mise en séquestre sert de preuve d’enjeu. Elle permet de prouver la bienveillance d’un validateur.
Dans le cas d’Ethereum, un validateur doit mettre en séquestre au moins 32 ETH pour participer à la validation des blocs.
Cependant, le séquestre n’est pas suffisant pour assurer l’honnêteté d’un validateur et ne permet pas d’assurer les performances du réseau. C’est pour cela qu’Ethereum a introduit des pénalités, ainsi que le slashing pour sanctionner les validateurs malveillants.
Fonctionnement du Proof of Stake d’Ethereum 2.0
Le but de cet article n’est pas d’expliquer le fonctionnement complet du Proof of Stake d’Ethereum 2.0. Cependant, quelques notions sont indispensables à la compréhension du slashing.
La beacon chain est construite sur une unité de temps appelée le slot. Un slot représente 12 secondes. Au début de chaque slot, un validateur est sélectionné pour être le block proposer, à savoir le validateur en charge de la création du bloc.
Chaque bloc est ensuite envoyé auprès d’un comité de validateurs, lui aussi sélectionné aléatoirement, qui aura la tâche d’attester la validité du bloc. Ces derniers le valident grâce à la publication et la propagation d’attestations.
Si plus de 2/3 des attestations publiées par les validateurs sont positives, le bloc est validé et ajouté à la chaîne.
Pénalité : le rappel à l’ordre
Un validateur peut s’exposer à des pénalités s’il manque à son rôle de validateur. En pratique, les pénalités ne seront censées concerner que les erreurs mineures, dont l’impact n’est pas critique pour le réseau.
Il existe 2 moyens d’être pénalisé :
- Si le validateur se retrouve hors ligne, c’est-à-dire qu’il soumet des attestations incorrectes ou s’il manque des attestations. Cette pénalité est calculée suivant la formule :
3 x récompense_basique
; - En cas de « fuite d’activité » (activity leak), si le réseau n’arrive pas à atteindre la finalité au bout de 4 epochs. Ainsi, tous les validateurs inactifs (hors ligne) qui causent cette fuite d’activité seront pénalisés. Cette pénalité est calculée suivant la formule :
solde_effectif * nombre d’epoch qui retarde la finalité * [1/(16 277 216)]
.
Bien qu’inconfortable pour le validateur, ces pénalités permettent d’assurer la stabilité du réseau et de son consensus. L’objectif est de pénaliser le validateur, pour qu’il puisse corriger son erreur. Si celui-ci ne le fait pas, son solde sera peu à peu dilapidé en pénalités jusqu’à être inférieur à 32 ETH. Dans ce cas, le validateur ne sera plus éligible à la validation : ne resteront alors en ligne que les validateurs supposés honnêtes et fiables.
Le slashing, la punition ultime des mauvais validateurs
Le système de consensus d’Ethereum 2.0 suit une série de règles. Le slashing vise à punir les validateurs qui ne respecteraient pas ces règles.
Un validateur peut être slashé s’il :
- Propose 2 blocs différents dans un seul emplacement ;
- Soumet 2 attestations différentes dans une seule époque ;
- Soumet une attestation qui contourne complètement une autre attestation.
Dans les 3 cas, la quantité d’ethers imputée au collatéral est la même. Cette pénalité se déroule en 3 parties :
- Au moment de la faute ;
- Pour chaque epoch écoulée où le validateur n’a pas quitté la liste des validateurs ;
- Une sanction spéciale est appliquée à mi-chemin entre le moment où le message de dénonciation est inclus dans un bloc et le moment où le validateur slashé peut se retirer.
Lors de chaque étape, le collatéral est imputé de la façon suivante :
Le mécanisme de slashing n’est, quant à lui, pas automatique. Celui-ci ne survient que lorsqu’un validateur détecte un comportement malveillant de la part d’un autre validateur. Il lance alors l’alerte en propageant un message spécifique sur le réseau : une dénoncition. Le validateur qui lance l’alerte, appelé Whistleblower, ainsi que le block proposer qui inclut le rapport de signalement dans le bloc, sont récompensés par le réseau.
Comme nous avons pu le voir, tout n’est pas rose dans la vie d’un validateur sur Ethereum 2.0. Celui-ci expose son collatéral à des risques de slashing et de pénalités diverses. C’est pour cela qu’il est impératif de respecter les recommandations techniques et matérielles émises par la fondation Ethereum. Cela vous permettra de minimiser les chances d’être la cible de pénalité, ou pire, du slashing.