Collaboration de recherche : Albatross

Un algorithme de consensus optimiste

Talleyrand
Nimiq Translations
Published in
7 min readMar 10, 2019

--

Team Nimiq est fière d’introduire Albatross, le résultat d‘une collaboration de recherche avec Trinkler Software. Albatross est un algorithme de consensus reposant sur la preuve d’enjeu (“Proof-of-stake” en anglais ou “PoS”) permettant d’atteindre des performances proches du maximum théorique pour les algorithmes PoS sur chaîne unique. Bien qu’une description technique du protocole ait été publiée, ce billet de blog a pour but d’offrir un aperçu plus léger et facile à comprendre.

Il est important de souligner que Albatross est un algorithme de consensus seulement. En tant que tel, il ne définit pas les fonctionnalités construite sur lui, mais n’est qu’un élément de l’ensemble constitutif d’une blockchain. Bien que Nimiq évalue l’utilisation d’Albatross pour la prochaine génération de son protocole, aucune décision n’a été pour le moment été prise. Plus de détails sur nos plans pour Albatross seront détaillés à la fin de ce post.

Qu’est-ce que la preuve d’enjeu ?

Dans un algorithme de consensus basé sur la preuve d’enjeu (PoS), le nœud éligible pour ajouter le bloc suivant est choisi proportionnellement à la mise qu’il possède dans le système. Cela rend la production de blocs très bon marché par rapport aux algorithmes basés sur la preuve du travail (PoW). Un comportement hostile (par exemple sous la forme de forks) est souvent puni en confisquant une partie de la mise du nœud qui se comporte mal, soit en la détruisant, soit en le redistribuant.

Les trois avantages les plus importants du PoS par rapport au PoW sont :

  • une réduction drastique de la consommation d’énergie : il n’est pas nécessaire d’effectuer des calculs très consommateurs d’énergie pour sécuriser la blockchain,
  • réduction du risque de centralisation : en particulier, les économies d’échelle sont moins un problème dans le PoS, et
  • l’équivalent des attaques à 51% sont bien plus coûteuses : les nœuds qui se comportent mal perdent définitivement leurs mises, à l’inverse du matériel qui réutilisables dans le cas d’un algorithme PoW.

Que signifie “algorithme de consensus optimiste” ?

Nous décrivons Albatross — notre nouvel algorithme de consensus pour la blockchain — comme étant optimiste.

Ce terme ne signifie pas qu‘il sacrifie en sécurité, mais plutôt qu’il s’inspire d’algorithmes spéculatifs byzantins tolérants aux fautes (BFT).

Les algorithmes BFT classiques fournissent un consensus dans les systèmes distribués tout en considérant un nombre limité d’acteurs malveillants ou byzantins. L’un des exemples les plus marquants d’un tel algorithme est PBFT, sur lequel, par exemple, s’appuie la cryptomonnaie de Tendermint.

Les algorithmes BFT spéculatifs constituent un progrès par rapport aux algorithmes BFT standards. Ils permettent d’augmenter considérablement les performances en l’absence d’acteurs malveillants. C’est ce qu’on appelle le cas optimiste et c’est là que notre description trouve son origine. Dans le cas où des acteurs byzantins seraient présents et tenteraient d’altérer le protocole, d’autres peuvent remarquer et passer le protocole dans son mode plus lent et plus conservateur, offrant les mêmes garanties de sécurité que les protocoles BFT standard.

Ainsi, dans le meilleur des cas, les algorithmes de consensus optimistes sont capables de fonctionner beaucoup mieux que les algorithmes classiques. Lors d’une attaque, les algorithmes optimistes ont encore des performances similaires à celles des algorithmes standard.

Le protocole Albatross

Avec Albatross, les nœuds responsables de la production de nouveaux blocs sont appelés validateurs. Toute personne ayant un intérêt dans le système peut se porter volontaire en tant que validateur en déposant une mise en garantie pouvant être potentiellement “slashed”(“réduite” ndlr).

La production de blocs dans Albatross est divisée en époques. Comme le montre la figure suivante, chaque époque est constituée d’un nombre constant de microblocs (quatre microblocs dans l’exemple ci-dessous) suivis d’un macrobloc. Les microblocs contiennent les transactions et ont un seul producteur de blocs qui est choisi au hasard parmi les validateurs. Alors que n’importe qui peut se porter volontaire pour être un validateur, l’ensemble réel de validateurs dans une époque donnée (les validateurs actifs) est choisi par le macrobloc de l’époque précédente.

Dans notre exemple, le bloc numéro 0 détermine les validateurs actifs v_0,…,v_k pour l’époque du bloc 1 au bloc 5.

Pour pouvoir choisir au hasard le producteur de blocs suivant dans la liste des validateurs, chaque bloc contient une balise aléatoire, représentée ci-dessus par r_i. Le fabricant d’un bloc utilise une fonction aléatoire vérifiable (VRF) pour produire la prochaine valeur aléatoire r_i à partir de la valeur précédente r_{i-1}. Tous les autres participants peuvent ensuite vérifier l’exactitude de la valeur aléatoire suivante.

Étant donné que ces balises aléatoires sont présentes dans chaque bloc, chaque participant d’Albatross est alors capable de déterminer le producteur de bloc suivant v_{σ(r)} à partir de la liste des validateurs actifs.

