NOUVEAU : Helius acquiert Light Protocol
qu’est-ce que la preuve d’historique
Blog/Fondamentaux

Preuve d’historique, preuve d’enjeu, preuve de travail — Explications

Developer Experience Engineer0xIchigo sur X0xIchigo sur LinkedIn0xIchigo sur GitHub
18 min de lecture

Quel est le sujet de cet article ?

Les blockchains sont des registres distribués qui enregistrent les transactions sur un réseau d’ordinateurs. Les algorithmes de consensus sont essentiels aux blockchains, car ils permettent de parvenir à un accord sur l’état du registre. Ils facilitent la collaboration entre des participants qui ne se font pas confiance, sans qu’une entité centralisée doive valider les données avant leur ajout à la blockchain. Sans algorithmes de consensus, rien ne garantirait que tous les nœuds s’accordent sur l’état de la blockchain. Nous serions exposés à de nombreux vecteurs d’attaque, à des problèmes de double dépense et à une compromission de l’immuabilité, sans moyen efficace de résoudre les désaccords ou les forks.

Dans cet article, nous allons examiner les algorithmes de consensus, leur importance et les différents types utilisés par les blockchains populaires. L’objectif est de vous permettre de comprendre en détail ce que sont les algorithmes de consensus, pourquoi il est important de connaître leur fonctionnement et comment fonctionnent plusieurs algorithmes de consensus populaires.

Pourquoi apprendre le fonctionnement des algorithmes de consensus

Il est important de comprendre les algorithmes de consensus pour développer efficacement sur la blockchain de votre choix, pour les raisons suivantes :

  • Savoir comment votre blockchain parvient à un consensus influence les choix d’architecture lors du développement de votre application décentralisée (dApp). Vous vous poserez des questions telles que : quels sont les coûts de déploiement ? Combien de transactions un utilisateur doit-il envoyer pour utiliser efficacement cette dApp ? Combien coûte l’envoi d’une transaction ? La question la plus importante sera : quel est son délai de finalisation ? Autrement dit, combien de temps faut-il pour qu’une transaction soit confirmée et ajoutée à la blockchain ?
  • Connaître les caractéristiques de débit et de latence d’un algorithme de consensus peut vous aider à choisir la bonne blockchain pour déployer votre dApp. En vous interrogeant sur l’architecture de votre dApp, vous identifierez les aspects dont vous pouvez optimiser les performances
  • Connaître les enjeux de sécurité propres à chaque algorithme vous aidera à concevoir des applications plus sûres. Quels sont les vecteurs d’attaque de votre blockchain ? Quelles sont leurs implications pour la conception de smart contracts ?
  • Connaître le fonctionnement interne de l’algorithme de consensus de votre blockchain vous permet de saisir les nuances de ses mécanismes de vote et de participer activement à la gouvernance
  • Connaître les incitations économiques propres à chaque algorithme de consensus favorise la participation au réseau. Comment participer au réseau et obtenir des récompenses ? Quels comportements éviter pour ne pas être pénalisé ?
  • Connaître les principes fondamentaux des algorithmes de consensus vous aidera à mieux comprendre les algorithmes nouveaux ou mis à jour. Comment comprendre la preuve d’enjeu déléguée ou la preuve d’enjeu louée sans comprendre la preuve d’enjeu ?

Qu’est-ce qu’un algorithme de consensus ?

L’un des principaux défis de l’informatique distribuée consiste à garantir la fiabilité des performances d’un système, même lorsque certains de ses composants tombent en panne. Ce problème est décrit dans le problème des généraux byzantins. Il s’agit d’une expérience de pensée dans laquelle tous les participants du système doivent s’accorder sur une stratégie afin d’éviter l’échec. Elle met en évidence la difficulté de parvenir à un accord dans un réseau où certains participants peuvent agir de manière imprévisible ou malveillante. Pour limiter ce risque, des processus de coordination résilients sont nécessaires afin d’établir une source unique de vérité. Tous les participants peuvent ainsi agir de manière fiable sur l’ensemble du réseau. Nous appelons algorithmes de consensus les processus qui permettent au système de s’accorder sur une source de vérité unique.

