How a Runes swap settles on Bitcoin
Written by the volunteers who run DogSwap. Last updated 2026-09-15. Every step below is what this site does, in the order it does it.
A $DOG swap here is one Bitcoin transaction. There is no deposit, no balance held for you, and no second chain. You read the transaction, you sign it in your own wallet, the Bitcoin network confirms it, and both sides of the trade move in the same block or not at all. This page walks the path from a quote to that block.
1. The quote, and why it lives 35 seconds
You type an amount and the venue answers with a price for that exact size: how much $DOG for your sats, or the reverse, with the swap fee and the effect of your size on the pool already inside the number. That quote is valid for 35 seconds, the venue's own window, and it is the only clock on the price. When it runs out the site fetches a fresh one rather than let you sign against a dead price. A second clock, also the venue's, starts later at the build and is described in step 2.
2. The build: an unsigned transaction
When you ask to review, the venue assembles a real transaction and hands it back unsigned, in a format called a PSBT (a partially signed Bitcoin transaction). A PSBT is a container that lets several parties sign one transaction each for their own inputs: your inputs are the sats or the $DOG you are spending; the makers' inputs are the other side. Nobody's signature is inside it yet. The venue allows about 30 seconds from this build to your payment, after which the build expires and nothing has moved.
3. The read, before any wallet opens
This is the step most swap sites skip. Before your wallet is asked for anything, the site decodes the bytes of that PSBT and shows you, in your units:
- What leaves your wallet: each unspent output (UTXO) being consumed, with its sats, named by the address it came from, or simply as from your wallet where your wallet uses one address for everything.
- Where it goes: the outputs to the makers, the change coming back to you, the OP_RETURN output that carries the runestone (the transfer instruction for the rune, 0 sats), and the miner fee, which is never an output but the difference between what goes in and what comes out.
- The build check: the quote's number against what the build actually takes from your wallet, side by side, so a build that drifted from its quote is visible before it is signed.
- The fee check: that no UTXO holding a rune or an inscription is being spent as the fee. This is the mistake that costs people their coins on careless tooling, and it is the check this site was built around.
A live example, read on 2026-09-07 for 0.0002 BTC of $DOG: two inputs of 21,164 and 4,278 sats left the wallet, beside a 330 sat carrier the makers put in holding the $DOG being sold. Out again: 20,330 sats to the makers, 3,951 back as change, 330 back carrying the $DOG you bought, and the runestone at 0 sats. Everything in was 25,772 and everything out was 24,611, so the miner fee was the 1,161 between them. The quote said 20,000 sats; the build took 21,161 from you including that fee. Those are the numbers you sign, and you see them first.
4. The signature, in your wallet only
Your wallet opens and shows the same transaction. You sign your inputs and nothing else: a PSBT cannot be altered by a signature, and your key never leaves the wallet. The site never sees a private key or a seed phrase, cannot sign on its own, and holds no funds at any point. The makers sign their inputs on their side. Once every input carries its signature the transaction is complete.
5. Broadcast, the mempool, and the fee rate
The venue submits the finished transaction to the Bitcoin network. It waits in the mempool, the queue of unconfirmed transactions, with the other transactions that want space in the next block. Miners fill blocks from the highest fee rate down, measured in sats per virtual byte (sat/vB). The fee in your build was chosen against the live rate at the top of the swap page, so a normal day means the next block or the one after; a fee spike means a longer wait, not a lost swap.
6. The block, about 10 minutes
Bitcoin produces a block every 10 minutes on average, and only on average: two can arrive a minute apart, or one can take half an hour. Your swap is confirmed when a block includes it. You can close the page; nothing is waiting on you. The pending card shows the transaction id, and any public block explorer shows the same one.
What "settled" means
Once the transaction is in a block, the runestone in it has been executed by every indexer that reads runes: the $DOG you bought is a UTXO at your ordinals address (bc1p), the sats the makers received are at theirs, and your change is back at your payment address (bc1q, which on UniSat and OKX is the same address). Both legs of the trade were in one transaction, so there is no state in which you paid and did not receive. Either the block holds the whole swap or the swap never happened.
What can go wrong, and what cannot
- The quote expires. The 35 seconds ran out while you were reading. Get a fresh price; the numbers barely change between builds.
- The build window closes. About 30 seconds passed between build and payment. Nothing moved. Build again.
- "Not enough UTXOs". Your payment address does not hold enough spendable sats, separate from the $DOG itself, to fund the transaction and its fee. Keep at least 10,000 spendable sats there.
- A slow block. The transaction is in the mempool with a fee that was competitive when built; it will confirm. Nothing is lost while it waits.
- What cannot happen: a partial fill, a swap that takes your sats and delivers nothing, or a swap that moves without your signature. The transaction is atomic, and it is unsigned until your wallet signs it.
Ready to see one for real: swap $DOG for Bitcoin on the front page. The review step above is not optional there; it is the only path to a signature. If you want the transaction itself opened up, and the checks that decide whether the sign button works at all, read what is a PSBT. And if you first want to know what the coin itself is, start with what is $DOG.
Questions
Why two addresses in one wallet?
Runes live on taproot outputs, so a wallet keeps them on a bc1p address. Xverse also keeps plain sats for fees on a separate bc1q address, so a fee payment can never accidentally spend a rune; UniSat and OKX serve both roles from the one taproot address instead. The review screen names both when your wallet has both.
Who are the makers?
The venue splits each trade across the market makers serving the DOG/BTC pair, inside the one transaction, and the review names each maker and its share before you sign. Today that is mostly DotSwap's own pool and DogSwap, a maker run by volunteers from the DOG community, and an independent maker can take a share too. The full account is on disclosures.
Can I speed up a slow confirmation?
Not from this site, and usually you do not need to: the fee was set against the live rate. If the network is unusually busy, the transaction waits in the mempool with its fee and confirms when the rate falls back to it.