Comment fonctionne Bitcoin ?
September 15, 2019
Ça fait un moment que vous avez entendu parler de Bitcoin et peut être même des cryptomonnaies. Vous avez fait des recherches sur internet pour en savoir plus mais aucun article que vous avez lu n’explique assez clairement comment ça marche.
Bitcoin est un moyen d’échanger de la valeur sur internet sans avoir recours à un tiers de confiance centralisé pour valider les transactions. Bitcoin est difficile à comprendre car c’est vraiment différent de l’argent que nous utilisons habituellement.
Dans cet article, je vais expliquer aussi simplement que possible ce qu’est Bitcoin en introduisant les concepts clés progressivement et les expliquant de manière simple et illustré par des dessins.
Commençons par ce que nous connaissons déjà.
Comment fonctionne ma carte de crédit?
Pour comprendre comment la valeur est transférée avec Bitcoin, commençons avec le système de banque traditionnel. Quand vous utilisez votre carte de crédit pour acheter quelque chose, votre banque va vérifier si vous pouvez dépenser cette somme d’argent.
Le problème est que votre capacité à dépenser votre argent dépends de ce que le système banquaire vous autorise à faire. Si quelqu’un avec assez d’autorité veut geler votre compte en banque pour n’importe quelle raison, bonne ou mauvaise, alors vous ne pouvez pas utiliser votre argent. Les banques sont un système centralisé. Cela signifie que n’importe quelle décision est entre les mains d’une autorité centrale qui décide si vous pouvez faire quelque chose ou non que la raison soit bonne (empêcher un criminel d’utiliser son argent) ou non (empêcher un opposant politique d’utiliser son argent).
Comment Bitcoin se différencie t-il ?
Plusieurs voix au lieu d’une seule
Bitcoin est différent. C’est un système décentralisé. C’est constitué de multiples nœuds (nodes) partout dans le monde sur internet. Chaque nœud complet (nous couvrirons ça en détail dans un autre article) possède l’historique de toute les transactions qui ont été faite depuis le début de Bitcoin. C’est un grand livre de comptabilité (ledger)!
N’importe qui peut avoir un nœud sur le réseau Bitcoin. Cela signifie que si vous téléchargez le logiciel de référence Bitcoin par exemple (on y reviendra plus tard) et que vous le faites tourner sur votre ordinateur, alors félicitations, vous avez un nœud! Cela signifie que votre ordinateur va jouer un rôle dans la validation des transactions Bitcoin sur le réseau! N’importe qui peut se joindre au réseau sans avoir à demander la permission à qui que ce soit. Le réseau Bitcoin est dit “sans permission” (permissionless en anglais) !
La version du logiciel que vous utilisez détermine les règles que vous appliquez sur votre nœud. Les développeurs du logiciel Bitcoin (les gens qui créent le logiciel de référence Bitcoin) ne peuvent pas forcer une mise à jour sur le réseau. Les nœuds décident les règles du jeu! C’est une autre différence avec le système de banques traditionnel : en règle général, vous n’avez pas l’occasion de voter pour les règles qui régissent votre banque ou prendre part dans le processus de validation de transactions banquaires. Avec Bitcoin, vous pouvez! On discutera des nœuds dans un autre article.
Seulement 3 nœuds sont représentés mais à ce jour, il y a environ 10500nœuds actifs dans le réseau Bitcoin!
Envoyer une transaction vers le réseau Bitcoin
Prenons un exemple : Bob veut envoyer de l’argent à Alice. Il crée une transaction. Une transaction est comme un chèque. Vous écrivez à qui il est destiné et au lieu de l’envoyer au receveur, vous l’envoyez vers le réseau Bitcoin. Il saura d’où provient l’argent et à qui l’envoyer. Le réseau pourra même savoir si la transaction est valide (si l’argent peut être dépensé) grâce à votre signature ! Le fait de signer n’est pas fait avec un papier et un stylo dans ce cas mais avec des mathématiques et plus précisément de la cryptographie. On ne va pas entrer dans les détails ici mais sachez juste que ca vous permet de prouver que vous possédez un secret sans le révéler.
Donner le chèque au réseau Bitcoin s’appelle transmettre (broadcast en anglais) une transaction. Vous l’envoyez à un nœud du réseau. Celui auquel vous l’envoyez n’a pas d’importance, n’importe quel nœud fera l’affaire !
Quand la transaction est donnée à un nœud, il va alors la transmettre aux autres nœuds. Ça s’appelle propager (propagate) a transaction. C’est comme cela que le réseau Bitcoin garde chacun de ses participants au courant de tout ce qu’il se passe. La transaction est maintenant dans ce qu’on appelle la mempool.
La mempool est une sorte de salle d’attente ou les transactions attendent. Attendent quoi? Pourquoi ne peut-on pas utiliser ces transaction directement ? C’est ce qu’on va voir maintenant !
Faire passer une double dépense en douce…
Considérons maintenant qu’à la place de Bob voulant envoyer de l’argent à Alice, nous avons Robby McRobbing dont l’intention est de bien profiter du système de Bitcoin 😈… Robby va essayer de faire ce que l’on appelle une double-dépense. Il va créer non pas une mais deux transactions pour le même Bitcoin. Ca serait l’équivalent d’écrire deux chèques pour de l’argent que vous possédez mais au moment où un des deux chèques est encaissé, le deuxième devient un chèque sans provision. Une fois que les deux transactions sont créées, Robby les envoies à 2 nœuds différents!
Chaque nœud va propager sa transaction à d’autre nœuds mais il va y avoir un problème une fois que les deux transactions atteignent le même nœud. Rappelez vous que chaque transaction est valide (Robby dépense un Bitcoin qui existe) mais seulement une de ces transaction ne peut exister. La deuxième dépenserait un Bitcoin qui a déjà été dépensé. Un nœud va ignorer la deuxième transaction qu’il reçoit… Mais cela dépend de celle qu’il reçoit en premier ! Maintenant on a la moitié des nœuds qui a une transaction et l’autre moitié qui a l’autre. Bien joué Robby, t’as bien foutu le bazare !
C’est un vrai problème parce qu’imaginons que je veuille vérifier si Robby m’a payé. La réponse dépendra du nœud auquel je demande et on ne veut pas se retrouver dans cette situation !
Un grand livre pour les gouverner tous
Donc on doit trouver une solution pour que Robby ne puisse pas mettre la pagaille dans l’argent comme ça. Quelqu’un doit décider quelle transaction valide prévaut sur l’autre et le dire à tous les nœuds. Tout le monde doit être à la même page !
Mais attendez, j’ai dit au début qu’avec Bitcoin on avait pas d’autorité centrale comme celle des banques. Donc qui décide de quel nœud a raison ou non à un instant donné ?
Prenons un nœud au hasard et il décidera de quel transaction est la bonne et la propagera aux autre nœuds.
Pourquoi au hasard? Parce que si c’est toujours la même personne qui décide quelle transaction prévaut sur les autres, on obtient une situation où une seule personne a le droit de décider qui peut dépenser son argent ou non. Ca serait l’opposé de ce que Bitcoin essaye de résoudre!
On veut aussi que le choix du “validateur” ne soit pas prédictible. Si quelqu’un peut prédire qui sera le prochain validateur, alors il pourrait utiliser cette information pour essayer d’influencer le validateur pour faire passer une transaction avant les autres ou lui demander de ne pas inclure une transaction qu’il ne voudrait pas voir validée.
La solution de Bitcoin à ce problème est de mettre en place une compétition. Le premier à trouver la solution d’un problème de math particulier gagne le droit de devenir le validateur et décide laquelle des transactions de Robby prévaut sur l’autre. Robby ne peut pas effectuer une double déponse et voler les gens. Échec et mat !
L’action de résoudre ce problème de math pour gagner le droit d’être le validateur est appelé minage (mining).
Le résultat du minage est un bloc contenant plusieurs transactions (prises de la mempool) et sera ajouté à la blockchain ! La blockchain est le grand livre de chaque transaction Bitcoin qui soit arrivée (à l’exception de celles dans la mempool). Chaque nœud complet a une copie de la blockchain et peut vérifier à chaque instant si tout est bien valide !
Note: Chaque nœud n’est pas forcément un nœud de minage. C’est un type de noeud bien particulier qui effectue des calculs intensifs. La pluspart du temps, ces calculs sont effectués sur du matériel spécialisé appelé ASICs. Sans entrer dans les détails, ce sont des cartes électroniques spécialisées dans le fait de gagner la compétition de mathématiques dont nous parlions : le minage !
Conclusion
Qu’avons nous vu jusqu’à présent ?
- Bitcoin est différent des autres systèmes de paiement car il repose sur un réseau de nœuds au lieu d’une autorité centrale.
- Une transaction est envoyée au réseau Bitcoin et propagée aux autres nœuds
- Le minage est présent afin d’éviter les double-dépenses sans qu’une autorité centrale ne s’en charge
- Le résultat du minage est un bloc de transactions ajouté à une structure appelée blockchain
- Chaque nœud complet a une copie de la blockchain et contient toute les transactions en Bitcoin qui sont survenues !
Having a question or suggestion about the article?
Tell me on Twitter where I'm @vincentdnl!
Help others understand Bitcoin and cryptocurrencies by sharing this post!