La blockchain - un livre de compte virtuel

Comme la plupart des cryptomonnaies le bitcoin repose sur une blockchain. Il s'agit tout simplement d'un fichier qui contient une liste de transactions , à la manière d'un livre comptable. Imaginez simplement que chaque ligne dans ce fichier spécifie un montant pour la transaction ainsi qu'un émetteur et un destinataire. Jusque là rien de plus simple. L'idée étant qu'une personne souhaitant envoyer de l'argent à une autre personne pour le payer, rajoute simplement une ligne à la fin du fichier . Vous obtenez ainsi un fichier qui va ressembler à ca :

- Jean donne 10 bitcoin à Julie

- Julie donne 5 bitcoin à Marc

- Julie donne 2 bitcoin à Paul

Vous savez donc maintenant que Marc possède 5 bitcoins, Julie possède 3 bitcoins et Paul possède 2 bitcoins.

Après cet exemple vous devriez maintenant avoir plusieurs questions légitimes :

1. Combien Jean avait-il d'argent au début ?

2. Le nombre de bitcoin est-il limité au montant initial de Jean ?

3. Qu'est-ce qui empêche Julie de rajouter une ligne "Julie donne 3000 bitcoin à Paul" à la fin du fichier ?

4. Qu'est-ce qui empêche Paul de rajouter une ligne "Julie donne 3 bitcoin à Paul" à la fin du fichier ?

Toutes ces question sont en fait liées entres-elles et c'est la solution à ces problèmes qui constituent l'essence même du bitcoin et de l'intérêt des cryptomonnaies en général.

Tout d'abord la question 1 : "combien Jean avait-il d'argent au début ?". La réponse est qu'il n'en avait pas. En fait la première ligne du fichier (et un bon nombre des suivantes) contiennent simplement l'information : "pas de transaction". A quoi cela sert-il ?

Tout simplement à répondre à la question 2 : "le nombre de bitcoin est-il limité au montant initial de Jean ?". La réponse est désormais bien évidemment non puisque Jean n'avait pas de bitcoin initialement. La subtilité vient du fait que pour pouvoir écrire une ligne dans le fichier et bien il vous faut passer par l'équivalent d'un comptable. Or ce comptable il faut le payer et plutôt que de le payer avec des bitcoins existant et bien on le paye avec des bitcoin que l'on crée. Ainsi notre fichier va désormais ressembler à :

- "pas de transaction" -> 50 bitcoin pour Jean (le comptable)

- "pas de transaction" -> 50 bitcoin pour Jean

- "pas de transaction" -> 50 bitcoin pour Jean

- Jean donne 10 bitcoin à Julie -> 50 bitcoin pour Jean

- Julie donne 5 bitcoin à Marc -> 50 bitcoin pour Jean

- Julie donne 2 bitcoin à Paul -> 50 bitcoin pour Jean

Authentifier une transaction en bitcoin : clé privée et adresse publique

Je sens que de nouvelles questions émergent :

5. 50 bitcoin (~500 000 euros) ??? Mais c'est énorme !! Comment fait-on pour prendre la place de Jean

6. qu'est-ce qui empêche Jean d'écrire ce qu'il a envie ?

7. le nombre de bitcoin est donc infini ?

Continuons néanmoins à répondre à toutes ces questions dans l'ordre soit 3: "qu'est-ce qui empêche Julie de rajouter une ligne "Julie donne 3000 bitcoin à Paul" à la fin du fichier ?". Je suppose que vous l'aurez compris il s'agit de notre ami Jean le comptable. Lorsque Julie va lui dire de rajouter la ligne il va avant tout vérifier que cette dernière dispose bien de la somme indiquée. Et pour celà rien de plus simple : il suffit de relire entièrement le fichier pour connaître la liste des montants reçus ou émis par ou pour Julie.

Maintenant 4: "qu'est-ce qui empêche Paul de rajouter une ligne "Julie donne 3 bitcoin à Paul" à la fin du fichier ?". Encore une fois cela va être le rôle du comptable qui va devoir s'assurer que c'est bien Julie et non Paul qui lui a demandé d'envoyer cet argent. Le terme exact étant authentifier la transaction. Si une transaction est authentique alors c'est bien Julie qui demande au comptable de rajouter la ligne "donne x bitcoin à Paul". Sinon c'est quelqu'un d'autre et la demande doit être rejetée. La question étant maintenant de savoir comment le comptable fait-il pour faire la différence entre la vraie Julie et Paul avec une perruque ? Et bien tout simplement avec un système de mot de passe ou clés (plus quelques notions avancées de mathématiques que je vous épargnerais).

