Votez pour franceos en tant que producteur de blocs !
BP ID : franceosysbpComment voter ?
franceos API : https://api.franceos.fr
Tag:,
0

5. Fonctionnement technique d’EOS

franceos

Qui est le plus légitime pour expliquer de façon concise un mécanisme complexe ? Son créateur lui-même, bien sûr ! Nous reprendrons donc ici l’article de Dan Larimer « DPOS Consensus Algorithm – The Missing White Paper« , qui est certainement le plus clair disponible sur la toile. Si le lecteur s’intéresse au personnage, il trouvera au gré de sa prose prolifique moult idées intéressantes et brillamment écrites, à condition qu’il ne soit pas allergique à la langue de Shakespeare, bien sûr.

Pour cette illustration, le nombre de producteurs de blocs est réduit à trois : les producteurs A, B et C. Chaque bloc sera donc produit de manière aléatoire par A, B ou C, et validé par l’ensemble des trois délégués (c’est une simplification, en réalité les délégués sont au nombre de 21 et les blocs doivent être approuvés par les deux-tiers des délégués plus un). Ici, c’est le producteur C qui départage les cas limites.

Il faut noter que le problème sus-cité du nothing at stake ne se pose pas dans le cas du DPoS : les détenteurs de tokens votent pour des validateurs, et non pour des blocs. Le nombre de validateurs est fixe et l’ordre selon lequel ils produisent des blocs est également défini par le protocole : il est impossible pour une minorité d’entre eux de créer un fork qui pourrait prendre le dessus sur la chaîne « honnête ».

Situation de fonctionnement normal

Lorsque le réseau opère normalement, l’algorithme assigne un intervalle temporel de trois secondes à chaque producteur de bloc, durant lequel il peut créer un bloc et le soumettre aux autre validateurs. Tout bloc soumis aux validateurs hors de l’intervalle temporel assigné à son producteur sera rejeté. Si aucun producteur ne rate son tour, ce sera toujours la chaîne la plus longue qui sera produite ainsi.

DPoS - Fonctionnement normal

Que se passe-t-il s’il y a un fork minoritaire ?

Dans le cas où une partie minoritaire des acteurs – jusqu’à 1/3 des producteurs de blocs – produit une chaîne de blocs différente (comportement malicieux ou dysfonctionnement technique), le temps passé à produire ces blocs sera toujours plus élevé que le temps que passera le reste des participants à construire la chaîne majoritaire (1 bloc toutes les 9 secondes dans cet exemple, contre 2 blocs toutes les 9 secondes pour la chaîne « honnête »). Ce sera donc toujours la chaîne « honnête » qui sera la plus longue, et le reste du réseau considérera donc cette dernière comme valide.

DPoS - Minority fork

Double production par une minorité déconnectée

Ici encore, si une minorité produit plusieurs forks, le temps passé à créer ces blocs sera toujours supérieur à celui qui est requis pour que la majorité des producteurs construise une chaîne valide. Ces forks seront donc toujours invalides.

DPoS - Double production minorité déconnectée

Fragmentation du réseau

En cas de mauvaise connectivité entre les producteurs, il est possible de se retrouver avec plusieurs chaînes.

Si aucune d’entre elles n’a la majorité des votes des producteurs, c’est la chaîne minoritaire la plus longue qui prend le dessus.

Si deux chaînes majoritaires sont de longueur équivalente, lors de la reconnexion, les producteurs ayant forgé une chaîne minoritaire choisiront de rejoindre l’une des chaînes majoritaires, et seule l’une d’entre elle prendra alors le dessus.

DPoS - Fragmentation du réseau

Double production par une minorité connectée

Dans ce cas de figure, une minorité de producteurs décide de produire plusieurs blocs dans le même intervalle temporel. Lors de la prochaine ronde, le producteur suivant devra alors choisir n’importe laquelle des chaînes alternatives proposées, en faisant alors la chaîne la plus longue. Le reste des nœuds choisira donc cette dernière : cela permet de s’assurer que, quel que soit le nombre de blocs « alternatifs » produits par la minorité malicieuse, ils ne feront partie de la plus longue chaîne que durant un unique intervalle temporel.

