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

Universe ARC-20 index and Marketplace v1 authority

Revision 670030e50071

Open pinned path: marketplaceDocs

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

Revision 1d9109c68d95

Open pinned path: server

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

Idempotency and request IDs

Raw

Making a mutation safe to retry, and making a failure traceable afterwards.

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

Every response carries a request identifier. It is the field to log, and the field to quote in a support question.

Log it on success as well as on failure. A wrong result you cannot trace is much harder to explain than a failure you can.

Marketplace mutations require an Idempotency-Key. It makes a retry safe: the same key for the same request returns the same result rather than performing the action twice.

Rules:

  1. Generate one key per logical action, not per HTTP attempt.
  2. Reuse it for every retry of that action.
  3. Never reuse it for a different action.
  4. Store it with your own record of the action, so a retry after a restart uses the same key.
  5. Treat a conflict as a signal that the key was reused for different content, and inspect rather than retrying.

Keys are scoped per protocol lane. The four Marketplace authorities are isolated, so a key used in one lane does not collide with the same key in another.

Public mutations also carry a timestamp and a nonce inside the signed string, which makes replay of a captured request detectable. Idempotency and replay protection solve different problems:

Control Prevents
Idempotency key Your own retry performing the action twice
Timestamp and nonce Someone else replaying a captured request

You need both.

  1. Generate and persist an idempotency key.
  2. Send the request.
  3. On 429, 500, or 503, wait with exponential backoff and jitter, then retry with the same key.
  4. On 409, stop and inspect. Do not retry with a new key hoping it works.
  5. On success, record the result and the request identifier.
  6. Bound the number of attempts.

Authentication and errors.