Introduction
Tendermint est un moteur de consensus Byzantine Fault Tolerant (BFT) open source conçu pour la création de blockchains. Il sépare le protocole de consensus de la couche applicative, ce qui facilite le développement de systèmes décentralisés en permettant l'utilisation de n'importe quel langage de programmation pour la couche applicative. De plus, Tendermint est un système quasiment asynchrone, ce qui le distingue des autres solutions utilisées dans les blockchains.
Tendermint peut être utilisé dans d'autres cas que la blockchain. En effet, grâce à son moteur de consensus Byzantine Fault Tolerant (BFT), il est adapté à toute application nécessitant un accord entre plusieurs participants dans un environnement distribué, comme les systèmes de bases de données distribuées.
Algorithme de consensus
Preuve d'enjeu
L'algorithme de consensus de Tendermint est basé sur la preuve d'enjeu (Proof of Stake). Les validateurs sont sélectionnés en fonction du nombre de jetons (mise) qu'ils possèdent et qu'ils verrouillent en garantie pour devenir validateurs.
Rôles dans le consensus
Les validateurs impliqués dans le consensus jouent deux rôles principaux :
Proposeur :
Un proposeur est choisi à chaque tour selon un mécanisme de round-robin pondéré par la mise. Son rôle est de créer un bloc contenant des transactions à valider et de le proposer au vote des autres validateurs pour qu'il soit inclus dans la blockchain. Un proposeur ne peut pas être choisi deux fois de suite.Validateur :
Les validateurs vérifient les blocs proposés et votent pour décider s'ils doivent être acceptés ou non. Leur décision est prise en fonction de la validité des transactions et du respect des règles du protocole.
Déroulement du Consensus
Le consensus se déroule en rounds. Lors de chaque round, un bloc d'une certaine hauteur est proposé pour être inclus ou non dans la blockchain.
Voici un schéma illustrant ce consensus :
1. Proposition du bloc
Un proposeur est désigné par un mécanisme de round-robin pondéré par la mise pour construire un bloc contenant des transactions et le soumettre au processus de consensus.
2. Phases de vote
a. Pré-vote
- Dans cette première phase, les validateurs votent pour indiquer s'ils considèrent le bloc proposé comme valide.
- Si le bloc obtient au moins 2/3 des votes pondérés (quorum), le processus passe à l'étape suivante.
- Si le quorum n'est pas atteint, un nouveau proposeur est sélectionné, un nouveau round commence, et le bloc précédent est ignoré.
b. Pré-commit
- Les validateurs effectuent un second vote pour confirmer leur intention de valider le bloc.
- Si le bloc obtient au moins 2/3 des voix pondérées, le processus passe à la phase finale.
- Sinon, le bloc est abandonné, un nouveau proposeur est désigné, et un nouveau round est initié.
c. Commit
- C'est la dernière étape avant l'inclusion du bloc dans la blockchain.
- Un dernier vote est effectué pour décider si le bloc doit être officiellement ajouté à la blockchain.
- Si le bloc obtient au moins 2/3 des voix pondérées, il est validé et inclus dans la blockchain, garantissant une finalité immédiate.
- Sinon, le processus redémarre avec un nouveau round.
Preuve de sécurité
La preuve de sécurité dans Tendermint repose sur la capacité à garantir une finalité immédiate et irréversible des blocs, tout en tolérant jusqu'à 1/3 de comportements malveillants ou défaillants. Cela est assuré par un consensus basé sur les votes pondérés par la mise et un mécanisme de validation robuste qui empêche les forks et garantit l'intégrité de la blockchain.
Complexité et passage à l'échelle du consensus
La complexité de l'algorithme de consensus de Tendermint est de O(n²), car chaque validateur doit envoyer chaque message et vote à tous les autres. En raison de cette complexité, le nombre de validateurs doit être limité. Sinon, le consensus prendra davantage de temps, ce qui rend le passage à l'échelle de Tendermint plus complexe.
Conclusion
Tendermint offre un algorithme de consensus sécurisé et efficace basé sur la preuve d'enjeu, garantissant une finalité immédiate des blocs tout en tolérant jusqu'à un tiers de défaillances. Bien que performant pour des réseaux de taille moyenne, sa complexité quadratique (O(n²)) limite son passage à l'échelle, car l'augmentation du nombre de validateurs peut ralentir le processus de consensus. Toutefois, des solutions comme le sharding et l'optimisation de la communication pourraient permettre à Tendermint de mieux s'adapter aux réseaux de grande envergure.
Hello.
There is reasonable evidence that this article is machine-generated.
We would appreciate it if you could avoid publishing AI-generated content (full or partial texts, art, etc.).
Thank you.
Guide: AI-Generated Content = Not Original Content
Hive Guide: Hive 101
If you believe this comment is in error, please contact us in #appeals in Discord.