Ethereum (ETH) est une blockchain décentralisée, introduite pour la première fois en 2015 par Vitalik Buterin et d'autres cofondateurs, comme une plateforme permettant d'exécuter des contrats intelligents (smart contracts) et des applications décentralisées (dApps). Voici un résumé de son histoire et de ses dates clés :
Les premières versions d’ETH étaient en Proof of Work, c’est-à-dire que, comme Bitcoin, il y avait un calcul mathématique compliqué à résoudre, mais facile à vérifier une fois résolu.
Le résultat de ce calcul est un hash qui satisfait à une condition spécifique.
Grâce à ces conditions, le mineur qui trouve la solution la diffuse aux autres mineurs qui vérifient. Si la solution est acceptée, alors le nouveau bloc est ajouté.
Ce qui rend BTC sécurisé, c’est qu’il faudrait 51 % de la puissance de calcul de la blockchain pour pouvoir falsifier les blocs, ce qui rend les attaques très coûteuses en ressources.
Dans le cas de Bitcoin, si un fork de la chaîne a lieu, l’algorithme de consensus choisit seulement la branche la plus longue.
Pour le cas d’Ethereum, c’était le cas jusqu’à la version ETH 2.0.
ETH 2.0 est passé en Proof of Stake, je vous explique : maintenant, la sécurité et l’intégrité reposent sur ses validateurs.
Un validateur est une personne qui a stacké 32 ETH, ce qui permet à chaque validateur d’avoir le même poids dans le vote de validation ou non d’un bloc. Ces 32 ETH sont visibles sur un smart contract, qui est un programme informatique s’exécutant automatiquement lorsque des conditions prédéfinies sont remplies. Ces contrats sont hébergés sur une blockchain, ce qui leur confère transparence, immuabilité et sécurité.
Ce sont les personnes qui vont proposer de nouveaux blocs, les valider ou non. Les validateurs ont tout intérêt à être de bons validateurs, car il y a tout un système de slashing, c’est-à-dire qu’il y a des répercussions si des actions malhonnêtes sont tentées.
Plus un validateur a d’ETH sur son portefeuille, plus il a de chances d’être sélectionné en tant que validateur.
Pour ce qui est de l’organisation, la blockchain est composée de slots.
Un slot prend 12 secondes : un validateur propose un bloc et les autres l’acceptent ou non.
Dans la majeure partie des cas, un bloc sera validé, c’est-à-dire qu’au moins 66 % des validateurs ont accepté.
Si, pour une raison ou une autre, un bloc est vide, alors le prochain bloc proposé se reposera sur le dernier bloc valide.
Voici les différents critères nécessaires pour la validation d’un bloc :
Structure :
Signature :
Un epoch est une unité de temps regroupant 32 slots, ce qui correspond à peu près à 6,4 minutes, permettant d’organiser et de stabiliser la blockchain en certifiant les blocs en tant que checkpoint. S’il y a un fork, alors le dernier checkpoint servira de référence.
Cela permet de finaliser les blocs, de récompenser ou punir les validateurs, et de rendre les blocs finalisés sécurisés et immuables.
Je vais maintenant parler des algorithmes de consensus utilisés par ETH 2.0 : GASPER, qui est un mélange de GHOST (Greedy Heaviest Observed Subtree) et de CASPER FFG.
GHOST permet de choisir quelle branche suivre s’il y a eu un fork. Il va non seulement prendre en compte la longueur de la branche mais aussi son poids, je vous explique : pour chaque bloc, un nombre de validateurs est défini. Ces validateurs ont le même poids, c’est-à-dire que leurs votes sont tous égaux. Ils peuvent voter pour quel bloc ils pensent correct.
Imaginons un bloc valide. Ce bloc a un fork, c’est-à-dire que 2 blocs ont été proposés durant le même slot. Les validateurs vont devoir choisir laquelle des 2 branches la blockchain doit suivre. Dans l’algo de BTC, il aurait pris la branche B car c’est la plus longue, sauf que la majorité des validateurs ont voté pour la A.
C’est ce que GHOST fait : il prend le poids de la branche et sa longueur en considération, ce qui permet d’avoir un système plus résistant. Même si un bloc est légèrement en retard à cause des délais réseau, il peut toujours contribuer au poids de la branche. À savoir qu’une branche est créée même si elle n’a pas la supermajorité, mais dès qu’une branche dépasse les 66 %, GHOST élimine le ou les autres afin que la ligne droite qu’est censée être la blockchain soit respectée.
Pour la partie CASPER :
CASPER s’occupe de garantir que la chaîne ne peut pas être réorganisée au-delà d’un certain point. Il va attester qu’un bloc, une fois qu’il remplit certains critères que je vais vous expliquer juste après, est irréversible et sûr.
Comme dit précédemment, il y a des blocs qui sont en cours de justification, justifiés et finalisés.
Le 1er état, c’est quand un bloc est créé et que les validateurs sont en train de voter si oui ou non le bloc est valide.
Le second état : Justifié
Un bloc est considéré comme "justifié" s’il a reçu au moins 66 % des votes des validateurs.
Le 3e état : Finalisé
Un bloc justifié peut être "finalisé" s’il est suivi d’un autre bloc justifié. Tant qu’un bloc n’est pas finalisé, alors aucune transaction n’est approuvée.
CASPER s’occupe aussi de la partie slashing mentionnée précédemment. C’est lui qui va distribuer les récompenses ou les malus aux différents validateurs de chaque bloc.
Cas classique :
Voici un exemple du cas classique que suit la blockchain : on a un bloc finalisé qui sert de dernier checkpoint, c’est-à-dire qu’on est sûr que la blockchain est “propre” à ce niveau-là. Puis, on a un bloc justifié qui lie un nouveau bloc. Ce nouveau bloc atteint plus de 66 % d’accord de la part des validateurs, ce qui fait de lui un bloc justifié. Sa validation entraîne un changement sur le bloc précédent, car il passe en finalisé, ce qui fait de lui le nouveau dernier checkpoint.
Cas où il y a un fork :
Maintenant, je vais parler du cas plus complexe. Bien que cela arrive rarement, des forks peuvent survenir et donc des branches peuvent apparaître. CASPER n’agira pas tant que GHOST n’a pas choisi une branche valide. Il ne distribuera ni récompenses ni pénalités. Il ne validera pas non plus de transactions. En bref, la blockchain va rester dans son état à partir de son dernier bloc finalisé et va attendre une résolution du problème.
Pour finir, j’aimerais dire que le Proof of Stake est nettement moins énergivore, que la sécurité à outrepasser nécessiterait des milliards de dollars et que toute tentative d’attaque infructueuse se solderait par la perte d’au minimum 32 ETH, chose que très peu de personnes peuvent se permettre de perdre. De plus, il faudrait une supermajorité pour falsifier les blocs et donc une très grande majorité de validateurs malveillants.
Source :
https://ethereum.org/fr/
http://arxiv.org/pdf/2003.03052