Introduction

Un algorithme de consensus est un mécanisme par lequel les utilisateurs et les programmes peuvent coordonner leurs actions dans un réseau distribué. Il garantit que tous les participants au réseau parviennent à un accord sur l'état actuel des données, même en cas de défaillance de certains nœuds. En d’autres termes, le consensus aide à maintenir la résilience du système (pour en savoir plus, consultez Explication des missions des généraux byzantins).

Dans une structure centralisée, une entité a le pouvoir sur l’ensemble du système. Dans la plupart des cas, ces organismes ont le pouvoir d’apporter les changements qu’ils jugent opportuns : il n’existe pas de système de gouvernance complexe permettant de parvenir à un consensus entre plusieurs administrateurs.

Dans un environnement décentralisé, le mécanisme de fonctionnement est complètement différent. Par exemple, si nous parlons d'une base de données distribuée, comment pouvons-nous obtenir le consentement de tous les participants du réseau concernant les données qui peuvent être ajoutées au réseau ?

Parvenir à un consensus dans un environnement où les parties ne peuvent pas se faire confiance a été l’un des développements les plus importants du secteur, qui a ouvert la voie à l’émergence des blockchains. Dans cet article, nous examinerons l’importance des algorithmes de consensus pour le bon fonctionnement des cryptomonnaies et des registres distribués.


Algorithmes de consensus et crypto-monnaie

Dans les réseaux de crypto-monnaie, les soldes des utilisateurs sont enregistrés dans une base de données - la blockchain. Chaque utilisateur (nœud) doit posséder une copie identique de la base de données. Sinon, les informations varieront, ce qui violera les principes de fiabilité et d'ouverture de l'ensemble du réseau de crypto-monnaie.

La cryptographie à clé publique garantit que les personnes non autorisées ne peuvent pas accéder à vos pièces. Cependant, les utilisateurs ont également besoin d’un moyen fiable de vérifier si les fonds ont été dépensés ou non.

Satoshi Nakamoto, le créateur de Bitcoin, a proposé le système Proof of Work pour coordonner les utilisateurs du réseau. Nous verrons ensuite comment fonctionne PoW, mais nous identifierons d’abord les caractéristiques communes de la plupart des algorithmes de consensus existants.

La première est l'obligation pour les utilisateurs qui souhaitent ajouter des blocs (nous les appellerons validateurs) de fournir une sorte de participation en retour. Une action ou une mise est une certaine valeur qu'un validateur doit mettre en avant comme garantie d'un travail honnête : si les validateurs tentent de tromper le système, ils perdront leur part. La part peut être de la puissance de calcul, de la cryptomonnaie ou de la réputation. 

Vous pouvez vous poser une question logique : pourquoi risqueraient-ils leurs propres ressources ? Le fait est qu'il existe ici un système spécial de récompense pour le travail. En règle générale, les récompenses sont émises sous la forme de jetons de protocole natifs, et les fonds correspondants proviennent des frais d'utilisation et de la cryptomonnaie nouvellement créée, ou parfois des deux.

Une autre caractéristique importante est la transparence permettant d'identifier les activités frauduleuses. La production de blocs devrait être coûteuse et la vérification du travail effectué devrait être bon marché et accessible aux utilisateurs ordinaires. Ainsi, n’importe qui peut vérifier et surveiller le travail des validateurs.


Types d'algorithmes de consensus

Preuve de travail (PoW)

La preuve de travail (PoW) est devenue l’ancêtre de tous les autres algorithmes de consensus sur la blockchain. Il a été implémenté pour la première fois dans Bitcoin, mais le concept lui-même est apparu bien avant. Dans Proof of Work, les validateurs (appelés mineurs) hachent les données qu'ils souhaitent ajouter jusqu'à ce qu'ils obtiennent une solution appropriée à un casse-tête cryptographique.

Un hachage est un ensemble aléatoire de lettres et de chiffres créé lorsque les données sont traitées via une fonction de hachage. Si vous hachez à nouveau les mêmes données, vous obtiendrez le même résultat, mais si vous modifiez ne serait-ce qu'une seule valeur, le hachage deviendra complètement différent.

En regardant le résultat, vous ne serez pas en mesure de savoir quelles informations ont été transmises via la fonction. Pour cette raison, les hachages sont parfaits pour prouver quelque chose que vous saviez avant un certain temps. Vous pouvez donner à quelqu'un un tel hachage, puis fournir les informations initiales afin que la personne puisse l'exécuter via la fonction et voir si le résultat correspond.

Dans Proof of Work, le protocole fixe les conditions de confirmation (validation) d'un bloc. Par exemple, vous pouvez définir que seul le bloc dont le hachage commence par 00 sera valide. La seule façon pour un mineur de créer un bloc valide est de simplement parcourir les données d'entrée. Les validateurs configurent le programme pour produire des résultats différents à chaque fois qu'il est haché jusqu'à ce que le hachage correct soit généré. 

Dans les grandes blockchains, il est extrêmement difficile de trouver un hachage adapté : vous aurez besoin de tout un entrepôt d'équipements spéciaux pour hacher une grande quantité de données (avec des unités de type ASIC) afin d'être compétitif et de pouvoir créer un bloc valide.

