lundi 29 juin 2015

Tagged under: , , , , , , , , , , ,

Le Bitcoin expliqué à mon chef

Comment fabrique-t-on une monnaie que l'on peut s'échanger de par le monde entre personnes qui ne se connaissent pas, sans avoir besoin de se faire confiance ? Voici une petite explication niveau seconde, avec, si vous tenez bien le coup jusqu'au bout, une petite surprise à la fin ! 

Le point de départ est très simple : tous les bitcoins sont numérotés, et on note toutes les transactions dans un seul grand fichier, comme un énorme Grand Livre qui serait commun à tous les acteurs : "le portefeuille ABC donne le bitcoin #123 au portefeuille DEF". Ce Grand Livre fait actuellement 35Go environ, et il se balade sur la toile, n'importe qui peut se le procurer, et grâce à cela retrouver l'historique de TOUS les transferts de bitcoin depuis la création de la monnaie. On l'appelle la blockchain, tout simplement car les transactions sont regroupées par blocs.
Evolution de la taille de la blockchain
Pour effectuer un paiement, il me suffit d'ajouter une ligne à ce Grand Livre. Puisque l'on peut remonter à l'origine des temps, il est très facile en suivant les différents changements de main du bitcoin #123, de savoir si ABC le possède bien au moment de la transaction. En fait, on sait exactement dans quel portefeuille se trouve chaque bitcoin à tout moment.

Pour effectuer ma transaction, je contacte donc n'importe quel ordinateur du réseau, qui déclare posséder un Grand Livre, et je lui demande d'ajouter ma transaction. Il l'ajoute, puis se charge alors d'aller informer toutes les autres machines déclarant posséder un Grand Livre aussi, pour que toutes se mettent à jour.

Jusqu'ici tout va bien. Il me faut juste un "mot de passe" pour indiquer que je suis bien le possesseur du bitcoin #123 au moment de ma transaction, histoire d'empêcher quelqu'un de prétendre le posséder et le dépenser à ma place.

Tous les serveurs possédant le Grand Livre passent donc leur temps à s'envoyer les uns les autres les transactions qu'on leur a demandé d'enregistrer. Mais tous ceux qui possèdent un smartphone savent que la synchronisation est un défi de taille. Que faire si deux serveurs ont enregistré des transactions contradictoires ?
Par exemple, si j'ai indiqué à un serveur à Paris que je donnais le btc#123 à Alice, et au même moment un serveur à Tokyo déclare que je donne le même btc#123 à Bob ? À qui donner raison ?
Surtout que derrière, Alice et Bob auront peut-être donné le btc#123 à d'autres, puis à d'autres... plus les transactions s'accumulent et plus c'est compliqué de détricoter tout cela ! Du coup, le choix qui a été fait pour arbitrer ces problèmes est de conserver la chaîne la plus longue. On résoud ainsi le problème du btc#123 en doublon !

On a éliminé le doublon, soit. Mais comment sait-on qu'on a éliminé la transaction illicite ? Car il suffirait à un opérateur malhonnête de créer artificiellement une suite de transactions très très grande pour imposer sa propre chaîne ! Eh bien il suffit d'imposer une temporisation forcée entre deux transactions. Disons une dizaine de minutes.
Le temps de validation d'une transaction ? Environ 8 minutes !
Mais comment forcer les gens à attendre ? On ne peut pas se contenter bien sur d'une déclaration sur l'honneur. On va demander aux gens de prouver qu'ils ont bien attendu, en les occupant avec la résolution d'un calcul mathématique. Imaginons qu'on souhaite ajouter à la chaine la transaction suivante :

  • le btc #123 est donné par la personne #56 à la personne #87

Eh bien on va inventer un équation qui prend tous ces nombres, par exemple :

  • Trouvez les x tels que : 123x²+56x+87 = 0
