Wiki di ZooBC
Fondamenti di ZooBC

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ù.

Un blocco ogni 15 secondi, anche quando non contiene transazioni: 5.760 blocchi al giorno, 40.320 a settimana. La catena spine produce 1 blocco al giorno.
Un blocco ogni 15 secondi, anche quando non contiene transazioni: 5.760 blocchi al giorno, 40.320 a settimana. La catena spine produce 1 blocco al giorno.

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):

BlocchiTempoDove compare
12030 minutiritardo prima che una rotazione della chiave del nodo abbia effetto (chiavi di un nodo)
2401 oraun'epoca delle prove di archiviazione (pool di archiviazione decentralizzata)
7203 oreil limite di rollback (finalità e rollback)
2.88012 orel'unità dell'orologio del punteggio finché ci sono meno di 2.880 nodi (turni mancati, sospensione ed espulsione)
5.7601 giornola finestra di presenza di un nodo in coda (coda)
11.5202 giorniattesa predefinita prima che un nodo ad aggiornamento automatico installi una release (release e aggiornamenti)
40.3201 settimanail periodo di attesa per lo stake di un nodo in uscita (uscire dal registro)
172.80030 giorniun 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.

Vedi anche