Cover_Blockchain

Qu’est-ce que le Bitcoin ?

Dès l’Antiquité, le philosophe grec Aristote définissait la monnaie et lui attribuait trois fonctions centrales : unité de compte, réserve de valeur et intermédiaire des échanges. Plus de deux millénaires plus tard, une innovation polémique agite le monde monétaire : le bitcoin. Simple phénomène de mode pour les uns, véritable révolution pour les autres, l’heure est venue de vous forger votre propre opinion !

 


La monnaie bitcoin

Conçu en 2008 par Satoshi Nakamoto, le bitcoin (฿) est une monnaie électronique désintermédiée appartenant à la famille des cryptomonnaies. « Electronique » car il s’agit d’une monnaie immatérielle régie par un code informatique (son Protocole), et « Désintermédiée » car le bitcoin s’affranchit de toute autorité de contrôle pour permettre à ses utilisateurs d’effectuer leurs transactions sans intermédiaire et de façon anonyme.

Afin d’assurer sa fonction d’unité de compte précise, le bitcoin est divisible et traçable. Chaque bitcoin peut être divisé en 100 000 000 satoshis (tout comme chaque euro peut être divisé en 100 centimes) et chaque transaction effectuée en bitcoins est inscrite dans un registre public.

Pour faire du bitcoin une réserve de valeur crédible, l’émission de nouveaux bitcoins est planifiée, et aura lieu de façon dégressive jusqu’en 2140, où la masse monétaire globale atteindra alors les 21 000 000 ฿.

Enfin, l’authenticité, la validité et l’intégrité des transactions (garanties par le protocole Bitcoin) permettent au bitcoin de confirmer sa fonction d’intermédiaire d’échange de confiance, et donc son rôle de monnaie.

 


Le Protocole Bitcoin

Avant d’être une monnaie, Bitcoin est donc avant tout un protocole informatique, c’est-à-dire un ensemble de règles et de procédures permettant d’échanger des données au-travers d’un réseau informatique.

En informatique, l’organisation des liens entre utilisateurs permet de définir trois grandes catégories de réseaux : les réseaux centralisés, les réseaux décentralisés et les réseaux distribués. Or, Bitcoin est un protocole informatique Peer-To-Peer, c’est-à-dire un ensemble de règles et de procédures permettant à chaque utilisateur de se connecter à n’importe quel utilisateur du réseau sans passer par un intermédiaire. Le réseau Bitcoin est donc un réseau distribué.

 


Transactions en bitcoins

Une transaction bitcoin est un message comportant des entrées (Inputs) et des sorties (Outputs). Les Inputs sont des adresses appartenant au payeur dans lesquelles sont « bloqués » des bitcoins en attente d’être dépensés. Les Outputs sont des adresses appartenant au destinataire dans lesquelles seront reçus les droits d’utiliser les bitcoins issus de la transaction une fois qu’elle aura été validée.

Lors d’une transaction, le payeur créé un message contenant ses Inputs et les Outputs du destinataire. Il signe ensuite électroniquement le message, puis l’envoie au réseau bitcoin pour que ce dernier puisse valider la transaction.

Une fois la transaction validée par le réseau, les Inputs du payeur sont consommés et les montants qu’ils contenaient sont transférés vers les Outputs du bénéficiaire. Ainsi, le détenteur de ces Outputs pourra réutiliser les montants transférés lors de transactions futures ; il devra alors consommer ces Outputs en les utilisant comme Inputs d’une nouvelle transaction.

Il est impossible de consommer une fraction d’Input. C’est pourquoi, dans le cas où la somme des Inputs d’une transaction est supérieure au montant du paiement, il est nécessaire pour le payeur de transférer l’excédant vers un Output supplémentaire qu’il possède ; il se rend ainsi lui-même la monnaie. 

En règle générale, dans une transaction, la somme des montants consommés en Inputs est égale à la somme des montants transférés dans les Output. Si elle est inférieure, cela veut dire que le payeur paye plus que ce dont il dispose (une telle transaction sera non-valable et refusée par le protocole Bitcoin).

Si en revanche la somme des Inputs est supérieure à la somme des Outputs, alors cela veut dire qu’une fois le bénéficiaire payé et la monnaie rendue, il reste un montant non-attribué. Ce montant sera dans ce cas automatiquement interprété comme des frais de transactions et seront utilisés pour récompenser le travail de vérification des transactions.

