Cover_Blockchain

Vérifier qu’une transaction Bitcoin est irrévocable

Pour expliquer comment le protocole Bitcoin garantit définitivement la validité des informations contenues dans un bloc, c’est-à-dire l’impossibilité de trouver sur le réseau Bitcoin deux blockchains compétitrices contenant chacune une version différente de ce bloc, il nous faut expliquer la seconde règle du minage Bitcoin, la clé de voute du consensus probabiliste sur l’historique des transactions : La preuve de travail.

La validation de la preuve de travail est la condition sine qua non à la génération d’un bloc. C’est une fois cette preuve validée que le protocole Bitcoin autorise le mineur à ajouter le bloc sur lequel il travaille à la chaîne la plus grande afin que les mineurs puissent rediriger leur travail vers la construction du bloc suivant, à la condition que le bloc construit soit intègre par rapport à la blockchain sur laquelle ils travaillaient.

Cette preuve de travail consiste à générer aléatoirement des valeurs du nonce, jusqu’à ce que le block hash ait une valeur inférieure à une certaine cible. Ainsi pour qu’un mineur soit autorisé par le protocole Bitcoin à envoyer son bloc à tout le réseau, il doit générer aléatoirement des valeurs de nonce jusqu’à trouver un block hash avec un certain nombre de zéros en préfixe ; ce nombre de zéros correspond à la difficulté de minage.

Plus un mineur dispose de puissance de calcul, plus il pourra générer rapidement des valeurs de nonce, jusqu’à résoudre la preuve de travail. La preuve de travail distribue donc les chances de génération d’un bloc proportionnellement à la puissance de calcul de chaque mineur en compétition. Le protocole Bitcoin ajuste la difficulté de minage pour maintenir la fréquence de génération des blocs à 6 blocs par heure. Ainsi, lorsque la compétition devient plus forte et que la puissance de calcul des mineurs grimpe, la difficulté est augmentée pour rendre la preuve de travail plus difficile à résoudre, et inversement.

Un mineur qui voudrait augmenter sa puissance de calcul ne pourra donc le faire qu’en achetant plus de processeurs et en payant plus d’électricité pour alimenter ces processeurs. C’est ce coût énergétique qui permet de rendre coûteuse la participation au minage, et donc de dissuader des utilisateurs malintentionnés qui pourraient encombrer le réseau avec de fausses transactions.

En complément de ce coût de minage, la récompense de génération permet d’inciter les mineurs honnêtes à participer. A chaque fois qu’un mineur parvient à générer un bloc, il remporte un nombre de bitcoins défini au niveau du protocole Bitcoin. Cette contribution prend la forme d’une transaction d’un type particulier, les transactions Coinbase.

En effet, ces transactions sont les seules qui ne comportent aucun Input. Elles correspondent par conséquent au système d’émission monétaire du protocole Bitcoin. Si un mineur génère un bloc, il ne pourra dépenser la récompense contenue dans ce bloc que si ce bloc est validé. Il a donc tout intérêt à agir honnêtement et à faire en sorte que ce bloc soit valide s’il veut pouvoir profiter de sa récompense.

La récompense de minage est divisée par deux tous les quatre ans afin de limiter la masse de bitcoins en circulation et d’empêcher une perte de valeur ; on appelle ces divisions périodiques des Halvings.

Il est économiquement plus intéressant de mettre à profit sa puissance de calcul honnêtement que mal honnêtement sur le réseau Bitcoin. Enfin… Cela reste vrai tant qu’aucun mineur ne possède assez de puissance de calcul pour être sûr de générer plus rapidement que le reste du réseau les blocs futurs ! Pour obtenir une telle vitesse de génération, le mineur devrait disposer de plus de 50% * de la puissance de calcul du réseau.

*NB : Avec plus de 50% de la puissance de calcul totale du réseau Bitcoin, l’utilisateur pourrait créer une chaîne (considérée comme vraie car étant la chaîne la plus longue) dans laquelle il effectuerait une double dépense. Ce type de fraude porte le nom d’attaque des 51%.