ZooBC wiki
Integrations

The explorer and archival nodes

You are looking at an old version of this page: revision #838 by zoobc.how, 2026-10-26 22:31 UTC. See the current version

The ZooBC explorer lets anyone browse blocks, transactions, accounts and nodes, search old transaction messages and read daily statistics. Most of that comes not from an ordinary node but from an archival service: a separate program that runs beside a registered node and keeps a searchable index of the chain's history.

What an ordinary node keeps

An ordinary node keeps the current state (balances, records, the registry) and a recent window of blocks: one to two snapshot periods, which is 30 to 60 days on mainnet. That is enough to validate the chain and to help new nodes join from a snapshot (snapshots and fast sync). Older blocks, transactions and receipts are pruned (pruning of history), which keeps nodes light. An operator who wants to keep the pruned history locally can set keep_all_history in node.conf.

The consequence is that a node alone cannot answer "every transaction since block 0", nor a full-text search over messages.

The archival service

The archival service, zoobc-archival-api, fills that gap. A node whose operator sets archival_node = true starts it and supervises it. The service reads the node's own SQLite database and keeps an index of blocks and transactions in a MySQL store, so it can answer history, account timelines, statistics and searches. Besides archival forms of ordinary routes, it serves its own:

RouteWhat it answers
/search/transactionssearch over transactions, including their messages
/stats/…network statistics
/spine/blocksthe blocks of the spine chain
/network/mapa map of the network
/archive/statsstatistics about the archive itself

One detail matters to developers comparing answers: the archival service writes hexadecimal values in upper case, while the node writes them in lower case.

Declaring it on the chain

The owner of a registered node declares an archival service with RegisterArchival (type 46). The node key named must belong to a registered node owned by the sender. No stake is locked, and UnregisterArchival (type 47) withdraws the entry. Anyone can list the declared services at GET /api/v1/registry/archivals, and the web wallet reads that list when its gateway fails.

A node holding state and recent blocks; the archival service reads its database into a MySQL index of blocks, transactions and messages; a gateway serves the explorer page from it; RegisterArchival links the service to its registered node
A node holding state and recent blocks; the archival service reads its database into a MySQL index of blocks, transactions and messages; a gateway serves the explorer page from it; RegisterArchival links the service to its registered node

The explorer

The explorer is a web page served by gateways. It is built on the archival routes: blocks, transactions, accounts, nodes, the spine, statistics and search. A gateway sends each API read to its archival service first and falls through to a node for the routes the archival service lacks. The explorer also shows each node's software version, so operators and observers can see who has updated (releases and updates).

All of it is public chain data: a key is needed to act on the chain, never to look at it (node API).

Not the only way to read the past

An archival service is a convenience, not the chain's memory.

What archival services do not do: they do not make blocks, which only registered nodes do, and there is no central ZooBC Foundation database that nodes report to. Relays carry calls between wallets, not transactions (relays).

See also