Le processus de sécurisation de la blockchain Bitcoin est souvent mal compris à cause de sa structure complexe. Une technologie naissante est souvent décrite avec des termes techniques avant d’être totalement comprise par le grand public. Par exemple, nous pouvons tous décrire relativement simplement des technologies bien implantées aujourd’hui : une voiture, une station spatiale, une fusée, une enceinte bluetooth… La compréhension technique de ces technologies passe après leur compréhension conceptuelle et utilitaire. Rares sont ceux qui décrivent une voiture comme étant : un châssis métallique constitué d’un moteur à combustion fonctionnant avec une source d’énergie fossile ou non fossile. Le processus de sécurisation de Bitcoin en est, la pluspart du temps, à son descriptif technique. Je pourrais tout simplement dire que Bitcoin en est à ce stade, mais cantonnons-nous ici à vulgariser son processus de sécurisation.

Si vous vous perdez dans les couloirs de la cryptosphère, et notamment du Bitcoin, vous tomberez probablement nez-à-nez avec un terme à la consonance barbare : Le Hashrate. Ce terme anglophone, traduit par taux de hachage dans la langue de Molière, fait référence à la puissance de calcul totale des machines de minage qui est utilisée par un algorithme (détaillé ci-dessous) pour traiter les transactions sur une blockchain fonctionnant avec la preuve de travail (Proof-of-Work) comme Bitcoin. Décomposons ce “taux de hachage”.

Le hachage : késako ? 

Dans le cadre de la cryptographie, le "hachage" est un code alphanumérique de longueur fixe utilisé pour représenter des mots, des messages et/ou des données de n'importe quelle longueur. Typiquement, en utilisant l’algorithme de hachage que Bitcoin utilise, qui se présente sous le nom de SHA-256, le hachage du mot “Zonebourse” serait le suivant : 

“caz29204b336452a3r94ad5450f5ebc3c80130a85fbb91d62768741a3b45zt71”

Considérez l’algorithme de hachage de Bitcoin comme un générateur de mots aléatoires qui sont représentés sous la forme d’un code alphanumérique. En reprenant l’exemple précédent, si nous modifions le mot ne serait-ce que par une nouvelle lettre comme “Fonebourse” alors le hachage sera complètement différent : 

“6az5849af1b5794bf6855c14532169d41rt713665e894b2314b8c9f081c61t78a”

Notons ainsi que la variable d'entrée soit une seule lettre, un mot, une phrase ou un roman entier, la sortie aura toujours la même longueur. 

Exemple : une utilisation courante de ce type de fonction de hachage consiste à stocker des mots de passe.

Lorsque vous créez un compte utilisateur avec un service Web (soutenu par un algorithme de hachage) qui nécessite un mot de passe, le mot de passe est exécuté via une fonction de hachage et le résumé (la sortie) de hachage du message est stocké. Lorsque vous saisissez votre mot de passe pour vous connecter, la même fonction de hachage est exécutée sur le mot que vous avez saisi et le serveur vérifie si le résultat correspond au résumé stocké.

Cela signifie que si un pirate parvient à accéder à la base de données contenant les hachages stockés, il ne pourra pas immédiatement compromettre tous les comptes d'utilisateurs car il n'existe aucun moyen simple de trouver le mot de passe qui a produit un hachage donné.

Parce que chaque hachage créé est aléatoire et très difficile à prévoir, il peut prendre des millions de suppositions - ou hachages - avant de trouver le hachage correspondant à une entrée. Ce qui décourage les pirates. Mais alors quel est le lien avec le Bitcoin ? 

Fonction de hachage dans Bitcoin 