Imaginez un carrefour urbain très fréquenté sans feux de circulation. Ce serait le chaos absolu : voitures, camions, vélos et piétons tenteraient tous de suivre leur propre chemin et de traverser à leur tour. Il y aurait des accidents, des malentendus et de la méfiance entre les participants. Heureusement, nous avons des feux de circulation. Ils rétablissent l’ordre en indiquant qui peut avancer et qui doit s’arrêter, tout en s’adaptant aux conditions en temps réel. Plus important encore, tout le monde accepte les feux de circulation. Nous acceptons tous les règles et leur application uniforme.

Les algorithmes de consensus sont les feux de circulation des blockchains. Ils définissent les règles qui déterminent comment les transactions sont ajoutées à une blockchain. Ils assurent une circulation sûre et efficace des données sur le réseau en donnant un « feu vert » ou un « feu rouge » aux transactions et aux blocs valides ou non valides. Ces règles sont appliquées uniformément, de manière sécurisée et transparente. Les algorithmes de consensus s’adaptent à l’évolution des conditions du réseau afin de maintenir des performances optimales, tout en respectant ces règles.

Les algorithmes de consensus sont essentiels aux blockchains. Sans eux, nous ne disposerions d’aucune méthode uniforme pour valider les données dans un environnement hostile. Ce serait le chaos. À tel point que nous finirions probablement par dépendre de nouveau d’une autorité centrale pour la validation, épuisés par les attaques Sybil et les doubles dépenses. Les algorithmes de consensus sont indispensables pour que nos blockchains restent sécurisées, immuables et décentralisées.

Qu’est-ce que la preuve de travail ?

La preuve de travail (PoW) est une forme de preuve cryptographique par laquelle une partie (le prouveur) démontre à une autre partie (le vérificateur) qu’elle a dépensé une quantité donnée de puissance de calcul. Le vérificateur peut facilement vérifier cette dépense. Elle a été inventée par Moni Naor et Cynthia Dwork en 1993 pour décourager les attaques DoS et le spam sur un réseau, puis formalisée dans un article publié en 1999 par Markus Jakobsson et Ari Juels.

La preuve de travail a été popularisée par Bitcoin comme fondement du consensus au sein d’un réseau décentralisé sans autorisation. Dans le livre blanc de Bitcoin, Satoshi Nakamoto explique comment la preuve de travail permet de créer une version purement pair-à-pair de monnaie électronique, sans aucun intermédiaire. Parmi les autres blockchains populaires qui utilisent un algorithme de consensus fondé sur la PoW figurent Litecoin, Kadena, Monero et Ethereum Classic. Alors, comment fonctionne-t-elle ?

Fonctionnement

Les blockchains fondées sur la preuve de travail exigent des participants au réseau qu’ils résolvent un problème mathématique complexe en utilisant une puissance de calcul considérable. L’objectif est de deviner un nombre hexadécimal à 64 chiffres, appelé hash. Trouver ce hash peut sembler simple, mais ce n’est pas le cas lorsque l’on sait qu’il résulte du hachage de toutes les informations de transaction contenues dans un bloc, avec un nonce aléatoire (« nombre utilisé une seule fois »), au moyen de l’algorithme SHA256. Le premier participant qui résout le problème peut ajouter à la blockchain le bloc de transactions suivant et reçoit une quantité prédéfinie de cryptomonnaie. Ce processus de validation des transactions et de leur ajout à la blockchain est appelé minage, et les participants au réseau sont appelés mineurs.

Avantages et inconvénients

L’un des avantages des blockchains fondées sur la preuve de travail est que tout le monde peut participer au minage, ce qui favorise un réseau distribué et décentralisé. Attaquer un réseau PoW exige une puissance de calcul considérable. Il est donc extrêmement difficile, bien que théoriquement possible, pour une seule entité de mener une attaque des 51 %. Une attaque des 51 % se produit lorsqu’une entité malveillante contrôle la majorité de la puissance de hachage du réseau afin de manipuler l’historique des transactions. La preuve de travail est un algorithme de consensus relativement simple à comprendre, qui a été déployé et testé à grande échelle avec Bitcoin.

