Introduction
Un algorithme de consensus est un mécanisme qui permet aux utilisateurs ou aux machines de se coordonner dans un environnement distribué. Il doit garantir que tous les agents du système peuvent s’entendre sur une source unique de vérité, même si certains d’entre eux échouent. En d’autres termes, le système doit être tolérant aux pannes (voir aussi : Explication de la tolérance aux pannes byzantine).
Dans une configuration centralisée, une seule entité a le pouvoir sur le système. Dans la plupart des cas, ils peuvent apporter les modifications à leur guise – il n’existe pas de système de gouvernance complexe permettant de parvenir à un consensus entre de nombreux administrateurs.
Mais dans une configuration décentralisée, c’est une toute autre histoire. Supposons que nous travaillions avec une base de données distribuée : comment pouvons-nous parvenir à un accord sur les entrées à ajouter ?
Relever ce défi dans un environnement où les étrangers ne se font pas confiance a peut-être été le développement le plus crucial ouvrant la voie aux blockchains. Dans cet article, nous verrons comment les algorithmes de consensus sont essentiels au fonctionnement des crypto-monnaies et des registres distribués.
Algorithmes de consensus et crypto-monnaie
Dans les crypto-monnaies, les soldes des utilisateurs sont enregistrés dans une base de données – la blockchain. Il est essentiel que tout le monde (ou plus précisément chaque nœud) conserve une copie identique de la base de données. Sinon, vous vous retrouverez bientôt avec des informations contradictoires, compromettant ainsi l’objectif même du réseau de crypto-monnaie.
La cryptographie à clé publique garantit que les utilisateurs ne peuvent pas dépenser les pièces les uns des autres. Mais il reste encore besoin d’une source unique de vérité sur laquelle s’appuient les participants au réseau pour pouvoir déterminer si les fonds ont déjà été dépensés.
Satoshi Nakamoto, le créateur de Bitcoin, a proposé un système de preuve de travail pour coordonner les participants. Nous verrons bientôt comment fonctionne PoW – pour l’instant, nous identifierons certains des traits communs des nombreux algorithmes de consensus existants.
Premièrement, nous exigeons que les utilisateurs qui souhaitent ajouter des blocs (nous les appellerons validateurs) fournissent une mise. L’enjeu est une sorte de valeur qu’un validateur doit mettre en avant, ce qui le décourage d’agir de manière malhonnête. S’ils trichent, ils perdront leur mise. Les exemples incluent la puissance de calcul, la crypto-monnaie ou même la réputation.
Pourquoi prendraient-ils la peine de risquer leurs propres ressources ? Eh bien, il y a aussi une récompense disponible. Il s’agit généralement de la crypto-monnaie native du protocole et des frais payés par d’autres utilisateurs, d’unités de crypto-monnaie récemment générées, ou des deux.
La dernière chose dont nous avons besoin est de transparence. Nous devons être capables de détecter quand quelqu’un triche. Idéalement, il devrait être coûteux pour eux de produire des blocs, mais peu coûteux pour quiconque de les valider. Cela garantit que les validateurs sont contrôlés par les utilisateurs réguliers.
Types d’algorithmes de consensus
Preuve de travail (PoW)
Proof of Work (PoW) est le parrain des algorithmes de consensus blockchain. Il a été implémenté pour la première fois dans Bitcoin, mais le concept réel existe depuis un certain temps. Dans Proof of Work, les validateurs (appelés mineurs) hachent les données qu'ils souhaitent ajouter jusqu'à ce qu'ils produisent une solution spécifique.
Un hachage est une chaîne apparemment aléatoire de lettres et de chiffres créée lorsque vous exécutez des données via une fonction de hachage. Mais si vous exécutez à nouveau les mêmes données, vous obtiendrez toujours le même résultat. Cependant, changez ne serait-ce qu'un détail et votre hachage sera complètement différent.
En regardant le résultat, vous ne pouvez pas savoir quelles informations ont été introduites dans la fonction. Ils sont donc utiles pour prouver que vous connaissiez une donnée avant un certain temps. Vous pouvez donner son hachage à quelqu'un, et lorsque vous révélerez les données plus tard, cette personne pourra l'exécuter via la fonction pour s'assurer que le résultat est le même.
Dans Proof of Work, le protocole définit les conditions qui rendent un bloc valide. Il pourrait par exemple dire que seul un bloc dont le hachage commence par 00 sera valide. La seule façon pour le mineur d’en créer une qui correspond à cette combinaison est d’effectuer des entrées par force brute. Ils peuvent modifier un paramètre de leurs données pour produire un résultat différent pour chaque supposition jusqu'à ce qu'ils obtiennent le bon hachage.
Avec les grandes blockchains, la barre est incroyablement haute. Pour rivaliser avec d'autres mineurs, vous auriez besoin d'un entrepôt rempli de matériel de hachage spécial (ASIC) pour avoir une chance de produire un bloc valide.
Votre enjeu, lors du minage, est le coût de ces machines et l’électricité nécessaire à leur fonctionnement. Les ASIC sont conçus dans un seul but, ils n’ont donc aucune utilité dans des applications en dehors du minage de crypto-monnaie. Votre seul moyen de récupérer votre investissement initial est d’exploiter, ce qui rapporte une récompense importante si vous réussissez à ajouter un nouveau bloc à la blockchain.
Il est trivial pour le réseau de vérifier que vous avez bien créé le bon bloc. Même si vous avez essayé des milliards de combinaisons pour obtenir le bon hachage, il vous suffit d’exécuter vos données via une fonction une seule fois. Si vos données produisent un hachage valide, celui-ci sera accepté et vous recevrez une récompense. Sinon, le réseau le rejettera et vous perdrez du temps et de l’électricité pour rien.
Preuve de participation (PoS)
La preuve de participation (PoS) a été proposée au début du Bitcoin comme alternative à la preuve de travail. Dans un système PoS, il n’y a pas de concept de mineurs, de matériel spécialisé ou de consommation d’énergie massive. Tout ce dont vous avez besoin est un PC classique.
Enfin, pas tous. Encore faut-il mettre un peu de peau dans le jeu. Dans le PoS, vous ne proposez pas une ressource externe (comme l’électricité ou le matériel), mais une ressource interne : la crypto-monnaie. Les règles diffèrent selon chaque protocole, mais vous devez généralement détenir un montant minimum de fonds pour être éligible au staking.
À partir de là, vous verrouillez vos fonds dans un portefeuille (ils ne peuvent pas être déplacés pendant que vous misez). Vous serez généralement d’accord avec d’autres validateurs sur les transactions qui entreront dans le bloc suivant. En un sens, vous pariez sur le bloc qui sera sélectionné, et le protocole en choisira un.
Si votre bloc est sélectionné, vous recevrez une partie des frais de transaction, en fonction de votre mise. Plus vous avez bloqué de fonds, plus vous avez tout à gagner. Mais si vous tentez de tricher en proposant des transactions invalides, vous perdrez une partie (ou la totalité) de votre mise. Nous avons donc un mécanisme similaire à celui du PoW : agir honnêtement est plus rentable que malhonnêtement.
En général, il n’y a pas de pièces fraîchement créées dans le cadre de la récompense des validateurs. La monnaie native de la blockchain doit donc être émise d’une autre manière. Cela peut être fait soit via une distribution initiale (c'est-à-dire une ICO ou une IEO), soit en lançant le protocole avec PoW avant de passer ultérieurement au PoS.
À ce jour, la pure Proof of Stake n’a été réellement déployée que dans des crypto-monnaies plus petites. Par conséquent, il n’est pas clair s’il peut constituer une alternative viable au PoW. Bien que cela semble théoriquement valable, ce sera très différent dans la pratique.
Une fois le PoS déployé sur un réseau ayant une grande valeur, le système devient un terrain de jeu pour la théorie des jeux et les incitations financières. Quiconque ayant le savoir-faire pour « pirater » un système PoS ne le ferait probablement que s’il pouvait en tirer profit. Par conséquent, la seule façon de savoir si cela est réalisable est d’utiliser un réseau réel.
Nous verrons bientôt le PoS testé à grande échelle – Casper sera mis en œuvre dans le cadre d’une série de mises à niveau du réseau Ethereum (collectivement connu sous le nom d’Ethereum 2.0).
Autres algorithmes de consensus
La preuve de travail et la preuve de participation sont les algorithmes de consensus les plus discutés. Mais il en existe une grande variété d’autres, chacun avec ses propres avantages et inconvénients. Consultez les articles suivants :
Preuve de travail retardée expliquée
Explication du consensus sur la preuve de participation louée
Preuve d'autorité expliquée
Preuve de brûlure expliquée
Preuve de participation déléguée expliquée
Le consensus hybride PoW/PoS expliqué
Pensées finales
Les mécanismes permettant de parvenir à un consensus sont essentiels au fonctionnement des systèmes distribués. Beaucoup pensent que la plus grande innovation du Bitcoin a été l’utilisation de la preuve de travail pour permettre aux utilisateurs de se mettre d’accord sur un ensemble de faits partagés.
Les algorithmes de consensus soutiennent aujourd’hui non seulement les systèmes de monnaie numérique, mais aussi 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 différents réseaux existants.
Parmi tous les algorithmes consensuels, la preuve de travail reste l’offre dominante. Une alternative plus fiable et plus sécurisée n’a pas encore été proposée. Cela dit, il y a énormément de recherche et de développement sur le remplacement du PoW, et nous en verrons probablement davantage faire surface dans les années à venir.