Voti sui prezzi
Alcuni prezzi di ZooBC non sono fissati per sempre: su di essi votano i seggi del registro dei nodi. Dalla versione 0.5.8 un'unica regola copre ogni prezzo votabile. Una volta per ciclo di snapshot, 30 giorni su mainnet, ogni prezzo si sposta alla media calcolata sui seggi conteggiati, con un seggio silenzioso che conta al prezzo in vigore, dopo che ogni voto è stato limitato a non più del 20 % sopra il prezzo in vigore e a non meno della sua metà. Tutto il resto, dal piano di emissione ai saldi, è fuori dalla portata di qualsiasi voto.
Che cosa si può votare
| Prezzo | Valore iniziale su mainnet | Limiti |
|---|---|---|
| commissione di trasferimento (la scala delle commissioni) | 1,0, scritto 0,01 ZBC nel voto | da un'unità atomica a 1 ZBC, cioè fino a 100 volte il valore iniziale |
| canone degli account | 0,01 ZBC per periodo | da un'unità atomica a 10 ZBC per periodo |
| manutenzione dei token | 0,1 ZBC per periodo | da un'unità atomica a 10 ZBC per periodo |
| prezzo di archiviazione dei dataset | 0,05 ZBC per MiB per periodo | da un'unità atomica |
| moltiplicatore di archiviazione | 1,0 | limiti propri |
| stake del gateway | 10 ZBC | da un'unità atomica |
| costo di creazione di un mercato | 50 ZBC | da un'unità atomica |
| commissione taker del mercato | 0,1 % | da 1 a 100 punti base |
| minimo della coda | 100 ZBC | da un'unità atomica a 250 ZBC |
La commissione di trasferimento moltiplica la commissione base per azione di 0,025 ZBC nella soglia minima di ogni transazione (commissioni). Il minimo della coda è lo stake più piccolo con cui un nodo può entrare in coda (registrare un nodo). Gli altri prezzi sono spiegati insieme alle rispettive funzioni: Canone degli account e pruning, manutenzione dei token (persistenza), dataset, gateway e mercati e ordini.
Come si muove un prezzo
Ogni seggio registrato non sospeso ha una voce; sono i seggi conteggiati. Durante un ciclo un seggio può votare tutte le volte che vuole, e conta il suo ultimo voto. Alla fine del ciclo:
- Ogni voto viene limitato: non più del 20 % sopra il prezzo in vigore, non meno della sua metà, e sempre entro il minimo e il massimo del prezzo.
- Il nuovo prezzo è la media su tutti i seggi conteggiati, con ogni seggio silenzioso che conta al prezzo in vigore.
Se nessuno vota, non cambia nulla. Una mediana dei voti espressi, un accordo esatto dei due terzi o il voto più alto non decidono nulla.
Esempi svolti
Dieci seggi conteggiati, e un prezzo in vigore di 100:
| Voti | Ogni voto conta come | Nuovo prezzo |
|---|---|---|
| due seggi votano 120, otto restano in silenzio | 120, 120, e 100 per ogni seggio silenzioso | (2 × 120 + 8 × 100) ÷ 10 = 104 |
| un seggio vota 10.000, nove restano in silenzio | 120 | (120 + 9 × 100) ÷ 10 = 102 |
| un seggio vota 0, nove restano in silenzio | 50 | (50 + 9 × 100) ÷ 10 = 95 |
Senza il limite, il voto di 10.000 darebbe una media semplice di 1.090. Con il limite applicato prima, un seggio sposta il prezzo al massimo di un decimo del passo completo in un registro di dieci seggi, e dello 0,2 % in un registro di 100.
Quanto in fretta possono muoversi i prezzi
Anche quando ogni seggio vota il passo completo, un prezzo sale al massimo del 20 % in un ciclo e scende al massimo della metà. Moltiplicarlo per dieci richiede circa 13 cicli, ridurlo a un decimo circa 4.
Ogni prezzo espresso in ZBC può essere votato fino a un'unità atomica (0,00000001 ZBC). Se ZBC diventa molto prezioso, questi prezzi possono seguirlo verso il basso, così che mantenere un account o un dataset non diventi assurdamente costoso in termini reali. Partendo dagli 0,01 ZBC del canone degli account, arrivare a un'unità richiede circa 20 dimezzamenti, quindi almeno 20 cicli. Nulla diventa gratuito: ogni addebito calcolato viene arrotondato per eccesso ad almeno un'unità atomica.
Esprimere un voto
I voti sono transazioni di servizio esenti da commissioni, firmate con la chiave del nodo del seggio (chiavi di un nodo). Ogni prezzo tranne la commissione di trasferimento si vota con SetConsensusParam (tipo 51).
La commissione di trasferimento è l'unico prezzo con un voto in due fasi:
- nella prima metà del ciclo, un seggio invia un FeeVoteCommitment (tipo 7) che contiene solo un hash di 32 byte del suo voto, così il valore resta nascosto;
- nella seconda metà, invia un FeeVoteReveal (tipo 263) con il valore.
Un reveal conta solo se il suo hash corrisponde a un commitment fatto dallo stesso seggio nello stesso ciclo, e si usa l'ultimo voto valido di un seggio. La nuova commissione viene poi calcolata come ogni altro prezzo.
Salvaguardie
- Minimo del registro. Nessuna decisione che riguarda l'intero registro si risolve finché il registro ha meno di max(3, il suo minimo genesi) seggi o account proprietari distinti, cioè 7 su mainnet. Due seggi dello stesso operatore valgono una sola voce in quel conteggio.
- Una volta per ciclo. Un parametro cambia al massimo una volta per ciclo, e resta sempre entro i suoi limiti.
- Il denaro resta ai seggi. Tutto ciò che questi prezzi fanno pagare arriva ai nodi registrati: i canoni attraverso il pool di longevità, le commissioni attraverso la lotteria (pool, lotteria coinbase).
Che cosa nessun voto può cambiare
Il piano di emissione, rispetto al quale ogni nodo verifica la coinbase di ogni blocco (supply ed emissione); il saldo di qualsiasi account; le regole di consenso e le altezze a cui si applicano; e la genesi. Questi arrivano con la genesi e con il software del nodo, e nessun voto o chiave li sposta (ZooBC Foundation). I seggi hanno un altro voto oltre ai prezzi: due terzi di loro possono porre il veto a una release del software (release e aggiornamenti).