Avalanche Consensus 101

Le consensus d’Avalanche expliqué simplement

Avalanche France
Avalanche fr
11 min readAug 7, 2020

--

En 2018, une équipe pseudonyme se faisant appeler la Team Rocket a introduit le protocole de consensus Avalanche. Cet article décrit le protocole avec des propriétés apparemment magiques (mais bien réelles). Cet article met en contexte ce nouveau consensus par rapport à d’autres approches et décrit les fondements techniques qui le rendent unique.

Qu’est-ce qu’un consensus ?

Le consensus est le moyen par lequel une série d’électeurs indépendants (souvent appelés « validateurs ») parviennent à un accord sur une décision. En un coup d’œil, le processus semble simple : déterminez si une donnée est conforme aux règles de leur système et si le reste du réseau est d’accord avec leur évaluation.

Les protocoles de consensus (comme Avalanche) facilitent l’accord entre tous les validateurs, garantissant que le réseau a une vue synchronisée sur les données. Des protocoles de consensus dit “robustes” fonctionnent même dans le cas où certains validateurs du réseau sont défectueux ou malveillants.

À la fin de ce processus, tous les nœuds partageront les mêmes données, appelées «état», qui ont été convenues dans ce processus de prise de décision. Si une transaction conflictuelle passe par un nœud et qu’elle n’est pas entièrement en accord avec le reste du réseau, il s’agit d’une «violation de sécurité». Cela signifie qu’au moins une machine n’est pas cohérente avec les autres machines du réseau. Le but des protocoles de consensus est de minimiser les risques de violations de la sécurité sur le réseau, de préférence au point où cela est vraiment improbable.

Concept assez simple, non ? Pourtant, le sujet des protocoles de consensus est l’un des domaines les plus difficiles de l’informatique.

Histoire des Consensus

Au cours des 45 ans d’histoire des systèmes distribués, il n’y a eu que trois approches au problème du consensus: Classique, Nakamoto et Avalanche. Discutons de ces trois approches, pour illustrer ce qui les distingue les unes des autres et déterminer leurs forces et leurs faiblesses respectives.

Protocoles classiques

Les protocoles de consensus classiques, tels que Practical Byzantine Fault Tolerance (PBFT) et HotStuff, sont basés sur le vote de tous. Cela signifie qu’un validateur a besoin d’entendre un vaste ensemble de nœuds qui composent le réseau pour prendre une décision. De plus, il s’agit de protocoles à «probabilité de 1», ou P = 1, ce qui signifie que le réseau se met d’accord sur une décision avec une certitude absolue. Les transactions se finalisent immédiatement après qu’un nœud a reçu des réponses de la fraction nécessaire des nœuds qui composent le système.

Le consensus classique a deux problèmes majeurs dans les paramètres ouverts comme Internet. Le premier problème est que ces protocoles sont fragiles : leur exactitude dépend fortement du fait que chacun dans le système connaît et s’accorde sur les identités des validateurs qui composent le système à tout moment. Par conséquent, toute erreur dans le maintien de l’appartenance au système ou toute différence dans les vues du réseau peut conduire à des violations de la sécurité. De plus, un attaquant n’a pas besoin de contrôler plus de 33% du réseau pour lancer une attaque à double dépense dont le succès est garanti.

Deuxièmement, ces systèmes, bien que rapides, ne s’adaptent pas bien au nombre de participants. Le protocole classique le plus évolutif, HotStuff (conçu d’ailleurs par Ted Yin, qui travaille maintenant sur le protocole Avalanche) utilisé par la Libra (Facebook), ne prend en charge qu’environ 100 validateurs avant que les performances ne commencent à en souffrir.

Ces deux failles font du consensus classique un candidat non viable pour les réseaux ouverts et sans autorisation où les nœuds peuvent rejoindre ou partir lorsqu’ils le souhaitent. Les nœuds peuvent aussi se comporter de manière défavorable à l’intention du réseau.

Consensus de Nakamoto

