Dans nos précédents articles nous avions présenté les bases de la technologie blockchain, puis zoomé dans son architecture et ses cas d’usage. Aujourd’hui, nous irons plus loin en décrivant le processus de validation des transactions dit par Consensus. Pourquoi le traiter dans cet article ? Parce que c’est un pilier fondateur de la technologie Blockchain et aussi son talon d’Achille…
A ce jour, des dizaines d’approches et de variantes d’algorithmes de consensus blockchain existent. Ici, nous nous attarderons sur les méthodes les plus répandues en précisant leur champ d’application et leurs atouts.
A la recherche de l’ultime consensus !
Sur le principe, un consensus est un accord entre plusieurs personnes de bonne volonté, qui amène à une décision sans opposition formelle. Donc, le seul moyen de faire émerger une validation globale au sein d’un réseau est d’obtenir un vote général (consensus) entre tous les intervenants. Pour ce faire, on prend comme hypothèse que les acteurs malveillants seront toujours moins nombreux que les acteurs honnêtes (voir la théorie des Généraux Byzantins).
Dans un système décentralisé impliquant des milliers d’intervenants et de transactions comme la blockchain, c’est un vrai enjeu de définir un processus consensuel fiable sur le long terme.
C’est le tour de force qu’a relevé le créateur de Bitcoin avec la mise en œuvre du premier algorithme de « Preuve de travail » en 2009.
Proof of Work (PoW) : validation par Preuve de travail
Un algorithme de consensus comme la preuve de travail de Bitcoin réalise deux choses :
- Il s’assure que le bloc suivant dans une blockchain sera la seule et unique source de vérité des transactions
- Il empêche des attaques qui permettraient de perturber le processus et de créer une version falsifiée de la blockchain
Mais concrètement comment ça marche ?
- Robert décide de payer Charlotte avec son porte-monnaie électronique et envoie vers l’adresse publique de Charlotte un montant sur lequel est adossée sa signature électronique. Une clé privée qu’il garde en lieu sûr permet de générer sa signature. Pour des raisons de sécurité, Robert est bien entendu le seul à détenir le lien entre son adresse de porte-monnaie électronique public et la clé privée qui lui est liée (permettant d’authentifier les transactions d’échange de « coins »).
- La transaction ainsi créée n’est pas envoyée à une banque. Elle est largement diffusée sur tout le réseau de nœuds Bitcoin existants, en quelques millisecondes. Ainsi, l’ensemble du réseau est informé que Robert souhaite s’appauvrir au bénéfice de Charlotte. Super… et alors ?
- Un groupe d’opérateurs particuliers du réseau dits « Mineurs » sont spécialisés dans la validation des transactions. En premier lieu, les mineurs sont en charge de vérifier l’intégrité des transactions qu’ils reçoivent. La signature est-elle correcte ? Robert a-t-il réellement les fonds pour couvrir sa dépense ?…
C’est démocratique : tout le monde peut devenir mineur. Le protocole embarque un système de commissions incitatives. Dans la preuve du travail, les mineurs rivalisent pour ajouter le prochain bloc (un ensemble de transactions). Ils se démènent pour résoudre un puzzle cryptographique extrêmement difficile. Enfin, le premier à résoudre le puzzle gagne l’enjeu de la loterie. En guise de récompense, le mineur reçoit 12,5 Bitcoins nouvellement minés et quelques frais de transaction.
Cependant, ce système ingénieux est loin d’être parfait, ses principales limites sont :
- Son inefficience : une consommation d’énergie nécessaire aux calculs, qui est totalement aberrante d’un point de vue écologique (voir cette étude et ces statistiques).
- Sa lenteur : confirmer une transaction prend des dizaines de minutes.
- Un déséquilibre socio-économique. En effet, la majorité des activités minières se situent dans les régions où l’électricité est bon marché. Au final, quelques dizaines de consortiums centralisent cette compétence (principalement en Asie).
Utilisé par : Bitcoin, Monero
Proof of Stake (PoS) : validation par Preuve de participation
La « preuve de participation » (ou d’enjeu) est l’alternative la plus courante à la preuve de travail. Ici, aucune équation complexe n’est à deviner, la puissance de calcul et le besoin en électricité sont moindres.
Par exemple, la future version Ethereum Serenity intégrera la PoS. La preuve de participation sélectionne aléatoirement un validateur selon des critères d’éligibilité. En pratique, on considérera un compte avec suffisamment d’Ether comme une partie prenante, une personne qui investit dans l’écosystème. Pour devenir validateur, vous devrez bloquer une certaine quantité d’Ether qui sera proportionnelle au poids de votre participation. Donc, un validateur qui mise 500 pièces sera cinq fois plus susceptible d’être choisi qu’un autre ayant bloqué seulement 100 pièces. En outre, plus un candidat validateur possédera d’Ethers sur un long terme, plus il aura de chances d’être sélectionné. Le validateur ainsi nommé doit se conformer au règlement de l’écosystème afin de traiter de manière véridique les transactions. Quand une nouvelle transaction arrive, elle est ajoutée au bloc et validée, puis le bloc est envoyé aux autres validateurs pour confirmation.
Pour ce travail, le validateur reçoit les frais de transaction des transactions qu’il a traitées. Dans le cas ou un validateur s’avérerait malveillant, le réseau le détecterait rapidement : il serait expulsé et perdrait son investissement.
Il existe de nombreuses variantes de l’algorithme PoS. Certaines avec des jetons pré-minés, combinaison hybride PoW-PoS, des règles de sélection qui varient… Toutes ont en commun la notion essentielle de niveau de participation à l’écosystème.
Utilisé par : Ethereum, NXT, Peercoin, Blackcoin, Tendermint, Diamond, Mintcoin
Delegated Proof of Stake (dPoS) : validation par Preuve de participation déléguée
BitShares, a initié cette variante. Ici, la communauté détentrice de tokens choisit des délégués validateurs. Le vote est réalisé au moyen de la crypto-monnaie (par défaut ces blockchains élisent 101 délégués). Les N premiers délégués peuvent générer des blocs et reçoivent une commission en échange de ce travail. Le délégué peut partager la récompense avec les comptes ayant voté pour lui (forme de lobby électoral).
De plus, les détenteurs de ces crypto-monnaies peuvent voter pour des modifications à apporter au protocole. Donc, cela leur donne une influence accrue sur l’évolution du réseau dans son ensemble. Selon les variantes de dPoS : on ajoute des contraintes de rapidité de validation des blocs, on renforce la compétitivité au sein des délégués, on greffe des systèmes de déflation (pour accroître la valeur des jetons en circulation), des dividendes…
Waves a proposé une variante proche, nommée Leased Proof of Stake (LPoS). Avec cette approche, les petits porteurs de tokens peuvent louer leur solde à des nœuds selon un bail défini. Par conséquent, les pièces louées augmentent le poids du nœud validateur et ses chances d’être autorisé à ajouter un bloc à la blockchain. Au final, les récompenses reçues seront partagées proportionnellement parmi les locataires.
Utilisé par : Bitshares, EOS, Steemit, Lisk, ARK
Byzantine Fault Tolerance (BFT) and Federated Byzantine Agreement (FBA) : validation par Consensus à tolérance aux pannes et Consensus fédérés
Ces algorithmes répondent au problème classique de l’informatique distribuée qui est généralement expliqué avec la métaphore des généraux byzantins. L’idée générale est que chaque validateur (général byzantin), responsable de sa propre chaîne, trie les messages au fur et à mesure qu’ils arrivent pour tenter d’établir la vérité. Selon les cas, les validateurs sont présélectionnés par la fondation gérant la blockchain (Ripple), ou bien tout le monde peut potentiellement être validateur (Stellar).
Pour résumer le principe général, voici comment fonctionne Ripple :
- Premièrement, chaque nœud reçoit des transactions provenant d’applications externes.
- Puis, chacun d’entre eux construit une liste publique de toutes les transactions qu’il considère comme valides et pas encore incluses dans le dernier bloc, formant ainsi un « lot candidat ».
- Les nœuds fusionnent leurs lots candidats avec la « liste de nœuds uniques » (Unique Node List, UNL)
- Les UNL votent sur la validité de toutes les transactions (premier tour de consensus). Les transactions ayant obtenu au moins 50% des voix sont passées au tour suivant. Souvent, plusieurs tours sont nécessaires.
- La phase finale de consensus exige que 80% au moins des nœuds UNL soient d’accord sur les transactions. Donc, au moins 80% des nœuds validateurs devraient avoir le même lot de transactions candidates.
- Ensuite, chaque nœud de validation calcule un nouveau bloc avec toutes les transactions, le hachage, signe ce bloc et le diffuse au réseau.
- Les nœuds de validation comparent alors leurs blocs. Les nœuds du réseau reconnaissent un bloc comme étant valide quand 80% de leurs pairs ont signé et diffusent le même hachage de validation.
Au final, ce processus a duré quelques secondes. En revanche, il n’y a pas de système de récompense.
Utilisé par : Ripple, Stellar, Hyperledger, Neo, Cardano, ByteBall
Et encore d’autres Preuves…
Cet article pourrait encore décrire des dizaines d’autres algorithmes de consensus. Le site Tokens Economy en a fait un excellent référencement. Voici quelques exemples.
Preuve de temps passé (Proof of Elapsed Time)
Lancée par Intel, elle est une variante de la preuve de travail en moins énergivore. Ici, l’algorithme utilise un environnement d’exécution sécurisé afin de générer les blocs au hasard, sans la déperdition d’énergie liée au travail. Le temps d’attente s’en trouve également amélioré. Néanmoins, ce système de consensus a l’inconvénient d’être centralisé par Intel comme tiers de confiance et environnement d’exécution.
Preuve d’activité (Proof of Activity)
Decred est le seul réseau utilisant la PoA. La preuve d’activité est un mélange de preuve de travail et de preuve d’enjeu. Dans un premier temps, les mineurs doivent résoudre un casse-tête cryptographique pour créer un bloc. Ce bloc ne contient pas de transactions mais uniquement l’adresse du gagnant. Ensuite, un groupe aléatoire de validateurs est choisi pour vérifier les transactions à ajouter. Comme pour PoS, les validateurs reçoivent une récompense et ont plus de chances d’être choisis s’ils possèdent plus de crypto-monnaies.
Preuve de capacité (Proof of Capacity /Proof of Space)
Utilisation de la capacité disque que les utilisateurs peuvent prêter au réseau. Cet espace disque réservé permet de générer automatiquement des jetons (Permacoin, Burstcoin, SpaceMint). Il est beaucoup plus économe en énergie et permet de générer un revenu passif proportionnel à l’espace disque libre mis en partage.
Preuve d’importance (Proof of Importance)
Le réseau NEM a mis en oeuvre PoI. Ce processus est basé sur l’idée que l’ensemble de activité productive devrait être récompensée. Dans ce cas, les chances de valider un bloc dépendent d’un certain nombre de facteurs, notamment le solde du compte, mais aussi la réputation et le nombre de transactions effectuées à destination et en provenance de cette adresse. Ainsi, cette approche donne une image plus globale d’un membre « utile » pour le réseau.
Tangle
Cet algorithme créé par Iota fait partie de la famille des DAG (Direct Acyclic Graph). Pour envoyer une transaction Iota, il faut valider deux transactions reçues précédemment. Cette approche « deux-pour-un » renforce la validité des transactions au fil des ajouts. Parce que le consensus est établi par les transactions, théoriquement, si une personne pouvait générer 1/3 des transactions, elle pourrait convaincre le reste du réseau que des transactions falsifiées sont valides. Tant que le volume de transactions n’est pas suffisant pour qu’il soit impossible de créer 1/3 de ce volume, Iota procède à une double vérification de toutes les transactions sur un nœud central appelé « The Coordinator ».
Conclusion
A ce jour, beaucoup de plates-formes utilisent une combinaison hybride PoW-PoS. En général, PoW est utilisée pour générer et distribuer les tokens, puis PoS prend le relais pour maintenir l’intégrité du réseau. D’autres approches utilisent des « masternodes » conjointement au minage, pour supporter le traitement des transactions et la génération des commissions (Dash).
Bien entendu, chaque méthode a des avantages et des inconvénients. Souvent, le protocole dépend de l’utilisation prévue des tokens. Très probablement, la preuve de travail sera amenée à disparaître tant ses inconvénients sont nombreux. L’adoption généralisée de la technologie blockchain passera forcément par la mise en œuvre de processus de consensus efficients. De ce point de vue, les approches de type BFT et FBA sur des réseaux semi-privés, tels que Hyperledger (Fondation Linux) et Ripple paraissent être des plus prometteuses.
Ce dernier article de l’année 2018 est l’occasion de vous souhaiter tous nos meilleurs vœux cryptos (ou pas) pour 2019 !