Pour une poignée de bitcoins : la validation des transactions sur une blockchain… (1/2)

Léo Denis
Jul 31, 2017 · 9 min read

Note : Cet article est très théorique et donc assez long. Cependant il vous permettra de comprendre le protocole de validation des transactions sur une blockchain, ce qui est absolument indispensable si vous vous intéressez au sujet et souhaitez comprendre tous les débats actuels en lien avec les cryptomonnaies et la blockchain.

Il y a une chose que nous avons volontairement omis dans notre premier article de vulgarisation sur la blockchain : cette technologie est en réalité un réseau Peer-to-Peer apportant une solution au “problème des généraux byzantins”.

Concrètement : comment être sûr que l’information transmise est vraie, sans nécessairement faire confiance à celui qui la transmet ?

On s’intéresse donc aujourd’hui au procédé technique qui permet de certifier la validité d’une transaction (que ce soit un échange de monnaie, de données, d’informations…) et de les enregistrer sans passer par un tiers de confiance, puisque c’est le principe même de la blockchain.

Introduction : la fonction de Hachage

Cette introduction sera courte mais essentielle pour comprendre le déroulement d’une transaction.

Une fonction de hachage cryptographique (Hash function en anglais) est une fonction qui, à une donnée de taille arbitraire, associe une image de taille fixe, et dont une propriété essentielle est qu’elle est pratiquement impossible à inverser, c’est-à-dire que si l’image d’une donnée par la fonction se calcule très efficacement, le calcul inverse d’une donnée d’entrée ayant pour image une certaine valeur se révèle impossible sur le plan pratique. Pour cette raison, on dit d’une telle fonction qu’elle est à sens unique. (Wikipédia)

Si la donnée entrée change d’un caractère, alors l’image est totalement différente.

On renseignera les différentes étapes de la “validation” d’une transaction et nous expliquerons pourquoi ces étapes sont nécessaires.

Supposons que A veuille transférer une certaine somme de monnaie cryptographique nommée Futurscoin à B.

L’émission de la transaction

  • A initie une transaction vers B, en certifiant son identité grâce à un système de signature numérique. La transaction acquiert aussi une empreinte numérique qui lui est propre.
  • B vérifie que c’est bien A qui a envoyé le message grâce à cette même signature, et demande au réseau (à ce que l’on appelle des pairs choisis aléatoirement) si la transaction initiée par A est bien valide.

La transaction devient alors “éligible” (ou valide) et rentre dans ce qu’on appelle “pending pool”, ie une liste de transactions en attente d’être enregistrées dans un bloc.

Grâce au système de “Merkle Tree” (en savoir plus ici), il est impossible de modifier une transaction dans cette liste sans que ce soit détecté directement par tous les noeuds.

Cette liste de transactions en attente est diffusée dans tout le réseau. Ainsi chaque noeud du réseau possède une liste locale de transactions en attente.

La constitution d’un bloc

Un bloc est constitué d’un en-tête et de la liste de transactions (le merkle root) qu’il contient (entre autres). Dans l’en-tête, plusieurs informations sont renseignées : la version du bloc (les règles qui le définissent), l’identifiant (ou Hash) du bloc précédent, la date et la difficulté de réaliser la preuve de travail.

Le bloc est validé et ajouté à la blockchain seulement si il est associé à une preuve de travail.

On parle de preuve de travail là, mais qu’est-ce que c’est et à quoi ça sert ?

La validation d’un bloc

Un noeud voulant ajouter un bloc à la chaîne sélectionne donc une partie de sa liste de transactions en attente locale pour l’incorporer dans un bloc.

Il existe en revanche une limite : on ne peut pas intégrer un nombre infini de transactions dans un bloc.

Chaque noeud peut donc obtenir un bloc différent mais un seul parviendra à valider son bloc : celui qui apportera sa preuve de travail en premier.

Une fois qu’il a son bloc, il ne peut pas le valider (l’envoyer sur la blockchain) en un claquement de doigts…

Si tel était le cas, le nombre de blocs à ajouter en même temps serait bien trop élevé : on ne peut ajouter qu’un bloc à la fois.

Il faut par ailleurs que les mineurs s’accordent sur le bloc à ajouter.

C’est donc le noeud qui fournira une preuve de travail en premier qui validera son bloc.

Cette preuve de travail, c’est la résolution d’une équation très compliquée.

Not really…

Il résout donc une équation complexe comprenant plusieurs variables dont l’identifiant du bloc précédent et l’identifiant de la liste de transaction comprise dans le bloc.

Le seul moyen de la résoudre est de tester comme un bourrin les différentes possibilités jusqu’à tomber sur une solution. Il utilise donc une partie de sa puissance de calcul informatique pour réaliser cette tâche.

