Qu'est-ce qu'un algorithme de consensus Blockchain ?
Table des matières
Introduction
Algorithmes de consensus et cryptomonnaies
Types d'algorithmes de consensus
Types d'algorithmes de consensus
Pour conclure
Qu'est-ce qu'un algorithme de consensus Blockchain ?
AccueilArticles
Qu'est-ce qu'un algorithme de consensus Blockchain ?

Qu'est-ce qu'un algorithme de consensus Blockchain ?

Débutant
Publié(e) Dec 13, 2018Mis à jour Mar 16, 2022
6m

Introduction

Un algorithme de consensus est un mécanisme permettant aux utilisateurs ou aux machines de se coordonner dans un environnement distribué. Il s'assure que tous les agents du système se mettent d'accord sur une source unique de vérité, même en cas d'échec de certains agents. Autrement dit, le système doit être tolérant aux pannes (voir également : La tolérance aux pannes byzantines expliquée).

Dans un système centralisé, une seule entité alimente et contrôle le réseau. Dans la plupart des cas, l'entité peut apporter des modifications comme bon lui semble – il n'existe pas de système de gouvernance complexe permettant à plusieurs administrateurs de parvenir à un consensus. 

Dans un système décentralisé, c'est une toute autre histoire. Supposons que nous travaillions avec une base de données distribuée – comment faire pour se mettre d'accord sur les données à ajouter ?

Réussir à surmonter ce challenge dans un environnement où les participants ne se font pas confiance a peut-être été le développement le plus crucial qui a ouvert la voie aux blockchains. Dans cet article, nous verrons pourquoi les algorithmes de consensus sont essentiels au fonctionnement des cryptomonnaies et des registres distribués.


Algorithmes de consensus et cryptomonnaies

Dans les cryptomonnaies, les soldes des utilisateurs sont enregistrés dans une base de données – la blockchain. Il est essentiel que tout le monde (chaque nœud pour être précis) conserve une copie identique de la base de données. Sinon, des informations contradictoires risquent de voir le jour, nuisant à l'ensemble du réseau.
La cryptographie à clé publique assure que les utilisateurs ne peuvent pas dépenser les monnaies des autres. Néanmoins, il doit encore y avoir une source unique de vérité sur laquelle se basent les participants au réseau pour déterminer si les fonds ont déjà été dépensés.

Satoshi Nakamoto, le créateur de Bitcoin a proposé le système du Proof of Work pour coordonner les participants. Nous verrons sous peu comment le PoW fonctionne – pour l'instant identifions certains traits communs aux nombreux algorithmes de consensus existants.

Premièrement, nous demandons aux utilisateurs qui veulent ajouter des blocs (nous les appellerons validateurs) de fournir un stake. Le stake est une valeur qu'un validateur doit mettre en gage afin de le dissuader d'agir de manière malveillante. Si ceux-ci trichent, ils perdront leur stake. Par exemple de la puissance de calcul, des cryptomonnaies ou leur réputation. 
Pourquoi risqueraient-ils leurs propres ressources ? Tout simplement parce qu'il y a une récompense en jeu. Celle-ci est généralement une cryptomonnaie native du protocole qui repose sur les frais payés par les utilisateurs, sur des cryptomonnaies fraichement créées ou les deux.
La dernière chose dont nous avons besoin est la transparence. Nous devons pouvoir savoir quand quelqu'un triche. Idéalement, il devrait être coûteux pour eux de produire des blocs, mais bon marché pour quiconque de les valider. Cela garantit que les validateurs sont également contrôlés par les utilisateurs lambdas.


Types d'algorithmes de consensus

Preuve de travail (PoW)

