Consensus

Bannière Amazon du livre Maîtriser Ethereum

Tout au long de ce livre, nous avons parlé de "règles de consensus" - les règles que tout le monde doit accepter pour que le système fonctionne dans un environnement décentralisé. En informatique, le terme consensus est antérieur aux chaînes de blocs et est lié au problème plus large de la synchronisation de l’état dans les systèmes distribués, de sorte que les différents participants d’un système distribué s’accordent tous (éventuellement) sur un seul état à l’échelle du système. C’est ce qu’on appelle « parvenir à un consensus ».

En ce qui concerne la fonction principale de tenue et de vérification décentralisées des dossiers, il peut devenir problématique de se fier uniquement à la confiance pour s’assurer que les informations dérivées des mises à jour de l’État sont correctes. Ce défi assez général est particulièrement prononcé dans les réseaux décentralisés car il n’y a pas d’entité centrale pour décider de ce qui est vrai. L’absence d’une entité décisionnelle centrale est l’un des principaux attraits des plateformes chaîne de blocs, en raison de la capacité qui en résulte à résister à la censure et au manque de dépendance vis-à-vis de l’autorité pour obtenir l’autorisation d’accéder aux informations. Cependant, ces avantages ont un coût : sans arbitre de confiance, tout désaccord, tromperie ou différence doit être concilié par d’autres moyens. Les algorithmes de consensus sont le mécanisme utilisé pour concilier sécurité et décentralisation.

Dans les chaînes de blocs, le consensus est une propriété essentielle du système. Bref, il y a de l’argent en jeu ! Ainsi, dans le contexte des chaînes de blocs, le consensus consiste à pouvoir arriver à un état commun, tout en maintenant la décentralisation. En d’autres termes, le consensus vise à produire un système de règles strictes sans dirigeants. Il n’y a pas une personne, une organisation ou un groupe "en charge" ; plutôt, le pouvoir et le contrôle sont répartis sur un vaste réseau de participants, dont l’intérêt personnel est servi en suivant les règles et en se comportant honnêtement.

La capacité de parvenir à un consensus sur un réseau distribué, dans des conditions contradictoires, sans centraliser le contrôle est le principe fondamental de toutes les chaînes de blocs publiques ouvertes. Pour relever ce défi et maintenir la propriété précieuse de la décentralisation, la communauté continue d’expérimenter différents modèles de consensus. Ce chapitre explore ces modèles de consensus et leur impact attendu sur les chaînes de blocs de contrats intelligents tels qu’Ethereum.

Note

Alors que les algorithmes de consensus sont une partie importante du fonctionnement des chaînes de blocs, ils fonctionnent à une couche fondamentale, bien en deçà de l’abstraction des contrats intelligents. En d’autres termes, la plupart des détails du consensus sont cachés aux auteurs de contrats intelligents. Vous n’avez pas besoin de savoir comment ils fonctionnent pour utiliser Ethereum, pas plus que vous n’avez besoin de savoir comment fonctionne le routage pour utiliser Internet.

Consensus via une preuve de travail

Le créateur de la chaîne de blocs originale, Bitcoin, a inventé un algorithme de consensus appelé Proof-of-Work (PoW) ou preuve de travail. On peut dire que PoW est l’invention la plus importante qui sous-tend Bitcoin. Le terme familier pour PoW est "minage", ce qui crée un malentendu sur l’objectif principal du consensus. Souvent, les gens supposent que le but de l’exploitation minière est la création d’une nouvelle monnaie, puisque le but de l’exploitation minière dans le monde réel est l’extraction de métaux précieux ou d’autres ressources. Au contraire, le véritable objectif de l’exploitation minière (et de tous les autres modèles de consensus) est de sécuriser la chaîne de blocs, tout en gardant le contrôle du système décentralisé et diffusé entre autant de participants que possible. La récompense de la monnaie nouvellement frappée est une incitation pour ceux qui contribuent à la sécurité du système : un moyen pour une fin. En ce sens, la récompense est le moyen et la sécurité décentralisée est la fin. Dans le consensus PoW, il existe également une "punition" correspondante, qui est le coût de l’énergie nécessaire pour participer à l’exploitation minière. Si les participants ne suivent pas les règles et ne gagnent pas la récompense, ils risquent les fonds qu’ils ont déjà dépensés en électricité pour miner. Ainsi, le consensus PoW est un équilibre prudent entre risque et récompense qui pousse les participants à se comporter honnêtement par intérêt personnel.

Ethereum est actuellement une chaîne de blocs PoW, en ce sens qu’elle utilise un algorithme PoW avec le même système d’incitation de base pour le même objectif de base : sécuriser la chaîne de blocs tout en décentralisant le contrôle. L’algorithme PoW d’Ethereum est légèrement différent de celui de Bitcoin et s’appelle Ethash. Nous examinerons la fonction et les caractéristiques de conception de l’algorithme dans Ethash : l’algorithme de preuve de travail d’Ethereum.

