Comment ça marche ?

Cet article est la suite de « qu’est-ce qu’une blockchain ?« 

avoir un compte Bitcoin requiert au préalable de télécharger sur un ordinateur ou sur un smartphone un « porte-monnaie » appelé aussi wallet. Ce porte-monnaie permet à un utilisateur de générer des adresses bitcoin.

Chaque adresse, par exemple 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa, est en réalité une paire de clés cryptographiques composée d’une clé privée et d’une clé publique. Pour recevoir des bitcoins, un utilisateur fournira une adresse, générée à partir de sa clé publique, et qu’il renouvellera, idéalement, à chaque transaction. Tandis que pour envoyer des bitcoins à l’adresse du destinataire, il signera la transaction avec sa clé privée.

La signature et la vérification des transactions en bitcoins reposent sur la cryptographie asymétrique, c’est-à-dire que la clé privée permet de vérifier l’authenticité d’une signature à partir de la clé publique, l’inverse étant bien évidemment impossible.

L’ensemble des transactions en bitcoins consiste ainsi à débiter certaines adresses pour en créditer d’autres. Ces transactions sont enregistrées dans des fichiers que l’on appelle des blocs. Un bloc représente l’équivalent de dix minutes de transactions, et comporte le « résumé » du bloc précédent.

Pour garantir l’intégrité des blocs, enchaînés chronologiquement les uns après les autres, depuis la première transaction en bitcoin, effectuée en 2009 jusqu’à aujourd’hui, le système s’appuie sur des « fonctions de hash ».

Une fonction de hash est une fonction mathématique qui transforme n’importe quel contenu sous la forme d’un nombre hexadécimal.

Par exemple, le titre « La revue européenne des médias et du numérique » hashé donne « EDD559832CFB3B135BFAD11A0EB68D34F1C77D252140EAE01D8D3FE8EE0FBEDE ». Mais « la revue européenne des médias et du numérique », sans majuscule au début, donne « C39398ED08D75CC4CAA03D7FA223B3193E6212F1026021D0B1328760E5E8403C ». À la moindre modification du contenu, le nombre hashé devient totalement différent.

Il est possible de hasher une phrase ou un mot de passe, tout comme L’Iliade et l’Odyssée in extenso. L’intérêt d’une fonction de hashage est qu’elle ne s’applique que dans un sens : le hash obtenu ne permet ainsi pas de remonter au contenu d’origine, en revanche il suffit de hasher à nouveau ce contenu pour vérifier que le hash en résultant est identique, preuve qu’aucune modification n’est intervenue. Les blocs du Bitcoin sont ainsi hashés  et liés entre eux, permettant ainsi d’avoir la garantie qu’ils n’ont jamais été modifiés depuis la première transaction.

Comme son nom le suggère, la blockchain est un enchaînement de blocs, qui regroupent des transactions, chacun contenant le hash des blocs précédents.

De plus, cette blockchain est synchronisée et stockée dans tous les ordinateurs de ceux qui l’utilisent. C’est une monnaie électronique décentralisée. Chaque ordinateur possédant une copie de la blockchain est appelé un « nœud » du réseau et vérifie en permanence l’intégrité de celle-ci.

Les nouveaux blocs sont créés par certains nœuds du réseau appelés les mineurs.

Ils mettent à la disposition du système leur puissance de calcul pour résoudre un problème mathématique complexe dont le principe est de trouver un nombre hashé. Comme il est impossible de retrouver le contenu original à partir du hash, l’ensemble des ordinateurs qui « minent » calcule toutes les possibilités pour arriver au résultat. Cette opération, appelée validation par « preuve de travail » (proof-of-work), ne peut être obtenue que par la réalisation d’une tâche fortement consommatrice en énergie et en puissance de calcul.

Le système est conçu de telle sorte qu’il faudrait contrôler plus de 50 % de la puissance de calcul de tous les ordinateurs qui minent dans le monde pour arriver à modifier un bloc à l’insu de tous.

