Découverte de Bitcoin par la blockchain

Note préliminaire:

Suite à un problème technique, le blog a été hors-ligne pendant plusieurs mois. Je vais republier progressivement les articles, en les éditant à l'occasion. Toutes mes excuses pour ce contretemps et bonne lecture à tous!

Bonjour et bienvenue sur BlogChain.fr, mon blog consacré à Bitcoin et à l'univers qu'il amène avec lui. Bitcoin est entre autres un algorithme informatique, un système de paiement décentralisé et une réserve de valeur. Il exhibe des propriétés remarquables qui en font à mon avis une invention révolutionnaire.

Tout comme Internet en son temps, Bitcoin est avant tout une invention technique et donc pas toujours facile d'abord pour qui ne passe pas sa vie le nez dans l'informatique; et même pour ceux-là, il n'a rien d'évident.

La vocation des premiers articles de ce site sera d'expliquer différents aspects du protocole Bitcoin de manière la plus simple et la plus claire possible.
N'hésitez pas à m'écrire pour me demander des précisions.

Pour commencer, je m'efforcerai d'expliquer ce qu'est la "blockchain" éponyme. Afin de ne pas tout expliquer en même temps, je vous demande pour cette partie d'accepter temporairement que "Bitcoin" est une monnaie virtuelle, avec des comptes qui contiennent un certain nombre de "bitcoins", et qu'on peut envoyer des bitcoins d'un compte à l'autre en utilisant (un peu comme pour les mails) des "adresses".

Bitcoin est décentralisé

La notion clé à comprendre pour aborder Bitcoin est qu'il s'agit de quelque chose de décentralisé.

Est décentralisé ce qui n'est pas centralisé. Par exemple, lorsque vous téléphonez à quelqu'un, votre téléphone communique à votre opérateur le numéro de votre correspondant, qui se charge de vous mettre en relation (pensez aux opérateurs que l'on voit dans les vieux films, qui branchent et débranchent des fils pour connecter deux interlocuteurs).
L'opérateur est un intermédiaire obligatoire, commun à tous les utilisateurs.
C'est aussi un point de faiblesse: si l'opérateur a des problèmes techniques (ce qui vous est sûrement arrivé, j'en fais le pari), un grand nombre d'usagers peuvent perdre la possibilité de communiquer.
On dit que le réseau téléphonique est centralisé.

Une autre analogie qui parlera certainement aux plus jeunes de mes lecteurs est le téléchargement: lorsque vous achetez un morceau de musique sur iTunes, c'est un processus centralisé: ce sont les serveurs d'Apple qui valident votre achat et vous envoient le morceau.
Par contre, lorsque vous téléchargez un film sur le réseau BitTorrent, il n'y a pas d'interlocuteur privilégié: vous récupérez des morceaux de votre film depuis des ordinateurs de particuliers comme vous. Aucun de ces particuliers n'a le pouvoir de valider le fait que vous puissiez télécharger ce film, parce que personne en particulier n'est indispensable: tout au plus un particulier peut-il refuser de vous envoyer un bout de film, mais qu'importe, puisque quelqu'un d'autre vous l'enverra.
BitTorrent est appelé un réseau pair-à-pair.

De même, dans le cas du réseau Bitcoin, il n'y a pas d'autorité suprême; il est la somme de ses utilisateurs, rien de plus, rien de moins. Si tout le monde s'en déconnecte, il cesse d'exister; tant qu'il y a une personne qui le fait fonctionner, il reste là.

Il est dès lors naturel de se demander qui tient le registre de qui possède quoi, et qui valide les transactions.

La blockchain

L'idée est que tous les utilisateurs possèdent le registre de toutes les transactions entre les utilisateurs de Bitcoin. Ce registre est exactement le même, à la virgule près, pour tout le monde, du moins en première approximation (je reviendrai sur ce point très vite). On l'appelle la blockchain.

Remarquons tout de suite que cela suffit pour savoir ce que chacun possède. Par exemple, imaginons qu'au temps t=0, A possède 3 bitcoin (BTC), et B et C en possèdent 0, et que la blockchain ressemble à ceci:

A envoie 3 BTC à B
B envoie 2 BTC à C
C envoie 1 BTC à A

Il est alors immédiat de déduire que A possède 3 - 3 + 1 = 1 BTC, B possède 0 + 3 - 2 = 1 BTC et C possède 0 + 2 - 1 = 1 BTC.
Par conséquent, la blockchain ne contient pas le solde actuel des comptes, mais seulement la liste des transactions. Une propriété inviolable de la blockchain est que toutes les transactions qui y sont inscrites sont possibles, c'est-à-dire que personne ne dépense une quantité de bitcoins qu'il n'a pas reçue auparavant. Je délègue à un article ultérieur une explication de comment cela est garanti.

Vous avez sans doute sur le bout des lèvres la question suivante: Mais qui a le droit d'écrire sur la blockchain? Qu'est-ce qui m'empêche d'inventer une transaction du compte de Crésus vers le mien et de l'ajouter à la fin de la blockchain?

Je vous ai dit tout à l'heure que tout le monde dispose d'une copie de la blockchain, il faut donc bien que quand elle est mise à jour, les changements se répercutent sur les copies de chacun des utilisateurs. La réponse à la seconde question va donc être: vous pouvez inventer une telle transaction, mais personne ne va accepter de l'ajouter à la blockchain parce qu'il vous manque l'autorisation de transférer les fonds de Crésus. En effet, chaque compte dispose d'une clé privée seule habilitée à débloquer des fonds. Je consacrerai un article ultérieur à expliquer cela avec un peu plus de détails, mais pour l'instant, disons qu'en fait la blockchain ressemble plutôt à ça:

A envoie 3 BTC à B <signature de A>
B envoie 2 BTC à C <signature de B>
C envoie 1 BTC à A <signature de C>

où les signatures ont la propriété que

  1. on ne peut fabriquer une signature de X que si l'on possède la clé privée de X;
  2. en connaissant l'adresse de X, on peut vérifier que c'est bien X qui a signé;
  3. on ne peut pas déduire d'une signature de X sa clé privée.

Il apparaît à ce stade que seul le propriétaire d'un compte peut en dépenser des fonds. Il reste plein de problèmes:

  1. Une fois que A a créé une transaction pour payer B, comment la propage-t-il à tous les membres du réseau Bitcoin?
  2. Comment se mettre d'accord pour que tout le monde continue à avoir le même registre?
  3. Comment empêcher que le réseau ne soit noyé dans des fausses demandes de transaction, par exemple en cas d'attaque? Ou pour qu'il n'y ait pas quelqu'un qui fasse des millions de transactions de milliardièmes de bitcoins, toutes légitimes, mais ayant le même effet de noyer le réseau?

Les réponses à ces questions apparaîtront très bientôt sur blogchain.fr.

comments powered by Disqus