Proof of Work vs Proof of Stake

Le but d’un système de consensus pour un réseau décentralisé reposant sur une blockchain publique est de laisser les membres du réseau s’accorder sur l’état actuel de la blockchain sans confiance entre ces différents intervenants et en l’absence d’une entité centralisée chargée de mettre à jour ce registre. En d’autres termes c’est le mécanisme qui permet à un réseau décentralisé qui partage un registre commun (la blockchain) de s’accorder sur la validité et sur l’ordre des transactions à ajouter à ce registre.

Proof of work
Proof of work
Share

Avant l’apparition du bitcoin, ce processus n’était pas possible et des autorités centralisées jouant le rôle de tiers de confiance devaient intervenir. Par exemple, la raison d’être initiale d’une banque est de mettre à jour un registre (votre compte) pour refléter les mouvements d’entrée et de sortie qui correspondent aux paiements effectués entre les membres du réseau bancaire.

PROOF OF WORK (POW)

« Proof of Work » (« POW » ou « preuve du travail ») est le mécanisme décentralisé de consensus le plus célèbre à l’heure actuelle grâce au développement du Bitcoin.

Ce mechanisme repose à la fois sur une récompense des entités participant au consensus pour leur bonne conduite et leur travail de calcul, ainsi que sur un algorithme visant à protéger le réseau contre des acteurs ne disposant pas de la majorité de la puissance informatique sur le réseau. Jusqu’à maintenant, le Bitcoin a largement démontré la fiabilité d’un tel système.

Son succès tient à plusieurs éléments.

D’abord le POW est l’un des seuls algorithmes de consensus pour lequel le management de l’identité des participants est entièrement décentralisé. En d’autres termes n’importe qui peut miner des bitcoins sans avoir à prouver d’une quelconque identité. C’est la raison pour laquelle POW correspond aussi bien aux blockchains dites “publiques” ou encore “sans permissions” (“permissionless blockchains”), qui sont ouvertes à tout le monde.

En pratique, dans un système appliquant le POW, chaque mineur essaye de réaliser un problème mathématique et seul le premier à avoir trouvé la solution a le droit d’ajouter le block à la blockchain et d’obtenir la récompense. Sans rentrer dans trop de détails, la solution de ce problème mathématique ne peut être trouvée par déduction, mais seulement en essayant toutes des solutions possible. Or plus votre ordinateur est performant, plus vous allez être en mesure d’essayer un nombre important de possibilités. Pour cette raison, plus votre installation est performante, plus vous avez de chance de trouver la solution. C’est également pour cette raison que tout système reposant le POW entraîne une course aux CPU, c’est-à-dire une augmentation inévitable des capacités de calcul disponible sur le réseau.

Proof of Work

Il y a en effet longtemps que les personnes qui minaient des bitcoins depuis leurs PC avec des cartes graphiques, ne sont plus dans la course et ont été contraint de rejoindre des pools de minages. Donc plus il investit plus un mineur a de chance miner des blocks, ce qui a l’avantage de rendre toute attaque sur le réseau particulièrement chère mais entraine une véritable course à l’équipement entre les mineurs dont l’effet écologique est catastrophique.

PROOF OF STAKE

A la différence de la Proof of Work, l’algorithme de consensus “Proof of Stake” (la “Preuve de l’enjeu”) ne demande pas de compléter un certain nombre d’opérations informatique, mais de démontrer qu’on est en possession d’un certain montant d’argent ou de jetons. Sous un algorithme de POW, la probabilité qu’un mineur soit le premier à trouver le nonce permettant de valider le hachage du block lui permettant de l’ajouter à la blockchain, est directement proportionnel à la puissance de calcul de son installation informatique.

