Consensus :

« Procédure qui consiste à dégager un accord sans procéder à un vote formel, ce qui évite de faire apparaître les objections et les abstentions »  Définition Larousse 2018

Trouver un accord commun entre tous ses acteurs, c’est l’un des intérêts majeurs de la BlockChain, car l’idée fondamentale de celle-ci, et qui va avec la décentralisation, c’est l’absence de toute autorité de contrôle qui veillerait à ce que chaque utilisateur respecte le protocole de la BlockChain en question. Concrètement, il faut s’assurer que chaque acteur de la BlockChain ait la garantie d’avoir la même information, en toute transparence, et de façon instantanée à la moindre modification de la BlockChain, ou encore que le registre reflétant l’état de la BlockChain (plus connu sous le nom de Ledger) soit identique pour tous et à tout moment.

Concrètement comment met-on en place un tel mécanisme sans autorité de contrôle ?

L’exemple du BitCoin : Le Proof-of-Work

L’algorithme de consensus implémenté dans la BlockChain BitCoin est intéressant à noter car il s’agit du premier et sûrement du plus connu : le Proof-Of-Work (ou PoW).

Reprenons le fonctionnement de base de la  BlockChain :

Imaginons qu’un premier acteur, que l’on va nommer Pierre, veuille envoyer une unité de Bitcoin à Chloé, un second acteur, via la BlockChain. Il envoie son Bitcoin, que Chloé reçoit dans les 10 minutes qui suivent. Pendant ces 10 minutes, entre l’envoi et la réception du Bitcoin, tout le mécanisme de consensus s’est mis en place pour procéder et valider cet envoi.

Voici les règles du consensus :

1- Pierre appuie sur le bouton « envoyer » à l’adresse numérique de Chloé

2- La transaction transitant via la BlockChain, une transaction est générée et est prête à être enregistrée sous forme de blocs à la suite des précédents blocs de transactions dans la Blockchain. Afin de générer le bloc qui représentera la transaction effectuée, une compétition est instaurée entre « mineurs », qui sont des ordinateurs qui puisent dans leur puissance de calcul pour résoudre une équation mathématique. Cette étape prend un certain temps, le temps que les mineurs trouvent la solution de cette équation à très grande complexité .

3- Une fois la solution trouvée, un bloc est généré et contient : une référence vers le bloc précédent, un horodatage du bloc lors de sa création (Timestamp dans le schéma ci-dessous), une structure complexe d’arbre de Merkel contenant l’ensemble des transactions que stocke le bloc (Tx_root) et un nombre aléatoire appelé nonce, spécifique au bloc ainsi qu’au résultat du Proof-Of-Work qui a permis de générer ce bloc. Toutes ces données sont hachées, ou encore cryptographiquement identifiées par l’algorithme de hachage sha-256, puis enfin validées dans la BlockChain.

Structure d’un bloc dans une BlockChain

source : edx.org, course on hyperledger

Une fois le bloc validé et la transaction achevée, Chloé reçoit son unité de Bitcoin. Pendant ce temps, La BlockChain a évolué et s’est vu agrandir d’un bloc (disons le bloc 12 ici), mais n’oublions pas ce que nous avions dit au départ : il faut s’assurer que tous les acteurs aient la même information, et donc que la création du bloc 12 soit transmise à tous les acteurs de la BlockChain !

La règle qui dicte la mise à jour du Ledger est la suivante :

« La chaîne ayant le plus grand nombre de blocs fait foi »

Ici, la chaîne à 12 blocs avec le dernier bloc créé après la transaction entre Pierre et Chloé fait consensus car elle est la plus longue, comparée à la chaîne de 11 blocs précédente. Si Chloé s’assure que la transaction sera bien enregistrée dans un bloc suivi de suffisamment de blocs, elle obtiendra la certitude que cette transaction est bien enregistrée dans la plus longue instance qui a fait l’objet de ce consensus; et qu’elle sera donc conservée. Ainsi, chaque acteur verra sa copie de son registre (ou Ledger) de bloc mettre à jour pour avoir les 12 blocs.

Et voilà, la transaction est passée, et tous les acteurs de la BlockChain détiennent la même information sur l’état de la BlockChain.

