Les consensus proof of work vs proof of stake
blogchain café
le blog sur la blockchain
blogchain café
Les consensus: Proof of work vs Proof of stake
powpos Share on LinkedinShare on TwitterShare on Google+
L’état du système bitcoin à un instant T est une collection de outputs de transactions non dépensées qu’on appelle UTXO.
L’argent disponible dans chacun de ces outputs est protégé cryptographiquement par le protocole de la monnaie: quiconque veuille dépenser une somme dans un UTXO doit fournir la preuve qu’il en est bien le proprié taire.
Au lieu stocker explicitement le soldes de tout le monde, bitcoin garde l’ historique complet des transactions des utilisateurs et les manie dynamiquement pour déduire l’état courant. Les transactions représentent donc des é changes atomiques de monnaie qui modifient l’état interne du système.
La découverte de nouveaux blocs se fait selon un ensemble précis de règles d éfinies dans le protocole. Ces règles doivent protéger la blockchain des attaques et atteindre rapidement un consensus lorsque par exemple apparaissent des ramifications blockchain (forks).
La Proof of work (preuve de travail) et la Proof of Stake (preuve d’enjeu ou de possession) sont les deux manière de valider les blocs les plus connues. Elles impliquent deux mécanismes de consensus très différents.
Le processus de résoudre un défi informatique imposé par une Proof of Work est appelé mining: on parle de mineurs.
Le processus de résoudre un défi informatique imposé par une Proof of Stake est appelé minting: on parle de forgeurs.
Le théorème CAP dit qu’il est impossible sur un système informatique de calcul distribué de garantir en même temps (c’est à dire de manière synchrone) les trois contraintes suivantes:
• Cohérence: tous les nœuds du système voient exactement les mêmes donné es au même moment ; • Disponibilité : garantie que toutes les requêtes reçoivent une réponse; • Tolérance au partitionnement : aucune panne moins importante qu’une coupure totale du réseau ne doit empêcher le système de répondre correctement.
Tout système de calcul distribué ne peut garantir à un instant T que deux de ces contraintes, mais pas les trois.
Les cryptomonnaies sont ainsi
- disponibles (chaque requête reçoit toujours une réponse),
- tolérants à la distribution (le service fonctionne encore même si quelques noeuds échouent), mais
- il ne sont jamais cohérents.
Au fil du temps, des utilisateurs différents peuvent voir des pseudo états courant différents. Par exemple l’incohérence arrive lorsque le hash d’un bloc nouvellement découvert n’a pas encore été relayéà tous les utilisateurs du système.
Ces instabilités temporaires sont un grand obstacle lorsqu’on implémente une cryptomonnaie, puisque à la fin il faudra bien finir par obtenir une consistance finale. Les incohérences sont physiologiques, et donc tolérées, mais doivent être transitoires, mieux encore éphémères.
C’est le rôle du protocole de consensus. Pour cela il impose les exigences suivantes
- Un utilisateur qui a découvert un bloc est encouragéà l’émettre sur le réseau immédiatement sans le retenir
- On doit décourager l’utilisateur de découvrir les blocs des chaînes intermédiaires (il faut qu’il focalise sur les plus longues).
- Les règles de consensus doivent être construites de manière à résoudre l’ambiguïté qui se forme à la suite d’un fork de blockchain: lors d’ un fork une des branches en compétition doit prendre le contrôle sur les autres dans un temps raisonnablement court.
Proof of Work
Chaque bloc Bitcoin consiste de deux parties :
· partie de tête (header) avec les paramètres clés: timestamp de création du bloc, référence au bloc précédent, la racine de l’arbre Merkle du bloc de transactions… · partie centrale qui contient la liste de transactions.
Pour faire référence à un bloc spécifique, on fait le hash SHA-256 de son header deux fois. L’entier résultant appartient à l’intervalle
[0, 2^256 – 1]
Dans la Proof of Work, pour qu’un bloc soit considéré valable, cet entier ne doit pas excéder un certain seuil :
hash(B) <= M/D
D ∈ [1, M] représente la difficulté de la tâche.
Il n’y a aucune façon connue de prédire à l’avance quel argument B va satisfaire cette équation. La seul possibilité est le lancer une sorte d’ attaque en force brute aléatoire et itératif, dans l’espoir de trouver avant les autres un minimum assez petit. Plus haute est la valeur de D, plus il faudra d’itérations avant de trouver un bloc valable.
Proof of Stake
La Proof of Stake a, elle aussi, une inégalitéà satisfaire mais celle ci concerne la quantité de monnaie qu’un utilisateur possède.
La probabilité qu’un compte parvienne à confirmer le prochain block de transactions à ajouter à la blockchain est proportionnelle à la quantité de monnaie qui est sur ce compte. Plus précisément, elle est proportionnelle au rapport entre le solde de l’utilisateur à l’instant T et le total de la monnaie en circulation.
Pour faire court, une personne possédant 5 % d’une monnaie PoS peut minter le 5 % des blocs de la même façon qu’une personne possédant 5 % de la puissance le réseau du bitcoin peut théoriquement miner le 5 % des blocs. C’ est comme si une PoS tentait de de copier simplement la PoW en faisant de chaque pièce de sa monnaie un simulated mining rig.
Prenons un utilisateur avec adresse A et un solde bal(A). Une fonction de PoS commune utilisera cette condition
hash( hash(Bprev), A, t) <= bal(A) M/D
· Bprev dénote le bloc sur lequel l’utilisateur est en train de construire, · t est le timestamp UTC courant.
Contrairement à l’équation PoW, la seule variable que l’utilisateur peut changer est le timestamp t, dans la partie gauche de l’équation.
En effet le solde est connu publiquement et on peut aisément calculer les avoirs de chaque membre en prenant par exemple les montants qui n’ont pas ét é déplacés pendant les dernières 24h.
Le temps pour trouver un bloc pour l’adresse un est exponentiellement distribu é avec un taux
bal (A)/D
Ainsi, si la provision monétaire de la monnaie est fixe ou tout au plus grandit à un taux connu, la difficulté D est connue à l’avance :
D = 1 /Tex ∑ bal(a)
Tex dénote le temps attendu (expectation time) entre deux blocs.
Dans la pratique, D est ajustée en dynamique en se basant sur les blocs ré cents afin de tenir compte du fait que tous les propriétaires de monnaie ne participent pas au minting des blocs en même temps.
Le Nothing at Stake
Dans une Pow: en contribuant aux décisions pour les validations blockchain, un mineur doit faire dont le choix entre toutes les fourchettes possibles (ou à défaut en commencer une nouvelle). Les options sont mutuellement exclusives . Voter double n’est pas profitable puisque on gaspille son pouvoir de mining en l’éparpillant. La stratégie payante est celle de minier exclusivement sur la fourchette que vous pensez avoir le plus de chance de gagner.
[powsec]
Avec la Pos la situation est différente: le vote est libre et ne coûte rien. Si on est en train de miner, chaque coin qu’on possède a une certaine chance par seconde d’être utilisable pour signer un bloc. Cela a un inconvenient majeur: s’il y a des forks multiples, la stratégie optimale est de voter sur tous les forks en même temps.
C’est le concept de Nothing at Stake.
[possec1]
Consensus objectif et faiblement objectif.
Un protocole de consensus est objectif si un nouveau noeud peut arriver au mê me état auquel arrive le reste du réseau en se basant seulement sur les rè gles du protocole et les messages propagés à travers le réseau.
La PoW est un exemple d’un protocole objectif: tant qu’un nouveau noeud est connectéà au moins un utilisateur honnête, il choisira un bloc valide.
La PoS par contre n’est pas objective. En effet, si nous prenons un attaquant avec assez de puissance de calcul. Pourvu que son fork soit assez longue, la difficulté sera ajustée pour favoriser le contrôlé de ce fork de la part de l’attaquant. Ceci lui permet éventuellement de produire une chaîne plus longue que le vrai fork, c-à-d de celui qui aurait dû être valable.
Ce type de forks longues sont rejetées par les utilisateurs qui sont depuis un moment dans le système, mais les nouveaux arrivants, n’ayant pas de connaissance antérieure, sont poussés par le protocole même à préférer le fork de l’attaquant.
Un protocole de consensus est subjectif si le système a des états stables où des noeuds différents parviennent à des conclusions différentes. Dans ce cas il faut une grande quantité d’informations sociales externe pour participer.
Les systèmes qui utilisent des réseaux sociaux comme leur ensemble de consensus (eg. Ripple) est nécessairement subjectif. Un nouveau noeud qui ne connaît rien d’autre que le protocole et les données peut être convaincu par un hacker que ses noeuds sont dignes de confiance. Sans une informations sociale externe qui donne de la réputation il est impossible de résoudre ce type d’ attaque.
C’est très différent de la PoW dans laquelle l’état actuel est toujours celui qui a fédéré la la plus haute quantité de ressources de calcul.
Un protocole de consensus est faiblement objectif si un noeud a besoin d’un é tat récent en plus des règles du protocole et des messages propagés pour dé terminer l’état actuel du système.
Un nouveau noeud venant sur le réseau sans connaissance sauf
- les règles du protocole,
- l’ensemble de tous les blocs + les messages « importants » qui ont été publiés et
- un état assez récent (moins e N blocs dans le passé) qui est certainement valable
peut arriver seul à la même conclusion que le reste du réseau quant à l’é tat actuel.
La PoS est faiblement objective. Si il y a ambiguïté il suffira de lire le contenu d’un bloc avec au moins profondeur N, pour déterminer l’état courant du système. Un membre nouveau venu pourrait ainsi avoir accès à ce bloc d’une source fiable (par exemple, un site Web consacréà la monnaie en question).
Bien que cette méthode affaiblit la sécurité et modifie radicalement les cot é décentralisation, la subjectivité faible est une bonne façon de combiner la sécurité computer-driven et celle social-driven.
Les différences PoW / PoS
Une PoS peut mettre des restrictions aux valeurs possibles de t. Par exemple, t ne doit pas différer du temps UTC sur des noeuds de réseau de plus d’une heure. Ainsi un utilisateur devra essayer au plus 3600*2 valeurs de t.
C’est la raison pour laquelle il n’y a pas de calculs particulièrement lourds dans un PoS. Les mécanismes PoS ne nécessitent pas de matériel informatique puissant et onéreux pour la maintenance de la blockchain et ne consomment pas beaucoup d’électricité. Les PoS demandent des ressources nettement plus petites par rapport aux PoW, à la louche d’un facteur 1000. C ’est pourquoi on les considère comme une technologie verte.
Le PoS n’est pas sujet au risque d’attaque 51% car, pour mener une telle attaque, il faudrait posséder au moins 51% de la masse monétaire, ce qui est considéré comme impossible, sauf peut être au tout début lorsque toutefois la monnaie ne vaut forcement pas encore grand chose.
Une monnaie PoS n’a pas d’inflation. La masse monétaire est créée au dé but, et c’est pourquoi un système PoS garantit qu’une monnaie sera dé flationniste.
Malgré ses faiblesses remplacer la preuve de travail par la preuve d’enjeu reste un objectif intéressant car un algorithme PoS consomme beaucoup moins d ’énergie que l’algorithme PoW.
Toutefois si on se limite à cette seule considération, on passe à coté du fait qu’ne blockchain PoS ne peut structurellement pas offrir le même niveau de sécurité qu’une PoW vu qu’elle ne demande pas de travail en contrepartie de ses validations. On pense généralement qu’une PoS est équivalente et meilleure d’un PoW, mais il n’en est rien.
Dans une blockchain PoS, si vous avez possédé assez de la monnaie à un certain point dans le passé vous pouvez faire votre propre chaîne alternative gratuitement et sans effort. Les autres membres ne pourront pas dire la diffé rence entre la vraie chaîne et la votre sans disposer de quelques informations supplémentaires externe.
Le problème est dans le fait que le coût production des coins PoS est pratiquement zéro car aucune énergie n’a été dépensée pour les créer. Ainsi aucune fonction de coût ne limite la quantité de coin PoS disponibles sur le marché dans le futur.
On sait que la valeur d’un réseau est fonction du carré du nombre de ses utilisateurs mais elle n’augmente pas en fonction de la quantité de coins circulant sur le réseau. La valeur réside plutôt dans le volume de transactions/paiements que le réseau est capable d’absorber.
Considérons le fait que les cryptomonnaies sont des entités numériques, divisibles à l’infini et à grande vélocité (on appel cela la fragmentation de l’effet réseau). De toute évidence une quantité de coins illimitée dans le futur fait obstacle à la valorisation de la cryptomonnaie car il n’y a plus de lien déterministe entre la valeur présente du réseau et la valeur des coins future.
Par conséquent la valeur d’une monnaie PoS peut décroître même si le nombre d’utilisateurs augmente: une monnaie 100% PoS ne peut pas avoir valeur d’ investissement. Elle aura uniquement une valeur d’usage avec sa valeur unitaire qui tend vers zéro si les offres se multiplient indéfiniment.
Une blockchain PoS véhicule donc une monnaie qui n’a qu’une valeur conventionnelle entre les participants. Ses transactions s’apparentent aux transactions Bitcoin des colored coins et comme eux devra être compensée par un transfert de valeur effectif sur un autre réseau (euro, bitcoin ou autre).
A l’inverse d’une chaîne PoS, une blockchain PoW est une infrastructure qui ne peut pas être efficacement répliquée.
La réplication du réseau Bitcoin (par exemple lorsque on a crée le réseau Litecoin) est un gaspillage du point de vue de la sécurité et ne peut se justifier que par le nombre de transactions supplémentaires qu’il permet.
Mais là aussi on peut pas considérer Litecoin comme une solution de scalabilité pérenne, vu qu’il existent des solutions de scalabilité interne au Bitcoin plus efficace qu’une blockchain flottante satellite.
Il existe une solution élégante et efficace si on combine les deux: un sidecoin PoS liée à la blockchain Bitcoin pegged sidechain. Cela évite à la monnaie PoS de converger inexorablement vers zéro tout en gardant les avantages de la faible consommation énergétique du protocole PoS et de la pé rennité de la valeur des coins PoW.
Grâce au mapping des sidecoins PoS avec la blockchain bicoin, un acheteur ne pourra acquérir la majorité des sidecoins PoS qu’en payant le prix du march é des bitcoins. La sidechain PoS devient ainsi un registre publique annexe dont la sécurité sera directement liée à la quantité de bitcoins convertis en sidecoins PoS.
[87689]Auteur microingensPublié le mars 14, 2016mars 14, 2016Catégories bitcoin, blockchain, techniqueÉtiquettes Bitcoin, blochchain, blog, colored coins, conseil, consulting, enjeu, froof of work, pegged sidechain, POS, POW, preuve, prooof os stake, travail, UTXO
2 pensées sur “Les consensus: Proof of work vs Proof of stake”
- Ping : Les consensus: Proof of work vs Proof of stake ...
- Ping : Slock.it: Ethereum, IoT et économie collaborative – blogchain caf é
Laisser un commentaire Annuler la réponse.
Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
Commentaire [ ]
Nom * [ ]
Adresse de contact * [ ]
Site web [ ]
[Laisser un commentaire]
Navigation de l'article
Précédent Article précédent : Blockchains permissioned vs unpermissioned Suivant Article suivant : Slock.it: Ethereum, IoT et économie collaborative Recherche pour : [ ] Recherche AUTEUR
David TERUZZI * Consultant blockchain * Co-fondateur de blockchain-conseil.fr * Développeur affilié du projet DECRED * Chroniqueur blockchain pour FINYEAR * Programmeur expert en maths appliquées * Expert en IA, machine learning, data mining.
david teruzzi
contactez-moi
linkedin128 twitter128
Articles récents
• Compte rendu de la conférence Digital Contracts, Identities and Blockchains au MIT (par Marc Dangeard) juin 2, 2016 • Common Accord: le pont smart contracts / contrats papier mai 19, 2016 • Quelques stats sur le bitcoin comme moyen de paiement mai 18, 2016 • Bitcoin: la mise à jour Segregated Witness mai 13, 2016 • La mère de toutes les DAO mai 12, 2016 • Le DAO.LINK mai 9, 2016 • La programmation de smart contracts: une opération hautement délicate. mai 7, 2016 • BigchainDB: le database blockchain évolutif. mai 1, 2016 • Blockchain: la fin du big data ? avril 29, 2016 • DAO: Contractors et Curators avril 27, 2016
Commentaires récents
• Slock.it: Ethereum, IoT et économie coll... dans Slock.it: Ethereum, IoT et économie collaborative • DAO: Contractors et Curators – blogchain ... dans DAO: Contractors et Curators • La mère de toutes les DAO – blogch... dans La mère de toutes les DAO • Comprendre Ethereum (2): the Ethereum State Tra... dans Comprendre Ethereum (2): the Ethereum State Transition Function • Comprendre Ethereum (1) – blogchain caf&e... dans Comprendre Ethereum (1)
Archives
• juin 2016 (1) • mai 2016 (7) • avril 2016 (4) • mars 2016 (3) • février 2016 (5) • janvier 2016 (23)
Catégories
• bigchainDB (1) • bitcoin (19) • blockchain (22) • common accord (2) • cryptomonnaies (9) • DAO (2) • daohub (1) • Dapp (3) • decred (2) • ethereum (12) • Lisk (2) • MaidSafe (1) • maths (1) • mining (2) • news (10) • ripple (2) • safecoin (1) • smart contract (2) • technique (19) • trading (1) • tutoriel (4)
AUTRE
• Connexion • Flux RSS des articles • RSS des commentaires • Site de WordPress-FR
PARTENAIRES
blogchain café Fièrement propulsé par WordPress