C’est donc un problème difficile à résoudre mais il est simple de vérifier que la solution donnée est bonne : il suffit de vérifier que l’égalité est vérifiée en remplaçant l’inconnue par la solution proposée.

L’identifiant (ou hash) du bloc sera donc f(H,T,N), avec N une solution valide.

Lorsqu’un noeud trouve la solution, il la communique à l’ensemble du réseau qui vérifie sa réponse. Si elle est correcte, alors toutes les copies de la blockchain sont mises à jour avec ce nouveau bloc.

Et ainsi de suite : chaque mineur reprend une nouvelle liste de transactions et tente de valider un nouveau bloc en fournissant sa preuve de travail.

Il y a donc une réelle compétition entre les membres du réseau : à chaque fois qu’un bloc est validé, ils recommencent tous à zéro sur un nouveau bloc.

Cependant pourquoi les noeuds supporteraient-ils des coûts (électricité, puissance informatique..) pour valider les transactions et ainsi faire marcher le réseau ? Une seule raison, pour une poignée de dollars…

Les noeuds parvenant à valider des blocs génèrent une certaine somme de futurscoins qui leur revient.

C’est pour cela que l’on appelle les noeuds qui valident les blocs les “mineurs” en référence aux mineurs de la ruée vers l’or qui minaient le métal pour s’enrichir et venaient en réalité augmenter la masse monétaire existante.

Les mineurs sont donc incités à valider des blocs de transactions car ils sont rémunérés pour cette action.

Une question devrait vous venir à l’esprit : et si DEUX mineurs tombent sur la solution en même temps ie valident chacun leur bloc simultanément, comment est-ce régulé dans le réseau ?

Les bifurcations de chaîne, ou “forks” : la théorie des six blocs

Si vous avez déjà passé des transaction à l’aide de monnaies cryptographiques, vous savez qu’il faut attendre (en moyenne) que six blocs soient validés après l’enregistrement de votre transaction pour la considérer effectuée. Mais savez-vous pourquoi ?

Il est possible que deux mineurs valident leur bloc en même temps. Ainsi, les deux seront considérés comme valides dans la blockchain, et la règle d’or s’appliquera.

Règle d’or : c’est toujours la chaîne la plus longue qui sera finalement validée.

Exemple de bifurcation

Ici, la chaîne verte est finalement devenue plus courte que la bleue. C’est donc la chaîne bleue qui a été incorporée dans la blockchain, les blocs (et donc les transactions) de la chaîne vertes étant invalidés.

Ainsi il est possible, si le bloc dans lequel se trouve votre transaction fait partie d’une bifurcation, qu’elle soit enregistrée à un moment donné puis invalidée après : par exemple si votre transaction se trouvait dans le bloc 92bis.

Cela signifie que votre bloc se trouvait dans la chaîne devenue la plus courte.

C’est pour cette raison qu’il est conseillé d’attendre six blocs après celui où le paiement a été enregistré pour le considérer comme effectif.

Et voilà, la transaction de A a bien été enregistrée dans la blockchain, et les futurscoins sont passés de A à B.

Résumons les différentes étapes :

  • Émission de la transaction par A avec sa signature numérique
  • Vérification de la validité de la transaction de A par un pair du réseau (fonds disponibles, vérification de l’identité)
  • Transaction de A en attente d’être enregistrée
  • Transaction de A enregistrée dans un bloc par un mineur (preuve de travail etc..) → Création de nouveaux Futurscoins revenant au mineur
  • Attente de B de la validation de six blocs pour être sûr que la transaction est enregistrée dans la blockchain et qu’elle ne sera pas invalidée par la suite

Non… Fermez cet onglet sur les meilleurs techniques de minage de bitcoins... Quoi ? 33 000$ c’est pas rien ? Et vous pensiez être les premiers à le comprendre…

Les pools de mineurs, fermes à bitcoins et attaques contre le réseau

Aujourd’hui il existe de grandes usines à bitcoins, qui ont à peu près cette tête là :

Une usine à bitcoins en Chine

Ou encore des coopérations de mineurs (pools) qui centralisent leur puissance de calcul. Autant vous dire que la probabilité que vous miniez un bloc avec votre petit laptop aussi puissant soit-il, est très très faible voire nulle.

Le problème, c’est que que cela pourrait rendre certaines attaques possibles contre le réseau, voire même instaurer une certaine forme d’autorité centrale, ce qui est contraire au principe même de la blockchain.

Alexandre Capetta, Fondateur de la communauté “La Baleine

A suivre…

Futurs.io

Thoughts about innovation & its social impact, by…

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store