Delegated Proof-of-Stake Consensus

Partie 3/4 – Communication entre paires

DPOS_Communication

Définitions

Afin de rendre la lecture de ce document la plus agréable possible, nous nous devons de définir quelques termes et vous fournir quelques explications.

Un bloc : un ensemble de transactions effectuées sur le réseau est assemblé au sein d’un bloc (au sens imagé). Le bloc est alors traité selon l’algorithme mis en place afin soit d’être validé – donc ajouter dans la blockchain-, soit refusé (les transactions ne sont pas validées).

Le broadhash : il s’agit d’un hash (une suite de nombre) calculé sur base des 5 derniers blocs forgés (et inscrit dans la blockchain). Ce broadhash permet de mitiger les forks. 

Un fork : il s’agit d’une différence de blockchain entre les nœuds du réseau Lisk. Un nœud peut ne pas avoir la même information qu’un autre. On parle alors de fork.

 

Header système

Dans le réseau Lisk, les en-têtes du système sont utilisés pour identifier tous les nœuds et fournir des informations sur le logiciel exécuté sur le serveur. Pendant les communications entre les pairs (entre les nœuds), ces en-têtes sont ajoutés à tous les messages envoyés.

La représentation JSON de cet en-tête est la suivante :

{  « os »: »darwin16.3.0″,  « version »: »0.6.0a »,  « port »:7000,  « height »:1574654,  « nethash »: »da3ed6a45429278bac2666961289ca17ad86595d33b31037615d4b8e8f158bba »,  « broadhash »: »c7e0902a7016205d456a427edda2b09f4b875f98ef40a224018a0274347146ac »,  « minVersion »: »>=0.5.0″}

 

Ces informations permettent, par exemple, d’exclure des nœuds qui seraient dans des versions trop anciennes.

Le consensus par broadhash

Une des fonctions essentielles pour le réseau Lisk est le consensus par broadhash. Ce consensus permet de mitiger l’apparition de fork. 

Dans le système DPoS, les délégués reçoivent un numéro dans la file d’attente pour forger et forge ensuite un bloc lorsque le système désigne ce numéro. Le concensus par broadhash permet à une majorité de délégués (de paires) d’indiquer si il est acceptable de forger à un moment donné (si un fork n’est pas en cours, si il n’y a pas de problème).

La propagation des blocs

La manière dont les blocs sont propagé est une fonction vitale pour le réseau Lisk ! Tous les blocs sont créés de manière décentralisée et doivent être envoyés à tous les nœuds présents sur le réseau (sur la mainchain), afin que le consensus soit respecté.

Lorsqu’un bloc est généré, il est propagé aux autres nœuds (par un  mécanisme peer-to-peer).

Enfin, les transactions, quant à elles, doivent également passer de nœud en nœud afin d’être compactées dans un bloc. Toutes les transactions sont stockées dans une queue et, à intervalle régulier, un ensemble de 25 transactions est empaqueté dans un bloc et envoyé à travers le réseau pour validation par un délégué.

Sources: Lisk.io

2017-09-22T23:59:05+00:00