Pular para o conteúdo

Fontes desta pagina

Cada afirmacao desta pagina aponta para revisoes fixadas. Abra o caminho para ler a fonte exata da verificacao.

universe-index-atomicals

Universe ARC-20 index and Marketplace v1 authority

Revisao 670030e50071

Abrir caminho fixado: tokenExplorerDocs

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

universe-index-atomicals-nfts-and-realms

Universe Atomicals NFT, Realm, and Subrealm index

Revisao 1d9109c68d95

Abrir caminho fixado: server

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

Pagination and cursors

Raw

Signed cursors, what they bind to, and why a cursor stops working after a generation change.

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/pagination-and-cursors
Normative authority
Universe implementation documentation
Networks
mainnet
Documentation version
2026.08
Audience
developer, integrator
Owner
bitcoin-universe-docs
Sources

Este conteúdo não está disponível em sua língua ainda.

A cursor is an opaque token. Do not parse it, construct one, or modify one. The ARC-20 feed signs cursors with a dedicated secret, separate from the bearer token, so a tampered cursor is rejected rather than silently misinterpreted.

A cursor refers to a position inside an immutable generation. It also preserves the page and holder chunk sizes it was created with.

Two consequences:

  1. A cursor is only valid for its generation. When the generation changes, restart the listing.
  2. Changing the page size mid-listing does not work. The cursor already carries the sizes.

A cursor-free request against the ARC-20 feed may need to build an immutable generation first. In that case the service copies a bounded number of rows and returns a retryable unavailable response until the generation is ready.

Retries resume and reuse the same source fingerprint. Source movement abandons an unfinished generation. That bounds writer time and stops repeated requests from duplicating complete histories.

A client must therefore treat a retryable unavailable response as normal during bootstrap, not as a failure.

Surface Pattern
Asset listings Cursor plus limit
Holder listings Page number plus limit
History Limit, bounded
Feed pages Signed cursor plus limit

Where a truncated flag is returned, honour it. It means there was more and the response stopped, not that there was nothing more.

  1. Treat the cursor as opaque.
  2. Restart the listing when the generation identifier changes.
  3. Never merge pages from two generations into one result set.
  4. Handle a retryable unavailable response during bootstrap with backoff.
  5. Respect truncated rather than assuming the list ended.
  6. Bound your own total page count so a loop cannot run forever.

Consistency and reorgs and ARC-20 API.