btc · xmr

Bitcoin to Monero atomic swaps.

Trade BTC for XMR, or XMR for BTC, and let the two chains settle it between them. No bridge, no wrapped token, and nobody holding the coins while the trade goes through.

You may still read that these swaps only run one way, from Bitcoin into Monero. That was true in the early implementations. BasicSwap has settled them in both directions since 2023, so selling XMR for BTC works the same as buying.

why nobody can cheat
Bitcoin
You lock Bitcoin, they lock Monero
Neither of you can take the other's coins alone.
Monero
Which hands you their Monero
They cannot take your Bitcoin without publishing the one piece you need to take theirs.
if either of you stops, both get refunded
the hard part

The pair that was supposed to be impossible.

Bitcoin has a scripting language. Monero does not. Almost every atomic swap design uses script to hold coins under a condition, which is why Monero sat outside cross-chain trading for years while wrapped tokens and custodial swappers filled the gap.

Adaptor signatures take the script out of one side. The signature that redeems the Bitcoin is encrypted under half of the Monero spend key. Publishing that signature to claim the Bitcoin also publishes the half it was encrypted under, and whoever holds the other half can then open the Monero.

Monero needs no contract and no condition of its own. The key is simply incomplete until the Bitcoin moves. The Bitcoin side still uses ordinary script and timelocks, which the research calls semi-scriptless.

We shipped the first working version of this in 2020, and swaps have run in both directions since 2023.

How claiming the Bitcoin hands over the Monero key Two stacked panels. The upper panel is the Bitcoin, held in a two of two lock, showing the signature you pre-give the seller with one value missing. An arrow points down, labelled to show that the seller claiming the Bitcoin publishes their half of the Monero key. The lower panel is the Monero spend key, made of their newly published half plus the half you have held all along. BITCOIN · LOCKED 2 OF 2 Your signature, pre-given Locked to the seller's half of the Monero spend key. sig + ? THE SELLER CLAIMS IT, PUBLISHING THEIR HALF MONERO Monero spend key Their half, now public, plus the half you held all along. theirs + yours NO SCRIPT ON THE MONERO SIDE
four moves, in order

How the two chains settle it.

If either side stops partway, presigned refunds return the coins once the timelocks expire. Both traders sign those refunds before either of them locks a coin, so the way out never depends on the other one answering.

  1. 01

    The Monero seller locks their coins under a key split between the two of them.

    Neither half spends on its own.

  2. 02

    You lock the Bitcoin in a 2-of-2, and pre-sign the path that pays them.

    Your signature stays incomplete until their key half is applied to it.

  3. 03

    They complete that signature to take the Bitcoin.

    Bitcoin's rules put the finished signature on chain, and their half falls out of it.

  4. 04

    You read their half off the chain and add your own.

    That is the whole Monero spend key, and the coins are yours to move.

what the swap avoids

Four things that never enter the trade.

01

No wrapped coins

Both sides are the actual coins on their own chains. Nothing is minted, pegged, or held as an IOU against a reserve you cannot inspect, so there is no issuer whose solvency you have to take on trust.

02

No bridge

There is no intermediary chain sitting in the middle. Bridges are where the largest cross-chain thefts have happened, Ronin and Wormhole among them, and a trade that never touches one leaves no such contract to drain.

03

No custodian

Coins move between the two traders' own wallets. There is no account to open, no deposit to make, and no operator who could freeze the trade partway.

04

No protocol fee

BasicSwap takes nothing from either side, whether you posted the offer or took it. What leaves your wallet is the ordinary network fee on each chain.

every transaction in a swap

What each transaction does.

A completed swap uses four of these. The other four exist so that a swap which stalls still ends with both traders holding their own coins.

Transaction What it does When it can be mined
Chain A lockLocks the Bitcoin under the swap contract.Broadcast first, once both sides agree terms.
Chain B lockLocks the Monero so that only the two traders together can move it.After the Bitcoin lock confirms.
Chain A lock spendClaims the Bitcoin, and in doing so publishes the secret the other side needs.As soon as both locks are confirmed.
Chain B lock spendClaims the Monero using the completed key.Once the secret appears on the Bitcoin chain.
Chain A lock refundMoves the Bitcoin onto the refund path when a swap stalls.After the first timelock, 48 hours by default.
Chain A lock refund spendReturns the Bitcoin to the trader who locked it.Once the refund transaction confirms.
Chain A lock refund swipeLets the counterparty take the refund output if the owner never claims it.After the second timelock, counted from the refund transaction.
Chain B lock refundReturns the Monero to the trader who locked it.On the refund path, using the presigned key shares.

The maker picks the timelock when posting the offer. BasicSwap defaults to 48 hours and accepts anything from 4 to 96, so a trader who wants a longer window to recover from a stalled swap can set one.

the alternatives

How this compares.

Several tools will move you from Bitcoin into Monero. They differ mostly in who is holding the coins while it happens, and in who can stop the trade once it starts.