Malgré ces avantages apparents, la preuve de travail présente plusieurs inconvénients. Le coût élevé du matériel de minage et de l’électricité peut entraîner, et a déjà entraîné, une centralisation du minage dans les régions où l’énergie est peu coûteuse. Ces obstacles élevés à un minage rentable entraînent une répartition inégale des récompenses, au bénéfice des acteurs capables de financer de puissantes installations de minage. Cela a conduit à la création d’immenses fermes de minage de Bitcoin. Sa consommation d’énergie très élevée a également suscité de nombreuses préoccupations environnementales. C’est l’une des principales raisons pour lesquelles Ethereum est passée à la preuve d’enjeu avec sa mise à jour intitulée The Merge. Alors, qu’est-ce que la preuve d’enjeu ?

Qu’est-ce que la preuve d’enjeu ?

La preuve d’enjeu (PoS) vise à résoudre les problèmes de puissance de calcul et de consommation d’énergie associés à la preuve de travail. Au lieu de s’appuyer sur la puissance de calcul pour sécuriser le réseau, la preuve d’enjeu sélectionne les validateurs selon le nombre de tokens qu’ils ont mis en jeu sur le réseau. En 2012, Peercoin a été la première cryptomonnaie à utiliser la preuve d’enjeu, même si celle-ci était associée à un système de preuve de travail.

Fonctionnement

Avec la preuve d’enjeu, les mineurs sont remplacés par des validateurs qui proposent des blocs et votent à leur sujet. Ces validateurs doivent immobiliser une certaine quantité de tokens représentant leur enjeu dans le réseau. Le réseau sélectionne un validateur chargé de valider le prochain bloc de transactions selon plusieurs facteurs, tels que la taille de son enjeu ou la durée depuis laquelle il le détient. Le bloc proposé est ensuite vérifié et attesté par les autres validateurs. Si le bloc est attesté comme valide, il est ajouté à la blockchain. En contrepartie de leur travail de validation, les validateurs perçoivent des frais de transaction et, parfois, de nouveaux tokens. Si le bloc est attesté comme non valide, il n’est pas ajouté à la blockchain et le validateur est pénalisé. Ces validateurs subissent un « slashing », ce qui signifie qu’ils perdent une partie de leur enjeu. Ces pénalités visent à dissuader les acteurs malveillants de proposer des blocs frauduleux ou de créer des incohérences dans le registre.

Avantages et inconvénients

La preuve d’enjeu répond directement au problème de la forte consommation d’énergie. Le passage d’Ethereum de la preuve de travail à la preuve d’enjeu a réduit de 99,84 % la consommation énergétique du réseau. Les algorithmes de preuve d’enjeu sont plus rapides et mieux adaptés au passage à l’échelle, car ils sont conçus pour offrir un débit supérieur. Ils permettent une finalisation plus rapide : les transactions sont confirmées et ajoutées à la blockchain plus vite. Les validateurs sont également incités financièrement à maintenir une infrastructure de validation performante, ce qui accélère les délais de validation. Les algorithmes de preuve d’enjeu sont aussi mieux adaptés au traitement parallèle des transactions et au sharding. Le sharding consiste à diviser le réseau en unités plus petites, appelées « shards », qui traitent les transactions de manière indépendante et en parallèle.

La preuve d’enjeu présente toutefois ses propres inconvénients. Bien qu’elle soit plus économe en énergie, les récompenses des validateurs peuvent être inférieures à celles offertes par la preuve de travail. Cela pourrait attirer moins de participants et réduire la sécurité du réseau. Si elle n’est pas correctement gérée, la distribution initiale du token peut aussi nuire à l’équité et à la décentralisation du réseau. Les acteurs qui détiennent les enjeux les plus importants exercent alors une influence disproportionnée sur le réseau. Autre problème potentiel : contrairement à la preuve de travail, pour laquelle il faudrait répartir la puissance de calcul, les validateurs pourraient ne rien avoir à perdre en votant pour plusieurs forks de la blockchain. Des conditions de slashing adaptées doivent être mises en place pour éviter ce type de comportement.

Variantes de la preuve d’enjeu

Parmi les principales blockchains qui utilisent la preuve d’enjeu figurent :

Ethereum

