Comprendre le bitcoin et la blockchain #2 : enchaînons des blocs

Partagez cette page

Quelques aspects techniques du bitcoin

Comme nous l’avons mentionné en fin de première partie, le bitcoin fonctionne en organisant de manière assez géniale des technologies qui en elles-mêmes n’étaient pas nouvelles. Nous allons les passer en revue.



Le réseau peer-to-peer

Les réseaux peer-to-peer, ou P2P, ou pair-à-pair en français… Comme nous n’oserions insinuer que vous les avez déjà utilisés (comme tout le monde…) à des fins de téléchargements illégaux, nous nous contenterons de dire que vous en avez au moins entendu parler. En facilitant les échanges de données sur la toile, c’est une technologie qui a littéralement changé l’industrie musicale (et contribué à rendre les places de concert hors de prix…), cinématographique ou encore celle du jeu-vidéo.

Un réseau centralisé et un reseau P2P

Un réseau P2P est en fait un réseau décentralisé d’ordinateurs (ou « noeuds ») dans lequel tout le monde peut communiquer avec tout le monde. Cette forme de réseau s’oppose à des architectures centralisées, où tous les ordinateurs sont reliés à un serveur central par lequel passent toutes les communications. C’est un réseau P2P décentralisé qui sert d’infrastructure au bitcoin.

La cryptographie asymétrique

La cryptographie est cette discipline de mathématiciens fous qui sert à coder et décoder des messages, et qui utilise très souvent pour cela des « clés » (des suites de caractères). La cryptographie asymétrique est une branche particulière de la cryptographie, dans laquelle la « clé qui code » est différente de la « clé qui décode ». Le bitcoin utilise des procédés de cryptographie asymétrique.

Quand vous vous créez un « compte bitcoin » (ou « adresse bitcoin », c’est pareil), deux clés sont aussitôt générées automatiquement. Il y a d’abord la clé privée, à garder précieusement (très précieusement même, si on vous la vole vous perdez votre argent) qui servira à coder vos messages (vos transactions…). Il y a ensuite la clé publique, qui servira, notamment aux autres, à décoder ces messages, et qui est aussi votre adresse bitcoin, c’est à dire la suite stupide de chiffres et de lettres que vous communiquerez à toute personne souhaitant vous envoyez de l’argent.

Habituellement, l’utilisation de la cryptographie sert à cacher des messages, à s’assurer que seul un récipiendaire précis pourra le lire. Avec le bitcoin c’est un peu différent, la cryptographie asymétrique ne sert pas tant à cacher quoi que ce soit qu’à authentifier les émetteurs de transactions.

Authentification bitcoin - Cryptographie asymetrique

Lors d’une transaction (par exemple « je donne 1 bitcoin au webmaster d’easy-crypto.fr ») votre clé privée secrète encode une partie du message qui par ailleurs contient aussi votre clé publique en clair. Chaque noeud qui vérifie cette transaction est en mesure de la décoder avec cette clé publique qui l’accompagne. Dès lors, vous êtes de facto authentifié comme émetteur légitime de votre transaction, puisque uniquement vous possédez la clé privée qui aura pu l’encoder auparavant.

C’est un peu le même principe qu’avec une boîte aux lettres à deux ouvertures, la première pour y mettre des lettres dont seul vous posséderiez la clé (la clé privée), la seconde pour y récupérer ces lettres dont tout le monde pourrait avoir la clé (la clé publique). A chaque fois que quelqu’un prendrait une lettre dans la boîte, on serait sûr qu’elle est bien de vous.

Les fonctions de « hashage »

Voilà encore un truc de matheux fous.

Une fonction de « hashage » est une application informatique qui produit des « hash », c’est à dire des suites de caractères uniques et d’une longueur donnée, à partir de données numériques qu’on lui donnera à « hasher ».

Comme normalement à ce stade vous ne comprenez rien, dites vous que c’est un peu comme si un « hash » était l’empreinte digitale unique de données informatiques.

Mais comme tout cela est probablement encore un peu vague, nous allons nous pencher sur la blockchain et vous allez vite comprendre par vous-même !

Anatomie de la blockchain…

Pour reprendre l’image traditionnelle, la blockchain est le « livre de comptes » du bitcoin, dont chaque page serait un « bloc ». C’est aussi, dans un réseau décentralisé comme celui du bitcoin, une organisation du stockage de données qui contribue à garantir l’authenticité des données stockées, faisant du bitcoin un système monétaire qui, comme nous le disions dans notre article de présentation, est fiable en lui-même, sans le concours d’un tiers de confiance extérieur.

Première étape : le hash

Rendez-vous chez un Américain qui a mis en ligne un outil de démonstration assez extra pour justement expliquer ce qu’est la blockchain. Merci et gloire à Anders Brownworth !

https://anders.com/blockchain/hash.html

Que voyez-vous ?

Vous avez d’abord un champ de données (vide au début) dans lequel vous pouvez écrire, et juste en dessous, le hash à 64 caractères qui lui correspond, passé à la moulinette d’une fonction de hashage particulière, SHA256 (celle utilisée par le bitcoin).

Testons la fonction de hashage du bitcoin SHA256

Tapez ce que vous voulez dans le champ « data ». Qu’observez-vous ?
– Que le hash change complètement et de manière imprévisible à la moindre variation du contenu entré.
– Qu’un même contenu donne toujours le même hash.