Imaginez une pièce n'ayant qu'une seule porte pour ouverture (non ce n'est pas un escape game) mais dont l'un des murs est un miroir. La porte est fermée à clé et le comptable se trouve de l'autre côté du miroir. Il peut voir ce qui se passe à l'intérieur mais ne peut rentrer. La seule personne à pouvoir rentrer dans la pièce est Julie car elle possède la clé de la porte. Elle rentre, écrit la transaction sur le mur et repart (en fermant la porte). Seule Julie peut écrire une transaction mais n'importe qui (dont le comptable) peut la lire. Ainsi chaque personne possède sa propre clé pour sa propre pièce et à chaque fois qu'une nouvelle transaction est écrite le comptable sait que c'est bien la personne qui possède la clé de la salle qui l'à écrite. Si Julie se fait voler sa clé alors le comptable n'y verra que du feu. Pour rentrer dans le jargon plus couramment utilisé la clé de la porte est la clé privée de Julie (= mot de passe très, très, trèèèès long, tellement long qu'il faut des millions d'année pour retrouver celui de Julie avec un super-calculateur). La pièce est en fait un algorithme mathématique qui s'appelle ECDSA ("Elliptic Curve Digital Signature Algorithm"). Quant à Julie on utilise son adresse publique plutôt que son nom. Le fait d'écrire sur le mur de la pièce s'appelle "signer" une transaction. Ainsi le fichier final ressemble en fait un peu plus à :

- "pas de transaction" -> 50 bitcoin pour adresse_publique_Jean (le comptable)

- "pas de transaction" -> 50 bitcoin pour adresse_publique_Jean

- "pas de transaction" -> 50 bitcoin pour adresse_publique_Jean

- adresse_publique_Jean donne 10 bitcoin à adresse_publique_Julie -> 50 bitcoin pour adresse_publique_Jean

- adresse_publique_Julie donne 5 bitcoin à adresse_publique_Marc -> 50 bitcoin pour adresse_publique_Jean

- adresse_publique_Julie donne 2 bitcoin à adresse_publique_Paul -> 50 bitcoin pour adresse_publique_Jean

L'adresse publique est donc comme son nom l'indique l'adresse à partager pour recevoir ou envoyer des bitcoin. Ce qu'il ne faut surtout pas, SURTOUT PAS, et même EN AUCUN CAS partager c'est votre clé privée ! Car si quelqu'un possède votre clé privée, il peut écrire toutes les transactions qu'il souhaite dont notamment : "Julie envoie tout ses bitcoin à adresse_voleur_inconnu_impossible_a_retrouver".

Miner du bitcoin

Maintenant que vous savez tout sur l'écriture d'une transaction bitcoin d'un point de vue d'un utilisateur, il reste les questions sur notre ami Jean le comptable et ses 50 bitcoin trop facile à obtenir. En fait le rôle de comptable est entièrement ouvert à tout le monde. A chaque fois que quelqu'un veut ajouter une nouvelle transaction au fichier alors tous les comptable souhaitant écrire la transaction et récupérer les 50 bitcoins doivent d'abord résoudre une énigme. Le premier comptable à résoudre l'énigme gagne de le droit d'écrire la transaction. C'est aussi simple que cela. L'énigme consiste (c'est une métaphore, une de plus) à trouver le mot de passe d'un cadenas à plusieurs chiffres. La meilleure façon de trouver la solution étant de passer en revue toutes les possibilités, c'est ce que fait chaque comptable de son côté. Plus le comptable est rapide (puissance de calcul) plus il a de chance de trouver la solution avant les autres. Cela n'empêche pas un comptable avec une puissance de calcul ridicule de trouver la solution du premier coup mais c'est très peu probable (comme jouer au loto). A fur et a mesure du temps la compétition devient de plus en plus dur entre les comptables (en réalité appelés mineur, la comptabilité en elle-même étant le minage) ceux-ci finissent par se regrouper en "pool" (piscine) et chaque comptable de la pool est rémunéré en fonction du nombre de combinaisons testées. A l'heure actuelle il est impossible pour une personne seule ne disposant pas d'un hangar rempli de processeurs de gagner la course.

Vous savez presque tout ! Question 6: "qu'est-ce qui empêche Jean d'écrire ce qu'il a envie ?". C'est déjà le fait que pour écrire une transaction il faut être le comptable gagnant. Ensuite le comptable ne fait que recopier les instructions de Julie mais il ne peut pas les modifier pour tout un tas de raison mathématiques. 7: "le nombre de bitcoin est donc infini ?". Tout d'abord en réalité les transactions s'écrivent par blocs de plusieurs centaines voire milliers de transactions. Chaque nouveau bloc est écrit toutes les 10 minutes environ. Si il y a beaucoup de mineurs alors la difficulté de l'énigme est augmentée pour que le temps moyen de résolution retourne vers les 10 minutes. Chaque fois qu'un bloc est écrit le comptable/mineur reçoit une récompense en bitcoin. Cette récompense en bitcoin valait 50 bitcoins initialement mais est divisée par deux tous les 210 000 blocs afin de réduire la création de bitcoin. Au final 21 millions de bitcoin seront crées au maximum.