Comment fonctionne une blockchain ?
-
L’algorithme de minage est un élément central de chaque blockchain. Prenons l’exemple de l’algorithme du Bitcoin. On le nomme SHA-256, version abrégée de “algorithme de hachage sécurisé 256 bits”. L’algorithme utilise des données entrantes de n’importe quel type : du texte, des chiffres ou même un fichier informatique, et ce, peu importe la taille. La donnée sortante produite est appelée “hash” et aura toujours la même longueur : 256 bits en code machine.
La même entrée donnera la même sortie à chaque fois, le hash n’est pas aléatoire. Mais si l’on modifie même légèrement la donnée entrante, le hash en sortie changera complètement.
C’est aussi ce que l’on appelle une fonction à sens unique, ce qui signifie qu’en ayant seulement les données sortantes, on ne peut pas déterminer ou calculer la donnée entrante. Il est seulement possible de deviner quelle était l’entrée, et les chances de déchiffrer cela correctement sont de 1 sur 2 ^ 256, ce qui est quasiment impossible, autrement dit, le processus est sécurisé.
Maintenant que nous savons ce que fait l’algorithme, montrons comment fonctionne une blockchain avec un exemple simple de transaction.
Nous avons ici Alice et Bob avec leur solde en bitcoins. Disons qu’Alice doit 2 bitcoin à Bob.
Pour qu’Alice envoie à Bob ces 2 bitcoins, Alice diffuse un message avec la transaction qu’elle souhaite faire à tous les mineurs du réseau.
Dans cette diffusion, Alice donne à l’adresse publique de Bob aux mineurs, la quantité de bitcoins qu’elle aimerait envoyer, ainsi qu’une signature numérique et sa clé publique. La signature est faite avec la clé privée d’Alice et valide le fait qu’Alice est effectivement propriétaire des bitcoins qu’elle souhaite envoyer pour la transaction.
Une fois que les mineurs sont certains que la transaction est valide, ils peuvent la placer dans un bloc avec de nombreuses autres transactions et tenter de miner ce bloc. Cela s’effectue en appliquant l’algorithme SHA-256 au bloc. La sortie doit commencer avec un certain montant de zéro pour être valide. Le montant de zéros nécessaire dépend de ce que l’on appelle la “difficulté” qui change en fonction de la puissance de calcul disponible sur le réseau au moment où cette action se déroule.
Afin de produire un hachage de sortie avec la quantité désirée de zéros au début du hash, les mineurs ajoutent ce qu’on appelle un “nombre nonce” dans le bloc avant d’y appliquer l’algorithme. Puisqu’un changement même aussi minime que celui-ci modifie complétement le hash de sortie, les mineurs tentent l’opération avec des nonces aléatoires jusqu’à ce qu’ils trouvent un hash de sortie valide.
Une fois le bloc miné, le mineur le diffuse à tous les autres mineurs. Ils vérifient ensuite que le bloc est valide puis l’ajoutent à leur copie de la blockchain et la transaction est finalisée. Mais dans le bloc, les mineurs doivent également inclure la sortie du bloc précédent de manière à ce que tous les blocs soient liés, d’où le nom block-CHAIN. C’est une partie importante dans le fonctionnement de la confiance envers et au sein du système.
Chaque mineur possède sa propre copie de la blockchain et tous accordent leur confiance à la blockchain ayant le plus de travail de calcul assimilé en son sein, la plus longue blockchain. Si jamais un mineur change une transaction dans un bloc antérieur, le hash de sortie de ce bloc sera donc modifié, ce qui conduirait à la modification de tous les hash postérieurs à ce bloc car les blocs sont liés entre eux par le hachage. Le mineur devrait alors refaire à nouveau tous les calculs nécessaires pour que quiconque accepte sa blockchain comme si celle-ci était la blockchain légitime. Par conséquent, si un mineur désire tricher en modifiant la blockchain, il aurait besoin de plus de 50% de la puissance informatique du réseau, ce qui est très peu probable. Ce type d’offensive est qualifié d’attaque à 51%.
Ce modèle de fonctionnement pour la production de blocs par des ordinateur est appelé « preuve de travail » ou « Proof of Work » (PoW) en anglais. Il existe d’autres modèles comme la preuve d’enjeu ou Proof-of-Stake (PoS) qui ne nécessite pas autant de puissance de calcul et qui consomme donc moins d’électricité, tout en pouvant inclure un plus grand nombre d’utilisateurs.
Et voilà pour les bases de fonctionnement de la blockchain!