Avec le POS algorithme, le pouvoir de calcul informatique n’intervient donc plus, la probabilité pour un “minteur” ou “forger” (on ne parle plus de mineur concernant le POS) de créer un block et de recevoir la récompense qui y est associée, est proportionnelle à l’étendue de sa participation dans le réseau. Ce mécanisme repose sur l’idée que celui qui détient le plus de participations dans un réseau a le plus intérêt à ce que celui-ci demeure sécurisé. Une attaque aurait en effet pour conséquence de faire diminuer considérablement la valeur de ses jetons. Ensuite pour réaliser une attaque sur le réseau, il faut acheter une part importante des jetons, ce qui pourrait s’avérer dissuasif tant le coût peut être élevé. De ce point de vue, le fait que des jetons puissent être forges sans consommer d’importantes quantités d’énergies et de puissance informatique permet d’éviter la centralisation des moyens informatiques que connait notamment le bitcoin.

Concrètement, le “minteur” combine l’identifiant du dernier block qui a été ajoute à la blockchain avec leur “Clé Publique” pour générer un numéro aléatoire. Ce numéro est ensuite multiplié avec le nombre de jetons dont ils disposent et le nombre de secondes intervenues depuis que le dernier block a été ajoute à la blockchain. Si le chiffre qui en résulte est supérieur à une certaine limite déterminée à l’avance, alors le “minteur” est autorisé à créer le block suivant et à récolter la récompense qui y est attachée.

Il est également important de préciser qu’un mécanisme de POS permet comme le POW de procéder au mintage/minage des blocks sans pour autant avoir à révéler son identité. Tout dépend du type de blockchain auquel il s’applique. S’il s’agit d’une blockchain dite publique sur laquelle tout le monde peut s’inscrire, alors les minteurs n’auront pas à révéler leur identité.

 

LIMITES DES SYSTEMES DE POW ET POS

 

Proof of Work

Pour autant, les mécanismes de Proof of Work et Proof of Stake présentent de nombreux defaults.

Le système du Proof of Work par exemple, est d’abord particulièrement lent. En effet, un block ne peut être ajouté sur la blockchain que toutes les 10 minutes, ce qui pose un problème important pour l’utilisation commerciale du Bitcoin.

Ce problème est accentué par le fait que POW ne présente pas de “finalité du consensus” (“Consensus finality”). Une fois qu’un block est ajouté à la blockchain il n’est pas certain à 100% que ce block soit celui qui sera choisi pour ajouter le block suivant. Deux mineurs peuvent ajouter un block en même temps (réalisant un “fork”), il y alors collision des deux blocks et le réseau devra choisir le block qui devra continuer la blockchain. Ce choix est effectué par les autres mineurs en fonction de la difficulté du POW, le block ayant le niveau de difficulté le plus élevé devra être choisi pour ajouter le prochain block. Même si la collision de block est rare, cette éventualité oblige les utilisateurs du bitcoin à attendre 6 blocks (1 heure) avant de considérer leur transaction comme étant définitivement confirmée.

Même si de nombreuses méthodes ont été développées depuis la création du bitcoin pour permettre l’exécution rapide de transactions, la question de la taille de chaque block (actuellement de 1MB, ce qui permet d’ajouter environ sept transactions par secondes en moyenne) et donc le nombre de transactions qui peuvent être ajoutées à chaque blocks, demeure un point de vif débat dans la communauté bitcoin malgré l’adoption de SEGWIT 2X en août 2017. Le problème de la taille des blocks est directement lie à celui de la rapidité avec laquelle ces blocks peuvent être ajoutés à la blockchain (“block frequency”). En effet, plus de nombre de transactions à ajouter est important, plus le délai de validation des transactions augmente. Or comme le précise Marco Vukolic, chercheur chez IBM, plus le temps de validation est important, plus les risques de “fork” sur la blockchain augmente et donc de voir réaliser des attaques de “double depense”.

Un autre point faible réside dans l’immense consommation d’énergie absorbée par le réseau bitcoin pour fonctionner. Un rapport réalise en 2014, considère en effet que le réseau bitcoin consomme autant d’énergie que l’ensemble de l’Irlande.

Blockchain network

Le système du Proof of Stake n’est pas non plus parfait et pourrait même être victime de sa simplicité.

