L'algorithm de consensus Tendermint
Introduction
L'algorithm de consensus byzantin (BCA) utilisé par Tendermint est un algorithme de consensus basé sur une solution existante du problème des généraux byzantins (BGT). Il ne nécessite pas de preuve de travail (PoW), il est donc plus efficace en termes de consommation d'énergie, et plus rapide car il ne nécessite pas de temps de blocage. Il peut assurer un fonctionnement sûr du réseau s’il y a au moins 2/3+ (strictement plus des deux tiers) de participants « honnêtes » au réseau.
Vocabulaire
Validators
Premièrement les validators, et ce sont les participants qui font fonctionner le réseau.Contrairement à la PoW ou à la PoS, où n'importe qui peut devenir mineur à tout moment, au sein de la BCA, seuls les
validateurspeuvent participer à la formation de la blockchain.Round
Un tour dans le processus de consensus est appelé un round. Chaque round est composé de trois étapes:Propose,PrevoteetPrecommit.Proposer
Unproposerest un validateur qui a le droit de proposer un bloc pour le round en cours. Leproposerest choisi en utilisant un algorithme de rotation de round-robin.
Aperçu du consensus
Durant la recherche du N-ème block, le processus suit les étapes suivantes.
NewHeight -> (Propose -> Prevote -> Precommit)+ -> Commit -> NewHeight ->…

Propose
- Un validateur est choisi pour proposer un bloc pour le round en cours.
- La proposition est diffusée aux restes des nœuds.
Prevote
- Chaque validateur vérifie la validité de la proposition.
- Si la proposition est valide, le validateur vote pour elle en envoyant un message
prevoteau reste des nœuds. - Si la proposition est invalide, le validateur n'accepte pas la proposition et envoie un message
prevote nilau reste des nœuds.
Precommit
- Chaque nœud qui recevra 2/3+ des
prevotespour la même proposition, enverra un messageprecommitpour cette proposition, sinon il enverra un messageprecommit nil. - Pour chaque nœud, si il recoit +2/3 des
precommitspour la même proposition, alors le bloc est considéré comme validé, donc le processus continue avec la phasecommit. - Sinon, le processus continue avec un nouveau round
newRound.
- Chaque nœud qui recevra 2/3+ des
Commit
- Il existe deux conditions pour finaliser le
round.- Le nœud doit recevoir le bloc validé par le réseau. Une fois reçu, il signe et diffuse un commit pour ce bloc.
- Le nœud doit attends jusqu'à ce qu'il reçoive +2/3 des
commitpour le même bloc.
- Il existe deux conditions pour finaliser le
Une fois les deux conditions satisfaites, le nœud définit son CommitTime et passe vers l'étape NewHeight
- NewHeight
- Le but de cette étape
NewHeightest de rassembler des commits supplémentaires pour le bloc validé auroundprécédent. - Les nœuds restent à cette étape jusqu'à une durée fixe après le commit.
- Laissant le temps aux validateurs plus lents de recevoir le bloc validé et de signer le commit.
- Cela permet aux propositions de blocs d'inclure plus que les 2/3 minimum des
commits.
- Le but de cette étape
Les locks
Si il y a -1/3 des validateurs qui sont malveillants, l'algorithm peut garantir la sécurité du réseaux. C'est-à-dire que les validateurs ne valideront jamais de blocs conflictuels à la même hauteur.
Pour assurer cela, l'algorithm introduit des régles de verrouillage lock.
- Si le validateur avait reçu plus des 2/3 des
precommitpour un block donné, il se verrouille sur ce block et libère tous les verrous précédents. - Un nœud ne peut avoir qu'un seul verrou à la fois.
- Si le nœud avait reçu plus des 2/3 des
prevotes nil, il se déverrouille simplement. - Lors du verrouillage (ou du déverrouillage), le nœud rassemble les
prevotespour le bloc verrouillé (ou lesprevotes nil) et les regroupe dans une preuve de verrouillage pour plus tard quand ce sera son tour de proposer. - Si un nœud n'avait pas reçu plus de 2/3 des
prevotespour un bloc donné, alors il ne verrouille rien.
Congratulations @lhamza! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)
Your next target is to reach 50 upvotes.
You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word
STOPCheck out our last posts: