Nous sommes en 2008. Un certain Satoshi Nakamoto publie en ligne un PDF de moins de 10 pages qui décrit le fonctionnement d'une monnaie qu'il vient d'inventer, le Bitcoin.
Son document est comparable à un papier scientifique : un peu austère dans la forme et évidemment très technique. Si vous avez déjà des connaissances en informatique et en programmation, vous pouvez le retrouver en ligne. Vous ne comprendrez probablement pas tout, mais cela vous donnera une idée. Je vous recommande d'y jeter un oeil.
Voici un aperçu du document en question, duquel tout est parti :
Quand j'ai lu ce document, j'ai été étonné que toute l'innovation puisse être résumée en à peine 8 pages. Evidemment, la première fois... je n'ai rien compris. 😅
Je relu ce document plusieurs fois, et petit à petit je me suis rendu compte à quel point c'était intelligent. Je ne suis toujours pas un expert du sujet, mais je vais essayer de vous expliquer le concept de façon simple.
Le livre de comptes
Imaginez un livre de comptes. C'est un document dans lequel on écrit tout ce que chacun dépense et achète :
Le 01/08/2009 à 16h : Alice paie 250€ à Bob
Le 03/08/2009 à 20h : Bob paie 30€ à Carole
Le 03/08/2009 à 22h : Alice paie 15€ à Carole
etc.
En lisant ce document, on voit qui a payé combien à qui.
Eh bien Bitcoin, c'est ça : un très très gros livre de comptes. Je vous le disais, il n'y a pas de "pièces de monnaie" Bitcoin. A la place, il y a ce grand livre de comptes qui dit qui a payé à qui (et quand).
Mais il n'est dit nulle part de combien d'argent chacun dispose ?!
Si ! On sait combien d'argent vous avez car, quelque part dans une des pages du livre, il est écrit que quelqu'un vous a transmis de l'argent. Par exemple, on sait qu'il reste 220€ à Bob puisqu'il a récupéré 250€ d'Alice et donné 30€ à Carole. Simple affaire de déduction !
Une chaîne de livres
La place dans un livre est limitée. Imaginez que notre livre de comptes comporte 1000 pages blanches. Une fois qu'on les a toutes remplies, que fait-on ?
On prend un nouveau livre et on continue ! On va donc avoir des livres numérotés dans l'ordre : Livre 1, Livre 2, Livre 3...
Chaque livre contient un résumé du livre précédent, un peu comme au début des séries télévisés (vous savez, avec la grosse voix qui fait"Précédemment dans Lost"). C'est une façon de relier les livres entre eux.
Bien entendu, avec Bitcoin, il n'y a pas de vrais livres. A la place, ce sont des fichiers qu'on appelle des "blocs". Les blocs sont les uns à la suite des autres, ils forment une "chaîne de blocs". C'est comme ça que le terme "Blockchain" est apparu.
Mais comment faire pour résumer le livre 1 au début du livre 2 ?
C'est là qu'on appelle les Hash à la rescousse. 😎
Les Hash
En informatique, et plus particulièrement en cryptographie, on utilise souvent des fonctions de hash. Si vous avez déjà un peu programmé, vous avez dû entendre parler de MD5, SHA1, SHA256... Si ces mots ne vous disent rien, pas de panique : retenez que ce sont des fonctions mathématiques qui transforment n'importe quel contenu sous la forme d'un grand nombre hexadécimal composé de lettres (de "a" à "f") et de chiffres.
Ainsi : "Bonjour" hashé devient f30ecbf5b1cb85c631fdec0b39678550973cfcbc
Et : "Bonjour !" hashé devient 245469f3c41b3222441056b6bc6e789710ef2bfb
Si vous ajoutez ou modifiez une lettre, vous pouvez voir que le résultat est complètement différent (ici, j'ai juste ajouté un point d'exclamation et le hash n'a rien à voir).
Vous pouvez hasher n'importe quoi. Si je hashais par exemple tout le livre "Les Misérables" de Victor Hugo, le nombre produit ne serait pas plus long !
Vous voyez où je veux en venir, non ? 😏
Si on peut hasher les Misérables et obtenir un résultat aussi court, on peut donc hasher notre livre de comptes de la même façon !
Les fonctions de hashage ont une spécificité : elles ne marchent que dans un sens. Ainsi, je ne peux rien faire avec le nombre 150201d82c6da2cfead6d6ae22243185fd30a23e. Je ne peux pas l'utiliser pour "retrouver" tout le contenu du livre de Victor Hugo.
Quel intérêt alors ? Ce n'est pas vraiment un résumé du livre du coup ?
150201d82c6da2cfead6d6ae22243185fd30a23e "représente" le livre de Victor Hugo. C'est une façon de vérifier l'identité du livre, de vérifier qu'il n'a pas été modifié.
Comment peut-on en être sûr ? Eh bien, si vous prenez le livre de Victor Hugo et que vous le passez à la "moulinette" de la fonction de hashage, vous devriez forcément retrouver ce nombre 150201d82c6da2cfead6d6ae22243185fd30a23e (sauf si vous avez changé une virgule, auquel cas le nombre sera complètement différent comme on l'a vu !). Les hashs nous permettent d'avoir la garantie que le contenu du livre n'a pas été modifié par quelqu'un.
La Blockchain
Voilà qui nous permet donc de représenter notre chaîne de blocs. Mesdames et messieurs, la Blockchain !
Dans chaque bloc, il y a une ou plusieurs transactions écrites comme "Alice paie 250€ à Bob". En lisant tous les blocs, on peut donc retracer toute l'histoire des échanges en Bitcoin.
Dans la pratique, le premier bloc a été créé par Satoshi Nakamoto lui-même le 09/01/2009. Depuis, des nouveaux blocs sont créés toutes les 10 minutes environ. Il y a donc déjà plusieurs centaines de milliers de blocs dans la blockchain, et ce nombre ne va faire qu'augmenter dans le futur ! 🙀
Ca ne va pas faire... trop gros à gérer à la fin ?
Nos ordinateurs ont suffisamment de mémoire. Notre capacité de stockage augmente au fil des années, cela ne devrait donc pas être un vrai problème. Vous allez voir que vous pouvez vous aussi télécharger comme je l'ai fait tout l'historique de la blockchain : il y en a peut-être pour 100 Go environ. C'est beaucoup, mais pas si énorme au final.
Allez, on fait une pause, on respire un grand coup et on passe au chapitre suivant pour en découvrir un peu plus sur le fonctionnement du Bitcoin. Au menu : transferts en réseau, mineurs, preuves de travail et problème de la double dépense. 😁