La preuve d’enjeu, le consensus d’Ethereum

Chapitre II Article h

Après les smart contracts, l'EVM ou encore l'ether et le gas, la preuve d'enjeuProof of Stake » en anglais) est le dernier élément technique d'Ethereum qu'il nous reste à aborder. Ce mécanisme permet de sélectionner l’acteur chargé d’intégrer le prochain bloc à la chaîne. Il permet aussi d’établir un consensus décentralisé sur l’historique des transactions du réseau. Comment fonctionne-t-il ? Pourquoi a-t-il remplacé au sein d'Ethereum la preuve de travail ? Quels sont ses avantages et ses inconvénients ? C'est ce à quoi nous répondrons dans la suite de cet article.

Temps de lecture estimé : 33 minutes

Introduction à la blockchain et aux mécanismes de consensus

La blockchain

S'il est inutile de répéter dans les détails ce que nous avons développé dans l'article de cette Encyclopédie dédié à la blockchain, il est néanmoins important de commencer par quelques rappels.

Les cryptomonnaies permettent à un réseau pair-à-pair d'utilisateurs d’échanger de la valeur sans passer par un intermédiaire de confiance. Pour ce faire, ces réseaux sont décentralisés : aucune entité ne peut prendre le contrôle de la comptabilité de référence du réseau.

Afin de s’accorder sur le registre des transactions effectuées sur le réseau, les participants doivent maintenir un consensus autour de cette comptabilité de référence. Il faut pouvoir déterminer la validité des transactions soumises aux nœuds du réseau, notamment en :

  • S’assurant qu’un utilisateur possède bien les fonds qu’il souhaite dépenser ;
  • Choisissant entre des transactions conflictuelles ;
  • Empêchant les doubles dépenses.

C'est ici qu'un mécanisme de consensus est intégré au fonctionnement du réseau. Il existe plusieurs mécanismes de consensus, dont les plus connus et utilisés sont la preuve de travail (Proof of Work ou PoW) et la preuve d'enjeu (Proof of Stake ou PoS). Ethereum a utilisé les deux, fonctionnant pendant environ 7 ans avec le PoW, avant de passer au PoS.

Une fois les transactions validées, elles sont inscrites sur la blockchain, qui est le registre distribué de référence. On considère ensuite qu'elles sont finalisées lorsqu’il est mathématiquement quasi-impossible de les modifier a posteriori.

La preuve de travail

La preuve de travail est le mécanisme de consensus le plus éprouvé dans l’univers des blockchains. Très sécurisé mais assez énergivore, ce mécanisme est utilisé par Bitcoin.

Vous pouvez trouver tous les détails sur son fonctionnement dans cet article. Pour faire gagner du temps aux plus pressés d'entre vous, en voici un petit résumé.

Les acteurs chargés d'ajouter des blocs de transactions au registre comptable (la blockchain) s'appellent des mineurs. Pour y parvenir, ils doivent trouver la solution (le hash) d'un problème mathématique complexe, en utilisant la puissance de calcul de leurs machines.

Concrètement, les mineurs génèrent des hashs de manière aléatoire jusqu’à en trouver un qui convient. Cela nécessite d'effectuer de nombreux essais et donc une dépense d'énergie (et donc d'argent), d'où la notion de preuve de travail. Lorsqu’il trouve un hash valide, le mineur peut ajouter son bloc à la chaîne. En retour, il touche une récompense (ici des BTC).

La preuve de travail est un mécanisme robuste du point de vue de la sécurité. En effet, il permet de résister à l'éventuelle corruption de la moitié de la puissance de calcul du réseau. Sa principale alternative (qui n'en est pas toujours une) est la preuve d’enjeu, le Proof of Stake.

Ferme de minage sur Bitcoin
Ferme de minage sur Bitcoin

La preuve d'enjeu

L’idée de la preuve d'enjeu est d’obtenir un consensus sur les transactions, non pas en dépensant de l'énergie (sous forme de puissance de calcul), mais en mettant des fonds en jeu directement sur le réseau.

Ces derniers sont appelés le stake (l’enjeu). Les producteurs de blocs sont sélectionnés de manière aléatoire par un algorithme, et non pas en générant des solutions à un problème mathématique. À la différence de la preuve de travail, les nœuds producteurs ne sont pas appelés des « mineurs » mais des validateurs.

De la même façon que pour la preuve de travail, le nœud validateur qui inscrit un bloc dans la chaîne est récompensé. En cas de mauvais comportement, il est sévèrement puni. Ainsi, c'est avec le principe de la carotte et du bâton sous forme d'incitations économiques que les règles du protocole sont respectées.

Alors que le PoW est un mécanisme incitatif basé sur la récompense, le PoS met plutôt l'accent sur la punition. Cela permet de rompre la symétrie entre les coûts d'attaque et de défense du réseau.

En effet, avec le PoW, un attaquant souhaitant falsifier des blocs doit dépenser plus d’énergie que le reste du réseau. La sécurité du réseau dépend donc de la quantité d’énergie déployée par les mineurs honnêtes.

