Skip to content

Atomicals

Source bitcoinuniverseio/core (private)
Path backend/packages/ecosystem-contracts/lib/protocols.js, Marketplace v1 action page, Atomicals execution service
Chain bitcoin
Network mainnet
Lifecycle enabled
Verified 2026-09-23

Atomicals is the largest enabled family in Core: four of the nine enabled marketplace protocols are Atomicals markets, and all four declare 12 of the 13 marketplace actions.

MarketTradesIdentity required
ARC-20Fungible colored-sat tokensThe authoritative ticker winner. A trade moves the complete colored value
Atomicals NFTsCollectiblesOne authoritative compact Atomical id, quantity one
RealmsTop-level Realm namesThe verified authoritative name winner
SubrealmsNames below a parent RealmThe verified authoritative subrealm winner

All four run on one isolated Atomicals execution service with separate protocol routes and durable state.

A browse result does not by itself mean an asset is listed for sale.

MarketAddressProtocol and asset type
ARC-20/trade/arc20arc20. The asset ID is the ticker
Atomicals NFTs/trade/atomicals/nftsatomicals_nft, type nft
Containers/trade/atomicals/containersatomicals_nft, type container
DMINT items/trade/atomicals/itemsatomicals_nft, type dmitem
Realms/trade/atomicals/realmsrealms
Subrealms/trade/atomicals/subrealmssubrealms

Containers and DMINT items trade under the NFT protocol, and each market shows only its own type.

Realm, Subrealm, Container, and DMINT item rows show the Atomical’s name. Plain NFTs, and listings created before names were recorded, show the Atomical ID.

ActionWhat happens
ListYou set a price per unit and sign in your wallet. The listing opens after the market’s checks pass
Update listingA new price, recorded as a new revision of the same listing
DelistA signed message, not a transaction. The review dialog shows the exact commitment your wallet is asked to sign
BuyThe listing is reserved, the purchase is prepared, you sign it, it is broadcast, and it settles after confirmation
OffersCreate an offer, cancel your own, or accept one made on an asset you hold
RecoveryFind out what happened to a request whose answer never arrived. See below

A Marketplace v1 price is per unit. The listing form asks for the Price per unit (sats) and shows the total as you type. A lot’s total is its unit price times its quantity, so 2,000 units at 1,100 sats per unit cost 2,200,000 sats. Market cards and listing pages show the Unit price, and the Total price when a lot holds more than one unit. The wallet review shows both.

The marketplace fee is worked out on the total and charged to both sides:

  • the seller receives the total minus the fee;
  • the buyer pays the total plus the fee, plus the network fee.

On bitcoinuniverse.io the fee is 1% of the total, and at least 500 sats, on each side. The smallest total the market accepts is therefore 1,046 sats: a 500-sat fee leaves the seller the 546-sat dust minimum. A sale counts as settled once its transaction has 6 confirmations.

The market refuses a price whose payout after the fee would fall below the Bitcoin dust limit, and says so (price_below_minimum). When the wallet’s funds do not cover the total, the fee, and the network fee, it says that too (insufficient_funding) instead of asking you to refresh. The review screen shows the exact fee and your net proceeds before you sign.

A request can reach the market and apply even though your browser never saw the answer. When that happens, Core locks that asset and shows Earlier request outcome unknown, with a Check what happened button.

Checking asks the market, with a request signed by your wallet, about the earlier request under its original request key, so the action can never apply twice:

  • if the market applied it, the market replays what it recorded and nothing happens a second time;
  • if the market never ran it, the request is closed as not applied;
  • if it was the final step of an action you had already signed and the market never ran it, that same signed step is completed under its original key, once.

The lock clears once the market confirms the outcome. When the check proves a final step applied, the page also clears the unfinished-action notice for the prepared action that step used.

This covers every step that finalizes an action: listing, updating, delisting, buying, creating an offer, and accepting one. Until the check answers, other actions on that asset stay closed, so a timeout cannot turn into a double listing or a second purchase.

Each mutation rechecks the exact Bitcoin output, the owner script, the spent state, the single-Atomical inventory, the colored value, and a stable Bitcoin and Atomicals checkpoint.