Pendant plus d’une décennie, les systèmesPractical Byzantine Fault Tolerance (PBFT) étaient une nouveauté mais les consensus classiques ne pouvaient pas s’adapter aux besoins mondiaux. Puis, sorti de nulle part, Satoshi Nakamoto est venu et a publié le papier Bitcoin et a démontré qu’il était possible de créer un protocole de consensus résistant à un adversaire et qui fonctionne à l’échelle mondiale. Nakamoto a accompli cela en redéfinissant le problème du consensus et en rendant la définition de l’exactitude probabilistique.

Nakamoto est indéniablement une percée en tant que protocole mondial robuste, mais il présente des inconvénients. Il est lent, consomme beaucoup d’énergie et met beaucoup de temps à se sentir confiant dans la finalité d’une transaction. Bien que ce soient des inconvénients acceptables pour un actif qui se déplace rarement ou qui agit comme une réserve de valeur, ces inconvénients représentent un fardeau trop lourd pour des cas d’utilisation tels que les paiements entre pairs et la finance décentralisée.

Avalanche

Dans le sillage des travaux de Nakamoto, le monde voulait toujours d’un protocole avec tous les avantages du consensus de Nakamoto (robustesse, décentralisation) et tous les avantages du consensus classique (vitesse, échelle, finalité rapide et efficacité énergétique). La version Crypto du proverbe, “avoir le beurre et l’argent du beurre”.

Puis, en mai 2018, un article a été publié par un groupe pseudonyme nommé Team Rocket qui a proposé une troisième classe de protocole de consensus qu’ils ont surnommé «Avalanche». Avec tous les avantages du consensus classique et la décentralisation massive du consensus de Nakamoto, il a prouvé que les protocoles classiques peuvent être généralisés pour se comporter de manière probabiliste et obtenir des améliorations de performances massives en conséquence.

Cet article contient des explications de haut niveau. Si vous souhaitez lire des informations détaillées sur Avalanche, veuillez consulter https://avalabs.org/whitepapers.

Qu’est-ce que le consensus “Avalanche” ?

Le consensus Avalanche, comme le consensus de Nakamoto, est un protocole probabiliste. Tout comme Nakamoto a échangé une petite chance de probabilité pour la performance, Avalanche embrasse la probabilité pour rendre le risque d’erreur microscopique (et mieux encore, comme toutes les parties d’Avalanche, configurable par des validateurs sur des sous-réseaux personnalisés).

Avalanche finalise également toutes les transactions immédiatement, sans attendre les confirmations. Avalanche est capable de le faire car il s’agit d’une généralisation par rapport au consensus classique, il hérite donc de cette propriété très souhaitable. En fait, Avalanche voit les transactions se finaliser en moins d’une seconde en moyenne. C’est incroyablement rapide par rapport aux réseaux décentralisés existants.

En tant que consensus classique généralisé avec des modèles probabilistes pris en compte, Avalanche a également la propriété d’être à la fois lié au processeur et à haut débit. Il n’exige pas de matériel spécialisé (lire: onéreux) pour atteindre une haute performance supérieure à 4 500 transactions par seconde. Cela signifie que l’ordinateur que vous avez déjà (ou même celui qui ramasse la poussière dans votre placard) est suffisamment puissant pour exécuter Avalanche. Cette combinaison rend les nœuds d’Avalanche à la fois extrêmement écologiques et économiques.

Mieux encore, comme le consensus de Nakamoto, il n’y a pas de plafond connu sur le nombre d’individus pouvant participer au réseau à ses niveaux les plus profonds — on ne peut pas en dire autant des protocoles classiques dont les performances se dégradent de façon exponentielle avec une plus grande participation (plus dans la note avancée ci-dessous). Pour toutes les discussions sur la mise à disposition de ces réseaux pour les masses, Avalanche est sans égal à cet égard.

Avalanche ne dépend pas de la preuve de travail comme le consensus de Nakamoto. Dans des protocoles comme Bitcoin, la preuve de travail est nécessaire à la fois pour l’organisation et la sécurité contre les acteurs malhonnêtes. Avalanche pouvait utiliser la preuve de travail, mais a choisi la preuve de participation pour forcer les utilisateurs à avoir un certain nombre de jetons avant d’être autorisés à voter sur les transactions.

