Partager cet article

On ne vous a jamais expliqué la blockchain comme ça !
Articles

On ne vous a jamais expliqué la blockchain comme ça !

***

Cet article est également disponible sur parlonscrypto.fr.

***

 

La blockchain, ça peut paraître compliqué. Il peut être difficile de comprendre tout de suite à quoi ça sert… Malgré les nombreux articles disponibles sur internet, cette technologie est souvent obscure. Et mon but est de vous guider vous, jeune padawan crypté, vers la lumière ✨. Perdu ? Pommé ? Je vous propose de vous expliquer la blockchain de façon simple, claire et imagée en reprenant les écrits particulièrement intéressants et décalés de Mohit Mamoria (PDG de l’entreprise Authorito Capital) publié sur HackerNoon. Le “je” utilisé dans cet article appartient donc à Mohit Mamoria. Son article m’a paru particulièrement intéressant, notamment pour les novices. N’hésitez pas à aller consulter la version originale de ses dires dans la langue de Shakespeare sur ce site. Et reprendre ses paroles pour expliquer la blockchain à vos amis. 😉.

À moins que vous ne viviez caché dans une grotte, je suis sûr que vous avez déjà entendu parler du Bitcoin et de la blockchain. Après tout, ce sont les sujets de prédilections de nos médias préférés (ce sont même les mots de l’année 2017 !). Même les personnes qui n’ont jamais compris ou utilisé une cryptomonnaie en ont au moins parlé une fois.

J’ai plus d’amis novices dans ce domaine que d’amis ayant une expérience technique. Et ils me harcèlent depuis des semaines pour que je leur explique ces nouveaux mots à la mode. Je suppose qu’il y a des milliers d’autres personnes qui ressentent la même chose aujourd’hui. Et c’est à partir de ce moment là qu’il devient temps d’écrire un post simple et compréhensible par le plus grand nombre.

 

Sommaire :

1 : La blockchain : pourquoi avons-nous besoin de quelque chose d’aussi compliqué ?
2 : Super ! Mais dites-moi, comment tout fonctionne cela ?
a. Un dossier vide
b. Quand une transaction est effectuée
c. Les transactions continuent
d. Ranger les pages
3 : Intéressant !  Mais alors, comment scelle-t-on la page ?
a. La Machine Magique
b. Comment utiliser les Machines Magiques pour sceller une page ?
c. Et enfin, nous allons sceller nos pages…
d. Les récompenses suscitent la motivation
4 : La protection des numéros de scellé contre les tentatives de modification
a. L’astuce qui change tout
b. Que se passerait-il si au lieu d’une, il y avait 6 personnes malhonnêtes ?

 

1 : La blockchain : pourquoi avons-nous besoin de quelque chose d’aussi compliqué ?

“Pour chaque problème complexe, il existe une réponse claire, simple, et erronée” H-L Mencken

Contrairement à tous les autres articles sur internet, au lieu de définir d’abord la blockchain, nous allons commencer par comprendre quels problèmes elle résout.
Imaginez, Joe, votre meilleur ami d’enfance, votre besta for ever. Il voyage à l’étranger et le cinquième jour de ses vacances il vous appelle et vous dit “Hey mec, j’ai besoin d’argent j’ai plus rien 🙏”.
Vous répondez et dites : “Ok mon poto, je t’envoie ça immédiatement” et vous raccrochez.

Vous appelez ensuite votre responsable de compte à la banque et lui dites “Veuillez transférer 1000 $ de mon compte vers celui de Joe” [oui comme vous êtes riche vous pouvez vous le permettre 😁 [mais vous êtes vieux jeu vous ne savez pas qu’on peut aussi faire ça tout simplement sur son appli ou sur le web]].
Votre banquier vous répond “Oui, monsieur”.

Il ouvre alors un registre, vérifie le solde de votre compte pour voir si vous avez suffisamment d’argent, et fait une entrée sur le registre comme l’image ci-dessous :

Note : Bon en vrai c’est sur des ordinateurs, mais on fait comme ça pour garder les choses simples.