Ethereum utilise un algorithme LMD-GHOST avec Casper-FFG, appelé Gasper. LMD-GHOST sert à cumuler les votes et garantit que les nœuds sélectionnent facilement le bon fork lorsqu’il en apparaît un. Casper-FFG (Casper the Friendly Finality Gadget) fait passer certains blocs à l’état « finalisé », afin que les nouveaux participants au réseau se synchronisent toujours avec la chaîne canonique.

Cardano

Cardano utilise une variante de la preuve d’enjeu appelée Ourobros, le premier protocole de preuve d’enjeu dont la sécurité a été formellement démontrée. Il repose sur des recherches évaluées par des pairs et a été conçu pour favoriser l’évolutivité et la sécurité. Pour en savoir plus, consultez cette page

Near

Near utilise la preuve d’enjeu à seuil, une méthode déterministe qui permet à un grand nombre de participants d’assurer le fonctionnement du réseau en prenant des décisions à des intervalles précis. Pour en savoir plus, consultez cette page

Algorand

Algorand utilise la preuve d’enjeu pure, une approche plus égalitaire de la preuve d’enjeu fondée sur le consensus byzantin. Pour en savoir plus, consultez cette page

Comme vous pouvez le constater, il existe de nombreuses variantes de la preuve d’enjeu. La plupart des blockchains fondées sur la preuve d’enjeu utilisent une variante de la conception d’origine, adaptée à leurs besoins et optimisée pour certains cas d’utilisation. La preuve d’enjeu déléguée est l’une des variantes les plus connues et les plus utilisées.

Qu’est-ce que la preuve d’enjeu déléguée ?

La preuve d’enjeu déléguée est une évolution de la preuve d’enjeu conçue pour améliorer l’efficacité et la dimension démocratique des processus de validation d’une blockchain. Elle a été développée par Daniel Larimer en 2014, puis mise en œuvre dans plusieurs blockchains majeures, notamment BitShares, EOS, TRON et SUI.

Fonctionnement

Avec la preuve d’enjeu déléguée, les détenteurs de tokens élisent un groupe de délégués chargés de valider et de créer de nouveaux blocs en leur nom. Le pouvoir de vote des détenteurs de tokens est proportionnel à la quantité de tokens qu’ils possèdent. Les utilisateurs votent en regroupant leurs tokens dans un pool de staking, puis en les associant à un délégué donné. Les délégués sont incités à agir honnêtement, car ils peuvent être révoqués s’ils se comportent de manière malveillante ou ne maintiennent pas une disponibilité suffisante. Lorsqu’ils valident un bloc, ils reçoivent en récompense les frais de transaction correspondants. Ils distribuent ensuite ces récompenses aux utilisateurs qui les ont soutenus, en fonction de l’enjeu de chacun. Il est important de noter que ces délégués valident les blocs de manière déterministe, selon un calendrier public. Le nombre de délégués étant limité pour chaque bloc, leur ordre est régulièrement remanié.

Avantages et inconvénients

La preuve d’enjeu déléguée offre de nombreux avantages de la preuve d’enjeu : tout le monde peut devenir délégué, son faible seuil d’entrée la rend plus accessible et décentralisée, ses performances sont meilleures puisqu’elle ne requiert qu’un nombre limité de délégués et le fonctionnement du réseau consomme peu d’énergie.

La preuve d’enjeu déléguée n’est toutefois pas parfaite. Elle ne nécessite qu’un nombre limité de délégués pour chaque nouveau bloc. Un petit groupe risque donc d’exercer une influence disproportionnée sur la vérification des transactions et les décisions de gouvernance. Cette limite permet aussi à ces délégués de s’entendre pour agir de manière malveillante, ce qui abaisse fortement le seuil d’une attaque des 51 %. Les détenteurs de tokens pourraient également soudoyer des délégués pour qu’ils agissent de manière malveillante en leur nom. Plus important encore, les utilisateurs ne sont pas tenus de participer à l’élection des délégués. L’abstention des électeurs pourrait donc aggraver les risques de centralisation mentionnés précédemment.

Qu’est-ce que la preuve d’historique ?

La preuve d’historique n’est pas un algorithme de consensus.

