Blockchain : la base des cryptomonnaies

Vous avez forcément entendu parler de principe de la blockchain qui a été conceptualisé par le ou les créateurs du Bitcoin. Mais savez-vous plus précisément ce qu’est la blockchain ? Nous allons détailler tout cela pour que les chaînes de blocs n’aient plus de secret pour vous.

Cet article fait partie du dossier « Cryptomonnaies, le gros dossier »

Finalité d’une blockchain

Une blockchain est une chaîne de blocs en français. Une fois qu’on a dit cela, nous ne sommes pas beaucoup plus avancé dans la compréhension de la chose.

Déjà, la finalité de la blockchain est de stocker de façon perenne et infalsifiable les transactions du réseau. C’est un registre public et distribué.

Public, car il est accessible à tout un chacun. On peut facilement rechercher une transaction.
Distribué, car c’est un système décentralisé. Le registre est copié sur tous les nœuds du réseau.

C’est aussi un des mécanismes qui assure la sécurité de l’ensemble, car les changements sont enregistrés et validés par la majorité. Le seul risque dans ce cas est une attaque des 51.
Dans le cadre du Bitcoin, la puissance déployée devrait être énorme, mais dans le cadre de cryptomonnaies plus modestes c’est un risque qui peut exister.

Elle permet également d’éviter des doubles dépenses. Cela permet donc à des personnes qui ne se connaissent pas de pouvoir effectuer des transactions sans tiers de confiance. Tout modèle économique repose sur une confiance, et dans le cas des cryptomonnaies c’est la blockchain qui l’apporte.

Composition d’une blockchain

Prenons la blockchain du Bitcoin en schéma simplifié à titre d’exemple.

La blockchain du bitcoin

Plusieurs éléments constituent un bloc :

  • Une entête (avec le hash du bloc précédent, la preuve de travail et le hash du bloc en cours résultant de la preuve de travail)
  • Une liste de transactions

Si vous ne savez pas ce qu’est un hash, il s’agit d’une chaîne de caractère de longueur fixe résultant d’une fonction mathématique à sens unique. En entrée d’une fonction de hashage, il peut y avoir du texte, un fichier, … et en sortie, après application d’un algorithme vous avez une chaîne de caractère ressemblant à ceci :

f2d81a260dea8a100dd517984e53c56a7523d96942a834b9cdc249bd4e8c7aa9

Pour le Bitcoin, l’algorithme utilisé est le SHA256.

Le hash du bloc précédent permet de créer cette fameuse chaîne en liant les blocs entre eux. Une fois qu’une transaction est inscrite dans un bloc validé (nous y reviendrons), elle devient confirmé. Au fur et à mesure que de nouveaux blocs sont ajoutés derrière, il devient de plus en plus difficile de modifier la transaction. C’est un des éléments qui permet de rendre la blockchain infalsifiable.

Validation d’un bloc en preuve de travail

Pour valider un bloc, il faut effectuer un certain nombre d’opérations pour arriver à générer un hash. Il devient ainsi l’empreinte du bloc et et est constitué à partir des données contenues, notamment les transactions ainsi que le hash du bloc précédent.

Mais attention, ce qui rend l’opération compliquée, c’est qu’il faut que le résultat soit inférieur à une cible définie. Cela oblige à ce que le hash ait un certain nombre de 0 en début de chaîne. Etant donné qu’il n’est pas possible de prévoir le hash qui sera généré, il faut répéter un grand nombre de fois l’opération pour tomber sur un résultat correspondant aux attentes. Cela pourrait s’apparenter au Loto, on lance le traitement sans savoir quel sera le résultat, et on voit ensuite si on a les bons numéros.
La génération d’un bloc est donc artificiellement rendue difficile pour que cela prenne un certain délai. L’idée est de tendre vers les 10 minutes pour valider un bloc, donc plus il y a de monde qui calcule, plus la difficulté s’accroit.  Une fois le hash défini, il est validé par la majorité des autres nœuds.

Cette difficulté permet d’ajouter de la sécurité à la blockchain. Elle permet aussi d’apporter une stabilité à cette dernière, en évitant au maximum les validations concurrentes. Ces validations concurrentes (deux personnes valident en même temps le bloc) peuvent arriver. Dans ce cas, cela crée deux branches de la blockchain. Ces branches vivent leur vie, mais au bout d’un moment une branche sera plus grande que l’autre. Et le mécanisme de la blockchain fait que le choix se portera sur la branche la plus longue, et que la ou les autres seront abandonnées.
Elle induit en revanche une grande dépense énergétique, qui fait parfois que le Bitcoin est pointé du doigt. Et cela induit aussi de ralentir la création des blocs. Le fait de faire cette preuve de travail est aussi appelé « minage« .

Pour approfondir la notion de blockchain et de preuve de travail dans le cadre du Bitcoin, je vous conseille cet excellent article sur le site Cryptoast.

Et une vidéo de vulgarisation sur le sujet avec laquelle vous devriez tout comprendre :

 

Autres méthodes de validation d’une blockchain

Preuve d’enjeu, ou Proof of Stake (PoS)

La preuve d’enjeu demande aux utilisateurs de prouver la possession d’un certain nombre de tokens pour pouvoir valider des blocs. Le mécanisme de validation va chercher un utilisateur au hasard. Sachant que le hasard dépend de la somme déposée. Ainsi, plus l’utilisateur bloque des fonds, plus il a de chances d’être sélectionné pour valider (et toucher la récompense). La partie aléatoire permet d’éviter que l’utilisateur le plus « riche » soit choisi à chaque fois.

L’avantage de cette solution est qu’elle consomme beaucoup moins d’énergie que la preuve de travail. Un des inconvénients est que les algorithmes sont beaucoup plus complexes, et qu’ils doivent prendre notamment en compte la problématique du « rien en jeu« .

A noter qu’Ethereum (la cryptomonnaie la plus populaire derrière le Bitcoin) a prévu de passer de la Proof-of-Work à la Proof-of-Stake en version 2.0. Il n’y aura donc plus de minage d’Ethereum dans un avenir plus ou moins proche.

Preuve de capacité, ou Proof of Capacity (PoC)

La preuve de capacité se base non pas sur les capacités à faire des calculs, mais sur la capacité à stocker des données. Ainsi, au lieu d’allouer de la puissance de CPU ou de GPU, il faut allouer de l’espace de stockage. L’avantage est qu’il est moins consommateur en énergie, pour un résultat normalement similaire.

Autres méthodes

Je vous ai mis les principales méthodes, mais il en existe beaucoup d’autres. La plupart dérive de l’un ou l’autre des modèles. Je vous invite à en découvrir plus sur le site cryptoast ou sur briefcrypto.