Enfin, vous appelez Joe et lui dites : “Ça y est mon bro ! J’ai transféré ton argent. Tu pourras retirer tes 1000$ quand tu iras à ta banque”.Qu’est-ce qui vient de se passer ? Vous et Joe avez tous deux fait confiance à la banque pour gérer votre argent. Il n’y a pas eu de réel mouvement physique pour transférer l’argent. Tout ce qui a été nécessaire, c’est écrire dans un registre. Une inscription sur un registre que ni vous ni Joe ne possédez.
Et c’est le problème des systèmes actuels.

Pour établir la confiance entre individus lors d’une transaction, nous dépendons de ces tiers individuels. Depuis des années, nous dépendons de ces intermédiaires pour se faire confiance. Vous pourriez vous demander : “mais quel est le problème de dépendre d’eux ?”.

Le problème est que ce type de fonctionnement est risqué. Il ne suffirait que d’une seule personne / organisation pour établir le chaos (financier) dans la société et corrompre le système actuel, de manière intentionnelle ou non.

Que se passerait-il si ce registre dans lequel la transaction a été enregistrée est brûlé dans un incendie ? Que se passerait-il si par erreur, votre banquier avait écrit 1500$ au lieu de 1000$ ? Et s’il avait fait exprès ?
Depuis des années, nous mettons tous nos œufs dans le même panier (enfin, surtout dans celui de quelqu’un d’autre). Pourrait-il y avoir un système dans lequel on pourrait transférer de l’argent sans dépendre des banques ?

Pour répondre à cette question, nous devons approfondir et nous poser une meilleure question (après tout, seules les meilleures questions mènent à de meilleures réponses).

Pensez-y un instant, que signifie transférer de l’argent ? Juste une écriture dans un registre. La meilleure question serait alors : Il y a-t-il un moyen de gérer ce registre nous-mêmes, au lieu de le faire gérer par une personne tierce pour nous ?
Maintenant, c’est une question à explorer. Et la réponse vous l’avez sans doute déjà devinée. La blockchain est la réponse à la question profonde.

La blockchain va nous permettre de maintenir et gérer le registre “entre nous” indépendamment de quelqu’un d’autre qui le ferait à notre place.
Êtes-vous encore avec moi ? Bien. Parce que maintenant nous allons apprendre comment fonctionne ce registre distribué.

2 : Super ! Mais dites-moi, comment tout fonctionne cela ?

“Il pourrait y avoir du sens à récupérer quelques Bitcoins justes au cas où ils deviennent populaire. Si suffisamment de personnes pensent la même chose, cela pourrait devenir une prophétie autoréalisatrice”. Satoshi Nakamoto, 2009

La condition à la mise en place d’une blockchain est qu’il doit y avoir suffisamment de personnes qui ne veulent pas dépendre d’un tiers. Ce n’est qu’à ce moment-là qu’un groupe peut gérer lui-même le registre.
Et à partir de combien de personnes est-ce suffisant ? En réalité, il en faut au moins 3. Pour notre exemple, nous supposerons que 10 personnes souhaitent renoncer aux banques et aux tiers. D’un commun accord, ils ont en permanence les détails des comptes de chacun, mais sans connaître leur identité.

a. Un dossier vide

Tout le monde commence avec un dossier vide. Au fur et à mesure de notre progression, ces dix personnes continueront à ajouter des pages à leur dossier actuellement vide. Cette collection de pages formera ce qu’on appelle le registre. C’est dans ce dernier que sont notées toutes les transactions.

b. Quand une transaction est effectuée

Ensuite, tout le monde sur le réseau est assis avec une page blanche et un stylo dans les mains. Tout le monde est prêt à écrire toute transaction effectuée dans le système.

Maintenant, on suppose que #2 veuille envoyer 10$ à #9. Pour effectuer la transaction, le numéro 2 parle et dit à tout le monde “Je veux transférer 10$ à #9. Alors, tout le monde, veuillez prendre note sur vos pages”.

Tout le monde vérifie si #2 a suffisamment d’argent pour transférer 10$ à #9. S’il a suffisamment de fonds, tout le monde prend note de la transaction sur ses pages vierges.

La transaction est alors considérée comme complétée.

c. Les transactions continuent

Au fil du temps, davantage de personnes dans le réseau ressentent le besoin de transférer de l’argent à d’autres. Chaque fois qu’ils veulent faire une transaction, ils l’annoncent à tout le monde. Dès que tout le monde l’a entendue, le transfert est noté sur les pages de chacun.