Il est en effet parfois considéré que les pièces/jetons faisant l’objet d’un minage (avec le POW) sont en quelque sorte investies de la valeur de ce minage, c’est à dire par l’investissement effectué par les mineurs dans les machines et l’énergie nécessaires pour créer ces pièces/jetons. Ce n’est pas le cas des pièces/jetons qui ont été “mintés” selon le processus du POS puisqu’ils n’impliquent aucun de ces investissements, si ce n’est l’achat des jetons du réseau.

C’est précisément ce qui est l’origine d’une des principales attaques à laquelle le système du POS doit faire face et qui est connue sous le nom de “Nothing at Stake” (qui pourrait être traduite par l’attaque du “Rien à perdre”).

Concrètement un attaquant pourrait tenter de diviser (c’est à dire créer un “fork”) la blockchain en créant une blockchain plus longue que celle qui est déjà existante, sans dépenser de vrai ressources. Si nous reprenons les explications du mécanisme de POS, un tel scenario peut intervenir lorsque deux forgeurs obtiennent le droit d’ajouter leur block au même moment. A cet instant la blockchain est divisée en deux branches (d’où le nom “fork” ou “fourchette”). Comme nous l’avons déjà vu dans le cas du POW, le “fork” est normalement résolu naturellement lorsqu’une majorité de “forgeur” décide d’ajouter le block suivant à l’une des branches. Dans ce cas la seconde branche est abandonnée et les transactions qui la constituent seront ajoutes dans un block suivant.

La différence avec POW, c’est qu’ici les forgeurs n’ont pas d’obligation matérielle de choisir une des branches. Ils peuvent en effet continuer à “forger” sur les deux branches puisque cela ne leur coûte rien et que leur seul véritable intérêt est d’obtenir la récompense quel que soit la branche retenue. Avec le système du POW, le minage coûte tellement cher que les mineurs ne peuvent pas se permettre un tel luxe et doivent obligatoirement choisir une des branches pour ajouter le block qu’ils viennent de miner.

Il est donc possible de voir un attaqueur se faire aider par d’autre “forgeurs” qui eux non plus n’aurait pas à dépenser de vrai ressources. L’objectif d’une telle attaque est d’invalider certaines transactions et ainsi permettre d’effectuer des doubles paiements pour le propre compte du “forger”. Il est important de préciser que les risques d’une telle attaque sont très élevés pour les minteurs qui la réalisent puisqu’ils risque de voir le prix de leurs jetons s’effondrer si le réseau prend connaissance de l’attaque.

Cette attaque est le parallèle de “l’attaque des 51%” auquel peut faire face un réseau régit par l’algorithme POW. Ces deux types de modèles de consensus ont en effet une fâcheuse tendance à entraîner une concentration du pouvoir de minage et de mintage entre les mains de quelques acteurs, remettant en cause la raison même de l’existence des réseaux décentralisés. Dans le cas du bitcoin qui utilise le système du POW, seules quelques fermes de minages et pools de mineurs ajoutent des blocks à la blockchain. Ce fut notamment le cas de la coopérative de mineur GHash qui dépassa le seuil des 51% début 2014 et se trouva donc en position de revenir unilatéralement sur les blocks déjà miné.

Les différents problèmes de taille et de fréquence d’ajout des blocks, de finalité du minage et de la concentration des capacités de minages sont autant de challenges que les développeurs tentent aujourd’hui de résoudre à travers de systèmes de consensus toujours plus performants tels que le Delegated Proof of Stake, Byzantine Fault Tolerant systems ou encore Tangle que nous analyserons dans un prochain article.

Follow me on Social media
Share
Passionné depuis 2014 par les technologies liées à la blockchain, j'ai créé ce blog pour partager avec les plus grand nombre les dernières innovations, les start-ups et les Crypto-monnaies qui selon nous constituent une avancée significative pour cette industrie en pleine expansion.

LEAVE A REPLY

Please enter your comment!
Please enter your name here