La loterie coinbase
La loterie coinbase est la façon dont ZooBC paie ses nœuds. La cagnotte de récompenses de chaque bloc, composée des pièces nouvellement libérées, des frais du bloc et d’une tranche du fonds de longévité, est découpée en parts égales, et chaque part est tirée au sort entre les nœuds enregistrés, avec une chance proportionnelle à leur score de participation. Le nœud qui a produit le bloc n’a aucun droit particulier sur cette cagnotte : les nœuds gagnent en faisant le travail que mesure le score.
La cagnotte de récompenses
La cagnotte de récompenses de chaque bloc est la somme de :
- sa coinbase, les nouveaux ZBC que le calendrier d’émission libère pour ce bloc (offre et l’émission) ;
- les frais de ses transactions, déduction faite du trop-payé remboursé à leurs expéditeurs (frais) ;
- une tranche du fonds de longévité, qui collecte les loyers et les pénalités et les reverse peu à peu, à chaque bloc (fonds).
Qui détient un ticket
Un détenteur de ticket est un nœud enregistré qui est mature, et ni manquant ni suspendu :
- Mature. Un nouveau nœud ne gagne rien avant 4 unités de score après son admission et un bloc à lui : 2 jours tant que la chaîne compte moins de 2 880 nœuds (maturité et gains).
- Non manquant. Un nœud qui a sauté son tour est considéré comme manquant jusqu’à son prochain bloc à lui, et ne gagne rien entre-temps (tours manqués, suspension et expulsion).
- Non suspendu. Un nœud suspendu après 4 tours manqués consécutifs ne détient aucun ticket.
Les nœuds qui attendent encore dans la file d’attente n’ont pas de score et ne détiennent pas non plus de ticket.
Les tirages
La cagnotte est répartie par un certain nombre de tirages :
- un tirage par seconde de temps de bloc, mesuré comme l’écart entre les deux blocs précédents, que le producteur du bloc ne peut pas choisir ;
- au plus 600 tirages, et jamais plus de tirages que de détenteurs de tickets ;
- lorsque la cagnotte contient plus de 1 ZBC par tirage, le nombre passe à un tirage par ZBC entier de la cagnotte, dans les deux mêmes limites.
Une chaîne de 11 détenteurs de tickets a donc 11 tirages par bloc, et non 15. Avec 1 000 détenteurs de tickets, un écart de 15 secondes et une cagnotte de 30 ZBC, le nombre part de 15, ce qui ferait 2 ZBC par tirage, et passe à 30.
Chaque tirage gagne une part égale : la cagnotte divisée par le nombre de tirages, arrondie vers le bas à l’unité atomique, le reste étant ajouté à la dernière part. Les gains sont versés au compte propriétaire du nœud, et non à la clé de nœud (clés d’un nœud).
Les chances suivent le score
Chaque tirage choisit un nœud avec une probabilité proportionnelle à son score de participation. Avec deux détenteurs de tickets dont les scores sont de 80 % et de 40 %, le premier a deux fois plus de chances que le second de gagner chaque tirage, et le second peut quand même gagner n’importe lequel d’entre eux. Les tirages sont indépendants et faits avec remise, si bien qu’un même nœud peut gagner plusieurs parts du même bloc.
Les nombres aléatoires proviennent d’un générateur initialisé avec l’étiquette zbc-coinbase et la graine du bloc précédent (graine du bloc (VRF)), si bien que chaque nœud calcule les mêmes gagnants et peut vérifier chaque versement.
Avec le temps, le revenu attendu d’un nœud correspond à sa part du score total de tous les détenteurs de tickets. La mise n’y joue aucun rôle : elle fait entrer un nœud dans la file d’attente, et ne rapporte rien par elle-même.
Cas particuliers
- Si aucun détenteur de ticket n’a de score qui puisse servir de pondération, la cagnotte est partagée à parts égales entre les détenteurs de tickets.
- Si aucun nœud ne détient de ticket, la cagnotte est reportée au bloc suivant.
- Les frais de preneur du marché ne font pas partie de la cagnotte : ils vont au producteur du bloc, et c’est la seule charge versée au producteur plutôt qu’à la loterie. Si ce producteur n’est pas encore mature, les frais de preneur vont à la loterie à la place (marchés et ordres).
Ce qu’elle récompense
Le score augmente lorsque les propres blocs d’un nœud portent des reçus pour les données qu’il a relayées aux pairs qui lui sont attribués, et il baisse tant que le nœud est manquant (score de participation). Comme la loterie suit le score et qu’un nœud manquant ou suspendu ne détient aucun ticket, le revenu va aux nœuds qui continuent de produire leurs blocs et de relayer les données. Un nœud qui se contente de détenir une mise ne gagne rien.