From 1f21cb833ddc7e15a0077461810ace14f5667c21 Mon Sep 17 00:00:00 2001 From: Bitcoin Universe Admin Date: Wed, 23 Sep 2026 22:53:45 +0000 Subject: [PATCH 1/8] docs: Atomicals Studio, Atomicals markets and the /inscribe page - New page create/atomicals-studio: the seven tool families and their addresses, which wallet signs each tool, and the commit and reveal flow. - markets/atomicals: each market's address, protocol and asset type, every trading action, the asking-price floor, Atomical names on NFT-family rows, and the unknown-outcome recovery ("Check what happened"). Drops a stated fee percentage. - start/what-core-is: /inscribe is a page linking to Studio and Inscribe, never an automatic redirect. - troubleshooting/states: the unknown-outcome lock. - Sidebar, llms.txt and its generator list the new page; changelog entry. Co-Authored-By: Claude Opus 5.5 --- astro.config.mjs | 4 + public/llms.txt | 4 + scripts/build-assets.mjs | 4 + src/content/docs/create/atomicals-studio.mdx | 96 ++++++++++++++++++++ src/content/docs/markets/atomicals.mdx | 54 ++++++++++- src/content/docs/reference/changelog.mdx | 13 +++ src/content/docs/start/what-core-is.mdx | 7 +- src/content/docs/troubleshooting/states.mdx | 1 + 8 files changed, 178 insertions(+), 5 deletions(-) create mode 100644 src/content/docs/create/atomicals-studio.mdx diff --git a/astro.config.mjs b/astro.config.mjs index 7bc8aff..b670934 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -115,6 +115,10 @@ export default defineConfig({ { label: 'Task: manage assets from Portfolio', slug: 'portfolio/manage-assets' }, ], }, + { + label: 'Create', + items: [{ label: 'Atomicals Studio', slug: 'create/atomicals-studio' }], + }, { label: 'Markets', items: [ diff --git a/public/llms.txt b/public/llms.txt index 8994589..2a3cb1d 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -61,6 +61,10 @@ not production availability, and a parser existing is not wallet support. - [Marketplace v1 gates](https://bitcoinuniverseio.github.io/docs-core/markets/marketplace-v1/) - [Collection media](https://bitcoinuniverseio.github.io/docs-core/markets/collection-media/) +## Create + +- [Atomicals Studio](https://bitcoinuniverseio.github.io/docs-core/create/atomicals-studio/): create and move ARC-20 tokens, NFTs, Realms, Subrealms, Containers, and DMINT items. + ## Data provenance - [Where each number comes from](https://bitcoinuniverseio.github.io/docs-core/data/provenance/) diff --git a/scripts/build-assets.mjs b/scripts/build-assets.mjs index 045a1d9..0382b4e 100644 --- a/scripts/build-assets.mjs +++ b/scripts/build-assets.mjs @@ -134,6 +134,10 @@ it is implemented and switched off unless an operator enables it. - [Marketplace v1 gates](${SITE}/markets/marketplace-v1/) - [Collection media](${SITE}/markets/collection-media/) +## Create + +- [Atomicals Studio](${SITE}/create/atomicals-studio/): create and move ARC-20 tokens, NFTs, Realms, Subrealms, Containers, and DMINT items. + ## Data provenance - [Where each number comes from](${SITE}/data/provenance/) diff --git a/src/content/docs/create/atomicals-studio.mdx b/src/content/docs/create/atomicals-studio.mdx new file mode 100644 index 0000000..4f3683d --- /dev/null +++ b/src/content/docs/create/atomicals-studio.mdx @@ -0,0 +1,96 @@ +--- +title: Atomicals Studio +description: >- + Creating and moving Atomicals on bitcoinuniverse.io: the seven tool families, + the address of every tool, which wallet signs each one, and how a commit and + reveal run. +sidebar: + order: 1 +--- + +import Provenance from '../../../components/Provenance.astro'; + + + +Atomicals Studio is where you create and move Atomicals, on the main +application at +[`bitcoinuniverse.io/atomicals/create`](https://bitcoinuniverse.io/atomicals/create). +It runs on that site: your browser does not leave it, and nothing is signed +anywhere except in your own wallet. + +## What you can do + +Every tool has its own address, `/atomicals/create//`, so a +tool can be bookmarked, linked, and reopened. + +| Family | Actions | Address | +| --- | --- | --- | +| ARC-20 | Deploy, Mint, Transfer, Fixed supply | `/atomicals/create/arc20/deploy`, `mint`, `transfer`, `issue` | +| NFT | Mint, Transfer | `/atomicals/create/nft/mint`, `transfer` | +| Realm | Claim, Transfer | `/atomicals/create/realm/claim`, `transfer` | +| Subrealm | Claim, Pay, Transfer | `/atomicals/create/subrealm/claim`, `pay`, `transfer` | +| Container | Create, Configure, Seal | `/atomicals/create/container/create`, `configure`, `seal` | +| DMINT item | Mint, Transfer | `/atomicals/create/dmitem/mint`, `transfer` | +| Manage | Update, Event | `/atomicals/create/manage/update`, `event` | + +**Fixed supply** issues an ARC-20 token whose whole supply is created at once. +**Manage** updates an Atomical's state or records an event on it. + +A tool the server cannot run right now stays visible and says +**Unavailable**, with the reason. Nothing you press on an unavailable tool +creates a transaction. + +## Which wallet signs + +Studio never holds a key. Each step opens your wallet, and the wallet is the +final authorization. + +| Tools | Wallet | +| --- | --- | +| NFT, Realm, Subrealm, Container configure, Manage | [Wizz Wallet](/docs-core/wallets/connecting/) | +| ARC-20 deploy, mint, transfer | Any wallet Core supports | +| ARC-20 fixed supply, Container create and seal, DMINT item mint and transfer | A wallet that reports its network and account explicitly | + +Before anything is prepared, Studio checks that the wallet is on the network +the service runs on. If Wizz reports another network, Studio asks you to +switch it and prepares nothing. If the Wizz account is not the one you +connected, Studio asks you to reconnect. + +## How a creation runs + +Most Atomicals operations take two transactions: a **commit**, then a +**reveal** that spends it once the commit is confirmed. + +1. Open the tool and fill in the form. +2. Review what Studio prepared. Nothing has been signed yet. +3. Sign the commit in your wallet. Studio checks that the signed transaction + is the one it prepared before it is sent. +4. Wait for the commit to confirm. The tracker shows the stage it is in. +5. Sign the reveal in your wallet. +6. The tracker reports **complete** once the result is indexed. + +Operations you start are listed on the page, and stay listed after a reload. +Open one to see its stage or to continue it. The list, and what Studio needs +to continue an operation, are kept in that browser tab only, so keep the tab +open until the operation completes. + +A failed, cancelled, or expired operation says so. It is never shown as +complete. + +## Coming from `/inscribe` + +`bitcoinuniverse.io/inscribe` is an ordinary page, not a redirect. It links to +Atomicals Studio, and to the separate Inscribe application for other +protocols. Inscribe opens only when you follow that link. + +## Next + +- [Atomicals markets](/docs-core/markets/atomicals/), to trade what you created +- [Connecting a wallet](/docs-core/wallets/connecting/) +- [Transaction safety](/docs-core/wallets/transaction-safety/) diff --git a/src/content/docs/markets/atomicals.mdx b/src/content/docs/markets/atomicals.mdx index 2042dbc..bd0ae59 100644 --- a/src/content/docs/markets/atomicals.mdx +++ b/src/content/docs/markets/atomicals.mdx @@ -12,11 +12,11 @@ import Provenance from '../../../components/Provenance.astro'; Atomicals is the largest enabled family in Core: four of the nine `enabled` @@ -37,6 +37,53 @@ routes and durable state. A browse result does not by itself mean an asset is listed for sale. +## Where each market is + +| Market | Address | Protocol and asset type | +| --- | --- | --- | +| ARC-20 | `/trade/arc20` | `arc20`. The asset ID is the ticker | +| Atomicals NFTs | `/trade/atomicals/nfts` | `atomicals_nft`, type `nft` | +| Containers | `/trade/atomicals/containers` | `atomicals_nft`, type `container` | +| DMINT items | `/trade/atomicals/items` | `atomicals_nft`, type `dmitem` | +| Realms | `/trade/atomicals/realms` | `realms` | +| Subrealms | `/trade/atomicals/subrealms` | `subrealms` | + +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. + +## What you can do + +| Action | What happens | +| --- | --- | +| **List** | You set a price and sign in your wallet. The listing opens after the market's checks pass | +| **Update listing** | A new price, recorded as a new revision of the same listing | +| **Delist** | A signed message, not a transaction. The review dialog shows the exact commitment your wallet is asked to sign | +| **Buy** | The listing is reserved, the purchase is prepared, you sign it, it is broadcast, and it settles after confirmation | +| **Offers** | Create an offer, cancel your own, or accept one made on an asset you hold | +| **Recovery** | Find out what happened to a request whose answer never arrived. See below | + +Your asking price must cover the marketplace fee and the dust limit of the +payout. The market rejects a price that is too low, and the review screen shows +the fee and your net proceeds before you sign. + +## When a request times out + +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, whether the +earlier request applied. It never sends the action again. The lock clears once +the market confirms the request went through or that it never applied. + +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. + ## What every mutation rechecks Each mutation rechecks the exact Bitcoin output, the owner script, the spent @@ -65,7 +112,7 @@ An ARC-20 balance is held in complete colored-sat outputs. 1. Open the token from Portfolio or its ARC-20 market. 2. Select one **available lot**. 3. Enter the sale price. -4. Review the 1.5% seller service fee and the net proceeds. +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 @@ -108,6 +155,7 @@ distinguishable from a genuinely empty market or wallet. ## Next +- [Atomicals Studio](/docs-core/create/atomicals-studio/), to create and move Atomicals - [ARC-20 in the registry](/docs-core/protocols/detail/arc20/) - [Portfolio](/docs-core/portfolio/portfolio/) - [Task: list an asset](/docs-core/markets/list/) diff --git a/src/content/docs/reference/changelog.mdx b/src/content/docs/reference/changelog.mdx index c8ca499..7ec527a 100644 --- a/src/content/docs/reference/changelog.mdx +++ b/src/content/docs/reference/changelog.mdx @@ -23,6 +23,19 @@ from, reported by [`GET /health`](/docs-core/api/health/) and by the ## Documentation +### 2026-09-23 + +- **New:** [Atomicals Studio](/docs-core/create/atomicals-studio/), covering + every creation tool, its address, and which wallet signs it. +- **Updated:** [Atomicals](/docs-core/markets/atomicals/) now lists each + market's address, every trading action, the asking-price floor, and how to + recover a request that timed out. +- **Updated:** [What Core is](/docs-core/start/what-core-is/) describes the + `/inscribe` page, which links to Studio and to Inscribe instead of + redirecting. +- **Updated:** [Market and reader states](/docs-core/troubleshooting/states/) + adds the unknown-outcome lock. + ### 2026-09-01 Rebuilt as a documentation site rather than a folder of Markdown guides. diff --git a/src/content/docs/start/what-core-is.mdx b/src/content/docs/start/what-core-is.mdx index 9903488..1e2eb72 100644 --- a/src/content/docs/start/what-core-is.mdx +++ b/src/content/docs/start/what-core-is.mdx @@ -88,8 +88,11 @@ are **Wallet**, **Inscribe**, and **StampDEX**. Each protocol page on this site lists what the registry records for every surface, so a reader who cannot do something in Core can see whether another product can. -Inscribe is a hand-off rather than an embedded screen: opening Inscribe from -Core navigates to the Inscribe application rather than loading it inside Core. +Atomicals are created inside Core, in +[Atomicals Studio](/docs-core/create/atomicals-studio/). Other protocols are +inscribed in the separate Inscribe application. Core's `/inscribe` page links +to both, and Inscribe opens only when you follow its link: Core never +redirects you there on its own. ## Chains and networks diff --git a/src/content/docs/troubleshooting/states.mdx b/src/content/docs/troubleshooting/states.mdx index 876ef51..cd27355 100644 --- a/src/content/docs/troubleshooting/states.mdx +++ b/src/content/docs/troubleshooting/states.mdx @@ -32,6 +32,7 @@ import Provenance from '../../../components/Provenance.astro'; | **A column that is absent** | The source cannot answer that question at all | No | Not the same as a column of zeroes | | **A disabled control with a reason** | The protocol supports the action; a live gate disagrees | Yes, refreshing rechecks that exact route | An earlier ready result is never reused | | **No control at all** | The protocol does not support the action | No | The [support matrix](/docs-core/protocols/support-matrix/) gives the reason | +| **Earlier request outcome unknown** | A request timed out and may have applied. Other actions on that asset are locked | No. Select **Check what happened** instead | Checking asks the market and never repeats the action. See [Atomicals](/docs-core/markets/atomicals/#when-a-request-times-out) | ## The distinction that matters most From 8c1bc51191e8a41aacda611e4924ce00adc25b59 Mon Sep 17 00:00:00 2001 From: Bitcoin Universe Admin Date: Thu, 24 Sep 2026 02:56:25 +0000 Subject: [PATCH 2/8] docs: Atomicals per-unit prices, two-sided fee, recovery and reveal window - Atomicals markets: Marketplace v1 prices are per unit and the UI shows Unit price and Total price (Core 3244cf1fb, 8a6ad4acf); the fee is worked out on the lot total and charged to both sides; the price_below_minimum and insufficient_funding refusals (index-atomicals af487035, 8b5cd360; Core 3fd7bb5eb, ba5ff9cfc) - Timeout recovery reuses the original request key; a signed finalize the market never ran is completed once (Core 84091c1f8, 97bff8488, 2e9e7c56a) - A possibly-sent purchase is never reported as not applied, and a listing is not re-offered while its broadcast purchase is pending (index-atomicals b39ae03b, cbc59abe, 02d7dcd6) - Legacy ARC-20 lot spent elsewhere closes instead of returning to the book (Core eebd10ea8) - Atomicals Studio: the 3-block Realm/Subrealm and 100-block NFT reveal window and REVEAL_WINDOW_CLOSED (Inscribe 3e4fb4a1) Co-Authored-By: Claude Opus 5.5 --- src/content/docs/create/atomicals-studio.mdx | 12 ++++- src/content/docs/markets/atomicals.mdx | 49 +++++++++++++++++--- src/content/docs/markets/marketplace-v1.mdx | 8 +++- src/content/docs/reference/changelog.mdx | 12 +++++ src/content/docs/troubleshooting/states.mdx | 2 +- 5 files changed, 72 insertions(+), 11 deletions(-) diff --git a/src/content/docs/create/atomicals-studio.mdx b/src/content/docs/create/atomicals-studio.mdx index 4f3683d..5543133 100644 --- a/src/content/docs/create/atomicals-studio.mdx +++ b/src/content/docs/create/atomicals-studio.mdx @@ -72,7 +72,8 @@ Most Atomicals operations take two transactions: a **commit**, then a 3. Sign the commit in your wallet. Studio checks that the signed transaction is the one it prepared before it is sent. 4. Wait for the commit to confirm. The tracker shows the stage it is in. -5. Sign the reveal in your wallet. +5. Sign the reveal in your wallet as soon as the commit confirms. See + [the reveal window](#the-reveal-window). 6. The tracker reports **complete** once the result is indexed. Operations you start are listed on the page, and stay listed after a reload. @@ -83,6 +84,15 @@ open until the operation completes. A failed, cancelled, or expired operation says so. It is never shown as complete. +## The reveal window + +The Atomicals index creates a Realm or Subrealm only when its reveal is mined +within **3 blocks** of the commit, and an NFT within **100 blocks**. A later +reveal would confirm and create nothing. Once the window has closed, the server +refuses the reveal (`REVEAL_WINDOW_CLOSED`) and the operation expires, so +Studio no longer offers it. For a Realm or Subrealm claim, sign the reveal +promptly after the commit confirms. + ## Coming from `/inscribe` `bitcoinuniverse.io/inscribe` is an ordinary page, not a redirect. It links to diff --git a/src/content/docs/markets/atomicals.mdx b/src/content/docs/markets/atomicals.mdx index bd0ae59..8d081de 100644 --- a/src/content/docs/markets/atomicals.mdx +++ b/src/content/docs/markets/atomicals.mdx @@ -58,16 +58,31 @@ NFTs, and listings created before names were recorded, show the Atomical ID. | Action | What happens | | --- | --- | -| **List** | You set a price and sign in your wallet. The listing opens after the market's checks pass | +| **List** | You set a price per unit and sign in your wallet. The listing opens after the market's checks pass | | **Update listing** | A new price, recorded as a new revision of the same listing | | **Delist** | A signed message, not a transaction. The review dialog shows the exact commitment your wallet is asked to sign | | **Buy** | The listing is reserved, the purchase is prepared, you sign it, it is broadcast, and it settles after confirmation | | **Offers** | Create an offer, cancel your own, or accept one made on an asset you hold | | **Recovery** | Find out what happened to a request whose answer never arrived. See below | -Your asking price must cover the marketplace fee and the dust limit of the -payout. The market rejects a price that is too low, and the review screen shows -the fee and your net proceeds before you sign. +## Prices and fees + +A price is always **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. + +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. ## When a request times out @@ -75,9 +90,20 @@ 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, whether the -earlier request applied. It never sends the action again. The lock clears once -the market confirms the request went through or that it never applied. +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 @@ -105,6 +131,11 @@ 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. + ## Listing an ARC-20 lot An ARC-20 balance is held in complete colored-sat outputs. @@ -124,6 +155,10 @@ 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. + ## NFT artwork Atomicals NFT cards show authoritative inline artwork when the unified index diff --git a/src/content/docs/markets/marketplace-v1.mdx b/src/content/docs/markets/marketplace-v1.mdx index 923d005..47cfa37 100644 --- a/src/content/docs/markets/marketplace-v1.mdx +++ b/src/content/docs/markets/marketplace-v1.mdx @@ -137,9 +137,13 @@ separate and keep their own entered prices. ## Before signing +Marketplace v1 prices are per unit, or per item for Ordinals. A listing's total +is its unit price times its quantity, and the review shows the **Unit price** +and the **Total price**. + 1. Confirm the wallet network and connected account. -2. Review the protocol, asset identity, quantity, price, fees, inputs, and - outputs. +2. Review the protocol, asset identity, quantity, unit price, total price, + fees, inputs, and outputs. 3. Treat every wallet prompt as the final authorization boundary. 4. Do not continue when Core reports stale, incomplete, conflicting, or unavailable authority data. diff --git a/src/content/docs/reference/changelog.mdx b/src/content/docs/reference/changelog.mdx index 7ec527a..e8d63ad 100644 --- a/src/content/docs/reference/changelog.mdx +++ b/src/content/docs/reference/changelog.mdx @@ -23,6 +23,18 @@ from, reported by [`GET /health`](/docs-core/api/health/) and by the ## Documentation +### 2026-09-24 + +- **Updated:** [Atomicals](/docs-core/markets/atomicals/) explains that prices + are per unit, that the fee is charged to both sides, the price and funding + refusals, how a timed-out final step is completed once, and why a legacy + ARC-20 lot spent elsewhere closes. +- **Updated:** [Atomicals Studio](/docs-core/create/atomicals-studio/) adds the + reveal window: 3 blocks for a Realm or Subrealm, 100 for an NFT. +- **Updated:** [Marketplace v1 gates](/docs-core/markets/marketplace-v1/) and + [Market and reader states](/docs-core/troubleshooting/states/) say that + prices are per unit and that a check never applies an action twice. + ### 2026-09-23 - **New:** [Atomicals Studio](/docs-core/create/atomicals-studio/), covering diff --git a/src/content/docs/troubleshooting/states.mdx b/src/content/docs/troubleshooting/states.mdx index cd27355..a68607f 100644 --- a/src/content/docs/troubleshooting/states.mdx +++ b/src/content/docs/troubleshooting/states.mdx @@ -32,7 +32,7 @@ import Provenance from '../../../components/Provenance.astro'; | **A column that is absent** | The source cannot answer that question at all | No | Not the same as a column of zeroes | | **A disabled control with a reason** | The protocol supports the action; a live gate disagrees | Yes, refreshing rechecks that exact route | An earlier ready result is never reused | | **No control at all** | The protocol does not support the action | No | The [support matrix](/docs-core/protocols/support-matrix/) gives the reason | -| **Earlier request outcome unknown** | A request timed out and may have applied. Other actions on that asset are locked | No. Select **Check what happened** instead | Checking asks the market and never repeats the action. See [Atomicals](/docs-core/markets/atomicals/#when-a-request-times-out) | +| **Earlier request outcome unknown** | A request timed out and may have applied. Other actions on that asset are locked | No. Select **Check what happened** instead | Checking asks the market under the original request key, so the action never applies twice. See [Atomicals](/docs-core/markets/atomicals/#when-a-request-times-out) | ## The distinction that matters most From 4c3c3f42ad000c8104d65a3a290e8ac0a62ede13 Mon Sep 17 00:00:00 2001 From: Bitcoin Universe Admin Date: Thu, 24 Sep 2026 04:08:13 +0000 Subject: [PATCH 3/8] docs: state the live Atomicals marketplace fee, minimum and settlement depth Read from the production authority configuration on 2026-09-24: 100 bps, 500-sat minimum per side, 546-sat dust, 6 confirmations. Co-Authored-By: Claude Opus 5.5 --- src/content/docs/markets/atomicals.mdx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/content/docs/markets/atomicals.mdx b/src/content/docs/markets/atomicals.mdx index 8d081de..3c010ac 100644 --- a/src/content/docs/markets/atomicals.mdx +++ b/src/content/docs/markets/atomicals.mdx @@ -78,6 +78,11 @@ 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 From bcb6854909bf57ecb15b2d3b66ba3b4718dfa52e Mon Sep 17 00:00:00 2001 From: Bitcoin Universe Admin Date: Thu, 24 Sep 2026 09:40:09 +0000 Subject: [PATCH 4/8] docs: name the Atomicals refusals a retry cannot fix Co-Authored-By: Claude Opus 5.5 --- src/content/docs/markets/atomicals.mdx | 13 +++++++++++++ src/content/docs/reference/changelog.mdx | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/src/content/docs/markets/atomicals.mdx b/src/content/docs/markets/atomicals.mdx index 3c010ac..f5aa63e 100644 --- a/src/content/docs/markets/atomicals.mdx +++ b/src/content/docs/markets/atomicals.mdx @@ -127,6 +127,19 @@ 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 another pending purchase.** + Finish or cancel that purchase first. + +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. diff --git a/src/content/docs/reference/changelog.mdx b/src/content/docs/reference/changelog.mdx index e8d63ad..d98e2b1 100644 --- a/src/content/docs/reference/changelog.mdx +++ b/src/content/docs/reference/changelog.mdx @@ -29,6 +29,10 @@ from, reported by [`GET /health`](/docs-core/api/health/) and by the are per unit, that the fee is charged to both sides, the price and funding refusals, how a timed-out final step is completed once, and why a legacy ARC-20 lot spent elsewhere closes. +- **Updated:** [Atomicals](/docs-core/markets/atomicals/) names the refusals + a retry cannot fix (a wallet that does not hold the asset, a listed asset that + has moved, funding committed elsewhere) and says a listing leaves the book as + soon as its output is spent. - **Updated:** [Atomicals Studio](/docs-core/create/atomicals-studio/) adds the reveal window: 3 blocks for a Realm or Subrealm, 100 for an NFT. - **Updated:** [Marketplace v1 gates](/docs-core/markets/marketplace-v1/) and From 2023a694735f14194220619a8bbf8e1c218f3234 Mon Sep 17 00:00:00 2001 From: Bitcoin Universe Admin Date: Thu, 24 Sep 2026 09:49:46 +0000 Subject: [PATCH 5/8] docs: Atomicals Studio Separate, early reveal and funding refusals Co-Authored-By: Claude Opus 5.5 --- src/content/docs/create/atomicals-studio.mdx | 23 +++++++++++++++++--- src/content/docs/reference/changelog.mdx | 4 ++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/content/docs/create/atomicals-studio.mdx b/src/content/docs/create/atomicals-studio.mdx index 5543133..6177f61 100644 --- a/src/content/docs/create/atomicals-studio.mdx +++ b/src/content/docs/create/atomicals-studio.mdx @@ -37,11 +37,24 @@ tool can be bookmarked, linked, and reopened. | Subrealm | Claim, Pay, Transfer | `/atomicals/create/subrealm/claim`, `pay`, `transfer` | | Container | Create, Configure, Seal | `/atomicals/create/container/create`, `configure`, `seal` | | DMINT item | Mint, Transfer | `/atomicals/create/dmitem/mint`, `transfer` | -| Manage | Update, Event | `/atomicals/create/manage/update`, `event` | +| Manage | Update, Event, Separate | `/atomicals/create/manage/update`, `event`, `separate` | **Fixed supply** issues an ARC-20 token whose whole supply is created at once. **Manage** updates an Atomical's state or records an event on it. +**Separate** gives each NFT that shares one Bitcoin output its own output at +your address. A direct Subrealm claim needs it: the claim spends the parent +Realm, and the Atomicals index then keeps the parent and the new Subrealm on +the same output. While they share it, Studio refuses to update, transfer or +claim with either one and links to Separate with the Atomical filled in. +Separate orders the outputs the way the index does, lists which NFT goes to +which output before you sign, and refuses an output that also holds an ARC-20 +balance, which it could not carry over safely. + +If your wallet has no confirmed plain Bitcoin output large enough for an +operation, Studio says so and names the amount needed. It is not reported as +a service outage. + A tool the server cannot run right now stays visible and says **Unavailable**, with the reason. Nothing you press on an unavailable tool creates a transaction. @@ -90,8 +103,12 @@ The Atomicals index creates a Realm or Subrealm only when its reveal is mined within **3 blocks** of the commit, and an NFT within **100 blocks**. A later reveal would confirm and create nothing. Once the window has closed, the server refuses the reveal (`REVEAL_WINDOW_CLOSED`) and the operation expires, so -Studio no longer offers it. For a Realm or Subrealm claim, sign the reveal -promptly after the commit confirms. +Studio no longer offers it. + +For a Realm or direct Subrealm claim, Studio offers the reveal as soon as the +commit is in the mempool, so both can confirm in the same block. Sign it +then; a network that mines several blocks in quick succession can close a +3-block window in minutes. ## Coming from `/inscribe` diff --git a/src/content/docs/reference/changelog.mdx b/src/content/docs/reference/changelog.mdx index d98e2b1..be36c11 100644 --- a/src/content/docs/reference/changelog.mdx +++ b/src/content/docs/reference/changelog.mdx @@ -35,6 +35,10 @@ from, reported by [`GET /health`](/docs-core/api/health/) and by the soon as its output is spent. - **Updated:** [Atomicals Studio](/docs-core/create/atomicals-studio/) adds the reveal window: 3 blocks for a Realm or Subrealm, 100 for an NFT. +- **Updated:** [Atomicals Studio](/docs-core/create/atomicals-studio/) adds + Manage > Separate for NFTs that share one output (as a direct Subrealm claim + leaves the parent and child), the early reveal for Realm and direct Subrealm + claims, and how a wallet short of funding is reported. - **Updated:** [Marketplace v1 gates](/docs-core/markets/marketplace-v1/) and [Market and reader states](/docs-core/troubleshooting/states/) say that prices are per unit and that a check never applies an action twice. From cd97e43e2cb877bc0a968b2677e55aca57bfd48d Mon Sep 17 00:00:00 2001 From: Bitcoin Universe Admin Date: Thu, 24 Sep 2026 10:22:33 +0000 Subject: [PATCH 6/8] docs: open offers can hold Atomicals funding too Co-Authored-By: Claude Opus 5.5 --- src/content/docs/markets/atomicals.mdx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/content/docs/markets/atomicals.mdx b/src/content/docs/markets/atomicals.mdx index f5aa63e..61629c7 100644 --- a/src/content/docs/markets/atomicals.mdx +++ b/src/content/docs/markets/atomicals.mdx @@ -133,8 +133,9 @@ A refusal names its cause when retrying cannot help: 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 another pending purchase.** - Finish or cancel that purchase first. +- **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 From a73003628cfdfa7859941da2fd55b4714d05c160 Mon Sep 17 00:00:00 2001 From: Bitcoin Universe Admin Date: Thu, 24 Sep 2026 15:47:17 +0000 Subject: [PATCH 7/8] docs(atomicals): paid DMINT rules are shown before signing Co-Authored-By: Claude Opus 5.5 --- src/content/docs/create/atomicals-studio.mdx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/content/docs/create/atomicals-studio.mdx b/src/content/docs/create/atomicals-studio.mdx index 6177f61..5939dee 100644 --- a/src/content/docs/create/atomicals-studio.mdx +++ b/src/content/docs/create/atomicals-studio.mdx @@ -55,6 +55,13 @@ If your wallet has no confirmed plain Bitcoin output large enough for an operation, Studio says so and names the amount needed. It is not reported as a service outage. +**DMINT item** mints follow the container's rules. When the rule that +matches the item asks for a payment, Studio reads it from the index first and +shows every amount and payee before anything is signed. The button then reads +**Authorize mint and payment**, and your wallet signs exactly that payment +with the mint. If the container owner changes the rules before you sign, the +mint is refused with that reason and nothing is paid. + A tool the server cannot run right now stays visible and says **Unavailable**, with the reason. Nothing you press on an unavailable tool creates a transaction. From 0f64ca8fbeaca46397fcd5a83152c9cd7c638b2c Mon Sep 17 00:00:00 2001 From: Bitcoin Universe Admin Date: Thu, 24 Sep 2026 23:26:14 +0000 Subject: [PATCH 8/8] docs(atomicals): Studio operations survive a closed tab; finished state reads Done Co-Authored-By: Claude Opus 5.5 --- src/content/docs/create/atomicals-studio.mdx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/content/docs/create/atomicals-studio.mdx b/src/content/docs/create/atomicals-studio.mdx index 5939dee..a46e693 100644 --- a/src/content/docs/create/atomicals-studio.mdx +++ b/src/content/docs/create/atomicals-studio.mdx @@ -94,12 +94,13 @@ Most Atomicals operations take two transactions: a **commit**, then a 4. Wait for the commit to confirm. The tracker shows the stage it is in. 5. Sign the reveal in your wallet as soon as the commit confirms. See [the reveal window](#the-reveal-window). -6. The tracker reports **complete** once the result is indexed. +6. The tracker shows **Done** once the result is indexed. Operations you start are listed on the page, and stay listed after a reload. Open one to see its stage or to continue it. The list, and what Studio needs -to continue an operation, are kept in that browser tab only, so keep the tab -open until the operation completes. +to continue an operation, are kept in this browser, so you can close the tab +and come back later in the same browser to finish, for example to pay for a +Subrealm claim. Another browser or device cannot continue it. A failed, cancelled, or expired operation says so. It is never shown as complete.