Minage, staking, preuve de travail et preuve d’enjeu (PoW vs PoS)

La blockchain est composée de blocs contenant les transactions des utilisateurs. Ces blocs ont besoin d’être validés afin d’être reconnus par tous les noeuds du réseau.
C’est ici que les fonctions de hachage et la cryptographie interviennent propres à chaque protocole et qui suivent des algorithmes différents.
Preuve de Travail (PoW)
La preuve de travail (ou Proof of Work) se rapporte au travail que les machines du réseau doivent fournir pour avoir un résultat d’une fonction de hashage qui remplit les conditions imposées par l’algorithme.
Les fonctions de hashage sont des algorithmes asymétriques. Cela prend du temps de générer un résultat qui remplit des conditions imposées, mais très peu de temps pour le vérifier.
Elles permettent de condenser des centaines de ligne en seulement 64 charactère hexadécimaux.
Il y a évidemment beaucoup de crypto-monnaies qui utilisent la preuve de travail comme protocole de consensus (Bitcoin et ses forks, Ethereum 1.0, Litecoin…). Cet article s’interressera plus particulièrement au Bitcoin.
Origine
À l’origine créé dans les années 90s, la preuve d’enjeu était utilisée pour contrer les attaques par dénis de services et en particulier les spams d’email.
Cela consiste à faire calculer une fonction de hashage à l’envoyeur qui va lui prendre plusieurs itérations et donc de la ressource informatique. Une fois le résultat trouvé, le message peut être envoyé et le receveur n’a plus qu’à le vérifier.
Ce principe devient intéressant lorsque l’envoyeur fait du publipostage car il doit, pour chaque email, utiliser la fonction de hashage.
Application à Bitcoin
La preuve de travail a été instauré dans le réseau Bitcoin afin de mettre en place un coût pour miner du Bitcoin, i.e il faut dépenser de l’électricité et de la puissance de calcul.
Elle permet aussi au réseau de se mettre d’accord sur la validation des blocs et des transactions (consensus).
Les machines effectuant les calculs sont donc les fameux mineurs. Le minage correspond au fait de résoudre ces calculs pour rendre un service au réseau (validation), en l’échange d’une récompense, ici des bitcoins.
La preuve de travail de Bitcoin consiste en un double SHA-256 de l’en-tête (header) du bloc.