Enfin, contrairement à Bitcoin et aux autres systèmes basés sur le travail de Nakamoto qui nécessitent une action perpétuelle, les nœuds d’Avalanche ne fonctionnent que lorsqu’il y a du travail à faire. Il n’y a pas d’extraction ou de sondage pour obtenir de nouveaux blocs. Les transactions sont diffusées sur le vaste réseau, qui les entend ensuite et commence à voter. S’il n’y a aucune transaction sur laquelle voter, les nœuds du réseau ne font rien d’autre que d’écouter jusqu’à ce que de nouvelles transactions soient entendues. En termes simples, Avalanche fonctionne plus intelligemment et non plus dur.

Note avancée: la propriété la plus importante d’Avalanche, qui le distingue vraiment des protocoles classiques existants, est que, comme le consensus Nakamoto, il peut fonctionner sans limite supérieure connue des participants au réseau. Les décisions dans Avalanche peuvent être prises en O (1) (nombre constant) de messages par nœud. Comparez cela avec les protocoles classiques qui prennent des messages O (n²) pour parvenir à un consensus et les problèmes de mise à l’échelle du réseau auxquels le consensus classique a été confronté disparaissent dans Avalanche.

Comment fonctionne le consensus d’Avalanche ?

Pour commencer, parlons de ce que fait un validateur dans le consensus Avalanche. Avalanche est un protocole de vote. Les validateurs écoutent les transactions. Lorsqu’ils entendent une transaction, ils votent pour savoir si une transaction doit être «acceptée», et si ce n’est pas le cas, elle est marquée «rejetée». Les transactions qui semblent vertueuses seront votées comme «acceptées» par un validateur. En cas de conflit, la transaction sera votée comme «rejetée». C’est la somme de tout cela. Un validateur voit une décision, prend une décision initiale, puis collabore avec le reste du réseau pour déterminer si le réseau est d’accord avec cette décision. C’est la même attente dans les protocoles de vote classiques, mais dans Avalanche, cela se produit avec un nombre de validateurs beaucoup plus élevé.

Ce processus de vote dans Avalanche est ce qui le rend si unique. Chaque validateur est un décideur totalement indépendant. Il n’y a pas d’élection de chef. Cependant, par protocole, chaque nœud utilise le même processus pour déterminer si une décision est vertueuse et dans quelle mesure elle est en consensus avec le reste du réseau. Une fois qu’ils voient une forte probabilité d’accord sur le réseau, le nœud verrouille son vote et accepte une transaction comme finale.

Le processus utilisé pour déterminer si une transaction est préférée et que le reste du réseau est d’accord sur cette décision est appelé «sous-échantillonnage aléatoire répété».

À un niveau élevé, cela signifie qu’un validateur sélectionne au hasard d’autres validateurs pour leur demander ce qu’ils aiment. Il le fait encore et encore sur de nouveaux nœuds sélectionnés au hasard jusqu’à ce qu’il accumule suffisamment de données pour déterminer que sa probabilité d’être correcte est si élevée que vous pouvez tout aussi bien considérer qu’il est impossible que ce soit faux.

Plus en détail, cela fonctionne comme suit:

  1. Un validateur reçoit un ensemble de transactions qui ont été émises et est invité à décider quelles transactions «Accepter».
  2. Le client du nœud présente les machines virtuelles («VM») avec leurs transactions, et les VM fourniront des informations pour aider le client à déterminer quelles transactions sont acceptables.
  3. Le validateur sélectionne un sous-ensemble de ces transactions qui ne sont pas en conflit, les marque comme préférées et tente de les accepter sur le réseau.
  4. Tous les nœuds qui interrogent ce validateur reçoivent son dernier choix préféré pour cette décision.
  5. Ce validateur sélectionne K nœuds dans la liste entière des validateurs (la probabilité de sélection est pondérée par le montant de la mise/stake) pour demander leur décision préférée.
  6. Chaque validateur interrogé répond avec ses décisions préférées, les votes du validateur sont mis à jour en conséquence et la confiance est établie.
  7. Pendant ce temps, d’autres nœuds sélectionnent également des validateurs aléatoires à partir de l’ensemble de validateurs à interroger pour leur réponse préférée et mettent à jour leurs réponses en conséquence.
  8. Cela continue pendant au moins M tours ou jusqu’à ce qu’un seuil de confiance suffisant soit atteint, quel que soit le dernier, avec K validateurs sélectionnés au hasard à chaque tour (sans remplacement).
  9. Une fois qu’un seuil de confiance est atteint, la décision sur la transaction est verrouillée comme définitive.
  10. Si «Accepté», la transaction est envoyée à la VM pour être traitée; si «Rejetée», la transaction est retirée du consensus.