Cet exercice continue jusqu’à ce que tout le monde manque d’espace sur sa page en cours. En supposant qu’une page ne peut contenir seulement dix transactions, dès que la dixième est effectuée, tout le monde s’arrête après avoir noté le dixième transfert.

Il est donc temps de ranger les pages dans les dossiers (qui étaient encore vides) et de faire apparaître une nouvelle page et de répéter le processus de l’étape 2 ci-dessus.

d. Ranger les pages

Avant de ranger les pages dans nos dossiers, nous devons les sceller avec une clé unique qui a été acceptée par tous les membres au sein du réseau. En scellant les pages, nous cherchons à nous assurer que personne ne puisse y apporter de modifications une fois que toutes ces pages identiques auront été rangées dans le dossier de chacun, pas aujourd’hui, pas demain, ni dans un an. Une fois qu’une page est rangée et scellée dans un dossier, elle restera pour toujours scellée dans le dossier.
De plus, si tout le monde fait confiance au sceau, tout le monde fait confiance au contenu de la page.

Le fait de sceller un page est le point névralgique de cette méthode.

[Jargon Box] : Le fait de sceller les pages pour les sécuriser s’appelle le “mining”. Mais pour la simplicité, nous continuerons d’appeler cette technique “scellage”.

Au début de l’article, nous faisions confiance à l’intermédiaire (en l’occurrence le banquier) qui garantissait que tout ce qu’il avait écrit dans le registre est vrai et que l’information ne serait jamais modifiée. Dans un système distribué et décentralisé comme le nôtre, ce n’est plus un tiers, mais le sceau qui garantit l’exactitude de l’information. C’est donc en lui que nous faisons désormais confiance.

3 : Intéressant !  Mais alors, comment scelle-t-on la page ?

Avant de comprendre comment sceller une page, intéressons-nous d’abord à la manière dont le processus de scellage fonctionne. Et comme prérequis à ce fonctionnement, il existe un outil indispensable que j’ai baptisé :

a : La Machine Magique

Imaginez une machine entourée de murs épais. Cette machine fonctionne selon cette règle : si vous insérez une boîte contenant quelque chose par la gauche (input) , la machine vous sortira une boîte contenant autre chose par la droite (output).

[Jargon Box] : Cette machine s’appelle “fonction de hachage cryptographique“. Mais nous ne sommes pas d’humeur avec les termes techniques. Donc, pour aujourd’hui on parlera de machine magique.

Supposons, vous envoyer le chiffre “4” par la gauche de la machine. Elle vous revoit alors sur sa droite le mot suivant “dcbea”.

Comment à t elle convertit le nombre 4 en ce mot ?
Personne ne sait. De plus, ce processus est irréversible. Autrement dit, en nous donnant le mot “dcbea”, il est impossible de savoir ce qui a été inséré par la droite. Mais à chaque fois que vous insérez le chiffre “4”, elle vous donne toujours le même mot “dcbea”.

Maintenant, essayons d’y insérer un numéro différent. Que va-t-il se passer avec 26 ?

Cette fois, la machine nous sort “94c8e”. Intéressant ! Ce qu’on insère peut donc aussi être converti en nombre.

Et si je vous pose la question suivante maintenant :
“Pouvez-vous me dire ce que je devrais envoyer du côté gauche de la machine pour obtenir une suite de caractère qui commence forcément par 3 zéros ? (Par exemple : 000ab… ; 00098… , 000fa… ou n’importe quel autre).

Réfléchissez à la question un moment…
Pour rappel, la machine à la propriété selon laquelle toute valeur rentrée à gauche (input) renvoie forcément quelque chose de différent à droite (output). Il est alors impossible de deviner à l’avance ce que nous devons insérer à gauche pour obtenir le résultat que nous souhaitons à droite. Avec un tel fonctionnement, comment pouvons-nous répondre à la question précédente ?

Je pense à une méthode. Pourquoi ne pas essayer tous les nombres possibles et inimaginables de l’univers un à un jusqu’à ce que nous obtenions un mot qui commence par 3 zéros ?

