Wiki di ZooBC
Gestire un nodo

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:

PortaUso
8001la rete peer-to-peer
8080l'API HTTP, che serve anche il [[web-walletwallet web]]
8545l'adattatore RPC in stile Ethereum usato da [[metamaskMetaMask]], 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

  1. L'operatore crea due chiavi: una chiave del nodo per la macchina e una chiave del proprietario in un wallet (chiavi di un nodo).
  2. Il proprietario invia una registrazione che blocca uno stake e contiene una prova che le due chiavi vanno insieme (registrare un nodo).
  3. Il nodo attende in una coda pubblica ordinata per stake moltiplicato per il tempo di attesa (coda).
  4. Un timer di ammissione fa entrare un nodo alla volta, al ritmo lento fissato dal protocollo (ritmo di ammissione).
  5. 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