L’idée que le hash est une sorte d’empreinte numérique de données devrait maintenant faire un peu plus sens…

Seconde étape : le bloc simplifié

Dans le menu supérieur du site d’Anders brownworth, cliquez sur « block ».

https://anders.com/blockchain/block.html

Nous voici avec un bloc simplifié. Nous avons ajouté au champ « data » précédent un numéro de bloc ainsi qu’un autre nombre (qui a l’air aléatoire…), qu’on appelle le « nonce », sur lequel nous reviendrons bientôt.

Le hash du bas est maintenant le hash de tout ce qu’il y a dans le bloc et non plus seulement celui du champ « data ».

De plus, nous décrétons que par convention un bloc peut être valide ou invalide, et que la condition de validité de ce bloc est que son hash commence par 4 fois le chiffre zéro (« 0000 »).

Par défaut, vous observez que notre bloc actuel, avec son champ « data » vide, est valide (fond vert).

Si vous ajoutez des données dans le champ « data » (entrez ce que vous souhaitez), le hash de l’ensemble du bloc change inévitablement, ne commence plus par « 0000 », ce qui signifie que notre bloc est devenu invalide (fond rouge).

Demo blockchain, bloc simplifié invalide

Or c’est très ennuyeux, parce que légalistes que nous sommes, nous voulons revalider notre bloc.

Mais alors que faire ?

Pour valider à nouveau notre bloc, il faut que son hash remplisse la condition posée plus haut. Il faut donc qu’on change le contenu de notre bloc jusqu’à ce qu’on tombe sur un hash commençant par les « 0000 » requis. Très bien, mais si on part du principe qu’on ne décide pas du « numéro de bloc », et qu’on veut conserver les données du champ « data », que pouvons-nous changer ?

Et bien c’est justement le rôle du « nonce », qui rentre donc en jeu. Ce nombre est dans le bloc uniquement comme un contenu d’appoint qu’on fait varier jusqu’à ce qu’il nous permette d’obtenir un hash, et donc un bloc, valide.

Alors c’est parti, on commence nos essais. 1,2,3,4… 12001, 12002, 12003… 235442, 235443, 235444…

Un peu fastidieux, non ?

En effet. Et c’est pour cette raison qu’il est bien plus pratique de donner ce travail bien bourrin à des processeurs informatiques, qui peuvent eux tester des millions de combinaisons par seconde.

Appuyez donc sur le bouton « mine » et très rapidement, un nouveau « nonce » adéquat sera trouvé.

Démo blockchain - bloc simplifié valide

Vous venez de comprendre ce qu’est le fameux minage qui sert à gagner des monnaies électroniques. Le minage, c’est la recherche, pour un bloc donné, d’un « nonce » permettant d’obtenir un hash de son contenu valide. Dit autrement, c’est la résolution par la puissance informatique brute d’un problème mathématiques servant à valider des blocs.

Nous verrons plus tard que la blockchain se voit ajouter en permanence de nouveaux blocs contenant des transactions récentes à enregistrer (comme on ajouterait de nouvelles pages à notre livre de de comptes dans le cas du bitcoin). S’il est facile de composer ces blocs, trouver le « nonce » les rendant valides est en réalité d’une extrême difficulté. Les mineurs sont en compétition permanente pour valider puis diffuser dans le réseau leurs nouveaux blocs en premiers, car c’est cela qui les rémunère s’ils y parviennent.

Mais ne grillons pas les étapes, enchainons maintenant ces blocs…

Troisième étape : une première blockchain

https://anders.com/blockchain/blockchain.html

Ici on a placé des blocs à la suite les uns des autres. Vous remarquez d’abord que leurs numéros de bloc s’incrémente de un à chaque fois. Mais vous remarquez surtout, et c’est cela la trouvaille géniale qui sert de « colle » aux éléments de la blockchain, que maintenant, chaque bloc contient le hash du bloc précédent.

Pourquoi cela est-il si génial ?

Faites le test de modifier ne serait-ce qu’un seul caractère dans notre mini-blockchain (à partir de son état vierge, ou bien après avoir entré du contenu dans chacun des champs « data », puis miné chaque bloc en commençant par la gauche…). Que voyez-vous ?

Que par un effet de cascade, n’importe quelle modification invalide tout ce qui vient après elle.

Et que donc à l’inverse, la validité d’un bloc certifie la validité de tout ce qui le précède.

Dans l’idée, la blockchain du bitcoin n’est rien d’autre que ce que nous venons de voir, une suite de « blocs de données » habilement liés les uns aux autres, qui contiennent divers paramètres et immatriculations, et dont les champs « data » serait occupés par des listes de transactions financières (« machin a donné 1 bitcoin à Robert, Johnny a donné 2 bitcoin à trucmuche… »).

https://anders.com/blockchain/tokens.html

Si on part du principe que la blockchain ne se construit que par ajouts de nouveaux blocs valides, et que la validation de ces blocs passe par l’étape du « minage », qui a duré quelques secondes dans notre exemple plus haut, mais qui en réalité requiert une puissance informatique astronomique, on commence à saisir d’où vient l’idée d’inviolabilité du bitcoin…

Passons maintenant à la suite car notre blockchain, dont on commence à saisir la mécanique, il faut la faire vivre, c’est à dire grandir. Alors rendez-vous au 3ème volet de notre série, sur comment marche le bitcoin.

 

0 réponses

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *