Comment se matérialise la preuve de travail ?
Les mineurs vont tenter de trouver le résultat attendu. En essayant de trouver la solution du problème, le mineur va dépenser beaucoup d’énergie (électricité) pour faire tourner une machine qui elle-même représente une dépense (achat, maintenance, renouvellement, etc…). C’est une activité qui est couteuse, et cela a son importance pour la sécurité de Bitcoin. Mais si le mineur a de la chance et qu’il trouve la solution en premier, il sera récompensé en BTC.
Pour inscrire le bloc dans la blockchain, les mineurs vont réaliser des millions/milliards de fois le calcul (preuve de travail) jusqu’à trouver le bon résultat. Une fois qu’un mineur a trouvé, il va partager son résultat aux autres nœuds du réseau. Ces derniers vont vérifier à leur tour et si tout est ok, ils vont diffuser la nouvelle version de la blockchain aux autres nœuds. Dans le cas contraire, le bloc sera rejeté et les mineurs continueront de chercher la solution.
Le résultat attendu s’exprime à travers ce que l’on appelle la difficulté (ou target : la cible en anglais). En effet, ce qu’il est demandé aux mineurs, c’est de trouver un hash (le résultat de la fonction de hachage) qui va commencer par x zéro ou plus. Eh oui, cela parait tout bête, mais c’est plutôt ingénieux.
La difficulté correspond à une quantité définie de zéro que l’on souhaite avoir au début du hash.
La difficulté de minage est réajustée par le réseau tous les 2016 blocs.
Pour cela, il doit utiliser en entrée les données du bloc qu’il a composé (le header du hash du bloc précédent, les transactions, signature, etc…) et en faisant varier le nonce, lui-même renseigné dans le bloc. Le mineur va donc faire varier le nonce jusqu’à obtenir un hash qui commence par x zéro ou plus. En réalité, sur Bitcoin, le hash obtenu est de nouveau haché via SHA-256. Ce nonce qui sera inscrit dans le bloc représente le fait que le mineur ait réellement “travaillé” et pas triché : c’est la preuve de travail et tout le monde peut vérifier que c’est bien le cas.
Vous pouvez essayer de trouver un hash qui commence par x zéro via https://dcode.fr/sha256-hash, vous verrez, ce n’est pas évident.
Attention
Le hash est en hexadécimal, de ce fait un 0 signifie en réalité 4 zéros, car 0 = 0000. De la même manière, le 1 comporte 3 zéros puisque 1 = 0001. Par conséquent, si mon hash commence par 0001bf639ad…, que la difficulté est de 14 zéros, alors c’est validé parce qu’il y a 15 zéros au début.
Au cas où plusieurs mineurs trouveraient simultanément une solution, leur version de la Blockchain va commencer à se diffuser (fork = plusieurs versions de la Blockchain). Les mineurs vont continuer à travailler sur le prochain bloc avec la version qu’ils possèdent. Dès lors qu’un nouveau bloc est ajouté à une version de la Blockchain, c’est cette version qui devient l’originale. La chaîne la plus longue l’emporte.
Le mineur qui inscrit le nouveau bloc dans la blockchain est récompensé par un montant défini de BTC + les frais de transaction. Ce montant est divisé par deux tous les quatre ans à peu près (le Halving Day – tous les 210 000 blocs). En 2024, ce sera 3.125 BTC qui seront créés pour récompenser à chaque fois le mineur qui valide un bloc.
La seule manière pour une personne qui souhaiterait ajouter un faux bloc serait de réaliser la preuve de travail, qui comme dit plus haut est très coûteuse. Mais, puisque tous les blocs sont liés à travers leur hash (pour rappel, on stocke le hash du précédent bloc dans le suivant), il faut nécessairement refaire la preuve de travail pour tous les blocs précédents. Sinon, ils ne sont plus en adéquation. Ou alors, il est nécessaire d’avoir plus de puissance de calcul que la totalité du réseau. Avec les fonctions de hachage, la moindre modification d’un bloc à la lettre près se voit immédiatement sur le hash sortant.
Conclusion, le coût d’une attaque de la Blockchain Bitcoin est bien plus élevé que la récompense potentielle. Cela dissuade complètement les éventuels assaillants. Pourquoi tricher alors que l’on peut jouer le jeu et tenter de gagner des bitcoins ? De plus, si ce n’était pas couteux de miner, il serait beaucoup plus simple de tenter de tricher.
Tu as aimé ce cours ? Aide-nous à le faire connaître et partage ton avis
Tweet