Très bien tout ça, mais est-ce qu’une personne peut changer l’état de la BlockChain afin de modifier une transaction, ou pire encore, détruire un bloc afin de masquer l’existence d’une transaction et du coup changer le registre de chacun alors qu’il n’en avait pas le droit ?

Justement, le système de consensus de la BlockChain empêche de tels agissements impropres.

Prenons en exemple Pierre, notre acteur de la transaction précédente, qui veut finalement se rétracter et annuler son envoi de Bitcoin envers Chloé. Il peut tout simplement demander à Chloé d’effectuer une nouvelle transaction et de lui renvoyer le Bitcoin, créant juste une nouvelle transaction mais dans l’autre sens. Mais Pierre peut malicieusement essayer de modifier l’état de la BlockChain et annuler le bloc contenant la transaction, pour ainsi revenir en arrière et récupérer son Bitcoin à l’insu de Chloé. Dans une base de données classique, il s’agirait d’accéder à la base de données contenant la transaction et de la modifier.

Au sens stricte du terme, il est possible de modifier les transactions dans un bloc, mais la difficulté est telle que cela ne représenterait aucun intérêt, car le coût pour modifier le bloc de transaction sera encore plus grand que la transaction elle-même. La seule façon de changer soi-même un bloc serait d’effectuer ce qu’on appelle une « 51% attack », ou encore détenir la majorité de la puissance computationnelle sur le réseau.

Imaginons que Pierre veuille modifier son envoi du Bitcoin envers Chloé, nommé transaction A en transaction A’ et qui annule cet envoi (en rouge sur le dessin ci-dessous). Il devra ainsi modifier l’arbre de Merkel contenant la transaction figée, mais également la référence du bloc 11 située au bloc 12 (en rouge également), qui est désormais modifiée, et par cascade la référence du bloc 12 située au bloc 13, puis 14, et ainsi de suite. Pierre devra régénérer seul avec sa puissance computationnelle l’ensemble des blocs suivant le 11, sachant que tous ces blocs sont désormais créés non par un, mais par ce qu’on appelle un « pool » de mineurs, à savoir une agrégation d’ordinateurs qui travaillent sans-cesse à la résolution du Proof-Of-Work à difficulté croissante pour générer des blocs. A lui seul, il devra effectuer le travail de plusieurs milliers d’ordinateurs, ne pourra donc pas modifier de sitôt son bloc 11, car au moment où vous lisez ces lignes, un bloc 15 a été généré, et devra être modifié également ! Ainsi, tant que tous les blocs ne sont pas modifiés, les transactions ne seront pas validées car elles seront non conformes au protocole BitCoin.

source : edx.org, course on hyperledger

Pierre n’aura pas d’autres alternatives que de demander à Chloé de lui renvoyer son Bitcoin via une transaction dans l’autre sens, car le consensus de la BlockChain ne lui donne pas d’autre choix.

Le Proof-of-Work du Bitcoin détermine ainsi l’évolution de la BlockChain en assurant une uniformité des informations auprès de tous les acteurs de la BlockChain mais également une sécurité en terme d’intégrité des données.

D’autres algorithmes de consensus existent, comme le Proof-Of-Stake, utilisé dans la BlockChain Ethereum et qui se base sur d’autres critères, mais toujours dans le but d’atteindre un consensus sur le réseau.

Mais chaque BlockChain peut-elle vraiment se passer totalement de toute intervention humaine en cas d’événements majeurs ? En 2016, afin d’empêcher un utilisateur de retirer des crypto-actifs subtilisés via une faille sur un site web, les fondateurs de la BlockChain Ethereum ont décidé de mettre à jour directement la BlockChain via ce qu’on appelle un « fork », qui modifie certaines transactions dans des blocs. Ce forçage montre bien qu’il est nécessaire d’avoir une autorité supérieure en cas de force majeure, et que le consensus ne peut pas toujours s’appliquer dans toutes les situations.

Catégories : Blockchain

0 commentaire

Laisser un commentaire

Avatar placeholder

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Le mécanisme de consensus dans la BlockChain

par Emmanuel M.F temps de lecture : 6 min
0