Comment fonctionne Bitcoin ?

Un peu d’histoire - Le Bitcoin a été inventé par un homme (ou un groupe) utilisant le pseudonyme de Satoshi Nakamoto et étant resté anonyme. Satoshi Nakamoto a lancé la première version du Bitcoin en 2008 et a progressivement laissé la main aux autres développeurs contribuant au projet, notamment Gavin Andresen et d'autres. Personne n'a de contact avec Satoshi Nakamoto depuis mi-2010.

Prérequis pour comprendre - Le protocole Bitcoin repose principalement sur des technologies disponibles et utilisées avant son apparition notamment :

Le Bitcoin est une forme de monnaie virtuelle, elle ne dispose d’aucune représentation dans le monde réel comme certaines monnaies étaient représentées par des stocks d’or (Comme le dollar avant 1971). Sa valeur est déterminée uniquement par le marché qui lui donne une valeur pour en faire un moyen d’échange. De ce fait le Bitcoin se rapproche de l’or : en effet, mis à part quelques cas (éléctronique, estéthique...) l'or a pour seule valeur celle que lui donne le marché pour en faire un moyen d'échange, choisi pour ses propriétés : rareté, durabilité et divisibilité, proriétés communes au Bitcoin.

Le Bitcoin ne peut être créé par une entité ou un état et est limité à 21 millions d'unités appelés bitcoins (Sans B majuscule - l'écriture avec un B majuscule représente la technologie). Le nombre de bitcoins en circulation augmente de façon stable et prédictible pour atteindre le total final de 21 millions en 2140 (Le ralentissement de la "production" sera de telle sorte que 99% de ces 21 millions seront disponibles en 2030 les 1% restants seront mis en circulation entre 2030 et 2140 - Voir Controlled supply sur le Bitcoin Wiki). Chaque bitcoin est divisible en 100 millions d'unités appelés Satoshis. Ce qui fait un total de 21 x 1014 d'unités indivisibles. Pourquoi ce nombre ? Peut être parce qu'il est proche de la limite de la capacité de stockage d'un nombre 64-bits, utilisé très communément dans l'informatique, mais nous n'avons pas beaucoup plus de détails sur ce choix qui importe peu du fait de la divisibilité du Bitcoin.



Nous allons vous expliquer le fonctionnement du Bitcoin pas à pas en vous présentant les problèmes derrière l'idée d'une monnaie décentralisée et les solutions qu'apporte le Bitcoin. Cette explication est une approche simple des mécanismes derrière le Bitcoin et ne constitue ni une explication complète ni rigoureuse.

Problème – Avec une monnaie décentralisée, comment identifier de façon sûre la personne qui transmet l’argent ?

Le protocole utilise le système de Cryptographie asymétrique. Bob veut envoyer 1 bitcoin à Alice il utilise donc sa clé privée pour signer le message « Moi Bob envoie 1 bitcoin à Alice » ensuite à l’aide le sa clé publique, tout le monde peut vérifier que c’est bien Bob qui a envoyé ce message et il ne pourra pas revendiquer le contraire.

Problème – Comment empêcher Bob de dupliquer ce message et d’envoyer un nombre illimité de fois ce bitcoin ?

On donne à ce bitcoin un numéro de série, par exemple 42001. Le message sera donc maintenant « Moi Bob envoie donc 1 bitcoin n°42001 à Alice ». De ce fait, le bitcoin est clairement identifié et le message ne peut pas être dupliqué. (En réalité, un bitcoin n'a pas de numéro de série mais est traçable depuis sa génération jusqu’à ça dernière utilisation, ce qui revient à pouvoir l’identifier de manière unique.)

Problème – Comment vérifier que Bob possède bien le bitcoin n°42001 et qu’il ne la pas dépensé ?

Chaque utilisateur dispose d’un « livre de compte » appelé blockchain qui recense toute les transactions et donc à qui appartient quel bitcoin. Bob envoie donc le message « Moi Bob envoie donc 1 bitcoin n°42001 a Alice » mais cette fois Alice utilise sa copie du blockchain pour vérifier que ce numéro appartient bien à Bob. Ensuite, elle envoie à tout le monde le message de Bob ainsi qu’un message qui indique à tout le monde qu’elle accepte ce bitcoin et tout le monde met à jour son blockchain.

Problème – Comment être sûr que Bob n’envoie pas le même message au même moment à deux personnes qui n’ont pas le temps de mettre à jour leur blockchain et donc ne savent pas que le bitcoin n°42001 a déjà été envoyé ?

C’est ici que les mineurs de bitcoin entrent en jeu. Alice vérifie donc que Bob dispose du bitcoin n°42001 mais avant de l’accepter, elle diffuse son message aux mineurs du réseau qui vérifient à leur tour que la transaction est valide et diffusent le message « Ok, Bob dispose du bitcoin n°42001, il peut être envoyé à Alice » Dès que ce message est diffusé par assez de mineurs, tout le monde met à jour son blockchain, la transaction est faite.

Problème – Si Thomas est un mineur de bitcoin, comment l’empêcher de diffuser des milliers de fois les messages « Ok, Bob dispose du bitcoin n°42001, il peut être envoyé à Alice » et « Ok, Bob dispose du bitcoin n°42001, il peut être envoyé à Carole » et ainsi manipuler le réseau ?

Pour résoudre ce problème de manipulation du réseau, le Bitcoin utilise le système de « Proof-of-work ». L’opération de diffuser le message « Ok, Bob dispose du bitcoin n°42001, il peut être envoyé à Alice » est rendu artificiellement difficile pour un mineur en lui faisant faire des calculs complexes mais inutiles avant de pouvoir diffuser le message : une succession de hachage cryptographique jusqu'à trouver une valeur particulière.

De ce fait si Thomas veut que ses faux messages soit acceptés il doit disposer de plus de 50% de la puissance du réseau. Notre page Cost of a 51% attack est une estimation combien couterait à un mineur pour être dans une telle situation en fonction du nombre de mineurs. De ce fait les gains d’une telle attaque seraient dérisoires face à son coût.

Problème – Qu’est-ce qui motive les mineurs à vérifier les transactions ?

Les mineurs sont récompensés par des nouveaux bitcoins qui sont créés à un rythme régulier et prédictible qui atteindra un total final de 21 millions en 2140. Après cette date, les mineurs seront uniquement récompensés par des commissions faibles touchées sur chaque transaction validée.

Pour allez plus en détails, vous pouvez lire ce papier publié par Satoshi Nakamoto : Bitcoin: A Peer-to-Peer Electronic Cash System.