Consensus via preuve d’enjeu (PoS)

Historiquement, la preuve de travail n’était pas le premier algorithme de consensus proposé. Avant l’introduction de la preuve de travail, de nombreux chercheurs avaient proposé des variantes d’algorithmes de consensus basés sur l’enjeu financier, désormais appelés preuve d’enjeu (PoS). À certains égards, la preuve de travail a été inventée comme une alternative à la preuve d’enjeu. Suite au succès de Bitcoin, de nombreuses chaînes de blocs ont émulé la preuve de travail. Pourtant, l’explosion de la recherche sur les algorithmes de consensus a également ressuscité la preuve d’enjeu, faisant progresser considérablement l’état de la technologie. Dès le début, les fondateurs d’Ethereum espéraient éventuellement migrer son algorithme de consensus vers la preuve d’enjeu. En fait, il existe un handicap délibéré sur la preuve de travail d’Ethereum appelée la bombe de difficulté, destinée à rendre progressivement de plus en plus difficile le minage de preuve de travail d’Ethereum, forçant ainsi le passage à la preuve d’enjeu.

Au moment de la publication de ce livre, Ethereum utilise toujours la preuve de travail, mais la recherche en cours vers une alternative de preuve d’enjeu touche à sa fin. L’algorithme PoS prévu par Ethereum s’appelle Casper. L’introduction de Casper en remplacement d’Ethash a été repoussée à plusieurs reprises au cours des deux dernières années, nécessitant des interventions pour désamorcer la bombe de difficulté et repousser l’obsolescence forcée de la preuve de travail.

En général, un algorithme PoS fonctionne comme suit. La chaîne de blocs garde la trace d’un ensemble de validateurs, et toute personne qui détient la cryptomonnaie de base de la chaîne de blocs (dans le cas d’Ethereum, l’ether) peut devenir un validateur en envoyant un type spécial de transaction qui verrouille son ether dans un dépôt. Les validateurs proposent et votent à tour de rôle sur le prochain bloc valide, et le poids du vote de chaque validateur dépend de la taille de son dépôt (c’est-à-dire de sa mise). Il est important de noter qu’un validateur risque de perdre son dépôt si le bloc sur lequel il l’a misé est rejeté par la majorité des validateurs. Inversement, les validateurs gagnent une petite récompense, proportionnelle à leur mise déposée, pour chaque bloc accepté par la majorité. Ainsi, le PoS oblige les validateurs à agir honnêtement et à suivre les règles du consensus, par un système de récompense et de punition. La principale différence entre PoS et PoW est que la punition dans PoS est intrinsèque à la chaîne de blocs (par exemple, perte d’ether en enjeu), alors que dans PoW, la punition est extrinsèque (par exemple, perte de fonds dépensés en électricité).

Ethash : l’algorithme de preuve de travail d’Ethereum

Ethash est l’algorithme Ethereum PoW. Il utilise une évolution de l’algorithme Dagger-Hashimoto, qui est une combinaison de l’algorithme Dagger de Vitalik Buterin et de l’algorithme Hashimoto de Thaddeus Dryja. Ethash dépend de la génération et de l’analyse d’un grand ensemble de données, connu sous le nom de graphe acyclique dirigé (ou, plus simplement, « le DAG »). Le DAG avait une taille initiale d’environ 1 Go et continuera à croître lentement et linéairement, étant mis à jour une fois par époque (30 000 blocs, soit environ 125 heures).

Le but du DAG est de rendre l’algorithme Ethash PoW dépendant du maintien d’une grande structure de données fréquemment consultée. Cette dernière à son tour est destiné à rendre Ethash "résistant aux ASIC", ce qui signifie qu’il est plus difficile de fabriquer des équipements d’exploitation de circuits intégrés spécifiques à l’application (ASIC) qui sont des ordres de grandeur plus rapides qu’une unité de traitement graphique (GPU) rapide. Les fondateurs d’Ethereum voulaient éviter la centralisation dans l’exploitation minière PoW, où ceux qui avaient accès à des usines de fabrication de silicium spécialisées et à de gros budgets pourraient dominer l’infrastructure minière et compromettre la sécurité de l’algorithme de consensus.

L’utilisation de GPU grand public pour effectuer le PoW sur le réseau Ethereum signifie que davantage de personnes dans le monde peuvent participer au processus de minage. Plus il y a de mineurs indépendants, plus la puissance minière est décentralisée, ce qui signifie que nous pouvons éviter une situation comme dans Bitcoin, où une grande partie de la puissance minière est concentrée entre les mains de quelques grandes exploitations minières industrielles. L’inconvénient de l’utilisation des GPU pour l’exploitation minière est qu’elle a précipité une pénurie mondiale de GPU en 2017, provoquant une montée en flèche de leur prix et un tollé des joueurs. Cela a conduit à des restrictions d’achat chez les détaillants, limitant les acheteurs à un ou deux GPU par client.