Le livre blanc de Team Rocket a montré qu’avec un paramétrage correct, un réseau prendra la même décision en utilisant ce processus avec une probabilité paramétrable.

Finalité probabiliste

Les scientifiques ont besoin de certitude dans leurs modèles. C’est très agréable et élégant de pouvoir dire «c’est absolument vrai sans l’ombre d’un doute» lors de la description d’un système ou d’un processus. Les protocoles classiques tendent vers ce modèle idyllique, mais dans le monde réel, rien n’est certain.

Avec 100 machines dans un réseau classique, il y a une chance que 33% d’entre elles puissent toutes se déconnecter en même temps ou que quelqu’un prenne socialement 33% d’entre elles et essaie d’imposer sa volonté sur le réseau. Il y a aussi une probabilité non nulle que tout l’oxygène d’une pièce saute de l’autre côté par des collisions aléatoires et fasse étouffer toute personne assez malchanceuse pour être du mauvais côté dans une mare d’azote. C’est possible, mais les probabilités sont si faibles qu’elles ne préoccupent personne.

Nakamoto continue de démontrer au monde que la finalité probabiliste est acceptable, tant que le risque d’une défaillance de sécurité est si astronomiquement éloigné que s’il se produit, cela serait vraiment étonnat. C’est une garantie du niveau de service acceptable. C’est bien mieux que cinq neuf (99,999%) que vous obtenez avec des SLA chez un opérateur.

Avalanche, en acceptant cette même marge d’erreur mineure, accepte le risque d’erreur une fois tous les 20 000 ans dans le modèle avec les bons paramètres. Il est plus probable que l’infrastructure Internet vieillissante entraîne des pannes de réseau massives. C’est cette idée clé qui a aidé la Team Rocket à ouvrir la voie à un nouveau protocole de consensus qui évolue considérablement mieux que les réseaux de consensus classiques existants.

Un avenir évolutif et décentralisé avec Avalanche

Les protocoles classiques pratiques byzantins tolérants aux pannes ont montré qu’un réseau peut parvenir à un consensus malgré les participants adverses. Les protocoles de Nakamoto ont montré que les protocoles probabilistes sont sûrs dans la pratique et peuvent fournir une décentralisation et une robustesse sans précédent.

Avalanche prend ces révélations et les combine dans un nouveau protocole, montrant que vous pouvez avoir le meilleur du Classique et du Nakamoto sans les inconvénients de l’une ou l’autre classe de protocoles.

En demandant à un validateur de sélectionner au hasard d’autres validateurs afin de leur demander quelles sont leurs préférences, les participants à Avalanche gagnent en confiance dans la bonne décision partagée par tous les nœuds du réseau. Avec suffisamment de confiance, une décision est prise immédiatement. Ce processus se produit si rapidement qu’Avalanche rivalise avec les principaux systèmes de paiement dans sa capacité à procéder et valider des transactions dans un réseau.

Article original part Collin Cusce

À propos d’Avalanche :

Avalanche est une plateforme open-source permettant de lancer des applications financières décentralisées et des déploiements de blockchain d’entreprise dans un écosystème interopérable et hautement évolutif. Les développeurs qui se servent d’Avalanche peuvent facilement créer des applications puissantes, fiables et sécurisées et des réseaux blockchain personnalisés avec des ensembles de règles complexes ou s’appuyer sur des sous-réseaux privés ou publics existants.

Telegram Francophone | Twitter Francophone |Site Web |Papier blanc | Twitter | Discord | GitHub | Documentation | Explorer | Avalanche-X | Telegram | Facebook | LinkedIn | Reddit | YouTube

--

--