Hum, un peu trop facile, me direz-vous ? C'est vrai, essayons plutôt de valider un bloc de 3 transactions d'un coup :

  • le btc #123 est donné par #56 à #87
  • le btc #456 est donné par #5 à #8
  • le btc #789 est donné par #44 à #91
Le défi devient alors :


  • Trouvez les x tels que : (123x²+56x+87)(456x²+5x+8)(789x²+44x+91)= 0

Ah, là on a une équation qui peut bien prendre 10 minutes.. Par contre, il est très simple de vérifier si vous avez bien trouvé la réponse : il suffit de remplacer x par la solution proposée et en quelques additions et multiplications, vous pouvez vérifier si la réponse est bonne !
..en fait on parle de 700 transactions dans un seul bloc !
C'est sur cette asymétrie fondamentale que repose le bitcoin (difficile de trouver la réponse, mais très facile de la vérifier). Celui qui donne la réponse est donc autorisé à ajouter les 3 transactions en question dans la chaîne. Vous noterez au passage que comme les paramètres des transactions servent à définir l'équation, il était impossible faire le calcul d'avance.

Du coup, pour pouvoir imposer sa "réalité" au reste du monde, c'est-à-dire introduire une transaction frauduleuse dans la chaîne, il faut, en gros, disposer d'une capacité de calcul supérieure à tous les autres ordinateurs qui travaillent à valider des transactions. Ce qui est de plus en plus difficile à mesure que le nombre d'ordinateurs entrant dans la danse augmente.
A partir d'avril 2014 commencent à poindre les premiers blocs rejetés
(soit parce que quelqu'un de bien intentionné a continué de valider un bloc qui avait déjà été validé par ailleurs, soit parce que quelqu'un de mal intentionné a essayé de pousser des blocs frauduleux)

Quelques remarques pour conclure afin de nourrir vos diners en ville :

Le Grand Livre "blockchain" n'est pas crypté.
Il est parfaitement en clair, de la crypto y'en a juste un peu aux abords du système pour l'authentification des agents. Bien entendu, si vous donnez à quelqu'un le fichier contenant votre identifiant il pourra disposer de votre argent... et si vous perdez ce fichier, eh bien les bitcoins sont perdus à jamais coincés dans un compte dont on a perdu la clef ! Non, il n'existe pas de Grand Administrateur Général à qui vous pouvez demander de recevoir un nouveau mot de passe par email ... Bien sur, il existe des sociétés qui vous garderont ce fichier dans un coffre virtuel, protégé par un mot de passe qu'ils pourront vous renouveler. Mais vous avez alors là ré-introduit un tiers de confiance...

Big is beautiful
Le système repose sur le fait qu'un seul agent économique ne peut pas réunir sous son contrôle plus de la moitié de la puissance de calcul totale. Bonne chance donc à tous ceux qui voudront lancer un autre système basé sur la même technologie car au lancement vous êtes très vulnérable. Et plus vous imaginez des transactions rares, plus cela prendra de temps d'atteindre la masse critique. Par exemple si vous décidez de consigner dans un Grand Livre ouvert, une blockchain, tous les contrats que des agents économiques se passent l'un à l'autre, atteindre le millioniène contrat prendra beaucoup plus d'acteurs et de temps qu'il a fallu pour atteindre la millionnième transaction financière. On s'échange plus souvent de l'argent que des contrats.

Comment faire la distribution initiale des bitcoins ?
Idée originale : donnons-les à ceux qui travaillent à faire vivre le système ! Lorsque vous validez un bloc de transactions, pour vous remercier de cet effort, on vous attribue 50 bitcoins. Tous ceux qui travaillaient sur la même validation arrêtent alors leur calcul, et, bien entendu, ne reçoivent rien.
C'est ce qu'on appelle "miner du bitcoin", image finalement assez mauvaise pour dire "valider les transactions en bitcoin de tierces personnes". Ce système s'arrêtera bien entendu une fois que les 21 millions de bitcoin auront été distribués. Il faudra alors, pour inciter les mineurs à continuer de valider des transactions, leur payer des frais de virement. Nous en somme aujourd'hui à environ 14 millions de bitcoins distribués et on estime qu'ils seront quasiment tous distribués vers 2030.

