Skip to content

Sources behind this page

Every claim on this page resolves to these pinned revisions. Follow a path to read the exact source the statement was verified against.

universe-index-atomicals-nfts-and-realms

Universe Atomicals NFT, Realm, and Subrealm index

Revision 1d9109c68d95

Open pinned path: architectureDocs

Materialized read model for plain NFTs, Realms, and Subrealms projected from Atomicals ElectrumX.

universe-index-atomicals

Universe ARC-20 index and Marketplace v1 authority

Revision 670030e50071

Open pinned path: tokenExplorerDocs

Universe ARC-20 token explorer feed and the durable Marketplace v1 protocol authority.

Data flow

Raw

Where every number comes from, which hop can be stale, and what a consumer should record with each answer.

Universe implementation Verified 2026-08-31 Metadata & Sources

Describes what a Bitcoin Universe service actually does today. It is not a statement about the protocol in general.

Page ID
develop/data-flow
Normative authority
Universe implementation documentation
Networks
mainnet
Documentation version
2026.08
Audience
developer, operator
Owner
bitcoin-universe-docs
Sources
Where every Atomicals answer comes from

Universe-operated Bitcoin Core produces blocks. Atomicals ElectrumX reads them and applies the protocol rules, which is where protocol interpretation happens. A Universe index scans that provider and publishes an immutable generation as a materialised read model. Products read the index through a public API. Each hop can be behind the one before it, so every answer carries the generation identifier and indexed height it was computed at. No third-party blockchain data provider sits in any production path.

  1. Bitcoin Core produces blocks. Universe operates the node.
  2. Atomicals ElectrumX reads blocks and applies the protocol rules. This is where protocol interpretation happens.
  3. A Universe index scans the provider, builds a materialised read model, and publishes it as an immutable generation.
  4. A product reads the index through a public API.

Each hop can be behind the one before it. A consumer must know which position each answer came from.

Hop Can be stale because
Bitcoin Core Normal block propagation
ElectrumX Still processing a block, or a reorg
Index Scan in progress, or generation build in progress
Product cache Cached an answer without its generation

The last row is the one under your control, and the one most often responsible for a wrong screen.

The scan is all or nothing. Holder rows are aggregated by address and must sum exactly to circulating supply. A mismatch, a null address, a truncated page sequence, a changing declared total, or a changing chain tip aborts the entire poll. No partial authoritative snapshot is ever committed.

That is why an answer is either complete or absent, rather than plausible and wrong.

NFT, Realm, and Subrealm rows share one provider scan, one generation, one checkpoint, and one active pointer. Publication requires exact final declared source-row coverage and rejects a count shrink or an incomplete page.

A generation that spans more than one provider tip is published explicitly as mixed and stale, without a single indexed height, rather than pretending to be consistent.

Field Why
Generation identifier So you can detect a rebuild
Indexed height So you know the chain position
Source revision So a behavior difference is explainable
Request identifier So a support question is traceable
Stale and mixed-tip flags So you know whether to act on it

Storing an Atomicals result without those five makes any later disagreement unexplainable.

Consistency and reorgs and readiness and freshness.