Dans l'extraction de bitcoins, les entrées de la fonction sont toutes les transactions (à la place de mots ou de phrases dans l'exemple ci-dessus) les plus récentes et pas encore confirmées (ainsi que quelques entrées supplémentaires relatives à l'horodatage et une référence au bloc précédent).

Hachage d’un bloc
Source : OPECST

Rappelez-vous, dans l’exemple du hachage du mot “Zonebourse” nous avons vu que la modification d'une petite partie de l'entrée pour une fonction de hachage entraîne une sortie complètement différente. Cette propriété est cruciale pour l'algorithme de preuve de travail  impliqué dans le minage : pour réussir à  “résoudre” un bloc, les mineurs essaient de combiner toutes les entrées de telle sorte que le hachage résultant commence par un certain nombre de zéros (comme dans l’image ci-dessus : 0000786dcda).

Pour faire simple et très résumé, mais surtout pour éviter de rentrer dans des détails algorithmiques très complexes, les mineurs tentent de produire un hachage qui est inférieur ou égal au hachage “cible”. Il faut voir le hachage “cible” comme un ensemble de numéros connu par tous les mineurs. On pourrait faire l’analogie avec un système de tickets de loterie, où chaque nouveau hachage est un ticket unique avec son propre ensemble de numéros. L’objectif  pour les participants - les mineurs - étant de tirer le plus de tickets de loterie jusqu’à trouver un nombre - hachage - inférieur ou égal à celui de la cible. 

Il est important de comprendre que la génération de blocs n'est pas un problème long et défini (comme effectuer deux millions de hachages), mais plutôt un système similaire à une loterie. Chaque hachage vous donne un nombre aléatoire entre 0 et la valeur maximale d'un nombre de 256 bits (ce qui est énorme). Si votre hachage est en dessous de la cible, alors vous gagnez. Sinon, il faut réessayer. Le problème étant que les numéros de la “cible” évoluent. Ce qui se traduit par la difficulté de minage.

La difficulté de minage

La « difficulté » de minage correspond à la difficulté pour les mineurs de produire un hachage inférieur au hachage cible. Soit, de trouver un ticket de loterie inférieur au nombre affiché sur le ticket cible connu par tous les mineurs. Ceci est réalisé en réduisant la valeur numérique de l'en-tête de bloc haché. Vous trouverez ci-dessous l’en-tête d’un bloc hashé le 5 octobre 2022.

Hash d'un bloc Bitcoin le 05/10/2022
Source : Blockchair

La difficulté de Bitcoin, par exemple, est mesurée à l'aide d'un score qui commence à 1 (le niveau le plus simple) et augmente ou diminue de façon exponentielle en fonction du nombre de mineurs en concurrence sur le réseau. Ce score s'ajuste automatiquement tous les 2 016 blocs - environ toutes les deux semaines. À l'heure actuelle, ce nombre est d'environ 137 663 771 321 538.

Difficulté de minage d'un bloc sur Bitcoin
Glassnode

Les blocs sont ciblés pour être trouvés par les mineurs toutes les 10 minutes. Donc, si les mineurs résolvent des blocs et trouvent des bitcoins plus souvent que toutes les 10 minutes en moyenne, la difficulté augmente. Si les mineurs trouvent des bitcoins moins souvent que toutes les 10 minutes en moyenne, la difficulté diminue. 

Plus il y a de mineurs en ligne, plus le taux de hachage augmente, ce qui signifie qu'il y a plus de « suppositions » générées - ou de tickets de loterie générés. Plus il y a de suppositions - ou de tickets de loterie - plus il est probable que le bon hachage soit découvert rapidement. Étant donné que les blockchains sont généralement conçues pour ajouter des blocs (et libérer de nouvelles pièces) à un rythme constant et prévisible, la difficulté est programmée pour s'ajuster automatiquement après un nombre défini de blocs (2016 pour Bitcoin) afin de maintenir ce rythme constant. Nous comprenons donc qu’une augmentation de la difficulté de minage implique qu’un plus grand nombre de mineurs génèrent des hachages pour trouver une solution. Ou sinon, dans notre analogie, qu’il y ait plus de participants à la loterie, et pour que le suspense dure 10 minutes en moyenne, la valeur du ticket cible diminue (puisque les participants doivent trouver un numéro égal ou inférieur à celui-ci pour gagner).

Le taux de hachage est à son paroxysme

Il n'y a aucun moyen de connaître avec certitude le hashrate exact de Bitcoin, bien qu'il puisse être estimé. Le hashrate est traditionnellement estimé sur la base de données publiques sur Bitcoin, y compris la métrique de difficulté décrite ci-dessus. Nous pouvons le définir comme le nombre moyen de hachages par seconde produits par les mineurs du réseau. 

Hashrate de Bitcoin
Glassnode

Une augmentation de ce taux de hachage implique que de plus en plus de mineurs tentent de trouver la solution au hachage cible. Ou sinon, que la loterie attire de plus en plus de participants. Cette évolution du taux de hachage impacte directement la difficulté de minage précédemment décrite à la hausse ou à la baisse en fonction du nombre de calculs réalisés par seconde (taux de hachage par seconde).

Et il se trouve que le taux de hachage et la difficulté de minage se retrouvent aujourd’hui à leur niveau le plus élevé dans la courte histoire du Bitcoin. Ce qui insinue qu’il n’a jamais été aussi compliqué pour une entité autonome de prendre le contrôle sur la blockchain Bitcoin. Pour bien comprendre, une personne ou un groupe qui contrôle la majorité du hashrate pourrait, en théorie, bloquer ou réorganiser les transactions et même annuler ses propres paiements. Cela créerait des problèmes de double dépense qui, à leur tour, compromettraient complètement l'intégrité de la blockchain sous-jacente. La conséquence immédiate de ce phénomène serait une perte de confiance dans le réseau et donc par répercussion un effondrement de la valeur économique du BTC.

Une baisse du hashrate signifierait une réduction du coût pour effectuer une attaque à 51% (détenir 51% de la puissance de calcul de Bitcoin), rendant le réseau plus vulnérable. 

Résoudre le hachage d'un bloc bitcoin - qui au moment de la rédaction commence par 19 zéros - nécessite une quantité de calcul extrêmement importante (la puissance de traitement combinée de tous les ordinateurs du réseau prend encore environ 10 minutes pour résoudre la solution d’un bloc). En revanche, trouver la solution d’un bloc permet d’obtenir en récompense 6,25 BTC, soit au cours actuel 125 000 dollars. Mais vous l’aurez compris, la probabilité de trouver la solution pour un mineur individuel est très très faible. Et en plus, cette récompense en BTC va diminuer dans le temps. Plus de renseignements sur cette réduction de la récompense ici : Minage de bitcoin et halving day : creusons le sujet