Le délai d'une dizaine de minutes pour valider une transaction est là pour rester.
Le protocole tient compte de l'avancée de la technologie et rend les validation plus complexes au fur et à mesure. C'est dans l'ADN système, ne pas espérer que la loi de Moore va raccourcir ce délai.
Evolution de la difficulté de la validation avec le temps
On peut mettre bien sûr imaginer des intermédiaires locaux qui accélèrent les transactions en acceptant de porter le risque afférent pendant les 10 minutes d'attente. Ces intermédiaires étant, de fait, des tiers de confiance, on retrouve ce que justement bitcoin est conçu pour éviter. Pour éviter les 10 minutes, vous vous en êtes remis à une solution centralisée, adossée à bitcoin, certes, mais bien centralisée.

Le point de vue énergétique
Pour chaque transaction candidate, plusieurs machines sont en concurrence pour la valider, mais une seul sort gagnante. Il en ressort un gaspillage de puissance de calcul, et donc d'énergie, qui croit à mesure que l'écosystème grandit. Ce coût énergétique est le prix à payer pour pouvoir effectuer des transactions entre personnes qui :
  1. ne se font pas confiance l'une envers l'autre, ET
  2. n'ont pas toutes deux confiance dans une entité commune qui puisse garantir la transaction (comme un gouvernement ou une multinationale), ET
  3. n'ont pas le temps ou les moyens d'apprendre à se connaître et se faire confiance petit à petit (avec un premier échange peu risqué, puis en allant crescendo).
Si les trois conditions sont remplies, alors bitcoin est bien pratique, et le prix énergétique de la transaction peut se justifier.
Dans tous les autres cas, la solution avec un tiers de confiance sera, par construction, moins coûteuse (ne nous laissons pas berner par le prix actuel d'un virement bancaire ou d'une transaction CB, ce sont des prix marché, pas des coûts...). Et si l'on est prêt à penser que sur le long terme, ce qui est moins coûteux à produire sera moins onéreux à acheter, les transactions avec confiance restent promises à un bel avenir. Pour ma baguette chez mon boulanger qui me dit bonjour tous les matins, quel sens cela pourrait avoir de mettre au travail des dizaines d'ordinateurs éparpillés sur la planète à faire une course de résolution polynômiale pour valider la transaction ? On se connait bien assez pour ne pas avoir besoin de ça !
La force de Bitcoin est donc de rendre possible des transactions financières (flux marchand) totalement dénuées de flux non marchands : pas de sentiments, pas de connaissance, et surtout ... aucune confiance ! C'est un aboutissement dans la recherche d'isolation des flux que Frederick Taylor à initié avec l'Organisation Scientifique du Travail.
J'ose espérer que nous n'aurons pas trop besoin, à l'avenir, d'effectuer des transactions dénuées de toute confiance. C'est tellement plus agréable de se serrer la main au coeur d'une transaction #H2H !

ET LA SURPRISE : en fait, les btc ne sont PAS numérotés avec un identifiant unique comme les billets de banque... c'est juste pour faciliter le propos que j'ai nommé notre bitcoin #123, le héros de nos aventures. Quand vous dites "Je donne un bitcoin à Bob", comme on a dans le Grand Livre tout l'historique de combien vous en avez gagné et dépensés dans le passé, tout le monde peut s'assurer que votre compte est créditeur, sans avoir besoin de savoir de quelle opération vient précisément ce bitcoin que vous dépensez.

Nota Bene : Cet article n'aurait pas vu le jour sans les explications patientes et passionantes de Gregschlom ! S'il vous a plu, faites-lui part de votre reconnaissance en participant à son crowdfunding de champignon magique pour Burning Man 2015 !