Confirmation and reorgs
Two separate questions that people constantly merge into one, and what a reorg actually does to an Atomicals result.
Protocol behavior Verified 2026-08-31
Describes the Atomicals protocol itself at the pinned reference revision. It does not promise that any product exposes it.
- Page ID
-
protocol/core/confirmation-and-reorgs - Normative authority
- Atomicals reference implementation
- Networks
- mainnet
- Documentation version
- 2026.08
- Audience
- everyone, developer, operator
- Owner
- bitcoin-universe-docs
- Sources
-
- Atomicals ElectrumX
at
v1.5.2.0 - Universe Atomicals NFT, Realm, and Subrealm index
at
1d9109c68d95private repository
- Atomicals ElectrumX
at
Este conteúdo não está disponível em sua língua ainda.
Two questions, two answers, never the same answer.
Did Bitcoin confirm the transaction? A block contains it. Depth grows over time.
Did the Atomicals operation succeed? A validator applied the rules and produced a result. That result is only as final as the chain position it was computed at.
What a reorg changes
Section titled “What a reorg changes”A reorg replaces blocks. Everything computed from the replaced blocks is suspect:
| Result | Effect of a reorg |
|---|---|
| A mint in a replaced block | May not exist in the new chain |
| A name resolution | May resolve to a different candidate |
| A transfer | May never have happened |
| A burn | May not have occurred |
| A mint quota position | May shift, invalidating later claims |
A well-built index does not patch these results in place. It invalidates the affected generation and rebuilds from a checkpoint. See consistency and reorgs.
What a caller should do
Section titled “What a caller should do”- Read the generation identifier and indexed height from every response.
- Do not treat a result computed within the reorg window as settled.
- For value decisions, wait for depth appropriate to the value at risk, then re-read.
- Re-read after any reported generation change, not only after an obvious reorg.
- Never cache an Atomicals result without also caching the generation it came from.
Why “confirmed” in a product is not a protocol statement
Section titled “Why “confirmed” in a product is not a protocol statement”A product can call an action confirmed when it has broadcast and seen one confirmation. That is
a product state. It is not a statement about confirmation depth, reorg safety, or indexer
finality. Read the field definition before mapping it into your own model.