Le Proof of Work (PoW) est le parrain des algorithmes de consensus de blockchain. Il a été implémenté pour la première fois avec Bitcoin, bien que son concept existe depuis longtemps. Dans le Proof of Work, les validateurs (que l'on nomme miners) hachent les données qu'ils veulent ajouter jusqu'à produire une solution spécifique.
Un hachage est une chaine aléatoire de lettres et de chiffres créée lors de l'exécution d'une fonction de hachage. Mais si les données à l'entrée sont identiques, les résultats à la sortie le seront également. Cependant, le moindre changement génèrera un hachage complètement différent.

Les données à la sortie ne permettent pas de déterminer celles à l'entrée. Il s'agit donc d'une fonction très efficace pour prouver que vous connaissiez une donnée depuis un certain temps. Vous pouvez donner son hachage à quelqu'un et lorsque vous révélerez les données, cette personne pourra les exécuter à travers la fonction pour s'assurer que la sortie est identique.

Dans le Proof of Work, le protocole définit les conditions qui rendent un bloc valide. Celui-ci pourra, par exemple, dire que seul un bloc dont le hachage commence par 00 est valide. La seule manière pour un miner de créer un bloc valide est de procéder par force brute. Pour produire un résultat différent jusqu'à trouver le bon, les miners peuvent modifier un paramètre dans leurs données. 

Pour les plus grandes blockchains, le niveau est très très haut. Pour rivaliser avec les autres miners, vous devez disposer d'un entrepôt rempli d'ASIC, un matériel spécifiquement conçu pour augmenter vos chances de produire un bloc valide.

Votre stake, dans le mining, correspond aux coûts de ces machines et à l'électricité nécessaire pour les faire tourner. Les ASIC sont conçus dans le seul but de miner, ils n'ont donc pas d'usages en dehors du minage de cryptomonnaies. La seule façon de récupérer votre investissement initial est de miner et d'obtenir des récompenses en réussissant à ajouter un nouveau bloc à la blockchain.

Il est très simple pour le réseau de vérifier que vous avez créé le bon bloc. Une seule exécution avec la fonction permet de vérifier le fruit de vos nombreux essais. Si vos données produisent un hachage valide, il sera accepté et vous recevrez une récompense. Sinon, le réseau invalidera celui-ci et vous aurez perdu du temps et de l'électricité pour rien.


Preuve d'enjeu (PoS)

Le Proof of Stake (PoS) a été proposé au début du Bitcoin comme une alternative au Proof of Work. Dans le PoS, les concepts de miners, de matériel spécialisé et de consommation massive d'énergie n'existent pas. Il vous suffit d'avoir un ordinateur.
Et un petit quelque chose... Vous devez mettre une pièce dans la machine. Dans le PoS, au lieu d'utiliser une ressource externe (des machines et de l'électricité), vous utiliserez une ressource interne (une cryptomonnaie). Les règles diffèrent en fonction des protocoles, mais vous devrez généralement détenir un montant minimal pour participer au staking.

Vous devrez ensuite verrouiller vos fonds dans un portefeuille (ils ne peuvent pas être déplacés lorsque vous stakez). Vous vous mettrez généralement d'accord avec les autres validateurs sur les transactions qui passeront dans le bloc suivant. Dans un sens, vous pariez sur le bloc qui sera sélectionné et le protocole décide du reste.

Si votre bloc est sélectionné, vous recevrez une partie des frais de transaction, proportionnellement à votre stake. Plus vous verrouillez de fonds, plus vous avez de chances de gagner. Mais si vous essayez de tricher en proposant des transactions non valides, vous perdrez une partie (ou la totalité) de votre stake. Par conséquent, nous avons un mécanisme similaire au PoW – agir honnêtement est plus rentable qu'agir de manière malhonnête.

En général, les monnaies nouvellement créées ne font pas partie des récompenses des validateurs. La monnaie native de la blockchain doit donc être émise d'une manière différente. Cela peut se faire via une distribution initiale (ex. : une ICO ou une IEO) ou par l'utilisation du PoW au début du protocole avant sa transition vers le PoS.

À ce jour, le Proof of Stake pur n'est employé que par des petites cryptomonnaies. Par conséquent, il n'est pas certain qu'il puisse servir d'alternative viable au PoW. Bien que cela semble théoriquement valable, il en sera tout autrement dans la pratique. 

Une fois le PoS déployé sur un réseau avec une grande quantité d'informations, le système devient un terrain parfait pour les incitations financières et la théorie des jeux. Quiconque dispose du savoir-faire nécessaire pour « pirater » un système PoS ne le fera que s'il est possible d'en tirer parti – c'est pourquoi le seul moyen de savoir si c'est possible est de tenter directement sur le réseau.

Nous verrons sous peu des tests à grande échelle du PoS – Casper sera mis en oeuvre dans le cadre d'une série de mises à niveau du réseau Ethereum (également connues sous le nom d'Ethereum 2.0).


Types d'algorithmes de consensus

Le Proof of Work et le Proof of Stake sont les algorithmes de consensus les plus courants. Mais il en existe évidemment de nombreux autres, possédant tous leurs avantages et leurs inconvénients. Consultez les articles suivants :


Pour conclure

Les mécanismes pour obtenir un consensus sont vitaux pour le fonctionnement des systèmes distribués. Nombreux sont ceux estimant que la plus grande innovation du Bitcoin est l'utilisation du Proof of Work pour permettre aux utilisateurs de se mettre d'accord sur un ensemble partagé de faits.

Les algorithmes de consensus sous-tendent aujourd'hui non seulement les systèmes de monnaie numérique, mais aussi les blockchains, qui permettent aux développeurs d'exécuter du code sur un réseau distribué. Ils constituent une pierre angulaire de la technologie blockchain et sont essentiels à la viabilité à long terme des différents réseaux existants.

De tous les algorithmes de consensus, le Proof of Work reste toujours le plus utilisé. En effet, une alternative plus fiable et sécurisée n'a pas encore été proposée. Cela dit, il y a énormément de recherche et de développement pour remplacer le PoW et il est fort probable que nous verrons émerger davantage de consensus dans les années à venir.