Le header contient un champ appelé nonce qui est une chaine de caractère, c’est le seul paramètre que les mineurs peuvent changer afin de trouver la solution du puzzle informatique donné par le réseau.
Le puzzle consiste à hacher l’en-tête du bloc en cours et de changer la valeur du nonce pour que le résulat commence par n-zero :
Pour comprendre le hachage, on s’interesse simplement à un hachage simple SHA-256 :
import hashlib
difficulty = 2
def findCurrentHash():
nonce = 0
block_content = "content"
calculated_hash = sha256(block_content, nonce)
# Tant que l'on a pas n-zero en debut du hash
while calculated_hash[:difficulty] != "0"*difficulty:
nonce = nonce + 1
calculated_hash = sha256(block_content, nonce)
# Afficher les 10 premiers hash
if nonce < 10:
display(nonce, block_content)
return nonce
# Fonction pour afficher les resultats dans la console
def display(nonce, message):
print("Nonce : " + str(nonce) + " | Hash of : content" + str(nonce) + " = " + message)
# Fonction de hachage
def sha256(message, nonce):
return hashlib.sha256(message + str(nonce)).hexdigest()
Nonce : 1
Hash of : content1 = d0b425e00e15a0d36b9b361f02bab63563aed6cb4665083905386c55d5b679fa
Nonce : 2
Hash of : content2 = dab741b6289e7dccc1ed42330cae1accc2b755ce8079c2cd5d4b5366c9f769a6
Nonce : 3
Hash of : content3 = 3edb4af0a0f7c03b911f09f72820d409dd0c9d86d183cac8a35848a8fc30a756
-----------
Nonce : 119
Hash of : content119 = 0037dc825679afac8470f044dd313c37a758ef9b515af291b4780782d77469ca
Dans le Livre Blanc, Satoshi Nakamoto explique que la difficulté augmente de manière exponentielle, cette difficulté est adaptée par l’algorithme en fonction de la puissance de calcul totale du réseau (appelée : hashrate)
Ainsi, pour le Bitcoin, les blocs sont en moyenne minés toutes les 10 minutes. Cette donnée est variable selon les blockchains.
Après que le bloc ait été miné, il faut que la machine ayant trouvé la solution la partage à l’ensemble du réseau et que chacun des noeuds approuve cette solution.
Cette vérification est rapide car les algorithmes de hachage sont asymétriques.
Ensuite, le bloc est rajouté à la chaine et les nouvelles transactions sont ajoutés au bloc suivant. Puis tout recommence.
Enfin si deux blocs sont minés en même temps, alors la blockchain procède à ce que l’on appelle un soft-fork. Les deux blocs sont mis dans deux chaines différentes. La chaine retenue sera toujours la plus longue, donc il faut attendre que la blockchain continue sa croissance pour déterminer quelle branche devient principale et quelle branche obsolète (Uncle bloc)
Les limites de la Proof of Work
Sa principale critique est son impact environemental car les ordinateurs sont en compétition pour miner le prochain bloc, il faut alors toujours plus de puissance de calcul, donc plus d’électricité et plus de machine.
L’Université de Cambridge tente d’estimer la consommation des blockchains utilisant la Proof of Work, ils ont montré que la consommation augmente en correlation avec le prix du Bitcoin.
La preuve de travail peut aussi devenir son propre ennemi, lorsqu’une organisation/personne possède plus de 51% de la puissance de calcul du réseau alors elle peut potentiellement créer les blocs à sa demande et en falsifier le contenu.
Cependant, l’interêt pour les grosses organisations est très faible car le réseau perdrait la confiance des utilisateurs, les prix chuteraient et il serait alors impossible d’amortir le coût des machines.
Preuve d’Enjeu (PoS)
La preuve d’enjeu (ou Proof of Stake) ou de participation est une solution alternative à la preuve de travail. Elle a été introduite par le réseau Peercoin (lancé en 2012) et permet de répondre aux limitations de la preuve de travail.
La problématique de la PoS revient à créer une méthode afin de déterminer/choisir les noeuds validateurs. Se pose alors plusieurs questions : quels critères prendre en compte ? comment rester juste vis à vis de l’ensemble du réseau ? concrètement comment faire ?
La PoS est notamment utilisée dans la blockchain Tezos et bientôt sur Ethereum 2.0 (courant 2021, selon les estimations). Elle possède différentes variantes que ce soit dans le procédé ou dans l’appellation.
Alors même si on ne soutient pas ces projets, on se doit de parler de leur fonctionnement et de leur idée de ce que représente pour eux la preuve d’enjeu. Il y a bien évidemment beaucoup d’autres projets l’utilisant mais cet article ne détaillera que ces protocoles.
Ethereum 2.0
Ethereum est, à l’heure actuelle, exclusivement miné en preuve de travail. Cependant il va basculer en preuve d’enjeu dans les deux prochaines années.
La Preuve d’enjeu va permettre une fluidification de son réseau et donc de tous les tokens ERC-20 basés sur la blockchain Ethereum.
Visualisation des échanges Ethereum
Actuellement, c’est la preuve de travail qui sécurise la blockchain grâce à la puissance de calcul mise à disposition par les mineurs. Le changement vers la preuve d’enjeu va permettre de basculer vers un engagement financier de la part des acteurs du réseau sous forme de staking principalement.
Le Staking (Accumulation) est le fait de vérouiller des fonds dans un portefeuille crypto-monnaie. Ces fonds permettent d’assurer une valeur minimale au réseau et de participer aux opérations du réseau (validation des transactions et création des nouveaux blocs).
La preuve d’enjeu sur ETH 2.0 demande un minimum de 32 ETH et un noeud validateur. Les interêts annuels sont de l’ordre de 4 à 10% par an.
Le réseau ETH implémente des pénalités pour les validateurs peu scrupuleux, celles ci viendront drainer peu à peu le capital bloqué.
Tezos
La blockchain Tezos utilise la LPoS (Liquid Proof of Stake) à mi chemin entre la PoS et la DPoS.
Valider des blocs dans le réseau Tezos est appelé baking (modeler), tout le monde peut déléguer ses tokens à un validateur, cependant les tokens restent dans son portefeuille.
Avec 8000 XTZ et plus, il est possible de devenir validateur appelé « roll » qui donne le droit de faire tourner un noeud validateur et de signer les transactions et blocs.
Le Retour sur Investissement est d’environ 5%/an quelque soit le montant bloqué.
La blockchain est évolutive et a des mise à jour fréquentes de son code qui sont votées par ses utilisateurs au pro rata de leur capital stocké.
Afin que ce système soit bénéfique pour l’ensemble des utilisateurs et que le réseau perdure, il faut que les noeuds soit incités à oeuvrer pour le bien de la blockchain.
Ainsi, chaque validateur Tezos participant au consensus doit mettre en jeu une partie de son capital en jeu (dépôt de sécurité). Si le participant est malhonnête il est pénalisé et ne récupère pas sa mise, s’il est honnête il est récompensé.
Autres formes de PoS
EOS utilise la DPoS, Delegated Proof of Stake
Ici les validateurs sont élus par l’ensemble du réseau. Il y en a un nombre fini et une fois choisi, ce sont les seuls à pouvoir valider et sécuriser la blockchain.
21 délégués sont choisis afin de valider les prochains blocs, ils doivent montrer leur aptitude à devenir validateur du réseau. Ces délégués sont élus au pro rata de tous les détenteurs de token EOS.
Un délégué va alors pouvoir signer les blocs une fois complétés afin d’en assurer la sécurité et fiabilité, et les autres vont les vérifiés
Ce système permet de ne choisir que très peu de noeuds validateurs pour maintenir le réseau.
Pour plus de détails, l’article du créateur d’EOS (en anglais)
Chaque variante de Proof of Stake apporte son lot de complexité permettant de répondre à des problèmes précis ou des problématiques importantes qui n’ont pas trouvé de solutions jusque là.
Résumé
La preuve de Travail permet d’assurer la sécurité de la blockchain de façon relativement simple : l’ordinateur travaille alors il est récompensé.
La preuve d’Enjeu répond aux limites de la preuve de travail, dans sa rapidité, sa rentabilité et sa fiabilité.
Elle peut avoir de nombreuses variantes et est beaucoup plus modulable en fonction des principes de la blockchain et de ses besoins.
Il y a possibilité de créer des intermédiaires pour assurer une meilleure sécurité (délégation, bakers Tezos, …).
2 thoughts on “Minage, staking, preuve de travail et preuve d’enjeu (PoW vs PoS)”
Comments are closed.