Wiki di ZooBC
Integrazioni

L'explorer e i nodi di archivio

L'explorer di ZooBC permette a chiunque di sfogliare blocchi, transazioni, account e nodi, cercare vecchi messaggi delle transazioni e leggere statistiche giornaliere. La maggior parte di questi dati non proviene da un nodo ordinario ma da un servizio di archivio: un programma separato che gira accanto a un nodo registrato e conserva un indice consultabile della cronologia della catena.

Che cosa conserva un nodo ordinario

Un nodo ordinario conserva lo stato attuale (saldi, record, il registro) e una finestra recente di blocchi: da uno a due periodi di snapshot, cioè da 30 a 60 giorni su mainnet. È sufficiente per convalidare la catena e per aiutare nuovi nodi a entrare a partire da uno snapshot (snapshot e fast sync). I blocchi, le transazioni e le ricevute più vecchi vengono eliminati (pruning della cronologia), il che mantiene leggeri i nodi. Un operatore che vuole conservare localmente la cronologia eliminata può impostare keep_all_history in node.conf.

La conseguenza è che un nodo da solo non può rispondere a «ogni transazione dal blocco 0», né a una ricerca a testo libero nei messaggi.

Il servizio di archivio

Il servizio di archivio, zoobc-archival-api, colma questa lacuna. Un nodo il cui operatore imposta archival_node = true lo avvia e lo supervisiona. Il servizio legge il database SQLite del nodo stesso e mantiene un indice di blocchi e transazioni in un archivio MySQL, così può rispondere su cronologia, linee temporali degli account, statistiche e ricerche. Oltre a forme d'archivio delle route ordinarie, serve route proprie:

RouteA che cosa risponde
/search/transactionsricerca nelle transazioni, compresi i loro messaggi
/stats/…statistiche della rete
/spine/blocksi blocchi della [[spine-chaincatena spine]]
/network/mapuna mappa della rete
/archive/statsstatistiche sull'archivio stesso

Un dettaglio conta per gli sviluppatori che confrontano le risposte: il servizio di archivio scrive i valori esadecimali in maiuscolo, mentre il nodo li scrive in minuscolo.

Dichiararlo sulla catena

Il proprietario di un nodo registrato dichiara un servizio di archivio con RegisterArchival (tipo 46). La chiave del nodo indicata deve appartenere a un nodo registrato di proprietà del mittente. Non viene bloccato alcuno stake, e UnregisterArchival (tipo 47) ritira la voce. Chiunque può elencare i servizi dichiarati su GET /api/v1/registry/archivals, e il wallet web legge quell'elenco quando il suo gateway non risponde.

Un nodo che detiene lo stato e i blocchi recenti; il servizio di archivio legge il suo database in un indice MySQL di blocchi, transazioni e messaggi; un gateway serve da lì la pagina dell'explorer; RegisterArchival collega il servizio al suo nodo registrato
Un nodo che detiene lo stato e i blocchi recenti; il servizio di archivio legge il suo database in un indice MySQL di blocchi, transazioni e messaggi; un gateway serve da lì la pagina dell'explorer; RegisterArchival collega il servizio al suo nodo registrato

L'explorer

L'explorer è una pagina web servita dai gateway. È costruito sulle route d'archivio: blocchi, transazioni, account, nodi, la spine, statistiche e ricerca. Un gateway invia ogni lettura dell'API prima al suo servizio di archivio e ripiega su un nodo per le route che il servizio di archivio non ha. L'explorer mostra anche la versione del software di ogni nodo, così operatori e osservatori possono vedere chi si è aggiornato (release e aggiornamenti).

Sono tutti dati pubblici della catena: serve una chiave per agire sulla catena, mai per guardarla (API del nodo).

Non l'unico modo per leggere il passato

Un servizio di archivio è una comodità, non la memoria della catena.

L'archiviazione decentralizzata, non ogni nodo, conserva ogni snapshot dal blocco 0, così che chiunque possa ripercorrere la catena spine fino allo snapshot di un dato momento e ricostruire lo stato com'era, senza affidarsi ad alcun nodo di archivio (archivio e la lettura del passato).

Che cosa non fanno i servizi di archivio: non producono blocchi, cosa che fanno solo i nodi registrati, e non esiste alcun database centrale della ZooBC Foundation a cui i nodi riferiscano. I relay trasportano chiamate tra wallet, non transazioni (relay).

Vedi anche