Vous connaissez maintenant notre top 10 des altcoins en 2024 et nous commençons à avoir fait le tour de ces cryptomonnaies. Il nous reste cependant un aspect technique important à aborder que nous allons traiter ici : leur mécanisme de consensus.
Si les premiers altcoins reprirent la preuve de travail de Bitcoin, la recherche dans le domaine des registres distribués se montre très prolifique et a donné naissance à de nombreux mécanismes dits « de nouvelle génération ». Dans cet article, nous rappellerons le rôle de ces algorithmes, avant de faire un tour d'horizon de ceux qui existent actuellement et de leurs fonctionnements. Attention, cet article est parfois techniquement complexe : courage aux curieux qui iront jusqu'au bout !
Table des matières
- À quoi servent les algorithmes de consensus ?
- Rappel sur la preuve de travail et la blockchain de Bitcoin
- La preuve d’enjeu
- Les algorithmes BFT/PBFT
- La preuve d’autorité
- La preuve de temps écoulé
- La preuve de capacité
- La preuve de destruction
- La preuve d’identité
- La preuve d’activité
- La preuve d’importance
- La preuve d’histoire
- Le mot de la fin
À quoi servent les algorithmes de consensus ?
Commençons par rappeler quelques bases d’informatique distribuée.
Un protocole de consensus est un mécanisme par lequel les participants à un système peuvent s’accorder sur un état commun, même en présence d’éléments corrompus ou malicieux. Dans le cas des blockchains, il s’agit donc d’un registre. Et dans le cas des cryptomonnaies, ce registre tient à jour l’intégralité des opérations (transactions et calculs) effectuées sur le réseau, et ce depuis sa création.
Obtenir un consensus, c'est-à-dire s'accorder sur l'état du registre, est un problème beaucoup plus difficile à résoudre qu’il ne l’est à énoncer. Il existe différentes méthodes pour trouver un consensus dans un système à plusieurs agents. Chacun de ces protocoles est défini en fonction de la proportion d’agents malicieux ou défaillants qu’il peut tolérer.
Dans le cas d’agents défaillants (par exemple lorsqu’une machine tombe en panne) on parle de crash. Dans le cas d’agents malicieux (par exemple lorsqu’un pirate prend le contrôle d’une machine) on parle de faute byzantine. Cette terminologie nous vient du fameux problème des généraux byzantins : comment traiter une information au sein d’un système où certains agents peuvent être corrompus ?
En algorithmique classique, il est prouvé qu’il est impossible d’obtenir un consensus si plus du tiers des agents du système sont corrompus. En revanche, grâce aux incitations économiques, un réseau de paiement décentralisé comme Bitcoin peut tolérer jusqu’à 50 % d’agents malicieux. C’est là que réside tout le génie de Satoshi Nakamoto : l’utilisation de la preuve de travail pour obtenir un consensus autour des transactions effectuées sur le réseau.
Rappel sur la preuve de travail et la blockchain de Bitcoin
Le principe de la preuve de travail
Pour avoir une vision plus exhaustive du sujet, il nous semble important de faire un petit rappel sur le fonctionnent du mécanisme utilisé par Bitcoin. Ceux d'entre vous pour qui la preuve de travail n'a plus de secret peuvent cependant passer directement aux paragraphes suivants et gagner quelques minutes.
Bitcoin utilise donc la preuve de travail pour obtenir un consensus sur l’état du registre des transactions du réseau. Certains nœuds du système, les mineurs, doivent dépenser des ressources pour trouver, par itérations aléatoires, la solution à un problème informatique. En cas de conflit, si deux solutions valides sont trouvées au même moment, le protocole privilégie celle qui a nécessité le plus de calculs (et donc la plus coûteuse en énergie).
La robustesse du protocole provient du fait qu’il est impossible de trouver une solution valide ayant nécessité plus de travail que la moitié de la puissance de calcul du réseau. C’est-à-dire que si un ou plusieurs agents malicieux tentent de falsifier le registre, il leur faudra produire une preuve de travail plus importante que le reste du réseau, afin que le protocole considère leur registre valide.
Une telle opération est très coûteuse. Grâce aux récompenses qu’alloue le protocole, il est économiquement plus intéressant d’allouer cette énergie à sécuriser le système, plutôt qu’à l’attaquer. Un agent rationnel a donc un intérêt économique à participer au bon maintien du consensus.
Le corollaire de ce jeu d’incitations économiques est que le maintien du système nécessite de fortes dépenses en énergie. Le niveau de sécurité du réseau dépend de la puissance de calcul cumulée par tous les mineurs. Plus la dépense en énergie est grande, plus le système est sécurisé, et plus la valeur des unités de récompense (les bitcoins) augmente.
Les critiques du consensus de Nakamoto
Nous en avons parlé ici, la première critique qui fut énoncée à l’égard du consensus de Nakamoto est d'ailleurs son coût énergétique. Il ne serait pas optimal. Il serait possible de créer des protocoles de consensus moins coûteux en énergie, mais donnant des résultats comparables en termes de robustesse.
Les pionniers des cryptomonnaies s’attelèrent donc à trouver des protocoles de consensus alternatifs, permettant d’améliorer le ratio énergétique d’un tel système. Tout réside dans le fait de trouver une asymétrie entre coût financier d’une attaque et coût de la défense.
L’une des premières idées fut de trouver un mécanisme de validation des transactions ne dépendant non pas de l’énergie dépensée, mais du risque financier pris par les participants au processus. C’est ainsi que naquit la preuve d’enjeu.
La preuve d’enjeu
En 2012, ce sont deux programmeurs en informatique qui proposèrent la première version d’un protocole de consensus basé sur la preuve d’enjeu : Sunny King et Scott Nadal.
On appelle le stake (l’enjeu) la quantité de jetons natifs au protocole qu’un participant au mécanisme de consensus alloue au processus de production des blocs de transactions.
L’algorithme déterministe sélectionne alors les producteurs de blocs (aussi appelés minters) en fonction de la quantité de coins que ces derniers mettent en jeu. Chacun des individus candidats à la production des blocs doivent ainsi mettre sous séquestre leur stake. La probabilité d’être sélectionné par l’algorithme pour produire des blocs est proportionnelle au montant de leur stake.
- La récompense des producteurs de blocs peut être assurée par le protocole via l'inflation monétaire, ou seulement par les frais des transactions du bloc ;
- En revanche, si les producteurs de blocs sont défaillants, corrompus ou tentent de tricher, ils sont punis : tout ou partie de leur stake est détruit (burned).
La première version du Proof-of-Stake fut implémentée sur Peercoin, dont nous avons parlé dans l'article consacré à l’histoire des altcoins. Le protocole de consensus est certes moins consommateur d’énergie, mais il présente d'autres inconvénients.
Les inconvénients et solutions de la preuve d'enjeu
Les inconvénients
Tout d’abord, la distribution initiale des coins est souvent « injuste ». Avec ce modèle, les récompenses de blocs sont réservées aux stakers qui produisent des blocs, ce qui concentre les premiers coins créés entre peu de mains. Cela engendre donc des situations de monopole, où les plus riches s’accaparent la majorité des futurs coins.
Ensuite, tout comme dans le cas de la preuve de travail, il existe un risque d’attaque 51 %, si un staker possède plus de la moitié des coins en circulation.
Enfin, il existe une attaque dite « nothing at stake » : dans le cas où deux stakers peuvent produire un bloc, la blockchain va se séparer en deux (fork). Les autres nœuds vont devoir choisir la chaîne de référence, en signant une des transactions conflictuelles. Étant donné que produire des blocs a un coût extrêmement faible, les producteurs de blocs ont intérêt à signer les blocs des deux chaînes à la fois pour maximiser leurs gains.
Dans le cas où 99 % des nœuds signent les deux chaînes, car leur coût de vérification est nul (nothing at stake), alors un nœud ayant 1 % du stake total pourrait effectuer une double dépense, en payant avec des coins sur l’une des chaînes, mais en vérifiant l’autre :
- L'attaquant commence par créer une chaîne alternative, un bloc avant d'effectuer sa transaction ;
- Il continue ensuite à produire des blocs uniquement sur sa chaîne alternative, tandis que les autres signent les deux forks ;
- Au bout d'un certain temps, la chaîne alternative sera plus longue, même s'il a un stake très faible ;
- Il aura ainsi dépensé ses coins deux fois.
Les solutions
Ces problèmes ont différentes réponses. Dans le cas de Peercoin, le protocole est un modèle hybride où la distribution des coins est assurée par la preuve de travail. Le monopole est évité via un système appelé coin age. L’âge des coins est la durée pendant laquelle ces derniers ont été inactifs. Plus cette durée est longue, et plus les chances de produire un bloc sont élevées.
L'attaque des 51 % est théoriquement possible, mais très coûteuse. Elle aurait pour conséquence une forte dévaluation de l’altcoin, la rendant ainsi irrationnelle pour l’attaquant. Quant au problème du nothing at stake, les développeurs de Peercoin mirent en place un système de checkpoints. Il s’agit de blocs qui sont produits directement par le protocole. Ces checkpoints sont définis dans le code source du protocole, et tous les nœuds doivent les valider pour pouvoir produire eux-mêmes des blocs.
Le Proof-of-Stake a ensuite évolué vers un modèle « pur », c’est-à-dire sans utiliser de preuve de travail pour distribuer les coins. Il fut implémenté sur NXT le 24 novembre 2013. Quelques mois plus tard, en février 2014, un autre altcoin utilisa à son tour un mécanisme de consensus en PoS : Blackcoin. Développée par Pavel Vasin, cette nouvelle version du PoS résout les problèmes mentionnés plus haut de la façon suivante :
- La première phase de distribution des coins s’effectue uniquement par la preuve de travail ;
- Cette période doit être suffisamment longue pour éviter les monopoles ;
- L’attaque des 51 %, une fois de plus, est théorique, de par le coût d’acquisition des coins et leur dévaluation immédiate en cas de réussite ;
- Un système de checkpoints permet d'éviter le problème du nothing-at-stake (bien que Pavel Vasin l'ait considéré comme négligeable).
Pour en savoir plus sur les avantages et inconvénients de la preuve d'enjeu, rendez-vous sur l'article dédié au sein du Chapitre Ethereum.
Les variantes de la preuve d'enjeu
Différentes variantes de la preuve d’enjeu firent ensuite leur apparition, comme la preuve d’enjeu déléguée que nous présentons ci-dessous. Vitalik Buterin, quant à lui, travailla au modèle de Proof-of-Stake implémenté sur Ethereum durant des années.
Les ethers ayant été majoritairement distribués via la preuve de travail, la question de la distribution initiale des coins ne se posait pas. Le problème des monopoles est résolu grâce à l’immobilisation des coins, nécessaire pour participer au staking. Ces ethers sont verrouillés, ce qui les rend illiquides et contrebalance le poids que pourrait avoir un staker trop riche.
Vitalik Buterin juge que le risque d’attaque 51 % venant d'un riche staker est nul à cause de son coût. Cependant, dans le cas où un acteur irrationnel tenterait de nuire au réseau, il cite le consensus social comme protection ultime. Les nœuds choisissent conjointement la chaîne valide pour « tuer » la chaîne de l’attaquant.
Pour éliminer le problème du nothing at stake, Ethereum utilise un mécanisme appelé slashing. Les nœuds qui signent deux forks à la fois sont punis : une partie de leur stake est brûlée.
La preuve d’enjeu fut vivement critiquée à ses débuts. Beaucoup la trouvaient beaucoup moins sécurisée que la preuve de travail. Ses détracteurs imaginaient d’autres attaques sophistiquées, et différentes approches du PoS firent leur apparition. Cependant, malgré les critiques, force est de constater que ce mécanisme de consensus a résisté à l’épreuve du temps. Il est aujourd’hui largement répandu, tout comme ses variantes.
La Delegated Proof-of-Stake
La preuve d'enjeu déléguée ou Delegated Proof-of-Stake est un modèle de preuve d’enjeu se voulant plus rapide que l'original. Un protocole en DPoS fonctionne en deux étapes distinctes.
Tout d’abord, les détenteurs de coins (stakeholders) élisent un comité de validateurs, aussi appelés « délégués » ou « témoins ». Ce vote est pondéré par le stake de chacun. Une fois ce comité élu, l’algorithme sélectionne aléatoirement un producteur de blocs parmi eux. Lorsque le bloc est produit, les autres nœuds du comité doivent signer le bloc à la majorité des deux tiers pour qu’il soit ancré dans la chaîne.
Le consensus est donc plus rapide, en raison du nombre de délégués restreint. La plupart des altcoins utilisant le DPoS ont un nombre de délégués compris entre 21 et 101.
Le premier modèle de DPoS fut proposé par Dan Larimer, ce qui donna naissance à BitShares en juillet 2014. Il reprit ce mécanisme de consensus pour créer EOS que nous vous avons présenté ici plusieurs années après. D’autres altcoins utilisent aussi ce système, comme Lisk (LSK) et Tron (TRX).
La Chain-based Proof-of-Stake
Cet algorithme est assez similaire au Proof-of-Work : il s’agit aussi de résoudre un problème mathématique pour ajouter un bloc à la chaîne.
Cependant, la probabilité de résolution du problème est fonction de l’enjeu des participants. De cette façon, les participants ont intérêt à posséder le stake le plus élevé possible pour toucher la récompense. Cela diminue donc globalement les ressources en calcul informatique nécessaires pour produire des blocs.
La Nominated Proof-of-Stake
La preuve d’enjeu nominée ou Nominated Proof-of-Stake, aussi appelé Committee-based PoS, repose sur l’élection d’un comité de validateurs par une fonction aléatoire vérifiable.
Les probabilités d’être élu sont proportionnelles au stake du candidat. Une fois le comité de validateurs déterminé, ces derniers produisent les blocs tout à tour, mais toujours de façon aléatoire. Ce mécanisme fut notamment utilisé sur Cardano (ADA), dans la première version de son mécanisme de consensus, Ouroboros.
La Liquid Proof-of-Stake
Dans cette variante, n’importe qui possédant un stake peut prétendre à être validateur, mais il est aussi possible de déléguer ses droits de vote. De la sorte, les « petits » stakers sont incités à déléguer leur stake à de plus gros acteurs, afin de récupérer leur part des récompenses de blocs de façon périodique. Ce système est dit « liquide » car il est possible de changer de délégué à tout instant.
Les algorithmes BFT/PBFT
Les algorithmes de consensus dits « Byzantine fault tolerant » répondent aux exigences du théorème des généraux byzantins. Ils doivent assurer l’intégrité de la transmission de l’information, et donc du registre des transactions, en tolérant un plafond d’acteurs corrompus ou défaillants.
Lorsque le problème des généraux byzantins fut résolu par Lamport, Shostak, et Pease en 1982, il fut prouvé qu’un système distribué peut tolérer jusqu’à 33 % d’agents malicieux.
Le mécanisme de Satoshi Nakamoto, grâce aux incitations économiques du minage, étend cette tolérance à 49 %.
Les algorithmes de consensus tolérants aux fautes byzantines sont multiples, et cherchent à obtenir un compromis entre :
- La sécurité (safety) du système ;
- Sa vitalité (liveness), c’est-à-dire sa garantie d’assurer la transmission de l’information entre les nœuds ;
- Sa scalabilité (scalability), sa capacité à s’adapter à la montée en charge et à l’augmentation du nombre de ses participants.
Entre d’autres termes, les algorithmes BFT doivent offrir le plus haut degré de sécurité possible, tout en assurant un haut débit, une faible latence, et, si possible, une forte décentralisation.
C’est bien évidemment plus facile à théoriser qu’à implémenter, et la recherche dans le domaine est prolifique. On parle donc de consensus tolérant aux fautes byzantines « en pratique » (PBFT) lorsque ces propriétés sont assurées.
Les différents types de consensus BFT
Il existe une grande variété d’algorithmes de consensus BFT, et il est impossible d’établir une taxonomie exhaustive en un seul article de cette Encyclopédie. Nous nous contenterons de les séparer en deux catégories, et de décrire brièvement leur fonctionnement général.
- Leader-based BFT : ce type d’algorithme BFT repose sur un leader, c’est-à-dire un nœud ayant la capacité de produire les structures de données répertoriant les transactions ;
- Leaderless BFT : il s’agit des algorithmes BFT où le consensus est atteint sans la présence d’un leader. Plusieurs mécanismes permettent de résoudre d’éventuels conflits.
Dans les deux cas, les algorithmes de consensus doivent synchroniser et coordonner des machines d’état multiples. Chaque nœud du système doit obtenir le même résultat en fonction des données d’entrée (transactions, et instructions dans le cadre des smart contracts).
Un protocole de réplication permet d’obtenir le même état (la même version du registre de transactions dans le cas d’une blockchain) pour toutes les machines. Les requêtes des clients (les utilisateurs qui soumettent des requêtes de transaction) doivent être validées durant la phase de réplication pour assurer la consistance de l’état global du système.
Le protocole doit donc résister à la présence éventuelle de fautes byzantines. Ainsi, si certains agents sont corrompus, cela ne doit pas affecter l’état du système. En d’autres termes, si certains nœuds tentent de tricher, l’algorithme de consensus doit permettre au système de ne pas être afffecté.
La structure des algorithmes de consensus BFT
Un algorithme de consensus BFT est donc conçu pour garantir que les serveurs non défectueux dans un système distribué parviennent à un accord malgré la présence de serveurs défectueux ou malveillants. Il assure les étapes et les propriétés suivantes :
- Résiliation (termination) : chaque serveur non défectueux finit par décider d’une valeur, assurant ainsi que le processus de consensus se termine ;
- Accord (agreement) : tous les serveurs non défectueux doivent parvenir à la même décision, évitant ainsi les valeurs conflictuelles ;
- Validité (validity) : si tous les serveurs ont la même entrée, alors toute valeur décidée par un serveur non défectueux doit être celle-ci ;
- Sécurité (safety) : il n'existe pas deux répliques non défectueuses qui s'accordent différemment sur l'exécution des requêtes, même en présence de fautes ;
- Vivacité (liveness) : une exécution se termine toujours si son entrée est correcte.
Les réseaux et la synchronie
Un bon algorithme de consensus doit aussi assurer l’efficacité de la réplication. Il existe ainsi plusieurs catégories d’algorithmes BFT, en fonction des conditions de la synchronie du réseau :
- Synchrones : le délai de transmission des messages au sein du système est borné, et la divergence entre les horloges des processeurs est bornée ;
- Asynchrones : le délai de transmission des messages n’a pas de limite haute, ou les horloges des nœuds du système ne sont pas les mêmes ;
- Partiellement synchrones : le délai de transmission des messages, comme les divergences des horloges système sont bornés, mais cette limite est inconnue, ou seulement connue après une période de stabilisation.
Quant aux structures de données utilisées pour établir l’état du système, on peut distinguer deux grandes familles :
- Les blockchains : les données sont groupées dans des blocs reliés entre eux grâce aux fonctions de hachage ;
- Les DAG (graphes orientés acycliques) : les données sont structurées au sein de graphes.
Cependant, comme nous l'avons évoqué précédemment, nous ne pouvons pas entrer ici dans les détails sans écrire un roman. Nous nous contenterons de dire que chaque modèle a ses avantages et ses inconvénients.
La preuve d’autorité
La preuve d’autorité ou Proof of Authority est un mécanisme de consensus reposant sur l’identité des participants. Les validateurs sont tous connus, et approuvés par le reste du réseau. Ils produisent leurs blocs de façon complètement automatisée, ce qui permet d’obtenir une finalisation des transactions très rapide. Ce système est donc centralisé sous la supervision d’un nœud unique, l’authority node. Ce dernier ne doit donc pas être compromis.
Une fois qu'un validateur a fait vérifier son identité par l'autorité centrale et a été accepté, il attend d'être sélectionné par le réseau pour ajouter un bloc (sélection aléatoire). Lorsque c'est le cas, il ajoute le bloc à la chaîne, qui est ensuite contrôlé par les autres validateurs. Si tout est en ordre, les transactions sont alors validées et le validateur touche ses récompenses. Dans le cas contraire, le bloc est rejeté et le validateur responsable s'expose à des problèmes (juridiques, financiers, etc.).
Les récompenses sont arbitraires et indépendantes du stake des validateurs. Elles peuvent être liées à d'autres critères, comme la réputation des participants par exemple. Ce type de consensus convient à la fois à des réseaux distribués publics ou privés. Il privilégie ainsi le débit en dépit de la décentralisation.
Il est souvent utilisée pour des réseaux de test (testnets), pour lesquels la centralisation n'est pas un problème. C'est par exemple le cas pour Ethereum, où on l’utilise pour déployer des smart contracts en version bêta, et faire des essais. La preuve d’autorité est également utilisée pour maintenir des blockchains privées répondant à des usages spécifiques.
La PoA a l'avantage d'être peu coûteuse en énergie et très rapide. Le processus de validation des blocs est simple, car ce mécanisme ne nécessite qu'un nombre restreint de nœuds. Étant donné que les nœuds producteurs sont sélectionnés, le risque d'attaque est quasi-nul. Cependant, elle présente aussi des inconvénients : le réseau est centralisé, la confidentialité des producteurs est impossible, et les nœuds ayant autorité sont en situation de monopole total.
La preuve de temps écoulé
Ce mécanisme de consensus (Proof of Elapsed Time ou PoET) est utilisé dans le cas des blockchains dites permissionnées. On parle de permissioned blockchain lorsque les participants doivent être identifiés avant d’avoir l’autorisation de rejoindre le réseau. C’est le cas des blockchains de consortium, où seules des entreprises autorisées peuvent opérer le registre (accès en lecture ou en écriture).
C'est Intel Corporation qui a inventé le PoET en 2016. L’algorithme de consensus, qui est utilisé sur Hyperledger, détermine un producteur de bloc de la façon suivante :
- Le protocole assigne une durée temporelle à chaque nœud du réseau de façon aléatoire ;
- Les nœuds doivent attendre ou exécuter une tâche autre durant ce délai ;
- Le nœud ayant le temps d’attente le plus court se « réveille » et ajoute le bloc ;
- Le registre est mis à jour puis distribué aux autres participants.
Le PoET repose donc sur un système de timer aléatoire. Pour être fonctionnel, il faut respecter trois facteurs :
- Le temps d’attente est assigné à chaque serveur de façon aléatoire ;
- Les nœuds ne doivent pas pouvoir choisir volontairement le délai le plus court ;
- Il faut pouvoir vérifier que chaque nœud a bien respecté le temps d’attente.
Il y a donc un producteur de bloc différent pour chaque ronde de consensus. À long terme, pour chaque nœud, les chances de remporter le round sont équiprobables. Afin de générer ces temps d’attente, chaque nœud exécute le code du protocole au sein d’un environnement d'exécution fiable (Trusted Execution Environment ou TEE). Ces processeurs sont enclavés et donc indépendants. Les résultats sont partagés en utilisant des fonctions SGX (Intel Software Guard Extensions).
Il s’agit donc d’un algorithme de consensus bien spécifique, requérant l’utilisation du matériel fabriqué par Intel. Il est parfaitement adapté aux blockchains permissionnées, et utilise moins de ressources (en consommation énergétique et en calculs) que la preuve de travail. Très rapide, le PoET permet de traiter des centaines de milliers de transactions à la seconde.
La preuve de capacité
Le Proof-of-Capacity ou PoC (aussi appelé preuve d’espace) est un mécanisme de consensus qui utilise l’espace disponible sur les disques durs des mineurs pour sélectionner les droits de minage et de validation des transactions.
Comme dans le cas de la preuve de travail, il s’agit de résoudre un problème mathématique (trouver une résultante valide pour la fonction de hachage de l’algorithme). Cependant, à la différence du PoW, les solutions ne sont pas générées aléatoirement par les mineurs pour chaque bloc. Elles sont déjà disponibles et stockées sur les disques durs des nœuds.
Chaque nœud dispose donc, avant que le processus de minage ne commence, d’un ensemble de solutions possibles sur son disque dur. Plus il dispose d’espace disque disponible, et plus sa probabilité de trouver une solution valide est élevée. Il en va donc de même pour ses chances de gagner la récompense de minage.
Le minage en PoC se décompose en deux étapes :
- Le plotting : le disque dur est rempli par toutes les solutions (valeurs de hachage ou hashes) possibles ;
- Le minage : lorsqu’un bloc de transactions est soumis au réseau, les nœuds scannent leur disque dur pour trouver la solution la plus rapide au challenge cryptographique.
Bien que ce mécanisme soit peu adopté, il présente des avantages. Il consomme moins d’énergie que le minage en preuve de travail classique, et ne nécessite pas de matériel spécialisé. Cependant, il reste plus vulnérable aux logiciels malveillants.
Les principaux altcoins utilisant la preuve de capacité sont Storj, Chia, Burst et SpaceMint.
La preuve de destruction
Cet algorithme de consensus est également conçu pour consommer moins d'énergie que la preuve de travail. Le principe du Proof-of-Burn (PoB) est simple : les mineurs sont autorisés à « brûler » des coins, c’est-à-dire à les envoyer vers une adresse dont personne ne possède les clés privées. En échange, ils obtiennent le droit de produire des blocs, proportionnellement à la quantité de jetons brûlés.
Il existe plusieurs versions du PoB. Les mineurs peuvent brûler la cryptomonnaie native du réseau, ou un autre altcoin. L’idée est que les nœuds qui « détruisent » des coins perdent de l’argent à court terme, mais sont récompensés par leur production de blocs au long terme.
Ce mécanisme comporte donc des risques, car rien ne garantit que la valeur des coins minés sera supérieure à celle des coins détruits. De plus, bien que la consommation énergétique d’un tel système soit faible, le fait de brûler des coins représente tout de même un gaspillage de ressources. Enfin, le PoB a tendance à enrichir les mineurs les plus riches. Pour pallier ce problème, le pouvoir conféré par les coins brûlés par les mineurs décroît avec le temps.
Le Proof-of-Burn est généralement utilisé parallèlement à d’autres algorithmes de consensus. Peu d’altcoins utilisent le PoB. Nous citerons simplement Slimcoin, basé sur la blockchain de Peercoin.
La preuve d’identité
Le Proof of Identity (PoID) est un protocole de consensus dédié aux blockchains permissionnées. Chaque individu participant au réseau doit préalablement décliner son identité. En échange, il reçoit un pouvoir de vote et un droit de produire des blocs équivalents à celui de ses pairs.
Afin de vérifier l’identité des participants, on utilise différentes techniques :
- L’identification biométrique ;
- La vérification de l'humanité (pour éviter les robots) ;
- D’autres systèmes de vérification pour renforcer la sécurité du protocole.
Ces mécanismes de consensus utilisent l’intelligence artificielle pour détecter l’usurpation d’identité et la collusion entre les participants. Afin de préserver la vie privée des individus, les données biométriques sont partiellement chiffrées.
La preuve d’identité présente plusieurs cas d’usage :
- La possibilité de créer un protocole de consensus regroupant plusieurs blockchains sur le même réseau ;
- La distribution d’un revenu universel de base pour les participants ;
- L’organisation de référendums, de votations ou de sondages.
Le PoID a pour inconvénient d’être gourmand en espace de stockage. La quantité de données stockées sur la blockchain est très importante. En outre, ce n’est pas un mécanisme totalement décentralisé et il n'est bien sûr pas anonyme. Afin de lancer les identifications, et de régler les litiges biométriques, il nécessite la création d’une organisation faisant figure d'autorité.
Cependant, avec l'arrivée des protocoles utilisant des preuves à non-divulgation de connaissance (ZKP), il est possible de concevoir des systèmes d'authentification décentralisés et confidentiels. C'est par exemple l'ambition de Galactica Network.
La preuve d’activité
La preuve d'activité ou Proof-of-Activity (PoA) est un algorithme de consensus hybride entre la preuve de travail et la preuve d’enjeu. Il a pour objectif de combiner le meilleur des deux systèmes.
Le processus de minage commence comme avec le Proof-of-Work : les mineurs sont en compétition pour trouver un nouveau bloc. Lorsqu’un bloc est trouvé, il est vide, et ne contient qu’un en-tête et l’adresse du mineur gagnant.
Ensuite, le système passe en Proof-of-Stake. L’algorithme sélectionne un groupe de validateurs aléatoirement pour signer le bloc. La probabilité d’être sélectionné est fonction du stake. Une fois signé, le bloc est “complet”, et les transactions peuvent y être enregistrées. Les récompenses sont partagées entre le mineur et les validateurs ayant contribué à la signature du bloc.
Le PoA est notamment utilisé sur Decred (DCR). Les mineurs du réseau utilisent la preuve de travail pour construire les blocs. Ensuite, 5 validateurs sont sélectionnés de façon pseudo-aléatoire par l’algorithme. Afin d’être valide, le bloc doit recevoir la signature d’au moins 3 validateurs sur 5.
Dans le cas où le mineur n’a pas respecté les règles du protocole, les validateurs peuvent lui retirer sa récompense de bloc. Ce système améliore la robustesse de Decred face à certains types d’attaques, et le rend également plus résistant aux hard forks contentieux.
Les critiques vis-à-vis de la preuve d’activité portent sur la consommation énergétique élevée de la phase en PoW, et sur l’avantage que possèdent les gros détenteurs de coins durant la phase de PoS. Néanmoins, plusieurs méthodes peuvent être mises en place pour éviter la formation de cartels parmi les validateurs.
C'est un algorithme de consensus populaire, utilisé sur des altcoins tels que NavCoin (NAV), Emercoin (EMC), Peercoin (PPC) ou encore Myriad (XMY).
La preuve d’importance
La preuve d’importance (Proof-of-Importance ou PoI) fut premièrement implémentée sur NEM (XEM). On peut voir cet algorithme de consensus comme une évolution de la preuve d’enjeu. L’idée est d’assigner un score d’importance à chaque nœud du réseau, qui témoigne de leur contribution. Ainsi, le pouvoir d’un validateur n’est pas uniquement déterminé par son stake, mais aussi par d’autres facteurs.
Le protocole considère les trois caractéristiques suivantes :
- Le nombre de coins verrouillés durant un certaine période (le stake) ;
- Les transactions partenaires : le nombre de transactions effectuées avec d’autres comptes sur le réseau ;
- La taille et la fréquence des transactions traitées.
Le PoI encourage les nœuds candidats à la validation à ne pas conserver leurs coins. Les récompenses n’ont pas à être aussi élevées qu’en preuve de travail, ce qui diminue les frais.
La preuve d’histoire
La preuve d’histoire (Proof-of-History ou PoH) est l’algorithme de consensus du réseau Solana (SOL). Son concepteur, Anatoly Yakovenko, présenta cette innovation comme le système permettant d’offrir le meilleur débit de transactions pour une plateforme blockchain.
Le PoH utilise une fonction appelée Verifiable Delay Function (VDF) pour horodater les blocs. L’horodatage permet d’ordonner les blocs et de les rendre immuables. N’importe qui peut vérifier les horodatages sans passer par une horloge tierce grâce à la VDF. En d’autres termes, le PoH permet de prouver facilement l’ordre des événements ayant eu lieu sur le réseau dans le temps.
Il a l’avantage d’offrir une finalisation très rapide des transactions. Chaque bloc est finalisé au moment où il rallie la chaîne, sans possibilité de revenir en arrière. Le système permet donc d'éviter les forks : il est impossible que deux blocs soient ajoutés au même moment.
La preuve d’histoire est un protocole de consensus nouveau, qui fait l’objet de critiques. La fiabilité du PoH dépend en effet de la source de temps utilisée pour les horodatages. Sa compromission ou son imprécision peut donc nuire à l’intégrité et à la sécurité de l’entièreté du système. Cet algorithme de consensus est également plus coûteux en ressources que la preuve d’enjeu, en raison de la taille importante de la blockchain.
Néanmoins, plusieurs altcoins utilisent ce système, souvent couplé à la preuve d’enjeu. C’est le cas de Hashgraph et de Filecoin.
Le mot de la fin
Nous avons passé en revue les différents algorithmes de consensus utilisés pour maintenir et sécuriser un registre distribué. Chacun d’entre eux présente des avantages et des inconvénients. Le choix d’un algorithme de consensus est donc un compromis. Il dépend des cas d’usages et des propriétés recherchées par les développeurs d’un altcoin ou d’un réseau distribué.
La sécurité du système est au centre des préoccupations de ses utilisateurs. Le consensus de Nakamoto, basé sur la preuve de travail, est considéré comme le plus robuste. Cependant, plusieurs alternatives ont subi l’épreuve du temps et ont aussi montré leur solidité.
La recherche en algorithmique distribuée bat toujours de son plein. Le graal des mécanismes de consensus est ainsi de résoudre le trilemme des blockchains. Il s’agit de garantir et de maximiser la sécurité d’un réseau, la scalabilité du système, et sa décentralisation. Dans les années à venir, nous observerons sans aucun doute une amélioration notable des protocoles existants. C'est d'ailleurs vers le futur que nous vous proposons de voyager avec le prochain article, dans lequel nous avons tenté de savoir de quoi l'avenir des altcoins sera fait.