BasicSwap eigenwallet Haveno / RetoSwap Instant swappers
Who holds the coins mid-trade Nobody. The chains do. Nobody. The chains do. 2-of-3 multisig with an arbitrator The service does
Account needed No No No Usually not, but screening applies
Protocol fee None Maker spread only Maker and taker fees Built into the quoted rate
Directions BTC to XMR and back BTC to XMR. Selling XMR needs the maker daemon. XMR against fiat and crypto Both, quoted per request
Make and take offers in the app Both, in the same client Taking only. Making runs as a server daemon. Both Neither. You take their quote.
How offers reach you Gossiped across the peer network Fetched from each maker you discover Peer-to-peer offer book One quote from the operator
Counterparty history Kept for both sides, and can decide the next trade Your own past swaps with that maker, shown only Arbitrator resolves disputes None
Third party who can stop it None None Arbitrator on a disputed trade The operator, at any point
Pairs beyond BTC and XMR 14 coins None Monero-centred Hundreds
Run your own node Optional, or lightweight mode Optional Recommended, not required Not possible
How you get it Build from source Prebuilt binaries Prebuilt binaries, Android included A website. Nothing to install.

Haveno reaches places an atomic swap cannot, because it settles against cash and bank payments. The trade-off is an arbitrator holding one of the keys.

eigenwallet runs the same cryptography on the same pair. It is a capable Monero wallet, and it routes over Tor by default, where BasicSwap leaves that to you.

What it does not do is let you sell Monero. Its app takes offers rather than posting them. Going the other way means running a maker daemon on a server, quoting a single spread over a market feed.

BasicSwap puts both roles in one client, across 14 chains. Offers can carry a price floor and move in set sizes. And the client remembers how earlier swaps with a counterparty went, which can decide whether it accepts the next one.

in practice

Doing one yourself.

Four steps from a fresh install to coins in your own wallet.

step 1

Install BasicSwap Desktop

Desktop builds the protocol and the Bitcoin and Monero core wallets on your own machine. If running two nodes is more than you want to manage, lightweight mode reads what it needs from public Electrum servers and Monero nodes instead.

step 2

Fund the wallet you are selling from

BasicSwap generates a deposit address inside the coin wallet it manages for you. Send the Bitcoin or Monero you intend to trade to that address and wait for it to confirm.

step 3

Find an offer, or post your own

The order book arrives over encrypted peer-to-peer messaging. Filter it to the BTC and XMR pair, take an offer at a price that suits you, or post your own and wait for a taker.

step 4

Stay online until it settles

Each step hands data to the other side as it happens, so the client has to be running for the swap to progress. Nothing is at risk if you go offline, because the timelocks still return the coins, but the trade will not finish while it is closed.

Install BasicSwap Desktop
btc to xmr, asked and answered

Questions about this pair.

How long does a Bitcoin to Monero swap take?

Both chains have to confirm, so the wait follows their block times. A default install waits one confirmation on Bitcoin and three on Monero, and a swap makes several of those waits in sequence as each side locks its coins and then claims them. That usually puts the whole thing in the tens of minutes. A custodial service can look quicker because it moves the funds itself instead of waiting on two chains, which is the step BasicSwap does without.

Can I swap Monero back to Bitcoin?

Yes. Both directions run on the same protocol and have done since 2023. You post an offer to sell XMR for BTC the same way you would post one the other way round.

What happens if the other trader disappears?

The swap expires and the coins go back to their owners. That escape route is built at the start, before either side commits a coin, which is why it still works if the other trader vanishes for good or BasicSwap stops existing tomorrow.

Do I need to run a Bitcoin node and a Monero node?

On Desktop you can, and it is the strongest setup, because BasicSwap runs each coin's official core wallet and validates for itself. Lightweight mode is the alternative, leaning on public Electrum servers and Monero nodes for chain state, and mobile wallets that have integrated the protocol work that way too. Whichever you pick, the client has to stay online for the whole swap, because the two sides hand each other data at every step.

What are the fees for converting Bitcoin to Monero?

The protocol takes nothing, for either side of the trade. You pay the ordinary network fee on each chain, the same as any other transaction, and that is the whole cost.

Can you send Bitcoin to a Monero wallet?

No. They are separate chains with different address formats, and a Monero wallet has no way to receive or spend a Bitcoin transaction. Sending BTC to an XMR address will not deliver the funds, and depending on the address it may lose them. Converting is the only route, and that is what a swap does. Your Bitcoin goes to whoever wanted it, their Monero comes to you, and the two payments are bound together so neither can happen alone.

Do I need a Monero wallet before I swap?

BasicSwap creates one for you. Desktop runs Monero's own wallet software locally and generates the address the swap pays into, so there is nothing to set up beforehand and no address to paste. If you would rather receive into a wallet you already use, withdraw once the swap finishes.

Is a Bitcoin to Monero swap traceable?

The Bitcoin payment is as public as any other Bitcoin transaction, and the Monero payment carries Monero's usual privacy. What a swap avoids is the marker that links them. Adaptor signatures leave nothing on the Bitcoin chain saying a swap took place or which Monero transaction it pairs with, so the trade looks like ordinary spending rather than an obvious conversion into a privacy coin.

How is this different from an instant swap service?

An instant swap service takes your Bitcoin, holds it, and sends you Monero from its own reserves, which is quicker and means the service can freeze the funds, ask for identification, or fail while holding them. An atomic swap has no such middle step. The coins move directly between two traders and the chains enforce that both payments happen or neither does.

Last updated

Monero trades against more than Bitcoin.

The same adaptor signature protocol carries XMR against Litecoin, Particl, and the rest of the supported coins. The compatibility table on the Desktop page shows which method each pair uses.