La « Preuve du Travail » (de l’anglais « Proof of Work ») n’est pas apparu avec le Bitcoin
Le concept de la “preuve du travail” existe depuis longtemps. La premiere application moderne, presentee en 1996 par Adam Back sous le nom de “Hashcash”, utilisait un mechanisme de la « Preuve du Travail » basé sur l’algorythme SHA256 (comme le protocol Bitcoin), comme un anti-spam en associant la reception d’un email à un mechanisme de la « Preuve du Travail ». Comme nous allons le voir, l’une des particularité du mécanisme de la « Preuve du Travail » est son coût, en raison des opérations qui doivent être realisées et donc des capacités informatiques et énergétiques qui sont requises.
Dans un réseau décentralisé tel que ceux reposant sur une blockchain, la difficulté est de mettre d’accord tous les membres sur l’ordre des transactions qui doivent y être ajoutées. C’est toute la question du Conensus entre les membres du réseau. La « Preuve du Travail » est un des mécanismes qui permet d’atteindre cet accord tout en assurant la sécurité du réseau. Et pour cela n’importe qui ne doit pas être en mesure d’ajouter des blocks à la blockchain comme il l’entend et obtenir la récompense. Il doit d’abord prouver son implication en mettant à la disposition des membres du réseau les capacités de calcul de son ordinateur (aujourd’hui un ordinateur ne suffit plus à miner le bitcoin, seul les fermes de minages et les mining pools peuvent encore participer).
La « Preuve du Travail » permet au mineurs de dire au reste du réseau, « regardez j’ai utilisé beaucoup de capacités de calcul, plein de matériel et plein d’énergie au service du réseau, la preuve j’ai obtenu le résultat de la « preuve du travail » donc maintenant je peux ajouter le bloc et recupérer la récompense qui va payer pour tous ces frais. »
Il est générallement considéré que le réseau bitcoin consomme autant d’énergie qu’un pays comme l’Ireland, mais ce qu’on ne dit pas assez, c’est que cette énergie sert à faire tourner des machines pour un exercice absurde, la « Preuve du Travail », qui sert juste à déterminer lequel des mineurs aura le droit d’ajouter le block à la blockchain. C’est aussi pourquoi de nombreux nouveaux systèmes de consensus apparaissent tels que le Proof of Stake ou le Delegated Proof of Stake en vue de limiter cette consommatoin d’énergie.
Tenter de définir le mécanisme de la « Preuve du Travail »
Le mécanisme de la « Preuve du Travail » peut s’expliquer en des termes relativement simples: c’est le fait pour un participant du réseau (dans le cas du bitcoin, un mineur) de présenter à l’ensemble des autres membres du réseau, le résultat des calculs qu’il a effectué. Les opérations à réaliser ne sont pas en elles mêmes compliquées, mais doivent être réalisées un nombre de fois tel que le mineur doit engager d’importantes capacités informatiques (CPU). Le mineur doit en effet trouver un chiffre au hazard. Pour cela il va tenter ça chance jusqu’à ce qu’il le trouve. Il va appliquer l’algorythme de hachage à un même groupe de donnée jusqu’à ce qu’il obtienne le résultat qu’il cherche.
QU’EST CE QU’UN ALGORYTHME DE HACHAGE? Il s’agit d’une formule mathematique qui est appliquée à un nombre variable de données (l’”input”) en vue de les transformer en un nombre fixe de données correspondant à l’emprunte digitale des données (“output”). Dans le cas de l’algorythme SHA256 la taille du code est toujours 256 bits. Le systeme du hachage est utilisé dans beaucoup d’autres domaines que bitcoin pour verifier que les données intiales (“input”) n’ont pas été changées. En effet deux input différents ne peuvent pas donner un output identique. Par exemple si nous soumettons la phrase “Bitcoin est une monnaie d’avenir” a l’algorythme SHA256 nous allons obtenir un code de 256 bits qui ressemblera au code suivant: “0f7becfd3bcd1a82e06663c97176add89e7dee0268de46f94e7e11bc3863e148”. Maintenant si nous ajoutons un point à la phrase et le re-soumettions à l’algorythme, le code obtenu sera totalement différent (même si il aura toujours 256 bits). En d’autres termes, il est impossible de trouver deux inputs différents qui donneraient le même output. Il est également important de rappeller que l’algorythme de hachage ne fonctionne que dans un sens et qu’il est impossible de retrouver l’input à partir de l’output. De manière très schématique nous pourrions nous figurer le méchanisme de hachage comme une presse qui reduirait un ou plusieurs éléments de nature (chiffres, lettres, symbols) et de longueur différentes (input) en un seul code de 256 bits (output).
Plus concrètement le mineur doit trouver un résultat commençant par un certain nombre de zéro. Plus le nombre de zéro est important plus il est difficile pour le mineur de trouver le résultat et plus il devra essayer sa chance avant de tomber dessus.
Or le nombre de zéro (et donc la difficulté) est ajustée au nombre de mineurs sur le réseau (et de leur capacité informatique) pour être sûr qu’il prendront en moyenne 10 minutes pour trouver la solution. Une fois qu’il a trouvé ce chiffre, les autres membres du réseau peuvent instantanement en verifier la solution.
Comment un mineur fait pour trouver le resultat d’un hachage contenant un certain nombre de zero, si il ne connait pas les données d’entrée qui doivent être soumises au hachage? Puisque le mineur ne peut pas trouver les données d’entrée (“input”) à partir des données de sorti (“output”) comme nous l’avons expliqué plus haut dans notre encarde, il va tenter sa chance jusqu’a ce qu’il trouve les données d’entrée lui permettant d’obtenir des données de sortie correspondant à l’objectif de difficulte requis, c’est à dire commençant par le nombre de zéro suffisant pour être validé par le protocol Bitcoin et ainsi être ajouté à la blockchain.
Pour ce faire il va utiliser toujours les mêmes données auquelles il va ajouter un “Nonce” qui, lui, changera à chaque essai, jusqu’a ce qu’il trouve le Nonce lui permettant de trouver le bon resultat.
Si nous reprenons l’exemple utilise dans notre encardre, le mineur procedera comme il suit:
Bitcoin est une monnaie d’avenir1 = 0fdg155sd1fgsd5133d5fgdfgdbtnnjd3x5g4m3f5h4gzs3dg5….
Bitcoin est une monnaie d’avenir2 = 0wnjsbfd4yj35zs4egn35y4bzs3e5f43zn57has3d5nx3t5b73…..
Bitcoin est une monnaie d’avenir3 = 00asefnjj574dm3dm5y4mh3d54d3dmh43d54gdf35h4s486…
(…..)
Bitcoin est une monnaie d’avenir4635445614 = 000sdrgf7n3a547sd3ba5s4nj3s54fb3a54a3a45……
En jaune ce sont les « Nonces » appliqués par le mineur aux mêmes données d’entrée (“Bitcoin est une monnaie d’avenir”). Le mineur les essayes un par un. En vert, c’est le nombre de zéro contenu dans le résultat de l’algorythme de hachage, requis pour valider le block. Si le niveau de difficulté est requiert trois zéro par le protocol Bitcoin alors le mineur essayer des « Nonces » au hazard jusqu’à ce qu’il obtienne trois zéro. Il est important de noter que le niveau de difficulté est constament ajusté au nombre de mineurs présent sur le réseau et à leur niveau de sophistication pour s’assurer qu’un Nonce est trouvé toutes les 10 minutes.
Une fois que le mineur a trouvé le hachage du block permettant de valider ce block, ce dernier le transmet aux autres mineurs pour validation. Ces derniers disposant maintenant des données d’entrée pourront vérifier instantanement que le mineur a bien effectué le travail de recherche du Nonce (d’ou le nom “preuve de travail”) et ainsi valider le block.
Pour donner un ordre d’idee, à l’heure actuelle, compte tenu du niveau de difficulté, il faut compter jusqu’a 150 000 milliard de tentatives pour trouver le bon Input. Ce sont 600 trillons de calcul de l’algorythme SHA256 qui sont réalisés toutes les secondes à travers le monde. Nous sommes loin des débuts où le niveau de difficulté permettais de miner à partir d’un ordinateur portable, les mineurs sont maintenant des data center uniquement dédiés à cette activité.
Merci d’avoir lu cet article. Si il vous a intéressé, n’hésitez pas à le LIKER et à le PARTAGER!! Si vous avez des questions, vous pouvez les ajouter en commentaires et nous vous répondrons.
[…] des règles cryptographiques visant à sécuriser le réseau (clé privée/publique, hachage, proof of work, Merkle tree…). Or ces mécanismes cryptographiques sont mis en mouvements par les membres du […]
Bonjour, je fais une étude sur les procédés de sécurités du bitcoin et votre site m’en apprend beaucoup. Cependant certaines choses sont encore flous. Le message de base a codé auquel on ajoute Nounce, comment est-il déterminé? dans l’exemple il s’agissait de « Bitcoin est une monnaie d’avenir »
Merci d’avance
Bonjour Grégoire, merci pour votre message. C’est une très bonne question. Ma compréhension est que les données initiales (la phrase « le bitcoin est une monnaie d’avenir ») ainsi que le Nonce sont générées de manière aléatoire par les mineurs et soumis à un l’algorythme de hachage en vue d’obtenir un résultat conforme au niveau de difficulté. Le protocole Bitcoin définit lui le niveau de difficulté que le résultat du hachage doit atteindre, c’est à dire le nombre de zéro qui doivent figurer au début du résultat. Plus il y a de zéro, plus la difficulté augmente.
Si vous entrez dans ce niveau de détail, je vous conseille vraiement l’ouvrage de référence « Mastering Bitcoin » de Andreas Antonopoulos.
Merci beaucoup!
Je vais regarder cela.
[…] Une explication simple de la « Preuve du Travail » […]