Stellar Consensus Protocol (SCP)

Cet article a pour vocation à vulgariser les concepts derrière le protocole de consensus SCP.

Stellar Consensus Protocol (SCP)

Parmi les algorithmes utilisés dans le monde de la blockchain, il en est un qui fait partie de la team "pas comme tout le monde", j'ai nommé le Stellar Consensus Protocol.

Il diffère notamment d'autre algorithmes comme :

La Preuve de Travail (Proof of Work)

  • extrêmement décentralisée
  • lente, chère

Algorithme de Tolérance aux fautes Byzantines (Byzantine Fault Tolerance)

  • Plus rapide moins gourmand
  • Centralisé

Et se base notamment sur l':

Accord Byzantin Fédéré

Ou Federated byzantine agreement (FBA) en anglais, est un algorithme de consensus basé sur le BFT, mais apportant une différence notable, vis-à-vis de la centralisation.

Décentralisation

Qu'a-t-il de différend ?

Contrairement au BFT, cet algorithme ne se base pas derrière une figure d'autorité (le fameux empereur des généraux byzantin), mais sur un concept de quorum partiel, appelé "tranche", qui regroupe plusieurs noeuds voisins entre eux.

Ainsi, le consensus se formera d'abord au niveau local avant que la décision ne se propage à travers la "galaxie" de noeuds.

Nous en reparlerons plus tard.

Intégrité

L'algorithme SCP privilégie la "safety" par rapport à la "liveness", c'est-à-dire que l'algorithme préfèrera garantir une chaîne intègre, sans ambiguïté, plutôt que de garantir sa disponibilité (l'ajout de bloc peut être ralenti).
Ainsi un noeud (non malveillant) ne donnera jamais de valeurs erronée (même à son insu) mais pourrait ne pas être à jour.

Sécurité Asymptotique

Qu'en est-il de la résilience à la corruption ?

Avec la PoW, un groupe possédant une puissance de calcul représentant 51% de l'ensemble des membres peut avoir le contrôle de l'évolution de la chaine.

Avec BFT et FBA, les votes sont signés, en ce qui concerne le BFT, le contrôle de 66% des noeuds est nécessaire pour prendre le dessus, ce qui est peu probable étant donné qu'il y a toujours l'autorité de contrôle qui, (en théorie) surveille l'ensemble du groupe.

Avec FBA, le noeud communique avec ses pairs afin de voter pour une décision (pour SCP, on parle de nomination) et de se renseigner sur les "autres" opinions.
Il cherchera ensuite à former une partie du quorum en y ajoutant les noeuds voisins étant en accord avec sa décision.

Nous parlons de Tranche de quorum.

Puis il y rajoutera successivement les membres des tranches de quorums formés par les membres du sien (les amis de mes amis sont mes amis). Et ainsi de suite, jusqu'à arriver à répertorier l'arbre de noeud complet, définissant ainsi le quorum faisant consensus.

Intersection

Là où BFT attend d'avoir la majorité, FBA est obligé de ruser (nous ne pouvons pas savoir le nombre de noeud). À la place, FBA se base sur le fait que des quorums peuvent éventuellement se chevaucher.

En effet, le vote ne fait pas figure de décision définitive:

Après avoir voté pour une décision, le noeud reste attentif à ce qu'il se passe dans sa tranche. S'il n'a pas de raison de changer d'avis, il finit par accepter son choix (et il le fait savoir aux autres). Lorsque toute la tranche s'est mise d'accord, et que les noeuds ont accepté le choix, la tranche ratifie sa décision.

Ça, c'est si tout va bien.

À l'inverse, si un noeud se rend compte que plusieurs autres noeuds autour de lui ne sont pas d'accord, voire change d'avis (ils n'ont pas encore accepté le choix de la tranche), le noeud peut lui-même se remettre en question.

La condition principale pour changer d'avis, et le fait d'avoir un v-blocking set ou (set bloquant) de noeuds ayant déjà accepté une décision.

Ce fameux set consiste en un ensemble de noeuds d'une tranche, faisant partie d'autres tranches n'ayant aucune autre tranche en commun, tout en couvrant l'ensemble de la tranche initiale. (en d'autres termes, il s'agit d'un collège de membres n'ayant pas de liens, tout en représentant l'avis de tout les membres de la tranche).

Si un tel set existe, le noeud se convertira.

Malheureusement, ces mesures ne peuvent garantir le fait qu'il y aura un consensus universel, aussi une décision (nomination) prise par un quorum de taille honorable ne sera pas tout de suite inscrite dans la blockchain, elle passera plusieurs étapes "barrage", la première étant le rejet de manière déterministe de certiaines nominations par les quorums dans les cas échéants, puis par celle du scrutin (ballot):

Scrutin

Il s'agit ni plus ni moins que d'un vote à main levé, où les noeuds surencherissent sur les votes des autres noeuds, vote qui permet de faire gagner une décision parmi celles nominées (ce vote se base toujours sur FBA).

Plus les noeuds sont certains du consensus autour d'une nomination, plus elle gagnera de voix au moment du scrutin.

D'ailleurs, afin de ne pas générer de trop grandes différences d'importance entre différents quorums, le scrutin ne porte pas sur une nomination, mais pour une plage, comprenant de facto les votes ayant déjà plus de popularité que celui voulut. Cela sous-entend également, que nous ne voterons pas pour les autres nominations (afin d'aider les autres noeuds à discerner le consensus le plus favorable).

À l'issue du scrutin, la galaxie est fixée.

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now
Logo
Center