C’est pour cette raison que, à ce jour, le Bitcoin et les blockchains
n’ont jamais été piratées.

La difficulté du minage est automatiquement ajustée en fonction du nombre d’ordinateurs en train de hasher, afin qu’un nouveau bloc soit généré en moyenne toutes les dix minutes. À chaque fois qu’un ordinateur trouve la bonne réponse, le bloc est créé et le mineur est rémunéré 12,5 bitcoins. C’est de cette façon qu’est programmée la création d’unités de compte bitcoins.

Le protocole a été conçu pour que les bitcoins soient créés graduellement
sans qu’une instance centrale s’en charge.

Il est également prévu dans le code informatique que plus la chaîne croît, plus il est difficile de miner des bitcoins, et plus la rémunération baisse. C’est pourquoi si, aux débuts du Bitcoin, des particuliers minaient sur leur ordinateur, la puissance de calcul nécessaire est aujourd’hui telle qu’ils sont supplantés par des entreprises qui font travailler des milliers de serveurs dans des entrepôts, notamment en Chine.

Depuis janvier 2009, environ 16 millions de bitcoins ont été émis et seuls 21 millions seront générés en tout et pour tout, le dernier devant être produit en 2140.

Les bases de données distribuées de type blockchain sont à la transaction ce que les protocoles TCP et IP sont à la transmission d’information via l’internet.

Le code informatique de la plupart des blockchains publiques étant open source, quiconque possédant les compétences requises peut mettre en place une blockchain. Au-delà du Bitcoin, il existe aujourd’hui près de 1 150 registres distribués de type blockchain publique, dont la convertibilité en monnaie légale est assurée par des milliers de plates-formes de change à travers le monde.[MAJ au 30/03/2018, 1 594 blockchains publiques – SourceMAJ au 04/07/2019, 2 100 blockchains publiques]. 

Lorsque les blockchains sont publiques, comme Bitcoin, Ether ou Monero, tout le monde, avec une connexion internet et un ordinateur, peut accéder à leurs services. Lorsqu’elles sont privées, leur utilisation est limitée à certains acteurs.

Par extension, la « chaîne de blocs » peut être assimilée à un grand livre des comptes, public, anonyme et infalsifiable. Il est d’ailleurs intéressant de noter que, pas une seule fois, le mot blockchain n’est cité dans le texte fondateur de Satoshi Nakamoto.

À partir du protocole Bitcoin créé pour produire une base de données enregistrant l’ensemble des transactions opérées par ses utilisateurs, une déclinaison de la blockchain a été inventée en décembre 2013 par Vitalik Buterin. Baptisé Ethereum, ce protocole d’échanges décentralisés permet la création de « contrats intelligents ».

Il utilise Solidity, un langage de programmation dit Turing-complet, parce qu’il permet de programmer l’ensemble des fonctions calculables au sens de Turing, à savoir quasiment toutes les fonctions que l’on connaît des langages de programmation modernes. Ces « contrats intelligents », que son inventeur préfère aujourd’hui appeler « scripts persistants », permettent de vérifier et de mettre en application des accords mutuels qui sont enregistrés et consultables publiquement dans la blockchain d’Ethereum.

L’intérêt de ces contrats est qu’ils sont autonomes, répliqués dans tous les nœuds de la blockchain, et que leur exécution ne passe pas par un tiers de confiance pour en garantir la validité.

L’avènement du pair-à-pair, non plus simplement pour transmettre et recevoir des informations mais également pour certifier et enclencher automatiquement des transactions, ouvre des perspectives inédites aux utilisateurs d’internet : particuliers, entreprises et États.

Lire la suite : 

A quoi ça sert ?

Cet article a initialement été publié dans le numéro 44 de La revue européenne des médias et du numérique.

PARTAGER

1 COMMENTAIRE

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here