Wiki di ZooBC
Fondamenti di ZooBC

Il blocco genesi

Ogni catena ZooBC inizia con un blocco genesi, il blocco 0. Non è un messaggio e non contiene transazioni: rappresenta l'intero stato iniziale della catena, dagli account con fondi a ogni parametro di consenso. Tutto questo è racchiuso in un unico hash, e quell'hash è l'identità della catena. Cambia un solo saldo e hai una catena diversa.

Costruito da una configurazione

Una catena viene creata offline a partire da un file di configurazione. Non esiste una transazione genesi: la configurazione è lo stato. Stabilisce:

  • gli account con fondi e i loro saldi, compresa l'eventuale tesoreria delle app che finanzia il pool delle app;
  • i token genesi e i loro saldi: ogni catena ha le stesse 14 monete genesi, come ZUSD e ZBTC (token e mercati);
  • i piani di vesting;
  • i nodi registrati, o seggi genesi: 11 su ogni catena, detenuti dalla ZooBC Foundation, ciascuno con un saldo operativo di 10 ZBC sull'account proprio del nodo;
  • i parametri di consenso, dall'intervallo tra i blocchi ai prezzi iniziali, e l'altezza di attivazione di ogni regola;
  • le chiavi con un ruolo, come l'autorità di release (release e aggiornamenti), e gli indirizzi di custodia delle monete del bridge (bridge e le monete wrapped).

Il costruttore della genesi somma ogni accredito e si rifiuta di scrivere una genesi il cui totale supererebbe il tetto della supply di 33.333.333,33333333 ZBC. Ciò che non distribuisce diventa il pool coinbase, rilasciato in 15 anni (supply ed emissione). Alle altezze 0 e 1 non viene pagata alcuna coinbase.

Il blocco genesi contiene account e saldi, seggi genesi, monete genesi, piani di vesting, parametri e altezze delle regole; tutto entra nell'hash della configurazione, da cui deriva l'hash genesi, l'identità della catena.
Il blocco genesi contiene account e saldi, seggi genesi, monete genesi, piani di vesting, parametri e altezze delle regole; tutto entra nell'hash della configurazione, da cui deriva l'hash genesi, l'identità della catena.

Un solo hash per tutto l'inizio

Il costruttore racchiude tutto ciò che conta in un unico hash della configurazione. L'hash genesi viene poi derivato dalla versione del blocco, dall'altezza, dal timestamp, da un hash precedente tutto a zero e da quell'hash della configurazione. Il blocco genesi stesso porta un seed, una chiave del produttore, una firma e un hash precedente tutti a zero, e il suo hash è il valore derivato dalla configurazione, non un hash dei suoi stessi byte. Due valori vengono letti ma non inclusi nell'hash: total_supply e node_operating_balance.

Cambiare qualsiasi valore incluso dà un nuovo hash genesi, e quindi una catena diversa.

L'identità della catena

L'hash genesi è l'unica identità di una catena: non esiste un byte di identificativo della rete.

  • I nodi confrontano gli hash genesi quando si connettono, e rifiutano un peer il cui hash è diverso.
  • Ogni firma di transazione lo copre. Chi firma firma SHA3-256("ZBC-TX" ‖ hash genesi ‖ i byte della transazione non firmata), quindi una transazione firmata per una catena non è valida su nessun'altra (firme legate alla catena).
  • Un nodo lo riporta come genesis_hash su /api/v1/node/info, così un wallet può sapere con quale catena sta parlando.
  • Una rete di prova che viene rilanciata riceve un nuovo hash.

Per questo devnet, testnet e mainnet non condividono né saldi né firme (devnet, testnet e mainnet).

Un nodo non costruisce mai una genesi da sé: il blocco 0 deve trovarsi già nel suo database quando si avvia (gestire un nodo).

Nessuna chiave maestra

La genesi non contiene alcuna chiave in grado di riscrivere la catena in seguito. Regole e parametri cambiano solo tramite nuove release, che portano le altezze a cui le regole si applicano, e tramite i voti sui prezzi, entro limiti, dei seggi del registro (voti sui prezzi). Nessuna chiave cambia una regola, un parametro o un saldo firmando un messaggio, e un binario del nodo in disaccordo con le altezze delle regole registrate per la sua catena si rifiuta di funzionare. Dalla versione 0.5.8 tutte le 121 regole di consenso sono in vigore dall'altezza 0.

Vedi anche