Étant optimistes, après plusieurs milliers de tentatives, nous nous retrouverons forcément à un moment donné avec le résultat que nous souhaitons avoir.

Il est extrêmement difficile de tomber rapidement sur la valeur exacte à mettre en input afin de voir sortir la valeur souhaitée en output. Mais, à l’inverse, il sera toujours incroyablement facile de vérifier si la valeur d’entrée testée en input donne ou non la valeur de sortie voulue en output. Rappelez-vous que la machine donnera toujours le même mot pour une entrée donnée.

Est-ce que vous pensez qu’il soit difficile de me donner une réponse si je vous donne un numéro, par exemple 72533, et vous pose la question suivante : “Ce numéro, lorsqu’il est inséré (input) dans la machine, génère-t-il un terme commençant par 3 zéros ?”.

Tout ce que vous avez à faire, c’est de tester le numéro dans la machine, et voir ce qu’elle vous donne de l’autre côté. C’est tout.

La propriété la plus importante de cette machine est que :
“Pour une valeur de sortie donnée, il est extrêmement difficile de connaître la valeur d’entrée. Mais si on vous donne une valeur d’entrée et une valeur de sortie, il est très facile de savoir si celles-ci correspondent bien l’une à l’autre. »

Nous nous rappellerons de cette propriété des Machines Magiques pour le reste du post.

b. Comment utiliser les Machines Magiques pour sceller une page ?

Nous utilisons ces machines pour générer un sceau sur une page. Comme tout à l’heure, commençons par une situation imaginaire.

Imaginez que je vous donne deux boîtes. La première boîte contient le nombre “20893”. Puis, je vous demande :
“Pouvez-vous me trouver un nombre qui, une fois ajouté au nombre contenu dans la première boîte, et une fois que l’ensemble est inséré dans la machine, nous donne un terme commençant par 3 zéros ?”

On est dans une situation similaire à celle que nous avons vue dans le point 1 précédent. Sauf que maintenant on a : une boîte contenant un nombre (définis à l’avance), une autre dans laquelle on peut mettre un nombre au hasard, le tout avec pour condition que les deux nombres ainsi insérés dans la machine donnent un résultat commençant par trois zéros.
Nous avons vu que le seul moyen de répondre à la condition est de tester des milliers de fois (dans la boîte que l’on peut modifier) tous les nombres disponibles.

Après plusieurs milliers de tentatives, nous tomberons sur un nombre (qui disons sera 21191), qui ajouté à 20893 (c’est-à-dire 21191 + 20893 = 40084) et envoyé à la machine donnera un terme qui répond à la condition.

Dans ce cas, le numéro 21191 devient le sceau de la page portant le numéro 20893.

Supposons qu’il existe une page contenant le numéro 20893. Pour sceller cette page (c’est-à-dire pour que personne ne puisse en modifier le contenu), nous apposerons un badge intitulé “21191”. Dès que le numéro de scellage (c’est-à-dire 21191) est collé sur la page, cette dernière est désormais scellée.

[Jargon Box] : Le numéro de scellé est appelé “preuve de travail – ou proof of work -“. Cela signifie que ce numéro constitue la preuve que des efforts ont été faits pour le calculer. Pour nos exemples, nous conservons “numéro de scellé”.

Si quelqu’un veut s’assurer que la page n’ait pas été modifiée, tout ce qui lui suffira de faire est d’insérer le contenu de la page dans la machine avec le numéro de scellé. Si la machine émet un terme commençant par trois zéros, alors le contenu de la page est exact. À l’inverse, si la machine revoit un terme qui ne répond pas aux conditions, nous pouvons jeter la page, car son contenu est compromis et est inutilisable.

Nous utiliserons ce mécanisme de scellage pour sceller toutes nos pages pour ensuite les disposer dans nos propres dossiers.

c. Et enfin, nous allons sceller nos pages…

Pour sceller notre page contenant les transactions du réseau, nous aurons besoin de trouver un numéro qui, ajouté à la liste des transactions et envoyé à la machine, génère un mot qui commence par trois zéros.

[Remarques] : J’ai utilisé l’expression “mot commençant par trois zéros” uniquement à titre d’exemple. Il illustre le fonctionnement du principe de hachage. La réalité est un peu plus complexe.