Exemple : Un utilisateur A souhaite envoyer 80 bitcoins à un utilisateur B et payer 1 bitcoins de frais de transaction. Il possède une adresse contenant 70 bitcoins et une autre contenant 30 bitcoins. Voici à quoi ressemble la transaction :

exemple-transaction-bitcoin

Une transaction Bitcoin valide est donc une transaction authentique (dont les Inputs appartiennent bien au payeur qui les utilise), valable (pour laquelle la somme des Outputs est inférieure ou égale à la somme des Inputs) et intègre (aucun Input ne doit avoir été utilisé lors d’une transaction antérieure).

Afin d’empêcher les utilisateurs malveillants de créer de fausses transactions, tout utilisateur du réseau Bitcoin peut vérifier la validité des transactions émises par les utilisateurs pour ensuite les inclure dans un registre. Ce processus de vérification des transactions porte le nom de « minage ».

Le rôle des personnes en charge de cette vérification (les « mineurs ») consiste à détecter efficacement toute transaction qui ne serait pas authentique, valable, ou intègre. La contrainte majeure étant que ce processus doit s’effectuer sans jamais dévoiler l’identité du payeur ni celle du bénéficiaire, donc de façon anonyme.

Pour vérifier l’authenticité d’une transaction tout en garantissant l’anonymat de ses utilisateurs, Bitcoin fait appel à la cryptographie asymétrique, une méthode de chiffrement basée sur l’utilisation d’une paire de clés liées par une relation mathématique ; 1 clé Publique visible de tous, et 1 clé Privée connue seulement de l’utilisateur qui la possède. 

Tout utilisateur du réseau Bitcoin peut générer ces paires de clés de telle sorte qu’il est impossible, à partir d’une clé publique, de remonter jusqu’à sa clé privée associée, ce qui garantit son anonymat. Par ailleurs, tout utilisateur en possession d’une signature (générée à partir d’une clé privée) et d’une clé publique peut vérifier que le signataire possède bien la clé privée associée.

Les adresses évoquées précédemment pour décrire les Inputs et les Outputs des transaction dérivent directement des clés publiques. Pour pouvoir utiliser une adresse en Input d’une nouvelle transaction, un payeur doit prouver qu’il est bien le possesseur de cette adresse ; c’est-à-dire, qu’il possède la clé privée associée à la clé publique rattachée à l’adresse en question. Il signe donc électroniquement les Inputs avec la ou les clés privées correspondantes pour assurer l’authenticité de la transaction.

Une transaction comportant des Inputs dont les signatures ne correspondraient pas à la clé privée détentrice de ses Input serait considérée comme non-valide. Ce mécanisme garantit l’authenticité des transactions et l’anonymat des utilisateurs (plus exactement leur pseudodnymat) car il est impossible de retrouver une clé privée à partir d’une clé publique.

Une transaction intègre est une transaction dont aucun des Inputs n’a été utilisé lors d’une transaction antérieure. En d’autres termes, un Input valide est un Output n’ayant pas encore été dépensé lors d’une transaction passée.

Pour vérifier l’intégrité d’une transaction, les mineurs scannent l’intégralité des transactions passées valides pour construire une base de données comportant exclusivement les Outputs non-dépensés. Lors de l’arrivée d’une nouvelle transaction en attente de validation, ces mineurs vérifient que les Inputs de cette transaction se trouvent bien dans cette base de données en tant qu’Outputs non-dépensés de transactions passées. 

Si ce n’est pas le cas pour chacun des Inputs d’une transaction, cela veut dire que le payeur tente de dépenser de l’argent qu’il a déjà dépensé dans le passé, ou qu’il n’a jamais obtenu (= double dépense).

Il est donc possible pour un mineur de vérifier qu’une transaction est intègre. Cependant, cette capacité de vérification peut être altérée si les transactions passées téléchargées par le mineur sont inexactes, ce qui peut se produire à cause de l’absence d’autorité de contrôle centrale. En effet, un utilisateur malveillant peut tenter d’envoyer un historique de fausses transactions au reste du réseau, pour empêcher les utilisateurs de détecter une transaction non-intègre, et effectuer une double transaction. Pour résoudre ce problème, il faut donc créer des règles qui différencient un historique faux d’un historique vrai. C’est le rôle de la blockchain.