Explication du POS d'Ethereum

in ULille blockchain2 months ago (edited)

POS

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 :

Origines et lancement :

  • 2013 : Vitalik Buterin publie le livre blanc d’Ethereum, proposant une blockchain programmable qui va au-delà des transactions simples de Bitcoin.
  • 2014 : Une levée de fonds (ICO - Initial Coin Offering) est organisée, récoltant plus de 18 millions de dollars, ce qui en fait l'une des plus grandes levées de fonds en crypto à l’époque.
  • 30 juillet 2015 : Lancement officiel de la blockchain Ethereum (version "Frontier").

Évolution et événements majeurs :

  • 2016 : Le projet DAO (organisation autonome décentralisée) basé sur Ethereum lève 150 millions de dollars, mais un piratage de 50 millions de dollars mène à une scission de la communauté. Cela aboutit à une hard fork, créant deux blockchains :
    • Ethereum (ETH) : continuant avec la vision originelle.
    • Ethereum Classic (ETC) : conservant la chaîne immuable.
  • 2017 : L'explosion des ICO sur Ethereum entraîne une adoption massive.
  • 2020 : Lancement d'Ethereum 2.0, une transition vers la preuve d'enjeu (Proof of Stake - PoS) pour améliorer la scalabilité et réduire l'empreinte énergétique.
  • 15 septembre 2022 : The Merge, un événement historique où Ethereum abandonne complètement la preuve de travail (Proof of Work - PoW) au profit de la preuve d'enjeu.

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 :

  • Numéro de bloc : il doit être le successeur direct du dernier bloc validé.
  • Hash du parent : le bloc doit inclure une référence correcte au hash du bloc précédent.
  • Timestamp : le temps du bloc doit être postérieur au bloc précédent, et il doit correspondre au slot dans lequel il est proposé.

Signature :

  • Le bloc doit être signé par le validateur désigné pour ce slot.
  • La signature doit être vérifiable à l’aide de la clé publique de ce validateur.

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.

image.png

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 :

image(1).png

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 :

image(2).png

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

Sort:  

Vraiment top, merci pour les explications !

Supers explications!