DPoS - Double production, minorité connectée

Finalité : dernier bloc irréversible

« La notion de finalité est propre à la preuve d’enjeu – il s’agit du point à partir duquel un bloc est considéré comme irréversible, immuable, par le logiciel client. Dans le cas de la preuve de travail, cette notion de finalité n’existe pas : un bloc est valide dès que le consensus des nœuds du réseau a permis son inscription sur la blockchain. Les confirmations supplémentaires viendront assurer que le risque de fork devient négligeable. »

Dans certains cas de fragmentation prolongée du réseau, plusieurs chaînes pourraient continuer à se développer. Comme vu précédemment, ce sera toujours la chaîne la plus longue qui gagnera; mais il faut un moyen pour que les observateurs (les nœuds relayant les transactions) puissent déterminer avec certitude le point où un bloc est finalisé. C’est ici que la confirmation des deux tiers des validateurs plus un est requise : une fois que le vote est effectué, on peut être assuré qu’aucune chaîne alternative ne pourra être plus longue que la chaîne choisie par les producteurs de blocs (dans la mesure, bien sûr, où au moins 2/3 des participants sont honnêtes). Cela se rapproche de la règle des 6 confirmations sur le réseau Bitcoin, à partir de laquelle on considère que la probabilité qu’un fork concurrent à la blockchain soit soumis au réseau devient totalement négligeable. Le cas extrême où, par collusion très bien coordonnée des attaquants, deux blocs irréversibles différents pourraient coexister – il faudrait pour cela un contrôle total des communications entre les producteurs – peut être, à terme, mitigé par la règle de la chaîne la plus longue. Dan Larimer considère cette attaque comme hautement improbable et ses conséquences économiques seraient insignifiantes.

DPoS - Finalité

Absence de quorum des producteurs de blocs

Dans le cas improbable où il n’y a pas de consensus des producteurs, une chaîne minoritaire peut survivre. Ce sont alors les détenteurs de tokens qui voteront pour sélectionner un nouvel ensemble de producteurs, restaurant ainsi le taux de participation maximal. Il est alors possible que ce soit la chaîne minoritaire qui se retrouve alors avec 100% de participation, devenant ainsi la seule chaîne valide. Dans ce cas, les observateurs du réseau devront garder à l’esprit qu’il existe une petite probabilité que le consensus valide une chaîne minoritaire à l’instant t. C’est équivalent au fait de considérer comme valide une transaction présentant moins de trois confirmations sur le réseau Bitcoin.

Corruption de la majorité des producteurs de blocs

Dans le cas où plus des deux tiers des producteurs de blocs seraient corrompus, ces derniers pourraient alors faire coexister plusieurs forks, présentant des blocs ayant des confirmations identiques. Ce sera alors à la minorité de faire pencher la balance d’un côté. Les détenteurs de tokens voteront pour éliminer ces producteurs corrompus.

DPoS - Corruption

Aléa de l’ordre de passage des producteurs et transaction comme preuve d’enjeu

En pratique, le mécanisme de sélection qui détermine « l’ordre de passage » des producteurs de blocs est aléatoire. Cet « ordre de passage » change tous les N blocs, où N est le nombre de producteurs de blocs.

Il faut également ajouter que chaque fois qu’une transaction est signée, puis diffusée sur le réseau, elle présente un hash faisant référence à un bloc précédent. Si ce bloc est inexistant sur la chaîne la plus longue (par exemple dans le cas où l’utilisateur signant sa transaction a choisi un état de la blockchain qui a depuis lors été invalidé par le consensus), cette transaction sera rejetée.

Cela signifie, indirectement, que chaque utilisateur confirme l’état de la blockchain comme valide à chaque transaction (via une preuve de Merkel, contrairement aux allégations de Vitalik).

Articles connexes

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.