Plus précisément, il s’agit d’un composant qui aide à parvenir au consensus. La confusion provient probablement de sa terminologie : pour les personnes qui connaissent la preuve de travail et la preuve d’enjeu, l’expression « preuve de X » évoque généralement un algorithme de consensus. La preuve d’historique joue un rôle fondamental dans l’architecture de Solana et est profondément intégrée à l’ordonnancement des transactions et à l’exécution des programmes. Compte tenu de son importance dans le réseau, il est facile de la prendre pour l’algorithme de consensus de Solana.

Alors, pourquoi en parler s’il ne s’agit pas d’un algorithme de consensus ? La preuve d’historique résout un problème fondamental des systèmes distribués : l’accord sur le temps, ou l’ordonnancement des événements. Solana utilise la preuve d’historique comme une sorte d’algorithme de « pré-consensus » afin de rationaliser le consensus et de traiter efficacement les transactions. Les validateurs peuvent ainsi traiter les transactions en parallèle, ce qui améliore le débit et réduit la latence. La preuve d’historique est donc un composant qui aide à parvenir au consensus. Il est préférable de la considérer comme une horloge décentralisée pour le réseau : elle permet de prouver le temps et l’ordre dans lequel les événements se sont produits, sans dépendre d’un tiers.

Limites des approches traditionnelles

Traditionnellement, les blockchains se synchronisent sur des blocs, qui regroupent un grand nombre de transactions. Une transaction ne peut donc pas être traitée avant l’expiration d’un délai donné. Ce délai est appelé temps de bloc. Avec la preuve de travail, les temps de bloc doivent être longs — Bitcoin produit un bloc environ toutes les 10 minutes — afin de réduire la probabilité que plusieurs validateurs produisent simultanément un nouveau bloc. Avec la preuve d’enjeu, cette contrainte n’existe pas, mais les validateurs ont besoin d’horodatages pour déterminer l’ordre des blocs entrants. La solution courante consiste à ajouter à chaque bloc un horodatage d’horloge murale. Cet horodatage n’est toutefois valide que s’il est supérieur à l’horodatage médian des 11 blocs précédents et inférieur à « l’heure ajustée du réseau » plus deux heures. L’heure ajustée du réseau désigne la médiane des horodatages renvoyés par tous les nœuds auxquels vous êtes connecté. Cette solution est loin d’être idéale en raison de la dérive des horloges et de la latence du réseau. Que faire alors ?

Preuve d’historique

Solana adopte face à ce problème une approche radicale appelée preuve d’historique. En termes simples, la preuve d’historique permet de prouver le temps au sein d’un réseau hostile. Elle agit comme une fonction d’horodatage cryptographique et permet aux nœuds de s’accorder sur l’ordre des événements sans communiquer entre eux. Pour cela, elle utilise une fonction de hachage séquentielle résistante aux préimages — une fonction difficile à inverser — afin de créer une chaîne de hash dans laquelle chaque hash dépend du précédent. Les nœuds leaders horodatent les blocs à l’aide de ces preuves cryptographiques pour démontrer qu’un certain délai s’est écoulé depuis la dernière preuve. Comme tous les hash sont enchaînés, un historique prouvant que les données existaient à un instant donné est ainsi créé.

Cette approche unique repose sur les fonctions de délai vérifiables (VDF), dont le calcul est extrêmement long, mais dont le résultat peut être vérifié rapidement. Les fonctions de délai vérifiables servent à créer des hash qui dépendent à la fois du hash précédent et du temps écoulé. Elles permettent ainsi de créer une chronologie vérifiable des événements. Leur utilisation garantit cette propriété, car toute modification d’un hash nécessiterait de recalculer tous les hash précédents. Cela renforce la sécurité et l’intégrité de Solana, puisqu’il n’existe qu’une seule chronologie vérifiable des événements.

Une analogie simple

Imaginez une ville médiévale animée par les échanges commerciaux, les annonces, les débats et les conflits. Elle dépend d’un crieur public comme source centrale d’information, chargé de proclamer les nouvelles importantes et de s’assurer que tout le monde dispose des mêmes informations. Un jour, le crieur public tombe malade et ne peut plus remplir ses fonctions. La ville sombre dans le chaos : personne ne parvient à s’accorder sur ce qui s’est passé, à quel moment, qui a dit quoi et dans quel ordre les événements se sont produits.