Dans le secteur minier, l'enjeu réside dans le coût de ces équipements et dans l'électricité dépensée pour les travaux. Le matériel de type ASIC (Specific Purpose Integrated Circuit) est conçu pour une seule tâche, il ne peut donc pas être utilisé pour autre chose que le minage de cryptomonnaie. La seule façon de récupérer l’investissement initial consiste à exploiter et à récompenser un bloc ajouté avec succès.

Pour le réseau, il suffit de s’assurer que vous avez bien créé le bon bloc. Même si vos ASIC ont effectué des milliards de combinaisons pour obtenir le hachage correct, pour vérifier son exactitude, il suffit de transmettre les données une fois via la fonction. Si vos données produisent un hachage valide, le bloc sera accepté comme valide par le réseau et vous recevrez une récompense. Sinon, le réseau rejette votre demande d'ajout de bloc et vous pourrez dire que vous avez perdu du temps et de l'électricité.


Preuve de participation (PoS)

La preuve de participation (PoS) est apparue au début du Bitcoin comme alternative à la preuve de travail. Le système PoS ne nécessite pas la participation de mineurs, l'utilisation d'équipements spéciaux ou une consommation massive d'électricité - un ordinateur personnel ordinaire suffira.

De plus, vous devrez apporter votre propre contribution. Le PoS n'utilise pas une ressource externe (électricité ou équipement), mais une ressource interne : la crypto-monnaie. Les exigences peuvent varier selon les protocoles, mais il existe généralement un montant minimum de fonds qui accorde au propriétaire le droit de miser.

Pendant la période de staking, les fonds sont bloqués dans le portefeuille (ils ne peuvent pas être déplacés pendant le staking). Dans la plupart des cas, vous êtes d'accord avec d'autres validateurs concernant les transactions qui passeront dans le bloc suivant. Dans un sens, les validateurs enchérissent sur le bloc qu’ils souhaitent ajouter à la blockchain, mais le droit de choisir le bloc appartient au protocole.

Les validateurs dont le bloc est sélectionné recevront une partie des frais de transaction en fonction de la taille de leur mise. Plus les fonds du portefeuille sont bloqués, plus la récompense sera importante. Cependant, en tentant de tromper le système et d'ajouter des transactions invalides, les attaquants risquent de perdre une partie (ou la totalité) de leur part. Ainsi, le PoS fonctionne de la même manière que le PoW : agir honnêtement est plus rentable que d’essayer de tromper le système.

Ce mécanisme ne fournit pas de récompenses aux validateurs sous la forme de pièces nouvellement créées. Avec cet algorithme, la monnaie native de la blockchain doit être émise d'une autre manière, par exemple via une offre initiale (ICO ou IEO), ou en lançant le protocole sur PoW puis en passant au PoS.

À ce jour, le Proof of Stake dans sa forme pure n’a été déployé que dans quelques crypto-monnaies avec un réseau relativement petit, c’est pourquoi il est encore difficile de dire avec certitude s’il peut devenir une alternative viable au PoW. Bien que cet algorithme semble théoriquement valable, dans la pratique, tout se passe un peu différemment. 

Une fois que le PoS est déployé au sein d’un réseau doté d’une grande quantité de fonds, les théories des jeux et diverses incitations financières entrent en jeu dans le système. Si quelqu’un veut « pirater » un système PoS, ce sera uniquement avec une garantie de profit, nous ne pouvons donc connaître que la probabilité que cela soit sur le réseau.

Des tests à grande échelle du PoS auront lieu très prochainement : dans le cadre de la mise à jour du réseau Ethereum (également connu sous le nom d'Ethereum 2.0), le protocole Casper sera implémenté.


Autres algorithmes de consensus

La preuve de travail et la preuve de participation sont les algorithmes de consensus dont on parle le plus, mais il en existe bien d’autres qui ont leurs propres avantages et inconvénients. Nous vous recommandons de vous familiariser avec eux plus en détail dans les articles suivants :

  • Preuve de travail différée expliquée

  • Comment fonctionne la preuve de participation louée

  • Explication de la preuve d'autorité

  • Explication des preuves de combustion

  • Clarification de la preuve de participation déléguée

  • Algorithme de consensus hybride


CV

Les mécanismes de consensus sont essentiels au fonctionnement des systèmes distribués. Beaucoup pensent que la plus grande innovation de Bitcoin réside dans l’utilisation de la preuve de travail, qui permet aux utilisateurs de se mettre d’accord sur un ensemble commun de faits.

Les algorithmes de consensus prennent aujourd’hui en charge non seulement les systèmes de monnaie numérique, mais également les blockchains, permettant aux développeurs d’exécuter du code sur un réseau distribué. Ils constituent désormais la pierre angulaire de la technologie blockchain et sont essentiels à la viabilité à long terme des divers réseaux existants.

De tous les algorithmes consensuels, le Proof of Work reste toujours dominant, pour la simple raison qu’aucune alternative plus fiable et plus sécurisée n’a encore été proposée. Cependant, il y a énormément de recherche et de développement pour remplacer le PoW, et nous n’en verrons probablement que davantage.