Avec le PoS, les choses sont différentes. Les validateurs n'ont qu'à confirmer qu'un bloc est correct quand on leur demande. S'ils ne font pas leur job correctement, le réseau leur confisque tout ou partie des jetons qu'ils avaient mis en gage. Les pénalités sont très coûteuses, et l'attaque est beaucoup moins intéressante économiquement parlant que la défense Il s'agit ni plus ni moins que d'une autre forme d'expression de la théorie des jeux.

La sécurité d’un réseau sous preuve d'enjeu provient donc des pertes économiques infligées en cas d’attaque.

La transition de la preuve de travail à la preuve d'enjeu

S'il était prévu dès le départ qu'Ethereum fonctionne en PoS, il était impossible de le déployer sereinement au moment du lancement de la blockchain. Il fallait attendre que les ethers aient une capitalisation de marché importante, afin de réduire le risque d'attaque du fait des pertes potentielles engendrées.

Le PoW ayant déjà fait ses preuves depuis plusieurs années sur Bitcoin, il était logique pour Vitalik Buterin de s’en servir afin de débuter l’aventure des contrats intelligents. Ce dernier avait cependant choisi un autre algorithme de hachage que Bitcoin, afin que les mineurs aient à utiliser un autre type de matériel informatique (des cartes graphiques) pour éviter une concentration des risques sur un seul hardware.

Il aura finalement fallu plusieurs années de recherches et de simulations sur plusieurs testnets, avant d’officialiser le passage à la preuve d’enjeu. La feuille de route initiale a été plusieurs fois modifiée, retardée et même abandonnée en partie. Le passage au PoS a été réalisé le 15 septembre 2022 lors de l'événement « The Merge », finalisé grâce à la mise à jour « Paris ».

Concrètement, cela a souvent été imagé comme le fait de changer le moteur d'un avion en plein vol. Cette transition, aussi risquée qu'ambitieuse, a parfaitement fonctionné.

Le passage au PoS n'est cependant pas une finalité en soit, et s'intègre à la feuille de route globale du réseau, qui vise à une fragmentation du traitement des données (sharding) et une déportation du traitement des données (rollups).

Hommage au passage à la preuve d'enjeu dans le block du déploiement de The Merge
Hommage au passage à la preuve d'enjeu dans le block du déploiement de The Merge

Le fonctionnement de la preuve d'enjeu d'Ethereum

Il existe de nombreuses variantes de la preuve d'enjeu. Ici, nous ne nous intéresserons qu'à celle utilisée par le réseau Ethereum. Le mécanisme comporte plusieurs éléments et étapes.

Son mécanisme de consensus, conceptualisé par Vitalik Buterin et Vlad Zamfir, s’appelle Gasper. Ce nom est la contraction de GHOST et Casper :

  • Casper FFG (Casper the Friendly Finality Gadget) est l’algorithme déterminant la finalité des blocs de la chaîne. Il permet aux nœuds du réseau de s’assurer que les blocs font bien partie de la chaîne canonique, même en cas d’informations incomplètes ;
  • LMD-GHOST (Latest Message Driven Greediest Heaviest Observed SubTree) est le protocole déterminant les règles selon lesquelles les validateurs votent et choisissent, en cas de fork, la chaîne valide.

Rentrons maintenant dans le détail des éléments clés de la preuve d'enjeu sur Ethereum.

Les nœuds et les clients

Dans le contexte de la blockchain, un nœud est une machine qui fait partie du réseau et qui détient une copie à jour de l’ensemble de la blockchain. Pour être un nœud, il faut installer et exécuter un logiciel dédié appelé « client ». Il existe différents types de nœuds et de clients.

Depuis « The Merge », les nœuds d'Ethereum doivent exécuter en parallèle 2 types de clients :

  • Un client d'exécution : il « écoute » ce qui se passe sur le réseau, récupère les nouvelles transactions et les exécute dans l'EVM. Il stocke aussi toute la blockchain et son état actuel. C'est aussi lui qui fournit une interface utilisateur pour interagir avec le réseau.

    Les clients d'exécutions les plus connus sur Ethereum sont : Geth, Besu, Nethermind, Akula et Erigon.
  • Un client de consensus : il implémente l’algorithme de consensus de la preuve d’enjeu. En d'autres termes, il permet au réseau de s'accorder sur la validité des transactions effectuées à l'aide du client d’exécution. C'est lui qui sert à la validation des blocs et des transactions.

    Les clients de consensus les plus connus sur Ethereum sont : Lighthouse, Nimbus, Lodestar, Prysm et Teku.

Quel que soit le client concerné, il s'agit d'une implémentation logicielle qui exécute le code source d'Ethereum. Ils remplissent tous le même rôle mais sont codés à l'aide de différents langages de programmation, avec des logiques diverses. Ceci permet de garantir une plus grande sécurité et décentralisation qu'avec un client unique. En effet, si un bug ou une vulnérabilité est découvert dans un client, il n’affecte pas l’ensemble du réseau. Cela permet aussi de les exécuter sur différents systèmes d'exploitation.

