Le regole dei due terzi
La maggior parte di ciò che accade su ZooBC non richiede alcun voto: un solo produttore estratto firma ogni blocco, e ogni nodo lo verifica. Ma alcune decisioni parlano a nome dell'intero registro: un checkpoint che rende definitiva la cronologia, monete coniate per un deposito su un'altra catena, il veto a una release difettosa. Per queste ZooBC usa un'unica soglia: due terzi dei seggi registrati. Con 11 seggi, sono 8.
Dove si applicano i due terzi
| Decisione | Che cosa serve |
|---|---|
| memorizzare un blocco spine | co-firme del 67 % dell'intera lista dei firmatari, arrotondato per eccesso (8 su 11); più della metà (6 su 11) solo dopo 3 periodi della spine senza un blocco spine; mai meno di 5 |
| accreditare un deposito del bridge, rilasciare un prelievo del bridge | attestazioni di due terzi del registro, ciascuna firmata con una chiave del nodo |
| un conio del bridge oltre il tetto giornaliero | ogni seggio non sospeso |
| risolvere un fatto di un oracolo che fa scattare pagamenti | due terzi del registro attivo che attestano lo stesso valore |
| porre il veto a una release | due terzi dei seggi registrati che attestano un veto |
| sostituire l'autorità di release | lo stesso quorum dei due terzi, conteggiato solo quando il voto più vecchio ha una settimana |
| attivare un pacchetto di nuove regole | almeno due terzi dei produttori registrati che hanno prodotto di recente un blocco con la nuova versione |
Più in dettaglio:
- Blocchi spine. La soglia è max(
spine_min_signatures, ceil(n × 67 / 100)), dove n è il numero di seggi nella lista dei firmatari della spine: il 67 % della lista, arrotondato per eccesso. Ogni firmatario verifica il contenuto del blocco rispetto alla propria catena prima di firmarlo. Vedi catena spine. - Il bridge. Le sue regole fanno parte del nodo dalla versione 0.5.8. Programmi keeper accanto ai nodi sorvegliano gli indirizzi di custodia sull'altra catena e votano con attestazioni esenti da commissioni. Un deposito viene coniato, uno per uno e senza commissione del bridge, quando due terzi dei seggi conteggiati, i nodi registrati non sospesi, attestano lo stesso token, importo e destinatario. Se i conii di un giorno di una moneta superassero il maggiore tra una moneta intera e il 10 % della sua supply, deve essere d'accordo ogni seggio non sospeso. Le catene vengono rilanciate sulla versione 0.5.8 senza avviare il servizio del bridge. Vedi bridge e le monete wrapped.
- Fatti degli oracoli. I nodi registrati attestano eventi; quando due terzi del registro attivo attestano lo stesso valore, l'evento si risolve e paga ogni trigger in sospeso che lo indica. Vedi trigger e attestazioni.
- Release. Un veto attestato da due terzi dei seggi revoca una release esattamente come farebbe la revoca dell'autorità di release stessa. Un voto che indica una nuova autorità di release conta solo quando il suo voto più vecchio ha una settimana (40.320 blocchi), così chi detiene il ruolo lo vede arrivare. Vedi release e aggiornamenti.
- La soglia di prontezza. Un pacchetto di nuove regole di consenso si attiva solo quando almeno ceil(2 × R / 3) produttori registrati distinti hanno prodotto un blocco con la nuova versione entro una finestra recente di max(720, 5 × n) blocchi, e non prima che la release sia registrata da un giorno. Qui R è il numero di seggi registrati non sospesi, e n il numero di nodi registrati.
Come contano i seggi sospesi
Dalla versione 0.5.8, i seggi sospesi (vedi turni mancati, sospensione ed espulsione) escono da ogni conteggio dei due terzi: non votano e non contano nel totale. La spine è l'unica eccezione voluta. Continua a contare ogni seggio della sua lista dei firmatari, sospeso o no, così che un checkpoint della spine parli sempre a nome di due terzi di tutti i seggi.
Il minimo del registro
Le decisioni che riguardano l'intero registro hanno anche un minimo: nessuna attestazione che riguarda l'intero registro si risolve finché il registro ha meno di max(3, min_registry_size) seggi o account proprietari distinti: 7 su mainnet. Due seggi dello stesso operatore valgono una sola voce nel conteggio dei proprietari.
Che cosa non richiede i due terzi
- Un blocco ordinario. Lo firma un solo produttore, estratto dal seed, e ogni nodo lo verifica (vedi estrazione).
- I prezzi votabili, come il canone degli account o la commissione di trasferimento. Una volta per ciclo ogni prezzo si sposta alla media dei voti dei seggi conteggiati, con ogni voto prima limitato a non più del 20 % in su o della metà in giù (vedi voti sui prezzi).
Anche alcune verifiche che un nodo fa per sé usano una soglia di due terzi, o vicina ai due terzi, ma sono una politica locale, non consenso: un nodo rimasto indietro segue la punta che riportano due terzi di un campione di peer registrati; il giro più ampio della verifica degli snapshot richiede due terzi dei peer che rispondono (vedi snapshot e fast sync); e il sondaggio sui fork di un nodo richiede almeno 0,66 dei peer votanti, poco meno di due terzi.
L'altra faccia dei due terzi
Una soglia dei due terzi significa che poco più di un terzo dei seggi, agendo insieme o semplicemente non votando, può bloccare una decisione. Per la spine questo è attenuato dal ripiego a più della metà dopo tre periodi inattivi. La soglia di prontezza non ha una scadenza: poco più di un terzo dei seggi può frenare un aggiornamento.