Entre alors en scène un scribe particulièrement méticuleux. Assis au milieu de la place, il utilise une encre et une plume uniques pour consigner chaque événement dans son journal. Cette encre est spéciale : sa couleur change en fonction de la dernière entrée du journal. Tout le monde peut simplement consulter le journal du scribe et confirmer l’ordre ainsi que le moment des événements, sans devoir interroger chaque habitant. Ce journal devient la source de vérité incontestée de la ville et élimine le besoin d’un crieur public, puisque les habitants peuvent faire des annonces importantes sans lui. Cette encre changeante garantit une source de vérité permanente et immuable qui valide toutes les entrées précédentes. Remplacez la ville par un réseau, le journal par un registre et l’encre changeante par une fonction de hachage cryptographique : vous obtenez l’une des méthodes de synchronisation les plus fiables. Telle est la puissance de la preuve d’historique.

Avantages et inconvénients

La preuve d’historique permet de réduire les temps de bloc, de traiter un grand nombre de transactions par seconde et de disposer d’une source de temps unique et vérifiable avant le consensus. Elle permet également d’optimiser les ressources : les nœuds peuvent traiter les transactions sans attendre le consensus, ce qui améliore le parallélisme et l’utilisation de la puissance de calcul. Les fonctions de délai vérifiables ajoutent une couche de sécurité supplémentaire, car toute modification des transactions nécessiterait de recalculer le hash séquentiel. Cette opération serait très coûteuse et facile à détecter. De plus, tout le monde peut vérifier l’ordre et le moment des transactions grâce aux horodatages cryptographiques. Nous savons avec certitude quand une transaction a eu lieu, sans avoir à nous soucier de la validité des horodatages d’horloge murale. Cela favorise la transparence et la responsabilité, deux principes fondamentaux de la philosophie des cryptomonnaies.

Gardez toutefois à l’esprit que la preuve d’historique n’est pas parfaite. Ce modèle complexifie considérablement l’architecture du réseau de Solana, ce qui la rend plus difficile à comprendre et peut accroître le risque de bugs ou de vulnérabilités. En raison des calculs gourmands en ressources nécessaires aux fonctions de délai vérifiables, les nœuds Solana exigent du matériel plus puissant. À court terme, cela augmente le coût de participation au réseau. Grâce à la loi de Moore, cette barrière matérielle devrait diminuer avec le temps, à mesure que le matériel puissant autrefois coûteux devient plus accessible et abordable. La loi de Moore désigne l’observation selon laquelle le nombre de transistors d’une puce électronique double environ tous les deux ans, ce qui augmente la puissance de calcul.

Conclusion

Félicitations ! Dans ce tutoriel, nous avons étudié en détail les algorithmes de consensus : leur définition, les raisons de les connaître et leurs implémentations les plus populaires. Vous devriez maintenant disposer d’une compréhension complète des algorithmes de consensus. Comprendre ces algorithmes n’est pas un simple exercice théorique : c’est une nécessité pratique. Vous acquérez ainsi une compréhension fondamentale des réseaux sur lesquels vous développez, ce qui influence directement votre capacité à créer des applications robustes et efficaces. Vous pouvez également contribuer de manière significative aux communautés blockchain auxquelles vous appartenez. Dans un secteur technologique qui évolue aussi rapidement, ces connaissances sont indispensables.

À l’avenir, de nouveaux algorithmes de consensus innovants devraient voir le jour. Les modèles actuels seront également mis à jour et ajustés pour répondre aux nouveaux défis d’évolutivité, de sécurité et d’efficacité. Que vous soyez investisseur, développeur ou passionné de blockchain, c’est une période particulièrement stimulante pour participer à ce type de technologie propriétaire. Votre compréhension des algorithmes de consensus vous place à la pointe de l’innovation et vous permet d’évoluer dans cet espace tandis qu’il poursuit sa progression.

Si vous avez lu jusqu’ici, anon, merci !

Ressources complémentaires / Pour aller plus loin

Abonnez-vous à Helius

Suivez les dernières actualités du développement sur Solana et recevez une notification à chaque publication

Image agrandie