Avalanche (AVAX): zoom sur les protocoles — Partie III

Présentation de Snowball le troisième des quatre protocoles formant la nouvelle famille de consensus Avalanche (AVAX).

Nicolas Lemaitre
Avalanche fr
4 min readJun 30, 2019

--

Avalanche — protocole Snowball

La nouvelle famille de consensus Avalanche est une combinaison de quatre protocoles : Slush, Snowflake, Snowball et Avalanche. Dans cet article, nous allons voir comment le protocole Snowball (Boule de neige) fonctionne individuellement. La technologie a été vulgarisée pour permettre à tout le monde d‘assimiler le sujet. Afin de faciliter votre compréhension, nous illustrerons par des schémas le fonctionnement du protocole Snowball. Les couleurs rouge et bleue représentent une double dépense. Si vous avez raté les premiers chapitres des protocoles constituant Avalanche — la présentation de Slush (neige fondante) ainsi que Snowflake (flocon de neige) — suivez les liens en bas de page.

Snowball : l’état de confiance.

Le protocole Snowball est construit sur le protocole Snowflake en y ajoutant un état de confiance. Il le fait pour rendre le protocole plus difficile à attaquer car il est maintenant en mesure de stocker des informations et de prendre des décisions basées sur celles-ci, ce qu’il ne pouvait pas faire auparavant.

Fonctionnement :

  1. À chaque requête réussie, le nœud augmente sa valeur de confiance pour cette couleur.
  2. Un nœud change de couleur lorsque la confiance en sa couleur actuelle, devient inférieure à la valeur de confiance de l’autre couleur.

Snowball va enregistrer le compteur de confiance des deux couleurs et va les mettre en compétition.

En effet, le nœud N I (pour Nœud Initial — il a reçu la transaction d’un client en premier) dans notre exemple ci-dessous, va échantillonner le réseau en émettant (k) requêtes sur X tours, qui vont augmenter son compteur de confiance pour les différentes couleurs.

Pour rappel, un nœud N I est initialement rouge car il a reçu la transaction d’un client qui est rouge.

Snowball représentation (6 secondes entre chaque image)

Tour #1 — Le nœud N I fait une requête où il interroge 5 nœuds (k = 5). Nous obtenons comme réponse une majorité de rouges (4 rouges et 1 bleu), le compteur de confiance pour le rouge augmente alors de 1 tandis que la confiance pour la couleur bleue reste à 0.

Tour #2 — Même scénario. Après la requête de N I, nous avons une majorité de votes rouges. Encore une fois N I augmente sa confiance pour la couleur rouge, qui est désormais à 2.

Tour #3 — Nous avons une majorité de votes bleus. Le nœud N I augmente donc sa confiance pour la couleur bleue, qui est désormais de 1 et conserve sa confiance pour la couleur rouge, qui est toujours à 2. Le nœud N I reste donc rouge.

Tour #4 — Une nouvelle majorité pour la couleur bleue. La confiance des couleurs se retrouvent à égalité. Le nœud N I reste rouge en effet dans Snowball, un nœud ne change pas de couleur tant que la confiance pour sa couleur actuelle est égale ou supérieure à une autre couleur.

Tour #5 — Une nouvelle majorité pour la couleur bleue. La confiance de la couleur bleue se trouve désormais strictement supérieur à la confiance de la couleur rouge. Le nœud N I change donc de couleur et devient bleu.

Nous répétons ces requêtes pour différents tours, jusqu’à ce qu’une des couleurs se démarque en atteignant un seuil noté ß (paramètre défini comme un seuil donné de garantie et sécurité). Pour rappel ß (bêta) correspond à des réponses consécutives de la même couleur, c’est un paramètre du protocole Snowflake. Dans notre exemple, nous avons arbitrairement fixé ce seuil ß à 4 (qui sera dans la réalité un seuil plus haut à atteindre). A partir du tour #6, N I enregistre 4 réponses consécutives pour la couleur rouge. La couleur rouge atteint donc le seuil ß. N I accepte irréversiblement la couleur rouge comme la sienne.

En résumé Snowball propose les avantages suivants:

Snowball renforce le protocole Snowflake en intégrant la notion d’un compteur de confiance permanent. Les nœuds conservent un compteur pour les différentes couleurs et ne changent plus de couleur à chaque fois qu’une requête réussie leur indique une majorité pour la couleur opposée. Dans Snowball, un nœud change de couleur seulement si la confiance pour cette couleur est strictement supérieure à sa couleur actuelle.

Comme vous l’aurez compris il devient beaucoup plus difficile pour des acteurs byzantins (mauvais acteurs) de maintenir le réseau dans un déséquilibre (ne pas arriver à un consensus) pour cette raison. De plus, un nœud acceptera une couleur définitivement que lorsque cette couleur aura eu (β) réponses consécutives.

Le principe derrière Snowball est que le nœud reste constant dans sa propagation d’information. Il propage la couleur qui représente de son point de vue la majorité des avis collectés (cf: couleur ayant une confiance strictement supérieure).

Une démo de Snowball est présente sur le site d’Ava Labs si vous êtes curieux : https://avalabs.org/snow-bft-demo/#/snow

Avez-vous compris le mode de fonctionnement du protocole Snowball? Qu’en pensez-vous?

À 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ées 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

Références :

  • Scalable and Probabilistic Leaderless BFT Consensus Through Metastability — Team Rocket 2019

--

--