Voici ci-dessous la répartition des clients exécutés par les nœuds. Vous pouvez remarquer qu'Ethereum connaît un problème de centralisation au niveau du client d'exécution Geth qui est utilisé à l'heure de l'écriture de ces lignes par environ 52 % des nœuds, ce qui pourrait poser problème en cas de faille. Ce pourcentage était en revanche bien plus problématique par le passé, avec jusqu'à 90 % des nœuds liés au client Geth.

Diversité des clients sur Ethereum
Diversité des clients sur Ethereum

En parallèle des clients, il existe aussi différents types de nœuds en fonction des machines sur lesquelles ils reposent et du rôle qu'ils veulent jouer au sein du réseau :

  • Les nœuds légers (light node) : comme leur nom l'indique, ils demandent peu d'espace disque car ils stockent uniquement les en-têtes de blocs. Ceci leur permet d'être installés sur des appareils mobiles tels que des smartphones. Ils ne participent pas au consensus (ils ne peuvent pas ajouter de nouveaux blocs), mais ils peuvent accéder à la blockchain Ethereum avec la même efficience et garantie de sécurité qu'un nœud complet.
  • Les nœuds complets (full node) : ces nœuds stockent les données les plus récentes de la blockchain et nécessitent environ 400 Go d'espace disque. Ils peuvent participer à la validation de blocs lorsque des fonds sont engagés. Ils sont alors appelés les validateurs.
  • Les nœuds d'archive : ils contiennent toutes les données de la blockchain depuis sa genèse. Ils nécessitent au minimum 7 To de mémoire. Ils peuvent fournir des informations sur l'état de la blockchain à n'importe quel moment.

Si vous souhaitez connaître la répartition des nœuds et des clients, vous pouvez consulter le site Etherscan, qui est mis à jour en temps réel.

Les validateurs

Afin de devenir validateur de blocs, il faut être un nœud complet et engager des fonds, les « staker ». Pour pouvoir opérer de la sorte sur Ethereum, il est nécessaire de staker 32 ethers. Ces derniers sont verrouillés au sein d’un smart contracts grâce à une transaction spéciale.