Une fois que le numéro de scellé est trouvé (après avoir passé du temps et dépensé de l’énergie en électricité), la page est scellée avec ce dernier. Si quelqu’un essaye de changer le contenu de cette page, le numéro de scellage permettra à tous les participants de vérifier l’intégrité de la page.

Maintenant que nous savons comment sceller une page, retournons à notre réseau de dix personnes. Rappelez vous, nous avions fini d’écrire la dixième transaction sur la page, et nous manquions de place.

Dès que tout le monde est à court de place, avant de ranger les pages dans nos dossiers, le groupe se livre au calcul du numéro de scellage de la page. Tout le monde dans le réseau fait le calcul. Le premier dans le réseau à avoir trouvé le fameux numéro l’annonce à tous les autres.

Immédiatement après avoir entendu le numéro, tout le monde vérifie s’il produit ou non le résultat de sortie attendu. Si oui, tout le monde attribue ce numéro à ses pages et les range dans leur dossier.

Mais que se passe si, pour quelqu’un, disons le #7, le numéro de scellé ne donne pas le résultat attendu ? De tels cas ne sont pas inhabituels. Les raisons possibles pourraient être les suivantes :

  • Il a pu mal entendre les transactions qui ont été annoncées sur le réseau.
  • Il a pu mal écrire les transactions annoncées
  • Il a peut être essayé de tromper ou d’être malhonnête lors de la rédaction des transactions afin de se favoriser ou favoriser quelqu’un d’autre.

Peu importe la raison, le participant #7 n’a seulement qu’un seul choix : supprimer définitivement sa page et copier celle de quelqu’un d’autre pour qu’il puisse la mettre dans son dossier. S’il ne met pas sa nouvelle page dans son dossier, il ne peut plus écrire de transactions, lui interdisant ainsi de faire partie du réseau.

Quel que soit le numéro de scellé, c’est celui sur lequel la majorité est d’accord qui devient le numéro de scellé “honnête”.

d. Les récompenses suscitent la motivation

Mais pourquoi tout le monde dépense-t-il ses ressources pour faire un calcul alors qu’il sait très bien que quelqu’un d’autre va le calculer et le lui annoncer ? Pourquoi ne pas rester les bras croisés et attendre l’annonce ?

Bonne question. C’est là que les incitations rentrent en jeux. Toutes personnes qui prennent part au réseau blockchain sont éligibles à des récompenses. Le premier à avoir trouvé le nombre de scellés est récompensé par de l’argent “gratuit” pour ses efforts (c’est à dire l’électricité et la puissance du processeur).

Par exemple, imaginons que #5 est le premier à avoir trouvé le nombre scellé d’une page. Il est récompensé par de l’argent gratuit, disons 1$. Mais cet argent ne provient pas d’un autre membre du réseau, c’est-à-dire que le compte de #5 est augmenté de 1$ sans que le solde de qui que ce soit diminue. Cet argent est créé par le réseau.

C’est comme ça que le Bitcoin a été créé. Ce fut la première monnaie à être échangée sur une blockchain (c’est-à-dire les registres distribués). En retour, pour que les efforts au fonctionnement du réseau soient maintenus, les gens ont reçu des Bitcoins en guise de récompense. Les récompenses motivent les gens à travailler pour le réseau.

Lorsque suffisamment de personnes possèdent des Bitcoins , leur valeur augmente (par ce que l’on appelle l’effet réseau), ce qui fait que d’autres personnes veulent des Bitcoins ; ce qui fait que leur valeur augmente encore plus (loi de l’offre et la demande + effet réseau), ce qui donne envie à encore plus de personnes d’avoir de Bitcoins, ce qui va encore faire augmenter leur valeur et ainsi de suite.

Une fois que chacun a rangé la page dans son dossier, ils sortent une nouvelle page blanche et répètent le processus en entier, en le faisant à l’infini.

[Jargon Box] : Considérez une page comme un bloc. Ce dernier contient les transactions. Et pensez le dossier comme une chaîne de pages (donc une chaîne de blocs). Voici comment fonctionne une blockchain.

* * *

Mais, il y a encore quelque chose que je ne vous aie pas dit.

