Lorsqu’on parle de blockchain, on dit souvent que les transactions sont regroupées en “blocs”. Des blocs qu’il faut ensuite « valider » à travers un processus décentralisé, fiable et sécurisé. Mais comment arrive-t-on à ce résultat ? Tout simplement en faisant en sorte que tous les acteurs du réseau tombent d’accord sur la création et l’enchaînement de ces blocs. C’est là qu’un “algorithme de consensus” est à la manœuvre.
Allons aujourd’hui à la découverte de l’algorithme de consensus à preuve d’enjeu d’Ethereum (ETH).
1 – Pourquoi parle-t-on de « consensus » en évoquant une blockchain ?
Il faut imaginer une blockchain comme une sorte de registre comptable, qui enregistre des transactions entre utilisateurs.
Sauf que cette base de données est décentralisée : personne ne la contrôle, puisqu’elle est hébergée chez tous les acteurs du réseau.
Etant donné qu’il n’en existe aucune version centralisée, il faut donc que ces acteurs (qu’on appelle les « nœuds ») se coordonnent constamment sur l’état du registre. Ils doivent donc échanger des données pour arriver au fameux « consensus » sur l’état de la base de données.
Comme son nom le suggère, une blockchain est composée de blocs mis bout à bout.
En respectant un protocole informatique, ces blocs enregistrent des informations et transactions qui se déroulent sur le réseau.
C’est l’algorithme de consensus qui définit qui fabrique les blocs, puis c’est au tour des nœuds du réseau d’attester si ces blocs sont bien conformes au protocole.
2 – Comment sont validés les blocs de transaction ?
En preuve d’enjeu / participation, les validateurs doivent démontrer la propriété d’une quantité de jetons (le fameux staking). Chaque nœud validateur construit un bloc, puis le signe en indiquant le nombre d’ETH qu’il possède. Un tirage au sort décide alors quel bloc est accepté. Le validateur choisi empoche ensuite la récompense.
Conséquence : si un validateur détient deux fois de jetons qu’un autre, il est mieux placé pour valider deux fois plus de blocs.
En preuve de travail, les validateurs obtiennent leur droit à la validation en fonction de la puissance de calcul qu’ils déploient, par rapport aux autres mineurs (le hashrate). Ils donnent la preuve qu’ils sont bel et bien à l’origine de cette puissance en résolvant des problèmes mathématiques (la difficulté).
Conséquence : si un mineur est capable de résoudre deux fois plus de difficultés qu’un autre, il obtient deux fois plus de votes.
3 – Comment fonctionne la preuve d’enjeu sur Ethereum ?
Dans la preuve d’enjeu d’Ethereum, le temps est divisé en « slots » de 12 secondes. Toutes les 12 secondes, un valideur propose un bloc. Celui-ci est ensuite diffusé au reste du réseau.
Un tirage au sort désigne un comité de validateurs, chargés de voter sur la validité du bloc (c’est ce qu’on appelle soumettre une « attestation »).
Voici une image qui illustre ce processus :
Il y a cinq étapes dans le processus :
- Génération : chaque validateur produit une attestation
- Propagation : cette attestation est diffusée aux autres nœuds du sous-réseau
- Agrégation : dans chaque sous-réseau, un validateur est choisi au hasard pour collecter les attestations des validateurs.
- Propagation : les agrégateurs diffusent leurs informations sur le réseau.
- Inclusion : le proposant du bloc suivant collecte ces attestations agrégées et les inclut dans son bloc à proposer.
Et le processus recommence !
4 – Comment s’assurer que la preuve d’enjeu d’Ethereum soit suffisamment rapide ?
Comme nous l’indiquons plus haut, le temps dans Ethereum est divisé en « slots » de 12 secondes. Celui-ci est ensuite diffusé au reste du réseau.
Un tirage au sort désigne un comité de validateurs, chargés de voter sur la validité du bloc (c’est ce qu’on appelle soumettre une « attestation »).
1 Epoch = 32 slots
Une Epoch regroupe 32 slots, soit environ 6 min 24 sec (12 sec x 32).
A chaque Epoch, le premier bloc est appelé un “point de contrôle”, car c’est là où les validateurs votent pour finaliser deux blocs :
- Un premier bloc « justifié »
- Un deuxième bloc considéré comme « finalisé »
À l’Epoch suivante, un nouveau bloc sera alors « justifié », tandis que le bloc précédemment justifié est mis à niveau vers « finalisé ». Vous suivez ? 🙂
5 – Comment les validateurs malveillants sont-ils sanctionnés par l’algorithme ?
Les validateurs qui se comportent honnêtement et exécutent leurs tâches en temps voulu recevront en récompense des jetons ETH, ajoutés à leurs jetons ETH verrouillés.
Les validateurs qui sont hors ligne pendant un certain temps ou qui n’attestent pas de l’état actuel de la blockchain peuvent perdre une partie de leurs jetons ETH verrouillés.
On appelle cela des pénalités d’inactivité, qui ne doivent pas être confondues avec le « Slashing ». Ces pénalités sont néanmoins faibles, voire négligeables – mais elles sont automatiques.
Si être hors-ligne est considéré comme une faute mineure, certaines infractions signalent clairement une intention malveillante :
- Proposer plusieurs blocs durant un même slot
- Attester plusieurs blocs pour le même slot
- Contredire les « points de contrôle » précédents
Ces actions, elles, sont considérées comme des infractions « slashables », et entraînent des sanctions plus lourdes.
Le slashing implique l’amputation des jetons ETH verrouillés par un validateur, puis sa radiation du réseau.
Ce processus d’éviction n’est pas immédiat. Il faut compter environ 36 jours après la suppression initiale, et le validateur continuera à encourir des pénalités jusqu’à sa sortie …
Forcément, si un validateur a été slashé, il ne pourra pas réintégrer le réseau avec les mêmes clés et la même mise en jetons ETH. Il lui faudra générer de nouvelles clés et miser à nouveau au moins 32 ETH.
6 – Comment devenir validateur sur Ethereum ?
Pour devenir validateur, le premier prérequis est de déposer 32 ETH dans le contrat de staking d’Ethereum 2.0. Le deuxième prérequis est d’exécuter un logiciel client sur votre ordinateur.
Simple ? Pas vraiment !
Il est recommandé de disposer d’un appareil consacré uniquement à l’exécution de ce logiciel. Vous devez également maintenir une connexion Internet constante pour répondre aux exigences en tant que validateur.
C’est là que la plupart des validateurs préfèrent louer un serveur dans le cloud – type Amazon Web Services ou Google Cloud – pour faire tourner la machinerie 24h/24.
On appelle cela « monter un nœud » Ethereum.
7 – Qu’est-ce qu’un nœud ? Comment monter son propre nœud Ethereum ?
Tout d’abord, sachez que n’importe qui peut exécuter un nœud Ethereum, même ceux qui n’ont pas d’ETH !
Vous n’avez pas besoin de staker des ETH pour exécuter un nœud. Mais si vous voulez devenir validateur ET nœud pour gagner plus d’argent, il va falloir sortir le portefeuille et miser au moins 32 ETH !
Commençons par les bases : il existe deux types de clients que vous pouvez exécuter, l’un pour la couche d’exécution et l’autre pour la couche de consensus.
Le client d’exécution surveille les nouvelles transactions, les traite et les diffuse au reste du réseau. Ces clients sont responsables du stockage de l’état de l’Ethereum Virtual Machine 🤓.
Les clients de consensus communiquent entre eux et parviennent à un consensus sur l’état de l’EVM. Ces nœuds implémentent l’algorithme de preuve d’enjeu et valident les données du client d’exécution. Toujours là ? 🤓
Si cela vous intéresse, les logiciels clients d’exécution de la PoS d’Ethereum s’appellent : Akula, Besu, Erigon, Geth et Nethermind. Les logiciels clients de consensus portent les doux noms de : Lighthouse, Lodestar, Nimbus, Prysm, Teku.
Vous l’aurez compris, plus il y a de nœuds, plus l’EVM est décentralisée et résistante aux attaques !
8 – Quels sont les avantages de la preuve d’enjeu d’Ethereum ?
Une consommation d’énergie réduite de 99%. Le réseau peut être sécurisé pour un coût radicalement plus faible. L’empreinte écologique d’Ethereum était telle qu’elle comptait pour 0,20% de la consommation d’énergie mondiale !
Une inflation réduite. Par inflation, il faut comprendre la vitesse avec laquelle les jetons ETH arrivent sur le marché, par le jeu des récompenses et des frais de transaction. De 4% par an, elle sera réduite à 0%, voire moins. Au lieu d’un Ethereum inflationniste, nous aurons donc un Ethereum déflationniste.
9 – Quelles sont les vulnérabilités de la preuve d’enjeu ?
Le principal problème est la centralisation. Avec la preuve d’enjeu, Ethereum offrirait une moins bonne résistance aux attaques dites des 51 %. Une attaque de 51% consiste à réunir 51% de la puissance et des jetons pour contrôler le système à sa guise.
Avec la preuve d’enjeu, il est possible pour un acteur unique de réunir plus de 50% des jetons pour décider d’une réorganisation de la blockchain.
Cependant si une telle attaque devait se réaliser, cela réduirait en quelques minutes la valeur du jeton ETH, pénalisant l’attaquant lui-même.
10 – Quelles sont les variantes de la preuve d’enjeu ?
Si la preuve d’enjeu d’Ethereum repose sur le nombre de jetons détenus par un validateur (son « enjeu »), ce critère peut varier.
La pure preuve d’enjeu (PPoS, pour pure proof-of-stake) : la probabilité d’être validateur ne dépend plus du nombre de jetons détenus, puisqu’à partir de 1 jeton détenu, chaque validateur détient une chance égale à celle des autres. Ex : Algorand (ALGO)
La preuve de conservation (PoH pour proof-of-hold, PoH) : c’est l’ancienneté des jetons (coin age) qui est choisie comme critère. Ex : Peercoin (PPC)
La preuve de vélocité (PoV pour proof-of-velocity) : c’est la vitesse des transactions qu est utilisée comme métrique. Ex : Reddcoin (RDD)
La preuve d’importance (PoI pour proof-of-importance) : la « réputation » des validateurs augmente leur chance d’être choisis. Ex : NEM (XEM)
La preuve d’enjeu déléguée (DPoS pour delegated proof-of-stake, DPoS) : la probabilité d’être validateur dépend non seulement du nombre de jetons détenus, mais aussi du nombre jetons qui ont été délégué par vote à un validateur. Ex : Neo (NEO)
Nous voici rendus à la fin de ce mini-dossier sur la preuve d’enjeu. Nous espérons qu’il aura répondu à (la majorité, en tout cas) vos questions !
Enfin cela va vous surprendre, mais la preuve d’enjeu est plus ancienne que la preuve de travail. Ironiquement, c’est le succès de Bitcoin dès 2012 qui a remis la preuve d’enjeu dans le radar des développeurs de projets crypto.
D’ailleurs l’algorithme de preuve d’enjeu est connu en informatique sous le nom d’algorithme de Nakamoto de preuve d’enjeu ou algorithme de minage virtuel !