Qu'est-ce qu'un hash ?
Un hash est une fonction cryptographique qui joue un rôle fondamental dans le fonctionnement de la monnaie électronique de personne à personne. Il est utilisé dans de nombreuses parties du protocole et sa mise en œuvre correcte garantit la sécurité du réseau.
Il existe plusieurs algorithmes de fonction de hash dans le bitcoin, deux sont utilisés, le principal étant l’algorithme SHA-256.
Caractéristiques
Une fonction de hash est utilisée pour obtenir, à partir de n’importe quel type d’information, un nombre représenté par des bits de taille uniforme, de telle sorte que seule l’application de la fonction de hash aux données d’origine permet d’obtenir ce nombre.
Par exemple, l’application de la fonction SHA-256 à la chaîne de texte “Bitcoin” donne le résultat suivant :
B4056DF6691F8DC72E56302DDAD345D65FEAD3EAD9299609A826E2344EB63AA4
S’il est remplacé par Bitcoin Cash
:
8A9851255D671C4E0AC3AD525AD0FF595CB31A1AD85327A77DF3D15129B0A245
Comme vous pouvez le constater, même si l’entrée de la fonction a peu changé, cela ne signifie pas que le résultat de la fonction change peu. Il est clair qu’il y a une grande différence entre le premier nombre et le second (les nombres sont représentés en format hexadécimal).
En outre, les fonctions de hash ont une grande résistance aux collisions. Cela signifie qu’il n’est pas possible de déterminer à l’avance le nombre qui résultera de la fonction de hash sans connaître l’information et c’est donc un moyen de vérifier qu’il n’y a pas eu de manipulation ou d’altération des données. La résistance aux collisions fait qu’il est extrêmement difficile de trouver deux entrées ou plus dans la fonction qui aboutissent au même hash. Il s’agit d’un avantage recherché de la fonction, car sinon l’intégrité de l’information fournie à l’origine ne pourrait pas être vérifiée. Si ce n’était pas le cas, un acteur malveillant aurait pu manipuler les informations et tenter ensuite d’obtenir le même hash.
Par exemple, comment savoir quelle est l’entrée qui produit le hash suivant ?
682FC380BDA56463E1C21EC365D1D9A9596C1BA87656E603EF74440B0BAEA416
Sans connaître les informations préalables, il est impossible de le savoir. Le deviner par force brute n’est pas forcément une option. Dans ce cas, il s’agit du hash du résumé du livre blanc.
Enfin, les fonctions de hash sont faciles à réaliser et difficiles à annuler. Par conséquent, la validation des informations est pratiquement peu coûteuse, alors que la génération d’un hash, en particulier si vous recherchez un hachage spécifique, prend du temps, de la puissance de calcul et de l’énergie.
Son utilisation dans Bitcoin
Preuve de travail
C’est cette dernière caractéristique des algorithmes de hash, à savoir qu’ils sont faciles à faire et difficiles à défaire, qui les rend idéaux pour servir de pivot au mécanisme de preuve de travail conçu par Satoshi Nakamoto. Si un mineur veut prouver qu’il a consacré du temps et de la puissance de calcul, et qu’il est donc financièrement investi dans la sécurisation du réseau, il doit veiller à ce que chaque bloc ait un hash qui commence par un certain nombre de zéros. Plus le réseau est difficile, plus le nombre de zéros est élevé.
Et comme, en raison des caractéristiques de l’algorithme de hash, il n’est ni facile ni bon marché d’obtenir un hash spécifique, cela garantit que le fournisseur de la preuve de travail ne veut pas que cette puissance de calcul soit gaspillée et qu’il agit conformément aux règles du réseau, puisque l’obtention de cette puissance de calcul lui a coûté de l’argent et de l’électricité.
A la racine du bloc
Les hashes sont également utilisés pour générer un arbre de Merkel, qui est une structure permettant de vérifier l’appartenance d’une transaction à un bloc. Il joue un rôle fondamental dans la SPV.