Wiki ZooBC
Proof of Participation

Le score de participation

Le score de participation est la mesure par laquelle ZooBC évalue la qualité du travail d’un nœud enregistré. Il va de 0 à 100 %, et chaque nœud démarre à 20 %. Il monte lorsque les propres blocs du nœud portent les reçus qu’il a gagnés en relayant des données, et il baisse tant que le nœud est manquant après un tour sauté. Le score décide de la chance du nœud dans la loterie coinbase qui répartit les nouveaux ZBC, et un nœud dont le score atteint zéro perd son siège. Il ne change pas qui produit les blocs.

L’échelle

En interne, le score est un entier de 0 à 10^13, affiché de 0 à 100 %. Chaque nœud démarre à la valeur par défaut de 2 × 10^12, soit 20 %, sièges de genèse compris. Un nœud en file d’attente n’a pas de score ; l’admission inscrit la valeur par défaut. Le score est calculé par chaque nœud à partir de la chaîne elle-même. Ce n’est pas une note donnée par les utilisateurs, et ce n’est pas la mise.

Comment il monte : les reçus dans les propres blocs du nœud

Relayer rapporte des reçus, pas du score. Le score bouge quand le nœud obtient son tour : dans le bloc qu’il produit, il publie un échantillon des reçus qu’il a gagnés, et chaque validateur les vérifie. Le nombre de reçus présentés est comparé à un pivot :

pivot = floor(min(|S| − 1, P) / 2)

où S est l’ensemble de tirage (les nœuds actifs qui ne sont pas suspendus) et P le nombre de pairs prioritaires, 12 sur le mainnet. Avec 11 nœuds sélectionnables, le pivot vaut 5 ; à partir de 13 nœuds sélectionnables, il vaut 6. Autrement dit, le pivot représente environ la moitié de ce que le producteur aurait pu présenter.

Présenter plus de reçus que le pivot fait monter le score du producteur ; en présenter moins le fait baisser. L’ampleur du mouvement est en outre mise à l’échelle selon le nombre de nœuds actifs. Le résultat reste toujours compris entre 0 et 100 %. Un nœud dont les blocs portent peu de reçus dérive donc vers le bas, même s’il ne manque jamais un tour.

La montée est lente à dessein : en dessous de 2 880 nœuds, un nœud qui produit tous ses blocs avec leurs reçus a besoin de 30 jours pour passer de 0 à 100 %, soit en moyenne environ 1,67 point par unité de 12 heures.

Le relais renvoie des reçus dans un bac, qui ne contient encore aucun score ; le bloc propre du nœud en porte un échantillon, et un compteur compare leur nombre au pivot : moins, le score baisse ; plus, le score monte.
Le relais renvoie des reçus dans un bac, qui ne contient encore aucun score ; le bloc propre du nœud en porte un échantillon, et un compteur compare leur nombre au pivot : moins, le score baisse ; plus, le score monte.

Comment il baisse : l’état manquant

De tout tour sauté jusqu’à son prochain bloc propre, un nœud est manquant et perd 5 points par unité (12 heures en dessous de 2 880 nœuds), trois fois plus vite que ne monte un nœud parfait. En dessous de 2 880 nœuds, un nœud silencieux tombe de 20 % à zéro en 2 jours, et de 100 % à zéro en 10. Voir les tours manqués.

Certaines choses ne font pas bouger le score du tout. Une preuve de stockage ratée ne coûte aucun score : un détenteur de fragment mis en minorité perd seulement la récompense de stockage de cette époque (voir le fonds de stockage). Aucun score ne change avant la hauteur 40, pendant que la chaîne se met en route. Et il n’y a ni pointage horaire ni vote : le score ne vient que de ce que portent les blocs et des tours que les nœuds sautent.

Ce que décide le score

Le revenu. Les nouvelles pièces et les frais de chaque bloc sont répartis par la loterie coinbase. La cagnotte de récompenses du bloc (sa coinbase, ses frais et une tranche du fonds de longévité) est découpée en parts égales, une par tirage. Chaque tirage choisit un nœud avec une probabilité proportionnelle à son score, à partir d’un générateur initialisé avec la graine du bloc précédent et l’étiquette zbc-coinbase, de sorte que chaque nœud calcule les mêmes gagnants. Un nœud peut remporter plusieurs tirages d’un même bloc, et un nœud au score faible peut gagner lui aussi. Il y a un tirage par seconde d’écart entre les deux blocs précédents, au plus 600, et jamais plus de tirages que de détenteurs de ticket (une grosse cagnotte peut augmenter ce nombre, dans les mêmes limites). Les détenteurs de ticket sont les nœuds enregistrés qui sont matures et qui ne sont ni manquants ni suspendus. Si aucun d’eux n’a de score, la cagnotte est partagée à parts égales.

Le siège. Un nœud dont le score atteint zéro est expulsé, sauf s’il devait rester moins de trois nœuds actifs.

C’est tout. Le score n’est pas une entrée du tirage des producteurs, et il n’entre pas dans le poids des blocs pour le choix de branche.

Deux panneaux : dans le tirage des producteurs, les nœuds à 90 % et à 30 % ont des parts égales (1 : 1) ; dans la loterie coinbase, leurs parts sont de 3 : 1. Le score fait varier les récompenses, pas la production de blocs.
Deux panneaux : dans le tirage des producteurs, les nœuds à 90 % et à 30 % ont des parts égales (1 : 1) ; dans la loterie coinbase, leurs parts sont de 3 : 1. Le score fait varier les récompenses, pas la production de blocs.

Pourquoi pouvoir et revenu sont tenus séparés

Tenir le score à l’écart du tirage est délibéré. Un nœud au score élevé n’obtient aucun pouvoir supplémentaire sur la chaîne : il ne produit pas plus de blocs, ne choisit pas plus de graines et n’a pas plus d’occasions de laisser des transactions de côté. Le pouvoir sur la production des blocs reste uniforme par siège, tandis que le revenu suit le travail mesuré. La mise ne joue aucun rôle ni dans l’un ni dans l’autre : elle sert seulement à faire entrer un nœud dans la file d’attente.

Chaque nombre lié au score, comme les 20 % de départ et les vitesses de montée et de baisse, est un paramètre de genèse de la chaîne.

Voir aussi