Comment fonctionne le Bitcoin ?

· 10 min read

Le Bitcoin est un concept de monnaie numérique avancé en 2009 par le légendaire et énigmatique Satoshi Nakamoto. Il s'appuie sur la technologie blockchain comme infrastructure et fonctionne de manière décentralisée, de personne à personne. Le Whitepaper que Nakamoto a écrit pour expliquer ce concept est une lecture indispensable pour quiconque veut comprendre le bitcoin et les cryptomonnaies en général. Il n'explique pas seulement le bitcoin en tant qu'idée : il montre aussi comment un système à tolérance aux fautes byzantines peut fonctionner dans un environnement décentralisé.

Avant toute chose, celui qui s'intéresse au Bitcoin doit savoir que le facteur déterminant qui a permis au concept de bitcoin d'exister réellement est la technologie blockchain — et comprendre comment cette technologie fonctionne.

Qu'est-ce que la blockchain ?

La blockchain est une chaîne de blocs, chacun contenant des données, qui n'est supervisée ni gérée par aucune autorité centrale. Ces chaînes d'informations sont sécurisées par la cryptographie et ne peuvent pas être réduites au silence grâce à leur structure décentralisée. La blockchain repose fondamentalement sur deux structures de données : les pointeurs et les listes chaînées.

Les pointeurs

