Gestire un nodo
Un nodo ZooBC è il software ZooBC in esecuzione su un computer. Conserva una copia della catena, verifica ogni blocco e ogni transazione con le stesse regole di ogni altro nodo e offre un'API HTTP pubblica. Chiunque può gestirne uno, e un nodo che si limita a seguire la catena permette già al suo proprietario di verificare tutto senza fidarsi di nessuno. Produrre blocchi è un passo separato: un nodo lo fa solo quando detiene un seggio nel registro dei nodi.
Che cosa esegue un nodo
Un nodo è un unico processo, avviato con zoobc-node --start node.conf, con un unico database SQLite. Resta in ascolto su tre porte:
| Porta | Uso | |
|---|---|---|
| 8001 | la rete peer-to-peer | |
| 8080 | l'API HTTP, che serve anche il [[web-wallet | wallet web]] |
| 8545 | l'adattatore RPC in stile Ethereum usato da [[metamask | MetaMask]], per impostazione predefinita solo sulla macchina del nodo (loopback) |
Un nodo non costruisce mai un blocco genesi. Il blocco 0 deve trovarsi già nel suo database, e l'hash di quel blocco è l'identità della catena (vedi blocco genesi). Se un nodo si ritrova bloccato su un ramo da cui non può uscire («wedged»), scarta la propria catena e si ricostruisce dagli snapshot ancorati nella catena spine, perché l'impostazione auto_resync è attiva per impostazione predefinita. Una release può inoltre includere un pin della release, un blocco spine noto a cui la spine del nodo deve corrispondere. Le nuove versioni arrivano tramite un programma di aggiornamento che gira accanto al nodo e che il proprietario controlla (release e aggiornamenti).
Dall'accensione alla produzione di blocchi
- L'operatore crea due chiavi: una chiave del nodo per la macchina e una chiave del proprietario in un wallet (chiavi di un nodo).
- Il proprietario invia una registrazione che blocca uno stake e contiene una prova che le due chiavi vanno insieme (registrare un nodo).
- Il nodo attende in una coda pubblica ordinata per stake moltiplicato per il tempo di attesa (coda).
- Un timer di ammissione fa entrare un nodo alla volta, al ritmo lento fissato dal protocollo (ritmo di ammissione).
- Una volta ammesso, il nodo viene estratto per produrre blocchi (estrazione), inoltra blocchi e transazioni ai peer assegnati (ricevute e topologia della rete) e, dopo una breve maturazione, partecipa alle ricompense (maturità e guadagni).
Ogni catena parte con 11 seggi genesi detenuti dalla ZooBC Foundation. Tutti gli altri entrano attraverso la coda, e nessuno sceglie chi entra. Nessun seggio viene concesso a mano, e nessuno si può conquistare con la potenza di calcolo come nel Proof of Work.
Restare nel registro
Un seggio si mantiene facendo il lavoro. Un nodo registrato che salta un turno per cui era stato estratto, per qualsiasi motivo, diventa mancante fino al suo prossimo blocco. Finché è mancante non guadagna nulla, e il suo punteggio di partecipazione scende di 5 punti (su 100) per unità di punteggio, che corrisponde a 12 ore in una rete di meno di 2.880 nodi. Le ricevute che firma e i ping non chiudono questo stato; lo chiude solo il suo prossimo blocco.
Al quarto turno mancato di fila il nodo viene anche sospeso: esce dall'estrazione dei produttori ma mantiene il suo seggio. Quando torna online, il suo software invia un ping, una piccola transazione senza commissione che solo un nodo sospeso può inviare, e che lo riporta nell'estrazione in prova. Se il punteggio arriva a zero, il nodo viene espulso. I dettagli sono in turni mancati, sospensione ed espulsione; tutti i modi in cui un seggio può finire sono in uscire dal registro, e tutti i numeri sono in parametri dei nodi su mainnet.
Vedi anche
Articoli su questo argomento
- Il registro dei nodi e i suoi seggi
La lista on-chain dei nodi autorizzati a produrre blocchi: che cosa registra ogni seggio, perché sono i seggi e non le monete a decidere la produzione dei blocchi, e come chiunque può leggerla. - Il ritmo di ammissione
Perché ZooBC ammette i nuovi arrivati nel suo registro uno alla volta e lentamente, la formula che fissa il ritardo tra un'ammissione e l'altra e il calendario che ne risulta su mainnet. - La coda
Come i nuovi arrivati registrati attendono un seggio: l'ordine per stake moltiplicato per il tempo di attesa, la verifica giornaliera di presenza e quanto costa uscire dalla coda. - Le chiavi di un nodo
La chiave del nodo che firma il lavoro di un nodo e la chiave del proprietario che ne controlla seggio e stake: dove si trova ciascuna, che cosa firma e come sono legate tra loro. - Maturità e guadagni
Che cosa guadagna un nodo registrato, come la lotteria coinbase distribuisce le ricompense di ogni blocco in base al punteggio di partecipazione e perché un nuovo nodo deve maturare prima di guadagnare qualcosa. - Parametri dei nodi su mainnet
Tabella di riferimento dei valori di mainnet che regolano registrazione dei nodi, coda, ammissione, liveness, guadagni, uscita, aggiornamenti e processo del nodo, una riga ciascuno. - Registrare un nodo
Come un proprietario registra un nodo: la transazione NodeRegistration, la prova di proprietà che lega la chiave del nodo al proprietario e lo stake minimo che la coda accetta. - Release e aggiornamenti
Come le nuove versioni del nodo vengono annunciate sulla catena, come il programma di aggiornamento accanto a ogni nodo le installa in sicurezza e come si attiva un pacchetto di nuove regole di consenso. - Uscire dal registro
I modi in cui un seggio finisce (rimozione da parte del proprietario, espulsione a punteggio zero, rivendicazione con la chiave del nodo) e quando il proprietario recupera tutto lo stake o ne perde un decimo.