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

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

Nicolas Lemaitre
Avalanche fr
4 min readJun 23, 2019

--

Avalanche — protocole Snowflake

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 Snowflake (Flocon 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 Snowflake. Les couleurs rouge et bleue représente une double-dépense. Si vous avez raté le premier chapitre des protocoles et la présentation de Slush (neige fondante), suivez ce lien : https://medium.com/@n.lemaitre44/avalanche-ava-zoom-sur-les-protocoles-partie-i-2fd45a66752b.

Snowflake : résistance BFT.

Snowflake ajoute une fonctionnalité de base à Slush, lui permettant de devenir BFT / résistant aux pannes byzantines ( BFT: problèmes des généraux byzantins — des nœuds du réseau qui seraient mal intentionnés).

Dans Slush, nous avons constaté qu’il n’existait pas de mémoire (d’historique de communication), mais le protocole Snowflake va fournir à chaque nœud un compteur (noté cnt) pour stocker le nombre d’échantillons consécutifs du réseau ayant donné le même résultat, que ce soit une couleur rouge ou bleue. À chaque changement de couleur, le compteur redémarre de zéro.

Dans l’exemple suivant, N I (pour Nœud Initial — il a reçu la transaction d’un client en premier) commence avec la couleur rouge (rappelez-vous le client était rouge dans l’article précédent) avec un compteur à zéro (cnt = 0).

Exemple Snowflake, conservation de couleur et changement de couleur.

Après le tour #1, N I reçoit 4 réponses rouges et une bleue. Majorité de rouge, le compteur passe à 1 pour la couleur rouge (cnt = 1).

Lors du tour #2, N I reçoit encore une fois 4 réponses rouges et 1 réponse bleue. Le compteur passe alors de cnt =1 à cnt =2 pour la couleur rouge.

Durant le tour #3, N I dont le compteur était précédemment à cnt = 2 pour la couleur rouge, reçoit 1 réponse rouge et 4 réponses bleues. Majorité de réponses bleues, le compteur est remis à zéro et la couleur change pour le bleu.

Après cette réinitialisation de couleur (changement de rouge à bleu, avec un compteur à zéro) durant le tour #3, deux cas seront possibles pour le tour #4 :

  1. Une majorité de votes pour la couleur bleue sont reçus: N I conserve sa couleur bleue et augmente son compteur pour cette même couleur ; cnt = 1.
  2. Une majorité de votes pour la couleur rouge sont reçus : N I change sa couleur pour le rouge avec un compteur à zéro; cnt= 0.

Après un certain nombre d’échantillons consécutifs (paramètre à définir pour un seuil donné de nœuds byzantins et de garantie de sécurité souhaitée), le nœud accepte définitivement une couleur. Cela permet aux nœuds corrects de s’engager et signifie que les nœuds arriveront à un consensus (le livre blanc qualifie ce point “de non-retour” après lequel une décision est inévitable).

En d’autres termes, un nœud n’acceptera sa couleur actuelle que lorsque le compteur, qui stocke le nombre d’échantillons consécutifs de la même couleur, dépasse un paramètre de sécurité β prédéfini (exemple ci-dessous).

Le Nœud Initial accepte définitivement la couleur rouge après avoir atteint β.

En résumé Snowflake propose les avantages suivants:

  • Les nœuds sont dotés d’une mémoire éphémère conservant leur couleur actuelle et le compteur de celle-ci. Les échanges entre les nœuds ne sont pas enregistrés, cela en fait un protocole très léger.
  • Le protocole est tolérant aux pannes byzantines.

Avez-vous compris le mode de fonctionnement du protocole Snowflake? Qu’en pensez-vous? Dans le prochain article, nous allons décortiquer le protocole Snowball (Boule de neige), le troisième protocole qui compose la famille Avalanche.

Références :

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

À 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

--

--