Imaginez qu’il y ait déjà 5 pages dans votre dossier, toutes scellées par un numéro. Et si je retourne à la deuxième page, et modifie une transaction pour m’avantager ? Le numéro de scellé permettra à quiconque de détecter l’incohérence dans les transactions non ? Mais si je m’amuse à calculer un nouveau numéro de scellé pour cette page avec les transactions modifiées, le réseau n’y verra que du feu non ?

Pour éviter ce problème que quelqu’un retourne en arrière pour modifier une ancienne page discrètement, il y a une petite astuce dans la manière dont le numéro de scellé est calculé.

4 : La protection des numéros de scellé contre les tentatives de modification

a. L’astuce qui change tout

Rappelez vous, je vous avais donné deux boîtes. Une contenant le numéro prédéfini 20893, et une autre vide dans laquelle il fallait calculer le numéro. En réalité, pour calculer un numéro de scellé dans une blockchain il ne faut pas 2, mais 3 boîtes. Deux préremplies et une à calculer.

Ensuite, l’opération reste identique. Le contenu de ces trois boîtes et envoyé à la machine, la réponse qui sort en output doit satisfaire aux conditions requises.

Nous avons donc :

  • Une boîte contenant la liste des transactions (en l’occurrence notre page)
  • Une boîte qui contiendra le numéro de scellé (celui qu’on doit calculer)
  • Et enfin une troisième boîte contenant la valeur de sortie de la Machine Magique pour la page précédente

Avec cette astuce, nous sommes assurés que chaque page dépend de sa page précédente. Par conséquent, si quelqu’un modifie une ancienne page, il devra également modifier le contenu et le numéro de scellage de toutes les pages suivantes pour que la chaîne reste cohérente.

Si un individu, sur les dix que nous avions imaginé précédemment, essayait de tricher et de modifier le contenu de la blockchain (le dossier contenant les pages avec la liste des transactions), il devrait modifier toutes les pages, en calculant à chaque fois le numéro de scellé de chaque page. Nous connaissons la difficulté qu’il faut pour trouver ce numéro. Par conséquent, 1 personne malhonnête dans le réseau ne pourrait pas battre 9 personnes honnêtes.

Ce qui va se passer ? C’est que la personne malhonnête en modifiant les pages va créer une autre chaîne dans le réseau, mais cette dernière ne pourra jamais rattraper la chaîne honnête dans le réseau. Simplement parce que les efforts d’une seule personne ne peuvent pas rattraper les efforts et la vitesse cumulée de 9 autres personnes réunies. Par conséquent, ce procédé garantit que la chaîne la plus longue dans le réseau est la chaîne honnête.

Mais il y a un mais. Quand je vous dis que 1 type malhonnête ne peut pas battre 9 autres gars honnêtes, cela ne vous amène-t-il pas à vous demander quelque chose ?

b. Que se passerait-il si au lieu d’une, il y avait 6 personnes malhonnêtes ?

Dans ce cas, le protocole tomberait à plat.

Ce type de cas s’appelle “une attaque 51%”. Si la majorité des individus dans un réseau décident de devenir malhonnêtes et tricher, le protocole blockchain échouera et sera corrompu.

C’est la seule raison vulnérable pour laquelle une blockchain pourrait s’effondrer. Sachez qu’il est assez peu probable que ça se produise (un groupe de personne malhonnête faisant tomber le réseau prend le risque de le discréditer lorsque cela s’apprendra, et donc de faire perdre la valeur des récompenses alors perçues), mais nous devons connaître les points vulnérables du système.
Le réseau blockchain est construit selon l’hypothèse que la majorité des personnes sont honnêtes.

Voilà, vous savez tout ce qu’il faut savoir à propos de la blockchain. Nous pouvons grandement remercier Mohit Mamoria, qui a su rendre simple, un concept difficile à appréhender et que je vous partage avec plaisir. D’ailleurs, si vous trouvez quelqu’un qui a du mal avec cette technologie, vous savez où vous pouvez le diriger. Et si vous pensez en ce moment que quelqu’un devrait lire ceci, le bouton “partager” vous appartient. 😉

 

Sources :

Article original de Mohit Mamoria : https://hackernoon.com/wtf-is-the-blockchain-1da89ba19348

Un coup de pouce pour cet article ?

1+

Partager cet article

Laisser un Commentaire

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>