Les validateurs sont appelés à remplir différentes fonctions au sein du réseau. Ils doivent :

  • Vérifier les nouveaux blocs et attester de leur validité ;
  • Proposer de nouveaux blocs lorsqu'ils sont tirés au sort ;
  • Participer a des agrégations de signature (de validateurs) et à un comité de synchronisation du réseau (lorsqu'ils sont sélectionnés pour en faire partie) ;
  • Dénoncer et punir les validateurs qui ne jouent pas leurs rôles correctement.

S'ils font correctement leur travail, les validateurs touchent des récompenses. Dans le cas contraire, ils sont punis par le réseau qui vient slasher (brûler) tout ou partie des ethers qu'ils ont staké.

La somme de 32 ETH (environ 80 000 dollars au moment de l'écriture de ces lignes) n'est pas à la portée de toutes les bourses. Pour démocratiser le staking, certains ont eu l'idée de créer des pools communes, dans lesquelles chacun peut venir déposer le nombre d'ethers qu'il désire. Une fois que les 32 ETH sont réunis, le nœud peut être monté et chacun touche les récompenses au prorata de sa participation. Nous reviendrons sur ce point plus bas dans cet article, dans le paragraphe « Les différentes options pour staker des ETH ».

Les récompenses et pénalités des validateurs

Les validateurs perçoivent des revenus en ether de deux façons :

  • En tant que stakers (intérêts) : les validateurs reçoivent des intérêts liés au staking. Le rendement est variable et dépend du nombre d'ethers total stakés. Plus ce nombre augmente, plus le rendement diminue. Ce dernier peut aller de 18 % annuel (s'il y a moins d'un million d'ethers stakés) à 1,81% (si le nombre d'éther stakés est de 100 millions ou plus). Au moment de l'écriture de ces lignes, il y avait environ 28,5 % de tous les ethers stakés pour un rendement de 3,43 %.
  • En tant que participants au consensus (récompenses) : les validateurs obtiennent différentes récompenses en fonction des tâches qu'ils accomplissent.

Voici la liste des différentes récompenses que peuvent toucher les validateurs :

  • La récompense d'attestation de bloc : elle est perçue à chaque époque (une époque dure 32 blocs soit environ 6,4 minutes). Elle dépend du nombre de validateurs.
  • La récompense de bloc (block proposal) : elle est perçue suite à la validation d'un bloc. Elle varie en fonction du nombre de validateurs. Elle est de l'ordre de 0,01 à 0,03 ETH.
  • La récompense de synchronisation : elle est perçue par un validateur quand il participe à un comité de synchronisation. Elle varie en fonction du nombre de validateurs.
  • Les récompenses de slashing : ces récompenses tombent quand un validateur dénonce le mauvais comportement d'un autre. Elles peuvent monter jusqu'à 0,0625 ETH (1/512 de l'enjeu du validateur slashé).
  • Les frais de priorité : ce sont les « pourboires » inclus par les utilisateurs pour rendre leur transaction attrayante. Le total est généralement de 0,001 à 0,01 ETH et rarement au-delà d'un ether.
  • Les récompenses d'organisation du bloc (MEV rewards) : elles résultent de l'optimisation de l'utilisation de l'espace de bloc. Ceci se fait en modifiant l'ordonnancement des transactions. Elles sont de l'ordre de 0,001 à 0,01 ETH et rarement au-delà d'un ETH.

Les validateurs peuvent êtres pénalisés pour deux raisons. Soit pour ne pas avoir été disponible, soit pour avoir tenter de faire passer des transactions frauduleuses.

Dans le premier cas ils ne touchent pas de récompenses et doivent payer ce qu'ils aurait gagné lorsqu'ils se remettent en ligne. Dans le second, on leur enlève tout ou partie des ethers qu'ils ont mis en gage, suivant la gravité de la faute. La « punition » minimum est de 1 ETH.

La sélection du producteur d'un bloc

Contrairement au PoW, le temps de production des blocs ne dépend pas d'une notion de « difficulté ». Il est défini par le protocole et est de 12 secondes pour Ethereum, contre 10 minutes en moyenne pour Bitcoin.

Pour chaque intervalle, un validateur est choisi de manière pseudo-aléatoire pour ajouter un bloc. Ce processus est conçu pour être imprévisible et résistant aux manipulations. Cependant, il n'est pas complètement aléatoire puisqu'il est pondéré par le nombre d'ethers stakés.

En effet, la probabilité d'être choisi augmente avec la quantité d'ethers verrouillés en staking. Par exemple, un validateur qui a staké 32 ETH (le minimum pour être validateur) aura moins de chances d'être choisi qu'un autre validateur qui en a staké 320, mais ce dernier ne sera pas choisi 10 fois plus souvent pour autant.

En moyenne, un validateur qui a verrouillé 32 ETH est sélectionné tous les 2 mois environ. Mais il s'agit là seulement d'une moyenne et les plus chanceux peuvent être sélectionnés deux fois dans la même semaine, tandis que d'autres peuvent attendre 9 mois avant de pouvoir ajouter un bloc...

Les probabilités d'être sélectionné évoluent avec le temps. Il est possible de consulter celles du moment sur le site LuckyStarker.

Probabilités pour un validateur d'être sélectionné pour valider un bloc

La validation d'un bloc de transactions

Lorsqu'un validateur a la chance d'être sélectionné pour proposer un bloc, il :

  • Regroupe et organise les transactions qu'il veut traiter et s'assure qu'elles soient correctes.

    Les transactions sont sectionnées parmi celles qui sont en attente dans la mempool. Il s'agit des transactions validées par un nœud et en attente d'inclusion dans un bloc. Vous trouverez une animation visuelle des transactions en attente, des frais, et de celles qui sont sélectionnées sur le site txstreet.com.

    Les validateurs organisent les transactions de manière à en extraire un maximum de récompenses. Ils optimisent ainsi les blocs en fonction de la Maximal Extractable Value (MEV - ou Valeur Extractible Maximale). La MEV est souvent calculée par des acteurs indépendants appelés « chercheurs » qui exécutent des algorithmes spéciaux et proposent l'organisation au validateur.
Illustration des transactions en attente dans la mempool d'Ethereum
Illustration des transactions en attente dans la mempool d'Ethereum
  • Fait exécuter les transactions par l'EVM qui détermine un nouveau World State.
  • « Enveloppe » ces informations dans un bloc qu'il transmet à tous les autres validateurs du réseau qui doivent le vérifier.

Les autres validateurs reçoivent ensuite le nouveau bloc. Ils exécutent à nouveau les transactions avec l'EVM afin de s'assurer qu'elles sont correctes. Ils comparent le World State qu'ils obtiennent avec celui proposé. S'ils correspondent, ils ajoutent le nouveau bloc à leur propre base de données.

Si plus des deux tiers (66,67 %) des validateurs sont d'accord sur la validité du bloc, le consensus est obtenu et le bloc est ajouté à la chaîne qui devient alors la nouvelle blockchain de référence. Le validateur qui l'avait proposé touche ses récompenses.

Dans le cas contraire, le bloc est rejeté et le validateur qui l'avait proposé est « slashé ».

Théoriquement, les transactions incluses dans le nouveau bloc sont irréversibles. La probabilité qu'un validateur malveillant parvienne à modifier un bloc a posteriori devient quasi nulle après 12 confirmations de bloc, soit environ 3 minutes. À ce moment là, les transactions peuvent être considérées comme finalisées et irréversibles.

Les avantages et inconvénients de la preuve d'enjeu

Les avantages

La preuve d'enjeu est un mécanisme offrant des avantages certains par rapport à la preuve de travail :

  • Une meilleure efficience énergétique : les nœuds validateurs n’ont pas à allouer une puissance de calcul considérable pour maintenir l’intégrité de la blockchain. Le PoS est donc moins énergivore que le PoW. La dépense energétique d'Ethereum a diminué de 99,9% depuis « The Merge », passant de quasiment 80 TWh/an à presque rien ;
  • Moins de frais de matériel : le matériel nécessaire (hardware) pour devenir validateur est abordable. La barrière à l’entrée provient du stake minimum exigé pour opérer un nœud qui représente environ 64 000 dollars au moment de l'écriture de ces lignes ;
  • Une inflation réduite : les récompenses n’ont pas besoin d’être aussi élevées que dans le cas de la preuve de travail, puisque les nœuds validateurs consomment moins d'énergie, et donc d'argent. Il n'y a effectivement aucun matériel informatique très coûteux à amortir, ni facture d'électricité massive à régler. L'émission monétaire réduite associée à la destruction d'une partie des frais de transaction, rendent d'ailleurs le réseau déflationniste en cas d'utilisation suffisante ;
  • L'asymétrie des coûts attaque/défense : en termes de coûts, attaquer un réseau en Proof of Stake coûte beaucoup plus cher que de le défendre ;
  • Une meilleure décentralisation : les coûts minimaux pour opérer un nœud validateur étant moindre qu’avec le PoW, il peut théoriquement y avoir plus de nœuds pour sécuriser le réseau ;
  • Une meilleure résistance aux attaques de type 51 % : sur un réseau utilisant la preuve de travail, un attaquant a besoin d'une concentration de plus de 50 % de la puissance de calcul pour effectuer une attaque sur la chaîne telle qu'une double dépense.
    Sur Ethereum et sa preuve d'enjeu, il est nécessaire de réunir le vote positif de plus de 66 % des validateurs actifs afin de finaliser la création et l'insertion d'un bloc.

Il est toutefois possible d'attaquer le réseau avec moins que ça, conduisant par exemple à un retard de production de bloc. La proportion de nœuds validateurs requise afin d'altérer le bon fonctionnement du réseau Ethereum doit être supérieure à 33 %. Néanmoins, la réalisation d'une double dépense et la modification du passé et du futur de la chaîne nécessite de détenir plus de 66 % des nœuds du réseau. Ainsi, mentir dans une chaîne en preuve d'enjeu ne peut se faire qu'avec le contrôle d'une très grande proportion des ressources participant au consensus.

Bien évidemment, ces avantages théoriques ont aussi leur contrepartie, et la preuve d'enjeu n’est pas exempte d'inconvénients.

Les inconvénients

En sécurité informatique, tout protocole de consensus doit subir l’épreuve du temps. Si le PoW est un mécanisme qui a été fortement éprouvé, et qui a su prouver sa résilience, ce n’est pas encore le cas du PoS, qui dans la pratique reste jeune.

Ethereum possède une architecture bien plus complexe que Bitcoin, entraînant forcément des points de défaillances plus nombreux. Il est constitué de deux réseaux fonctionnant en parallèle, et nécessitant deux logiciels clients comme nous l'avons vu plus haut (exécution et consensus). L'attribution à un nœud validateur de la mission de proposer le prochain bloc étant réalisée légèrement avant la proposition elle-même, il existe un risque théorique d'attaque par déni de service mettant hors-service le nœud validateur ciblé.

Les années de recherche sur la preuve d'enjeu ont cependant permis de renforcer le système progressivement. Ethereum a également vu 2 ans s'écouler entre le lancement de la beacon chain et The Merge, pour plus de sécurité.

L'un des inconvénients est aussi la centralisation des pouvoirs, parfois de manière irréversible. Dans une blockchain à preuve d'enjeu, le pouvoir appartient à ceux qui détiennent des jetons de façon en staking. Mais pour devenir validateur, un minimum de 32 ETH est nécessaire, ce qui représente une somme importante pour de nombreux utilisateurs.

De plus, les validateurs qui détiennent de grandes quantités d’ethers sont plus souvent sélectionnés pour proposer des blocs et valider des transactions. Cela peut accroître leur richesse de manière disproportionnée par rapport aux petits validateurs, renforçant la centralisation du pouvoir sur le réseau.

Enfin, la preuve d'enjeu n'est liée à aucune dépense tangible d'énergie pour fonctionner et ouvre donc la porte à une création de valeur ex-nihilo, contrairement à la preuve de travail. Si la rareté peut être codée au sein même des tokenomics d'un jeton sous PoS, elle n'existe en revanche pas d'un jeton à l'autre. En effet, une quantité infinie de jetons sous PoS peut être crée, puisqu'aucune contrepartie énergétique n'est requise par le protocole.

À l'inverse, on ne peut pas imaginer une infinité de réseaux sous PoW, car l'énergie nécessaire au calcul serait tôt ou tard limitée. La preuve d'enjeu n'est donc pas adaptée à un réseau dont la proposition de valeur est purement monétaire (n'en déplaise à certains régulateurs). Ou du moins, elle l'est beaucoup moins que la preuve de travail qui reproduit le travail de « frappe » derrière le fait de battre monnaie.

Maintenant que les inconvénients ont été énoncés, passons aux différents vecteurs d’attaques qui menacent la preuve de travail.

Les différentes options pour staker des ETH

Vous l'avez compris, devenir soi-même un validateur sur Ethereum nécessite deux conditions obligatoires :

  • Être assez riche pour se permettre d'acheter et d'immobiliser 32 ETH (environ 80 000 dollars au moment de l'écriture de ces lignes), plus tout le matériel informatique nécessaire ;
  • Avoir assez de connaissances en informatique et de temps pour monter correctement un nœud et le maintenir en état de fonctionnement.

Malheureusement, c'est loin d'être le cas pour la très grande majorité de la population mondiale. Aussi, plusieurs solutions ont vu le jour pour démocratiser l'accès au staking sur Ethereum.

Le Staking as a Service (SaaS)

Il s'agit d'une solution pour ceux qui ont les 32 ETH, mais n'ont pas la possibilité ou l'envie de gérer eux-mêmes leur nœud. C'est un opérateur tiers qui se charge alors de cette partie (et qui demande à être payé pour ses services, bien entendu).

Il existe plusieurs fournisseurs qui proposent ce type de service, avec des prix et des conditions variées. Les plus connus sont Consensys Staking, Klin.fi, P2P.Org, Stakefish, ETHpool ou encore Sensei Node. Vous pouvez aussi en retrouver d'autres ici, ainsi que plusieurs critères pour les différencier.

Les pools communes et le staking liquide

Les pools communes s'adressent à ceux qui n'ont pas assez d'ETH pour être validateur (mais pas que). Elles réunissent les apports de différents utilisateurs pour obtenir les 32 ETH nécessaires, et montent un nœud quand le montant est atteint. Elles redistribuent les récompenses gagnées au prorata des contributions, moins les frais qu'elles prélèvent pour leur service.

Les plateformes d'échanges centralisées offrent souvent ce service à leurs clients.

Celles qui sont déployées sur la blockchain à l'aide de smart contracts distribuent des jetons qui représentent les ETH déposés dans le pot commun (des LST ou « Liquid Staking Token »). Ces jetons servent à récupérer les ETH, et peuvent aussi être utilisés dans d'autres protocoles DeFi, par exemple pour emprunter. On parle alors de staking liquide, puisque les utilisateurs conservent la liquidité de leurs actifs.

Pools de staking liquide sur Ethereum
Pools de staking liquide sur Ethereum

Comme vous pouvez le voir sur le graphique ci-dessus, les plus utilisées sont Lido (qui distribue des stETH), Binance Pool (qui distribue des wBETH) et Rocket Pool (qui distribue des rETH).

Lido écrase cependant la concurrence avec 69,59 % de tous les ETH en liquid staking, à l'heure de l'écriture de ces lignes. Cette concentration pourrait d'ailleurs poser un problème de sécurité pour le réseau, comme nous le verrons dans le paragraphe suivant.

Le restaking

Depuis mi-2023, des protocoles de restaking ont vu le jour. Ils proposent de staker les LST délivrés par les entités citées ci-dessus pour sécuriser d'autres protocoles. Le plus utilisé est EigenLayer, mais de plus en plus de concurrents apparaissent.

Ils offrent des récompenses supplémentaires aux utilisateurs qui leur confient leurs LST. Cette opportunité de maximiser les rendements explique sûrement en partie le succès de ces protocoles. Ils viennent cependant ajouter une part de risque supplémentaire. Certains trouvent en effet que le staking sur Ethereum commence à avoir des allures de château de cartes. Un incident majeur sur une seule de ces « cartes » pourrait créer une cascade d'événements dramatiques pour tout l'écosystème.

Les principales attaques possibles sur Ethereum

En exploitant les différents points de faiblesse potentiels du réseau Ethereum, les personnes malveillantes peuvent avoir différents objectifs. Rappelons qu'il est tout à fait impossible de générer de nouveaux ethers, d'en supprimer ou d'en détourner d'un compte ciblé sans transaction signée.

Les attaques ciblant le fonctionnement d'Ethereum permettent techniquement d'obtenir l'un des résultats suivant :

  • Un délai de finalité : l'attaquant cherchant à nuire à Ethereum sans revendication financière. Il peut s'agir de retarder la soumission d'un bloc, ou sa validation. De telles attaques, a fortiori si elles sont répétées, risquent d'être délétères vis-à-vis de la confiance véhiculée par le réseau.
  • Une réorganisation : l'attaque constitue un réarrangement de l'ordre des derniers blocs, voire un ajout de blocs ou un retrait de blocs non encore validés. Un tel phénomène pourrait permettre une double dépense et engendrer une censure en refusant l'inclusion de certaines transactions via le MEV. Dans sa forme la plus destructrice, la réorganisation peut induire la suppression ou la modification de blocs préalablement validés.
  • Une double finalité : il s'agit d'une situation dans laquelle 2 blocs sont validés simultanément, aboutissant à une scission (fork) de la chaîne canonique, et nécessitant une discussion off-chain afin de décider de la chaîne à considérer comme principale.

Détaillons maintenant les principales attaques envisageables sur le réseau Ethereum.

Les principales attaques possibles sur Ethereum

Les attaques sur la structure sociale d'Ethereum

Le terme « layer 0 » renvoie aux fondations sous-jacentes du réseau en lui-même, à savoir l'environnement dans lequel il se développe.

La dimension open source et publique d'Ethereum est un élément capital à sa résistance vis-à-vis de ce type d'attaque. Toute personne participant activement et de façon désintéressée au réseau représente donc un rempart contre une attaque layer 0.

Ces attaques nécessitent généralement une faible expertise technique ainsi que peu de capital.

Parmi les attaques de type layer 0, citons :

  • Les attaques ciblées sur des développeurs participant au développement du protocole, aboutissant à une désertification progressive de l'équipe technique ;
  • La régulation excessive de la part des Banques Centrales ou des États, conduisant à un abandon du réseau par les utilisateurs ;
  • L'infiltration d'acteurs malveillants dans l'équipe de développement d'Ethereum ;
  • Les campagnes de communication mensongères discréditant le réseau et ses applications ;
  • La corruption de développeurs.

La mise en place d'une gouvernance efficace est nécessaire pour se prémunir au mieux de ce type de risque.

L'attaque peut également être menée de concert avec une attaque plus conséquente sur le réseau lui-même, rendant ainsi plus difficile voire impossible la résolution sociale du problème technique en question.

Les attaques avec une quantité faible d'ETH stakés

Parmi les nombreuses recherches effectuées sur le sujet, un article publié en 2021 à l'université de Harvard détaille précisément les attaques qu'il est possible de mener en détenant une proportion faible des ETH stakés sur la beacon chain (nous entendons par là moins de 33 %, l'étude de l'article se focalisant sur un attaquant possédant 30 %).

Sont ainsi réalisables :

  • Une réorganisation : extrêmement difficile à réaliser avec une quantité faible d'ETH stakés, ces attaques nécessitent généralement la connaissance d'informations sensibles relatives aux autres validateurs. Il reste théoriquement possible d'effectuer une réorganisation en supprimant de la chaîne le bloc n-1 au moment de la proposition du bloc n.
  • Un délai de finalité : dans le cas où l'attaquant est le proposeur d'un bloc de début ou de fin d'époque (pour rappel, une époque correspond à 32 slots pouvant chacun contenir un bloc), il peut résulter un fork entraînant un délai de finalité. Plus le montant staké est important, plus les chances de succès sont grandes. Il est également nécessaire de détenir des informations sur les autres validateurs afin de pouvoir entreprendre la réalisation d'un délai de finalité avec une faible quantité d'ETH.
  • Un déni de service : il peut conduire à une censure vis-à-vis de validateurs spécifiques, via un spam intensif des validateurs identifiés légèrement en avance comme prochain constructeur de bloc. Ce type d'attaque nécessite cependant des conditions de réseau spécifiques et apparaît comme quasi-impossible avec un faible montant d'ETH stakés.

Mention spéciale pour l'attaque de type « long range » (attaques à longue distance). Ce type d'attaque consiste à créer une chaîne concurrente, en partant du bloc de genèse, comportant des transactions frauduleuses. On parle aussi d'alternative history (historique alternatif) ou encore d'history revision (révision de l'historique).

Une fois le faux historique découlant du bloc de genèse forgé, l'attaquant peut utiliser plusieurs techniques pour convaincre certains validateurs d'adopter sa chaîne frauduleuse. Les nœuds du réseau qui peuvent être dupés sont ceux qui ont été hors-ligne durant une longue période, ou les nouveaux nœuds. En effet, ils devront télécharger la blockchain à partir du bloc de genèse, ainsi que toutes ses branches. S'ils ne sont pas capables de sélectionner correctement la bonne chaîne, et choisissent celle de l'attaquant, danger !

Elle est rendue impossible sur Ethereum grâce à la présence de l'horodatage des blocs et la création de checkpoints permettant une validation régulière de la chaîne faisant foi.

Les attaques par concentration du staking

Le contrôle de 33 % ou plus du nombre total d'ETH stakés

Posséder plus de 33 % des ETH stakés permet d'augmenter les chances de succès des attaques citées précédemment.

Le seuil retenu de 33 % s'explique par le fait qu'il n'est plus nécessaire de disposer d'informations concernant les autres validateurs afin de réaliser un délai de finalité, et indépendamment du fait d'être le proposeur du bloc ou non. En effet, sachant qu'il est nécessaire de réunir une majorité de 66 % pour le vote des validateurs afin de finaliser l'inclusion d'un bloc, il devient impossible de réunir la majorité suffisante et aucun nouveau bloc ne peut en théorie être validé.

Ethereum permet de résoudre cette problématique grâce à un système de détection d'inactivité permettant de sanctionner tout validateur échouant à réaliser la production du bloc comme il le devrait. L'attaquant verra ainsi son solde d'ETH stakés diminuer jusqu'à redescendre sous le seuil critique des 33 %. Cette attaque est donc très chère et la perturbation du réseau induite est nécessairement temporaire.

Il devient également beaucoup plus simple d'effectuer la réorganisation de suppression d'un bloc décrite dans le paragraphe précédent.

Sans rentrer dans les détails techniques, il est également possible pour un attaquant de réaliser une double finalité en ne contrôlant que 33 % du nombre total d'ETH stakés, à condition de :

  • Pouvoir contrôler la synchronisation des informations diffusées sur le réseau ;
  • Sacrifier l'ensemble des ETH mis en jeu.

Le contrôle de 50 % ou plus du nombre d'ETH stakés

Avec un contrôle de 50 % des ETH stakés sur la beacon chain, il devient possible de créer un fork de 2 chaînes identiques, puis de voter en contradiction avec les validateurs honnêtes sur la question du choix de la chaîne à adopter. Ceci aurait pour effet un délai de finalité potentiellement infini. Le layer 0 permettrait alors de rétablir un consensus.

Ce risque apparaît comme purement théorique, devant la quasi-impossibilité d'obtenir une égalité parfaite lors du processus de vote.

Détenir plus de 50 % permet en revanche de contrôler le choix du fork à suivre. Il devient également possible de réaliser des réorganisations ne nécessitant aucune information sur les autres validateurs. L'attaquant peut donc censurer des transactions et réaliser des organisations intra-blocs afin d'augmenter les récompenses de frais de transaction.

Le layer 0 représente ici la principale défense, capable de décider d'établir un fork minoritaire comme chaîne principale.

Le contrôle de 66 % ou plus du nombre d'ETH stakés

Détenir la majorité suprême de 66 % change radicalement les couleurs du décor. Il devient possible de finaliser les blocs, et donc la chaîne souhaitée en suivant le processus classique de vote. L'attaquant contrôle ainsi constamment le contenu des blocs ajoutés à la chaîne. Il a également toute liberté pour effectuer une double dépense, réorganiser la chaîne et censurer les transactions non désirées.

Par rapport à un acteur détenant 51 % des ETH stakés, il devient possible d'effectuer des réorganisations de blocs anciennement validés, ainsi que de contrôler la construction future de la chaîne.

Dans un tel scénario, il resterait possible d'utiliser le consensus social pour voter l'annulation de toute ou partie de la chaîne, afin de restaurer un réseau assaini débarrassé de l'attaquant.

Les attaques de contrats intelligents

À l'inverse d'une situation mettant en péril le réseau Ethereum dans les fondements qui le constituent, l'attaque de contrats intelligents constitue une attaque des couches applicatives construites au-dessus du réseau. Il ne s'agit donc pas d'attaques d'Ethereum à proprement parler.

Les failles sont nombreuses et le nombre de hacks en témoigne. La finalité reste dans tous les cas bien moins dramatique que les attaques de réseau. La perte des actifs déposés sur le contrat constitue le scénario principal de ce type d'attaques.

Vous l'aurez compris, les méthodes théoriques pour attaquer Ethereum sont nombreuses et diverses. Ce constat nécessite néanmoins d'être nuancé. La grande majorité des attaques, notamment les plus graves, sont sans doute déjà irréalisables aux vues de l'état de développement du réseau Ethereum, bien que l'apparition de produits financiers tels que les ETF au comptant représente un risque potentiel de concentration des pouvoirs aux mains d'acteurs institutionnels.

Par ailleurs, une telle attaque est toujours économiquement délétère, nécessitant le sacrifice d'une partie ou de tous les fonds engagés, ou alors un investissement tel que les bénéfices ne valent pas le risque encouru. Certains points de faiblesse existent tout de même et justifient de réfléchir constamment aux solutions envisageables.

Pour aller plus loin

La preuve d'enjeu n'est pas seulement utilisée par Ethereum, mais est aussi employée par d'autres blockchains comme notamment Cardano, Cosmos, Avalanche ou encore Polkadot.

De nombreuses variantes de la preuve d'enjeu existent, et il est aussi possible d’implémenter des mécanismes de consensus hybrides entre PoS et PoW. Ces différents mécanismes de consensus seront abordés dans l'un des articles de la partie « Altcoins ».

Pour aller plus loin, vous pouvez consulter en détails les white papers des réseaux PoS les plus connus et consulter certains articles dédiés à la preuve d'enjeu rédigés par Vitalik Buterin. En voici une liste non-exhaustive :

Sinon, vous pouvez rester avec nous pour l'article suivant, dans lequel nous vous présentons ce que sont les layers 2 d'Ethereum, des solutions de mise à l'échelle du réseau permettant d'améliorer la rapidité du réseau sans compromettre sa sécurité. Accrochez-vous, et continuons ensemble d'explorer Ethereum à travers l'Encyclopédie du Coin !