Les pointeurs sont des variables qui indiquent où se trouve une autre variable. En temps normal, les variables en programmation contiennent des données. (Dans l'exemple int a = 10, la variable entière a vaut 10.) Les pointeurs, eux, ne stockent pas de valeur en tant que donnée : ils indiquent l'adresse de la variable qui contient cette donnée.

Les listes chaînées

Les listes chaînées comptent parmi les unités les plus importantes des structures de données et ressemblent grosso modo à ceci.

Une suite de blocs, chacun contenant une donnée précise et relié au bloc suivant par un pointeur. La variable pointeur contient l'adresse du nœud suivant et assure ainsi la liaison. Comme on l'a vu au nœud final, le dernier pointeur ne contient aucune donnée.

Le point important ici est que chaque pointeur contient l'adresse du bloc suivant. Où se trouve alors le pointeur du premier bloc ? Le premier bloc s'appelle le bloc genesis et son pointeur se trouve à l'intérieur du système lui-même.

Un pointeur de hachage est un pointeur qui contient le hachage du bloc précédent.

Le hachage est un procédé qui prend des données de n'importe quelle longueur et produit, via une fonction déterminée, un résultat toujours de la même longueur, quel que soit le contenu des données. Dans le cas du Bitcoin, l'opération de transfert est prise comme donnée et passée dans l'algorithme SHA-256 pour produire un résultat de longueur fixe. Quelle que soit la longueur des données saisies, l'algorithme SHA-256 produit toujours un résultat de 256 bits.

Dans sa forme la plus simple, la blockchain est une liste chaînée, comme ci-dessous.

Une blockchain est une liste chaînée dans laquelle chaque bloc contient une donnée et un pointeur de hachage renvoyant au bloc qui le précède. Alors, qu'est-ce qu'un pointeur de hachage ? Les pointeurs de hachage ressemblent beaucoup aux pointeurs ordinaires, mais au lieu de contenir seulement l'adresse du bloc précédent, ils contiennent aussi le hachage des données de ce bloc. C'est cette petite différence de conception qui rend la technologie blockchain aussi sûre.

Supposons un instant qu'un attaquant veuille s'en prendre au bloc 3 et modifier les données qu'il contient. En raison de la fonction de hachage, la plus petite modification des données se traduit dans le résultat par un écart considérable. La moindre modification des données du bloc 3 changera le hachage stocké dans le bloc 2, le changement du bloc 2 se répercutera sur le hachage du bloc 1 : il faudrait donc modifier toute la chaîne, ce qui est impossible. C'est cette méthode qui rend les blockchains impossibles à faire taire.

Qu'est-ce que le minage ?

Le minage est le processus nécessaire à la création de nouveaux bitcoins. Le minage de bitcoin repose sur le principe du Proof of Work (POW), la preuve de travail. En clair : résoudre un problème doit être très difficile, mais une fois résolu, la validité de votre solution doit se vérifier très facilement.

Avant d'en venir à l'utilisation du POW comme concept dans Bitcoin, essayons de comprendre pourquoi les cryptomonnaies ont besoin d'un tel système.

Avant Bitcoin, différentes monnaies numériques ont vu le jour, mais dès lors qu'on crée un réseau décentralisé et de personne à personne dans l'environnement numérique, le plus grand obstacle est le problème logique appelé problème des généraux byzantins. Comme Nakamoto est parvenu à surmonter ce problème dans le bitcoin grâce au POW, le bitcoin a pu voir le jour et poursuit sa route avec vigueur.

Le problème des généraux byzantins

Poursuivons en expliquant le problème des généraux byzantins, souvent repris dans les travaux universitaires. Les généraux byzantins qui préparent l'attaque de la ville ennemie ont deux problèmes :

Les généraux sont très éloignés les uns des autres, il est donc impossible qu'une autorité centrale dirige le siège.

L'ennemi dispose lui aussi d'une armée puissante : l'attaque doit donc être menée par tous les généraux en même temps pour espérer réussir.

Pendant que les armées assiégeantes encerclent la ville, chacune transmet le message d'ordre de l'armée située à sa droite à celle située à sa gauche, et la communication se maintient ainsi. Le problème, c'est que lorsqu'arrive l'ordre d'attaquer le mercredi, une armée peut ne pas être prête et renvoyer un message disant non, l'attaque aura lieu le vendredi. Ou le soldat porteur du message peut être capturé par l'ennemi, ou le contenu du message qu'il transporte peut être modifié. Dans un environnement aussi peu sûr, toute attaque échouera si la coordination n'est pas totale.

Le même problème logique s'applique aux réseaux blockchain, qui constituent l'infrastructure de cryptomonnaies comme le bitcoin. Ce sont des réseaux d'une taille incroyable : comment faire confiance à chaque personne qui s'y trouve ? On peut vouloir envoyer 4 ethers à quelqu'un, mais comment être sûr qu'une personne malveillante ne transformera pas ce montant en 40 ethers ?

Satoshi Nakamoto a réussi à surmonter ce problème logique en introduisant le protocole de preuve de travail. Voyons comment il fonctionne :

Lorsque l'armée assiégeante veut transmettre le message « nous attaquons lundi » à l'armée située à sa gauche, elle doit suivre ces étapes ;

D'abord, on attribue au message d'origine une valeur aléatoire générée une seule fois, appelée « nonce ». Le nonce peut être n'importe quelle valeur du système hexadécimal.

Ensuite, le texte du message accompagné du nonce est passé dans la fonction de hachage, ce qui donne un résultat. Dans l'attaque imaginaire que nous décrivons, supposons que les commandants aient convenu de ne partager entre eux que les résultats de la fonction de hachage dont les 5 premiers caractères sont des zéros.

Si le résultat de la fonction de hachage correspond à l'attendu, ils transmettent le message au général suivant. Si le résultat ne correspond pas, il faut modifier le nonce au hasard et répéter l'opération jusqu'à obtenir un résultat commençant par cinq zéros. Un tel système exige énormément de temps et de puissance de calcul.

Si le soldat porteur du message est capturé ou si le contenu du message est modifié, le résultat du hachage variera énormément, du fait des propriétés de la fonction de hachage. En examinant le message, les généraux constateront que les cinq premiers caractères du hachage ne sont pas des zéros et renonceront à l'attaque.

Cela dit, même si c'est très improbable, toute fonction de hachage peut produire des résultats en collision. En théorie, pour deux entrées distinctes A et B, il ne devrait exister aucune probabilité que H(A) = H(B), mais dans la pratique, aucune fonction de hachage n'est totalement à l'abri des collisions.

Alors, dans ce cas peu probable, que se passe-t-il si le soldat porteur du message est capturé, le message modifié, et que le hachage sort malgré tout tel que les généraux l'attendent ? Ce serait bien sûr un processus long, mais pas impossible. Face à cela, les généraux jouent de leur supériorité numérique.

Le problème peut être surmonté si trois généraux envoient leurs messages vers la gauche en même temps, au lieu qu'un seul général transmette à son tour le message de droite à gauche. Si les généraux, à partir de leurs propres messages, en composent un message cumulé, le passent dans la fonction de hachage, attribuent un nonce au résultat puis le repassent dans la fonction de hachage, les six premiers caractères du résultat doivent cette fois être des zéros.

À ce stade, trouver le nonce de ce message et en modifier le contenu représente une perte de temps considérable.

En revanche, la tâche des généraux qui reçoivent le message est simple : il leur suffit d'ajouter au résultat du hachage le nonce qui leur a été communiqué et de comparer les résultats. Cette étape est une opération très rapide et très simple. Cette idée est le mécanisme de fonctionnement du principe de preuve de travail.

Trouver le nonce donnant le hachage voulu exige une puissance de calcul et un temps considérables

En revanche, examiner les résultats et déterminer s'il y a une intention malveillante ne prend que très peu de temps.

C'est ainsi que les mineurs mettent en œuvre le protocole de preuve de travail dans le minage de Bitcoin. Ils utilisent leur puissance de calcul pour résoudre le problème cryptographique qui se pose à eux et créer le bloc suivant. Sur la blockchain Bitcoin, un bloc est créé toutes les 10 minutes.

Comment se déroulent les transferts sur le réseau Bitcoin ?

Disons que John veut envoyer des bitcoins à Dave. Comment ce transfert se déroule-t-il ? Les transferts de bitcoin fonctionnent très différemment des virements en monnaie fiduciaire. Si John voulait donner 10 USD à Dave, il sortirait physiquement le billet de 10 USD de son portefeuille, le lui remettrait, et le transfert serait terminé. Pour le bitcoin, c'est différent : ce n'est pas quelque chose que nous possédons physiquement. Ce que nous possédons, c'est la preuve que nous détenons des bitcoins.

Il y a deux choses à savoir et auxquelles il faut prêter attention ;

Les mineurs confirment et sécurisent les opérations de transfert grâce aux données qu'ils placent dans le bloc qu'ils créent. Ils facturent d'ailleurs des frais pour ce service.

Avec les monnaies fiduciaires, nous ne connaissons ni ne suivons l'histoire du billet que nous avons entre les mains. Il n'existe aucun moyen pratique de le faire. En revanche, chaque opération de transfert en bitcoin est enregistrée sur le réseau.

À la lumière de ces informations, examinons le transfert de bitcoin entre John et Dave. Ce transfert comporte deux parties : l'entrée et la sortie (input-output).

Pour effectuer ce transfert, John doit posséder des bitcoins issus de transferts antérieurs. Comme nous l'avons dit, tous les transferts sont enregistrés sur le réseau bitcoin.

John doit rassembler les bitcoins reçus lors des transferts nommés TR(0), TR(1) et TR(2), créer un nouveau transfert nommé TR(INPUT) et l'envoyer à Dave. Ici, TR(INPUT) devient la donnée d'entrée du nouveau transfert.

Voilà à quoi ressemble, en gros, un transfert de bitcoin du côté de l'entrée.

Les données de sortie contiendront simplement la quantité de bitcoins que Dave doit détenir après le nouveau transfert, ainsi que la monnaie restante, renvoyée à John et qui deviendra la valeur TR(INPUT) de son prochain transfert.

Si l'on met de côté la partie « monnaie rendue », ce processus comporte un seul résultat de sortie, mais des transferts à plusieurs sorties sont possibles. Ce récit montre simplement comment un transfert se déroule sur le réseau bitcoin. Pour que tout cela aboutisse, certaines conditions doivent toutefois être remplies.

Conditions que les transferts doivent respecter :

TR(INPUT) > TR(OUTPUT). Le transfert d'entrée doit toujours être supérieur au transfert de sortie. Dans chaque transfert, la différence entre l'entrée et la sortie (sortie + monnaie rendue) est versée aux mineurs sous forme de frais. Soit : Frais de minage = TR(INPUT) - (TR(OUTPUT) + MONNAIE)

Du côté de l'entrée, il faut que TR(0)+TR(1)+TR(2)=TR(INPUT). Autrement dit, John doit posséder assez de bitcoins pour en envoyer à Dave. S'il n'en a pas assez pour exécuter l'opération, le transfert est rejeté par les mineurs.

Dave doit maintenant prouver qu'il est bien le propriétaire des bitcoins qui lui ont été envoyés. John a chiffré son transfert de bitcoin avec la clé publique de Dave. Dave ne peut ouvrir ce chiffrement qu'avec sa clé privée.

De son côté, John doit prouver qu'il possède assez de bitcoins pour en envoyer à Dave. Il le fait en signant avec sa propre clé privée le transfert qu'il souhaite réaliser. N'importe qui peut l'ouvrir avec la clé publique de John et vérifier qu'il détient effectivement la quantité de bitcoins requise. Cette preuve s'appelle les données de signature.

Les données d'entrée (y compris les données de signature) et les données de sortie sont additionnées et passées dans l'algorithme de hachage SHA-256. Le résultat de cet algorithme est ce qu'on appelle le transfert.

Il y a une chose à garder à l'esprit : pour qu'un transfert de bitcoin ait lieu, le mineur qui a miné le bloc doit y insérer physiquement ce transfert. Le mineur qui a miné le bloc peut percevoir les frais de tous les transferts qu'il y a placés. Comme les volumes de transferts augmentent avec le temps, les transferts doivent attendre l'apparition d'un nouveau bloc, les blocs étant totalement remplis. De fait, ceux qui ne veulent pas attendre paient des frais de minage plus élevés : leur transfert ressort du lot et devient plus attrayant pour les mineurs.

C'est de là qu'est né le principe du replace-by-fee. Il fonctionne simplement ainsi : même si John a envoyé 5 BTC à Dave, la transaction n'est jamais incluse dans un bloc et reste en attente parce que les frais de minage ont été fixés trop bas. Il n'existe aucun moyen d'annuler cette opération, car des bitcoins dépensés ne peuvent pas être récupérés. En revanche, si John effectue un transfert vers la même adresse pour le même montant de BTC en fixant des frais de minage plus élevés, l'ancien transfert est considéré comme invalide et c'est le nouveau qui attend son traitement.

L'avenir du Bitcoin et des cryptomonnaies en général regorge de possibilités innombrables. Les applications de la blockchain ne connaissent pas de frontières, et les projets du secteur deviennent chaque jour plus performants et plus sûrs.

Dans le parcours qui va des monnaies-marchandises à l'usage des métaux précieux comme l'or et l'argent, puis au papier-monnaie et aux monnaies nominales, l'idée d'une monnaie dans l'environnement virtuel n'est pas si nouvelle, mais elle n'est devenue applicable que dans l'histoire récente.

Pour les uns, c'est un groupe au sein de la CIA ; pour les autres, un extraterrestre ; et peut-être est-ce vraiment un cyberpunk nommé Satoshi Nakamoto. Qui que ce soit, il nous a laissés seuls décider de la suite à donner à ses idées et à leur mise en pratique, qui changent complètement notre regard sur nos actifs et la façon dont nous les conservons. Il a ouvert la voie à des idées plus avancées que la sienne et a convaincu le monde d'adopter une perspective radicalement différente.

Satoshi n'avait pas manqué de dissimuler un message dans le bloc genesis, le bloc initial qu'il a miné et écrit en dur dans le code. Y notant la date du 3 janvier 2009, il y a joint un titre du Times britannique de ce jour-là au sujet des banques responsables de la crise économique mondiale : « Le ministre est sur le point d'accorder un second sauvetage aux banques ». Il se moque probablement du système des banques centrales avec ces mots. On ignore pourquoi Satoshi a créé dans le bloc initial cette adresse dont les fonds ne peuvent pas être dépensés. À ce jour, 16 BTC y ont été envoyés anonymement, et c'est pourquoi l'offre totale de 21 millions de bitcoins ne se réalisera en réalité jamais.

Il n'a fallu que 9 ans au Bitcoin pour atteindre des niveaux qui effraient les banques centrales du monde entier, et la route est encore longue devant lui.

Bitcoin Comment fonctionne le Bitcoin Satoshi Satoshi Nakamoto Nakamoto cryptomonnaies blockchain Qu'est-ce que la blockchain Minage Qu'est-ce que le minage réseau Bitcoin