Les votes de prix
Quelques prix de ZooBC ne sont pas fixés pour toujours : les sièges du registre des nœuds les votent. À partir de la version 0.5.8, une seule règle couvre tous les prix modifiables par vote. Une fois par cycle d’instantané, 30 jours sur le mainnet, chaque prix passe à la moyenne sur les sièges comptés, un siège silencieux comptant au prix en vigueur, après que chaque vote a été limité à au plus 20 % au-dessus du prix en vigueur et à au moins la moitié de celui-ci. Tout le reste, du calendrier d’émission aux soldes, est hors de portée de tout vote.
Ce qui peut être voté
| Prix | Valeur de départ sur le mainnet | Bornes |
|---|---|---|
| frais de transfert (l’échelle de frais) | 1,0, écrit 0,01 ZBC dans le vote | d’une unité atomique à 1 ZBC, soit jusqu’à 100 fois la valeur de départ |
| loyer de compte | 0,01 ZBC par période | d’une unité atomique à 10 ZBC par période |
| entretien des jetons | 0,1 ZBC par période | d’une unité atomique à 10 ZBC par période |
| prix de stockage des jeux de données | 0,05 ZBC par Mio et par période | à partir d’une unité atomique |
| multiplicateur de stockage | 1,0 | ses propres bornes |
| mise de passerelle | 10 ZBC | à partir d’une unité atomique |
| coût de création de marché | 50 ZBC | à partir d’une unité atomique |
| frais de preneur du marché | 0,1 % | de 1 à 100 points de base |
| minimum de la file d’attente | 100 ZBC | d’une unité atomique à 250 ZBC |
Les frais de transfert multiplient les frais d’action de base de 0,025 ZBC dans le plancher de chaque transaction (frais). Le minimum de la file d’attente est la plus petite mise avec laquelle un nœud peut entrer dans la file (enregistrer un nœud). Les autres prix sont expliqués avec les fonctions qu’ils concernent : loyer de compte, entretien des jetons, jeux de données, passerelles et marchés et ordres.
Comment un prix évolue
Chaque siège enregistré qui n’est pas suspendu dispose d’une voix ; ce sont les sièges comptés. Pendant un cycle, un siège peut voter aussi souvent qu’il le souhaite, et c’est son dernier vote qui compte. À la fin du cycle :
- Chaque vote est limité : au plus 20 % au-dessus du prix en vigueur, au moins la moitié de celui-ci, et toujours à l’intérieur du plancher et du plafond du prix.
- Le nouveau prix est la moyenne sur tous les sièges comptés, chaque siège silencieux comptant au prix en vigueur.
Si personne ne vote, rien ne change. Ni une médiane des votes exprimés, ni un accord exact des deux tiers, ni le vote le plus élevé ne décident quoi que ce soit.
Exemples chiffrés
Dix sièges comptés, et un prix en vigueur de 100 :
| Votes | Chaque vote compte pour | Nouveau prix |
|---|---|---|
| deux sièges votent 120, huit sont silencieux | 120, 120, et 100 pour chaque siège silencieux | (2 × 120 + 8 × 100) ÷ 10 = 104 |
| un siège vote 10 000, neuf sont silencieux | 120 | (120 + 9 × 100) ÷ 10 = 102 |
| un siège vote 0, neuf sont silencieux | 50 | (50 + 9 × 100) ÷ 10 = 95 |
Sans la limite, le vote de 10 000 donnerait une moyenne simple de 1 090. Avec la limite appliquée d’abord, un siège déplace le prix d’au plus un dixième du pas complet sur un registre de dix sièges, et de 0,2 % sur un registre de 100.
À quelle vitesse les prix peuvent évoluer
Même lorsque chaque siège vote le pas complet, un prix augmente d’au plus 20 % par cycle et baisse au plus de moitié. Une multiplication par dix prend environ 13 cycles, une division par dix environ 4.
Chaque prix exprimé en ZBC peut être abaissé par vote jusqu’à une unité atomique (0,00000001 ZBC). Si le ZBC prend beaucoup de valeur, ces prix peuvent le suivre vers le bas, de sorte que conserver un compte ou un jeu de données ne devienne pas absurdement cher en termes réels. À partir des 0,01 ZBC du loyer de compte, atteindre une unité prend environ 20 divisions par deux, donc au moins 20 cycles. Rien ne devient gratuit : chaque charge calculée est arrondie vers le haut à au moins une unité atomique.
Émettre un vote
Les votes sont des transactions de devoir sans frais, signées avec la clé de nœud du siège (clés d’un nœud). Tous les prix sauf les frais de transfert sont votés avec SetConsensusParam (type 51).
Les frais de transfert sont le seul prix dont le vote se fait en deux étapes :
- dans la première moitié du cycle, un siège envoie un FeeVoteCommitment (type 7) qui ne porte qu’un hachage de 32 octets de son vote, de sorte que la valeur reste cachée ;
- dans la seconde moitié, il envoie un FeeVoteReveal (type 263) avec la valeur.
Une révélation ne compte que si son hachage correspond à un engagement que le même siège a pris dans le même cycle, et c’est le dernier vote valide d’un siège qui est retenu. Les nouveaux frais sont ensuite calculés comme pour tout autre prix.
Garde-fous
- Plancher du registre. Aucune décision à l’échelle du registre n’aboutit tant que le registre compte moins de max(3, son minimum de genèse) sièges ou comptes propriétaires distincts, soit 7 sur le mainnet. Deux sièges d’un même opérateur ne comptent que pour une voix dans ce décompte.
- Une fois par cycle. Un paramètre change au plus une fois par cycle, et reste toujours dans ses bornes.
- L’argent reste aux sièges. Ce que ces prix font payer revient aux nœuds enregistrés : les loyers par le fonds de longévité, les frais par la loterie (fonds, loterie coinbase).
Ce qu’aucun vote ne peut changer
Le calendrier d’émission, par rapport auquel chaque nœud vérifie la coinbase de chaque bloc (offre et l’émission) ; le solde de n’importe quel compte ; les règles de consensus et les hauteurs auxquelles elles s’appliquent ; et la genèse. Ces éléments viennent avec la genèse et le logiciel du nœud, et aucun vote ni aucune clé ne les modifie (ZooBC Foundation). Les sièges disposent d’un autre vote en dehors des prix : les deux tiers d’entre eux peuvent opposer leur veto à une version du logiciel (versions et mises à jour).