Mutations fail closed on mixed collateral, the wrong NFT subtype, a spent outpoint, checkpoint drift, a burn, or an ownership mismatch. A generic NFT listing cannot contain a Realm, Subrealm, fungible token, container, or item subtype. Realm and Subrealm markets additionally require the resolver to return the verified winner at the exact live owner outpoint.

A refusal names its cause when retrying cannot help:

  • The connected wallet does not hold this asset. Only the address that holds it can list or change it. Switch to that wallet.
  • The listed asset has moved. The seller transferred or spent it, so the listing can no longer be filled.
  • This wallet’s funding is already committed to its open offers or pending purchases. Finish or cancel one of them, or add funds. An offer or purchase otherwise uses whatever funding its other offers and purchases do not hold.

The market also watches the output behind every open listing, for all Atomicals types. When that output is spent, even before the spending transaction confirms, the listing leaves the book.

Prepared transactions must assign the selected Atomical to one unburned output, preserve the reviewed seller payout and fees, and pass Bitcoin Core preflight.

Settlement requires at least one confirmation by default, and operators may configure 1 to 100. Listing revisions, funded offers, reservations, broadcast lineage, confirmation, dropped and replaced transactions, and reorg reconciliation are durable and protocol-scoped.

If relaying a purchase fails, the market asks its own Bitcoin node whether the transaction went out. A purchase that may have been sent is never reported as not applied, and a listing is not offered again while a purchase already broadcast for it is pending or confirmed.

An ARC-20 lot sells one whole Bitcoin output. Its token quantity and its Bitcoin collateral value are separate: a protocol allocation may contain 600 token units on an output worth 1,000 sats. An ask of 1,200 sats for that lot is 2 sats per token. The output value still controls Bitcoin inputs and outputs.

The Portfolio signed-offer form accepts a whole-lot total (priceSats). Marketplace v1 accepts a per-unit price (priceAtomic); its total is that price multiplied by quantityAtomic. These are distinct signing and fee contracts. The per-unit pricing description above applies to Marketplace v1.

The repair prepared on 9 October 2026 preserves this distinction and accepts an explicitly verified single-FT allocation below its Bitcoin collateral in the Portfolio flow. Missing quantities, mixed assets and an unverified output cannot authorize listing. This source change is awaiting functional qualification and release; it does not establish current public availability. Private Signet still requires verified challenge, rules, interpreter and isolated database provenance. Funded wallet journeys and publisher gates remain outstanding.

  1. Open the token from Portfolio or its ARC-20 market.
  2. Select one available lot.
  3. Enter the sale price.
  4. Review the marketplace fee and the net proceeds.
  5. Approve the PSBT in the connected wallet.

Core never splits the selected colored lot and never uses it as ordinary Bitcoin change.

The listing appears only after the signed offer passes ownership, outpoint, ticker, quantity, payout, and signature checks. Refreshing or reconnecting reads the open listing from the market; retrying cannot create a second open listing for the same ARC-20 outpoint. Buying independently applies the buyer service fee and preserves every colored satoshi in the buyer output.

If another transaction spends a listed lot on other terms, for example because the seller moved it or it sold elsewhere, a purchase of that lot can never confirm. Core then closes the lot instead of returning it to the book.

Atomicals NFT cards show authoritative inline artwork when the unified index publishes a safe media field and a SHA-256 digest. The browser loads that field from Core, not from an indexer or a third-party media origin. Core caps the response at 16 MiB, accepts only a narrow set of image, audio, video, JSON, and plain-text media types, and checks the complete body against its digest before returning it. Invalid or tampered media falls back to the asset name and identifier and is never treated as ownership, listing, or settlement evidence.

An Atomicals digital object may hold several payload files, or none. Where several images are present the card always shows the same one, so a thumbnail does not change between refreshes. Where the index confirms an object carries no image payload, its card shows a neutral placeholder, which keeps a genuinely image-free object visually distinct from artwork that failed to load. Artwork that was briefly unavailable is retried rather than left as a placeholder for the rest of the visit.

Selecting anywhere on an NFT card, including its artwork, opens that asset’s own page, which has its own address and can be linked, opened in a new tab, reloaded, and reached again with Back and Forward.

The ARC-20 market, token pages, holder rankings, and ARC-20 portfolio balances all report the data as unavailable and offer a retry. They never substitute sample rows and never show an unreadable balance as zero, so an outage stays distinguishable from a genuinely empty market or wallet.