Blocchi e tempo
ZooBC aggiunge un blocco alla sua catena circa ogni 15 secondi, su ogni rete. Il protocollo misura il tempo in blocchi: quando una regola dice «un giorno», intende 5.760 blocchi. Conoscere questa conversione rende facili da leggere la maggior parte dei numeri di questa wiki.
Un blocco ogni 15 secondi
L'intervallo di 15 secondi è un parametro della genesi di ogni catena (min_block_interval), lo stesso su devnet, testnet e mainnet. Dopo ogni blocco, un'estrazione designa in ordine i nodi che possono produrre il successivo (estrazione). Il nodo estratto per primo ha il primo round, con obiettivo 15 secondi dopo il blocco precedente. Se è in ritardo o offline, il nodo estratto per il round successivo può produrre il blocco 15 secondi più tardi, e così via, quindi un produttore assente ritarda un blocco invece di fermare la catena (round, tempi e finestre).
Un blocco che arriva meno di 13 secondi dopo il suo padre viene rifiutato perché «prodotto troppo in fretta», quindi nessun produttore può accelerare la catena.
Anche i blocchi vuoti contano
I blocchi continuano ad arrivare che qualcuno invii transazioni o meno. Un blocco senza transazioni svolge comunque un lavoro:
- contiene ricevute, le prove firmate che i nodi si sono inoltrati dati a vicenda, che alimentano il punteggio di partecipazione;
- dalla versione 0.5.8 porta le nuove monete previste per il suo momento, la coinbase, esattamente come un blocco pieno.
Il rilascio di nuovi ZBC segue l'orologio, non il numero di blocchi: la coinbase di un blocco è ciò che il piano di 15 anni rilascia tra il timestamp del blocco precedente e il proprio (supply ed emissione). Un tratto di blocchi lenti non conia meno nell'arco di un giorno, e una raffica di blocchi veloci non conia di più.
Durate contate in blocchi
Poiché l'intervallo è fisso, il protocollo scrive le durate come numeri di blocchi. Queste sono le conversioni più comuni, con alcune delle durate che compaiono in questa wiki (valori di mainnet):
| Blocchi | Tempo | Dove compare |
|---|---|---|
| 120 | 30 minuti | ritardo prima che una rotazione della chiave del nodo abbia effetto (chiavi di un nodo) |
| 240 | 1 ora | un'epoca delle prove di archiviazione (pool di archiviazione decentralizzata) |
| 720 | 3 ore | il limite di rollback (finalità e rollback) |
| 2.880 | 12 ore | l'unità dell'orologio del punteggio finché ci sono meno di 2.880 nodi (turni mancati, sospensione ed espulsione) |
| 5.760 | 1 giorno | la finestra di presenza di un nodo in coda (coda) |
| 11.520 | 2 giorni | attesa predefinita prima che un nodo ad aggiornamento automatico installi una release (release e aggiornamenti) |
| 40.320 | 1 settimana | il periodo di attesa per lo stake di un nodo in uscita (uscire dal registro) |
| 172.800 | 30 giorni | un ciclo di snapshot, che è anche il periodo del canone degli account e dei voti sui prezzi (canone degli account e pruning, voti sui prezzi) |
Alcuni limiti sono invece contati in secondi, perché confrontano timestamp. Una transazione, per esempio, può essere inclusa in un blocco fino a un'ora dopo il proprio timestamp per impostazione predefinita (scadenza e timestamp).
La spine: un blocco al giorno
Accanto alla catena principale, ogni nodo mantiene la spine, una lenta catena di accompagnamento fatta di checkpoint, che non contiene transazioni (catena spine). Produce un blocco al giorno su testnet e mainnet (ogni 86.400 secondi) e uno all'ora su devnet. Ogni blocco spine è co-firmato dai nodi registrati e indica un blocco della catena principale profondo 760 blocchi (3 ore e 10 minuti), il che dà alla catena principale una soglia che nessuna riorganizzazione può attraversare (finalità e rollback).
I tempi di devnet
Devnet, la rete di sviluppo, mantiene il blocco di 15 secondi ma accorcia molte delle durate qui sopra, come il limite di rollback (60 blocchi) e il ciclo di snapshot (240 blocchi), così che i loro effetti si vedano in minuti od ore. Testnet e mainnet usano gli stessi valori. Il confronto completo è in devnet, testnet e mainnet.