Wiki di ZooBC
Gestire un nodo

Il registro dei nodi e i suoi seggi

Il registro dei nodi è la lista on-chain dei nodi autorizzati a produrre blocchi ZooBC. Ogni voce è un seggio. Nel Proof of Participation sono i seggi, non le monete o l'hardware, a decidere chi produce i blocchi: la possibilità di un operatore di produrre il blocco successivo è pari alla sua quota dei seggi. Ogni modifica al registro è una transazione che ogni nodo convalida, e chiunque può leggerla.

Dalla registrazione al seggio: registrarsi con uno stake, attendere nella coda pubblica, essere ammessi uno alla volta, poi produrre blocchi a turno
Dalla registrazione al seggio: registrarsi con uno stake, attendere nella coda pubblica, essere ammessi uno alla volta, poi produrre blocchi a turno

Che cosa registra un seggio

Per ogni nodo il registro contiene:

  • l'id del nodo, un numero derivato dalla chiave del nodo: i suoi primi 8 byte letti come intero little-endian, con il bit più alto azzerato;
  • la chiave del nodo, una chiave pubblica Ed25519 di 32 byte che firma il lavoro del nodo (vedi chiavi di un nodo);
  • l'account del proprietario, il normale account che ha registrato il nodo e lo controlla;
  • l'altezza di registrazione, il blocco in cui il nodo si è registrato;
  • lo stake bloccato, gli ZBC che il proprietario ha bloccato come cauzione;
  • lo stato: registrato (attivo), in coda o cancellato.

Il punteggio di partecipazione del nodo è conservato accanto. Il registro è versionato per altezza di blocco, quindi la composizione a qualsiasi altezza passata può essere ricostruita, e ogni blocco viene giudicato rispetto al registro com'era al blocco precedente.

Perché i seggi

Con il Proof of Work, una quota della produzione dei blocchi si può comprare tanto in fretta quanto l'hardware; con il Proof of Stake, tanto in fretta quanto le monete. In ZooBC è una quota dei seggi, e i seggi vengono ammessi uno alla volta, al ritmo fissato dal protocollo (ritmo di ammissione). Una maggioranza della produzione dei blocchi non si può quindi comprare in fretta. Il Proof of Participation a confronto con PoW e PoS mette i tre modelli uno accanto all'altro.

L'estrazione dei produttori è uniforme sui seggi registrati che non sono sospesi (estrazione). Ogni seggio ha la stessa probabilità di essere estratto, qualunque cosa abbia bloccato il suo proprietario. Un operatore che detiene 3 seggi su 30 produce circa un blocco su dieci, che ciascuno dei suoi seggi blocchi 100 ZBC o 10.000 ZBC.

Una ruota con un settore uguale per ogni seggio, qualunque sia lo stake, e lo stake che invece ordina la coda
Una ruota con un settore uguale per ogni seggio, qualunque sia lo stake, e lo stake che invece ordina la coda

A che cosa serve lo stake

Se lo stake non compra blocchi, a che cosa serve?

  • Ordina la coda dei nodi in attesa di entrare, per stake moltiplicato per il tempo di attesa (coda).
  • Fa sì che ogni seggio costi qualcosa: un nuovo arrivato deve bloccare almeno il minimo di ingresso (registrare un nodo).
  • È una cauzione. Un decimo va perso se il nodo viene espulso, o se esce mentre è mancante o sospeso; quel decimo va al pool di longevità, che paga i nodi che lavorano (uscire dal registro).

Lo stake da solo non rende nulla. Anche le ricompense lo ignorano: la lotteria coinbase è pesata dal punteggio di partecipazione, che solo il lavoro reale fa salire (maturità e guadagni).

Seggi genesi e nuovi arrivati

Ogni catena parte con 11 seggi genesi detenuti dalla ZooBC Foundation. Sono scritti nel registro all'altezza 0 senza stake bloccato, con il punteggio predefinito del 20 % e un saldo operativo di 10 ZBC sull'account proprio di ciascun nodo. Tutti gli altri entrano attraverso la coda: nessuno sceglie i candidati e non c'è alcuna fase di approvazione. Non c'è nemmeno un calendario fisso: il tempo tra due ammissioni segue il numero di seggi conteggiati. Una registrazione non scade.

Come un seggio cambia stato

DaACausa
(nessuno)registratola genesi, all'altezza 0
(nessuno) o cancellatoin codauna registrazione
in codaregistratol'ammissione
registratocancellatoespulsione, rimozione da parte del proprietario o rivendicazione
in codacancellatorimozione, rivendicazione o esclusione per presenza mancata

La sospensione non è uno stato. Un nodo sospeso resta «registrato» ma viene escluso dall'estrazione dei produttori finché non torna (turni mancati, sospensione ed espulsione).

Leggere il registro

Il registro è pubblico, e per leggerlo non serve alcuna chiave:

  • GET /api/v1/nodes?status=all elenca ogni seggio con il suo proprietario e la sua altezza di registrazione; i seggi genesi mantengono l'altezza 0.
  • GET /api/v1/nodes?status=queued elenca la coda, con lo stake e l'altezza di registrazione di ogni nodo.
  • GET /api/v1/blockchain/rules elenca le regole in vigore.

Non è una lista di wallet: un normale account non ha bisogno di alcuna registrazione per detenere o inviare ZBC.

Vedi anche