Jusqu’à récemment, la menace des mineurs ASIC sur le réseau Ethereum était largement inexistante. L’utilisation d’ASIC pour Ethereum nécessite la conception, la fabrication et la distribution de matériel hautement personnalisé. Leur production nécessite un investissement considérable en temps et en argent. Les plans exprimés de longue date par les développeurs d’Ethereum de passer à un algorithme de consensus PoS ont probablement empêché les fournisseurs d’ASIC de cibler le réseau Ethereum pendant longtemps. Dès qu’Ethereum passera au PoS, les ASIC conçus pour l’algorithme PoW seront rendus inutiles, c’est-à-dire à moins que les mineurs ne puissent les utiliser pour exploiter d’autres crypto-monnaies à la place. Cette dernière possibilité est désormais une réalité avec une gamme d’autres pièces de consensus basées sur Ethash disponibles, telles que PIRL et Ubiq, et Ethereum Classic s’est engagé à rester une chaîne de blocs PoW dans un avenir prévisible. Cela signifie que nous verrons probablement l’exploitation minière ASIC commencer à devenir une force sur le réseau Ethereum alors qu’il fonctionne toujours sur le consensus PoW.

Casper : l’algorithme de preuve de participation d’Ethereum

Casper est le nom proposé pour l’algorithme de consensus PoS d’Ethereum. Il est toujours en recherche et développement actif et n’est pas implémenté sur la chaîne de blocs Ethereum au moment de la publication de ce livre. Casper est développé en deux "saveurs" concurrentes :

  • Casper FFG: "The Friendly Finality Gadget"

  • Casper CBC: "The Friendly GHOST/Correct-by-Construction"

Initialement, Casper FFG a été proposé comme un algorithme hybride PoW/PoS à implémenter comme une transition vers un algorithme "pur PoS" plus permanent. Mais en juin 2018, Vitalik Buterin, qui dirigeait les travaux de recherche sur Casper FFG, a décidé de "mettre fin" au modèle hybride au profit d’un algorithme PoS pur. Désormais, Casper FFG et Casper CBC sont développés en parallèle. Comme l’explique Vitalik :

Le principal compromis entre FFG et CBC est que CBC semble avoir de meilleures propriétés théoriques, mais FFG semble être plus facile à mettre en œuvre.

Plus d’informations sur l’histoire de Casper, les recherches en cours et les plans futurs peuvent être trouvées sur les liens suivants :

Principes de Consensus

Les principes et hypothèses des algorithmes de consensus peuvent être mieux compris en posant quelques questions clés :

  • Qui peut changer le passé, et comment ? (Ceci est également connu sous le nom d'immutabilité.)

  • Qui peut changer le futur, et comment ? (Ceci est également connu sous le nom de finalité.)

  • Quel est le coût pour effectuer de tels changements ?

  • Dans quelle mesure le pouvoir d’apporter de tels changements est-il décentralisé ?

  • Qui saura si quelque chose a changé, et comment le saura-t-il ?

Les algorithmes de consensus évoluent rapidement, tentant de répondre à ces questions de manière de plus en plus innovante.

Controverse et Compétition

À ce stade, vous vous demandez peut-être : pourquoi avons-nous besoin d’autant d’algorithmes de consensus différents ? Laquelle fonctionne mieux ? La réponse à cette dernière question est au centre du domaine de recherche le plus passionnant sur les systèmes distribués de la dernière décennie. Tout se résume à ce que vous considérez comme "meilleur" - ce qui, dans le contexte de l’informatique, concerne les hypothèses, les objectifs et les compromis inévitables.

Il est probable qu’aucun algorithme ne puisse optimiser toutes les dimensions du problème du consensus décentralisé. Lorsque quelqu’un suggère qu’un algorithme de consensus est "meilleur" que les autres, vous devriez commencer à poser des questions qui clarifient : mieux en quoi ? Immutabilité, finalité, décentralisation, coût ? Il n’y a pas de réponse claire à ces questions, du moins pas encore. De plus, la conception d’algorithmes de consensus est au centre d’une industrie de plusieurs milliards de dollars et génère d’énormes controverses et des arguments passionnés. En fin de compte, il se peut qu’il n’y ait pas de réponse "correcte", tout comme il peut y avoir des réponses différentes pour différentes applications.

L’ensemble de l’industrie de la chaîne de blocs est une expérience géante où ces questions seront testées dans des conditions contradictoires, avec une énorme valeur monétaire en jeu. En fin de compte, l’histoire répondra à la controverse.

Conclusion

L’algorithme de consensus d’Ethereum est toujours en évolution au moment de l’achèvement de ce livre. Dans une future édition, nous ajouterons probablement plus de détails sur Casper et d’autres technologies connexes à mesure qu’elles mûriront et seront déployées sur Ethereum. Ce chapitre représente la fin de notre voyage, complétant Maîtriser Ethereum. Des documents de référence supplémentaires suivent dans les annexes. Merci d’avoir lu ce livre et félicitations pour avoir atteint la fin !