La production de microblocs correspond simplement au producteur de blocs sélectionné mettant les transactions dans un bloc, signant le bloc cryptographiquement et l’envoyant au reste du réseau.

La production de macroblocs est un peu plus active mais se produit beaucoup plus rarement. Les macroblocs sont produits en utilisant le protocole PBFT classique. A cette fin, le fabricant de blocs choisi — ou dans ce cas plutôt un candidat à la production — génère la valeur aléatoire suivante et, à partir de cette valeur, détermine la nouvelle liste des validateurs actifs pour l’époque suivante. La liste des validateurs est choisie parmi tous les volontaires avec une chance proportionnelle à leurs mises et basée sur la balise aléatoire. L’auteur de la proposition de bloc publie ensuite sa proposition, et tous les autres validateurs actifs votent en deux tours. Les macroblocs ne contiennent aucune transaction.

Il n’y a pas de notion de temps ciblé entre les blocs, ainsi donc les blocs peuvent être produits presque aussi rapidement que le réseau le permet.

Bien que l’explication ci-dessus ne couvre que le cas optimiste, le protocole reste sécurisé dans l’hypothèse où plus de ⅓ de la liste des validateurs serait des acteurs byzantins. Ces acteurs, cependant, peuvent temporairement ralentir la blockchain et rétrograder la production de blocs à un rythme plus conservateur. Les acteurs byzantins peuvent principalement déclencher deux mécanismes : (1) les” forks”, qui amènent le producteur de blocs suivant à choisir l’un des blocs en conflit et permettent aux validateurs de réduire la mise du validateur malveillant, et (2) les retards, qui obligent un autre validateur à produire le bloc à la place.

Une explication plus détaillée de ces cas se trouve dans le document technique.

Cohérence vs Disponibilité

Un compromis intéressant à faire lors de la conception d’un tel protocole est celui entre cohérence et disponibilité. La cohérence décrit la propriété sur laquelle tous les participants du protocole s’entendent sur la même valeur, la plus récente. La disponibilité décrit la propriété que les participants ne peuvent pas être empêchés d’apprendre indéfiniment la valeur correcte et la plus récente.

Le théorème CAP stipule maintenant que, pendant une partition du réseau, ces propriétés ne peuvent pas être atteintes en même temps.

Le bitcoin, par exemple, favorise la disponibilité plutôt que la cohérence. En cas de fractionnement du réseau, les deux réseaux peuvent continuer à vivre et contenir des transactions potentiellement contradictoires (par exemple, une double dépense). Toutefois, si le réseau se rétablit après le fractionnement, seul un historique unique sera accepté.

Albatross favorise l’uniformité plutôt que la disponibilité. En cas de division du réseau, une seule des partitions réseau peut continuer à fonctionner ou aucune (selon la taille des partitions). Cependant, il n’y aura jamais d’opinion erronée sur l’état le plus récent. Si le réseau se rétablit après le fractionnement, le protocole continuera à fonctionner normalement.

Prochaines étapes

Maintenant que la description technique d’Albatross est publiée et que le protocole a été présenté par Reto Trinkler dans le contexte de l’introduction de Katallassos à l’EthCC’19 à Paris, ce sont les prochaines étapes à suivre :

Nous avons commencé à construire un simulateur pour le protocole Albatross afin d’évaluer sa performance dans les réseaux à grande échelle. Actuellement, ce simulateur ne couvre que le protocole de base sans tenir compte des optimisations et des participants byzantins. Nous prévoyons d’étendre ce simulateur et d’obtenir plus d’informations sur les opérations réelles d’Albatross.

Dans l’intervalle, nous étudions également les possibilités d’optimisation pour Albatross. Ces optimisations incluent l’utilisation de Handel, un protocole d’agrégation multi-signature rapide. Entre autres améliorations, nous envisageons également l’applicabilité des fonctions de délai vérifiables pour réduire la communication en cas de non-réponse des producteurs de blocs.

Enfin, lorsque ces conditions préalables nécessaires démontreront les résultats souhaités, nous évaluerons plus avant la faisabilité de l’intégration d’Albatross à Nimiq. Cette étape comprendrait également des détails tels que les récompenses de bloc, HTLCs, les contrats de “vesting” et les pools de “staking”. Nous construirons ensuite un testnet avec Albatross.

Albatross pourrait apporter une augmentation drastique des performance du Nimiq tout en réduisant de manière importante sa consommation d’énergie. Bien qu’une mise en œuvre réussie apporterait des améliorations fondamentales au protocole du Nimiq, toutes ses implications doivent encore être évaluées et examinées à fond.

Team Nimiq se donnerait comme priorité d’assurer une transition en douceur vers un avenir potentiel sans PoW pour le Nimiq qui, à notre avis, profiterait en fin de compte à tout le monde.

AVERTISSEMENT : Aucune déclaration ne doit être considérée comme un soutien ou une recommandation de la part de l’équipe Nimiq, d’une cryptomonnaie ou d’un produit de placement. Ni l’information, ni aucun avis contenu dans ce billet ne constitue une sollicitation ou une offre, de la part des créateurs ou des participants, d’achat ou de vente de titres ou d’autres instruments financiers ou de fournir des conseils ou des services de placement.

--

--