How a BTC to XMR atomic swap works, and what happens when it does not

What "atomic" guarantees

An atomic swap is a trade between two blockchains with no custodian in between: either both transfers complete or both are undone. No account, no KYC, no email. The maker on btc-xmr.com is software (an ASB) that quotes a price, locks Monero and reveals a key; it cannot take your Bitcoin, because that Bitcoin sits behind a script it does not control alone.

This page describes the protocol as implemented by eigenwallet (formerly UnstoppableSwap); the block counts and timeouts are the mainnet settings of the maker build running here, read on 23/09/2026. To trade, the [Swap](/) page has the live quote and [How it works](/how) walks through the screens.

The two locks

Step one is the Bitcoin lock: the swap amount goes to a 2-of-2 output, a script that needs both your signature and the maker's to spend. Before it is broadcast, both sides have already exchanged the signatures for the cancel and refund transactions that unwind it. The maker waits for 1 Bitcoin confirmation.

In the eigenwallet desktop app the taker runs on your machine and pays the lock itself. In the browser version the taker runs on our server: your Unisat or OKX wallet sends the BTC to a deposit address of that taker's wallet, which then builds the lock. Between deposit and lock, and when a refund comes back, the BTC is briefly in a wallet on our server before it is returned to the address you connected with. If you would rather not extend that trust, use the [desktop app](/desktop-app).

Step two is the Monero lock. The maker sends the agreed XMR to an address whose spend key is the sum of two halves, one generated by the maker and one by you; you hold the view key, so your taker can watch the lock. It waits for 10 Monero confirmations, about 20 minutes at 2 minutes per block. That plus one Bitcoin confirmation is why a normal swap takes 30 to 60 minutes.

The reveal

Once the Monero lock has confirmed, your taker hands the maker an adaptor signature: a signature on the Bitcoin redeem transaction that only becomes valid once the maker completes it with its own Monero key half. When the maker spends the 2-of-2 output to collect its BTC, the completed signature lands on the Bitcoin chain; your taker recovers the maker's key half from it, adds its own, and sweeps the Monero to your address.

That is the atomic part: the maker cannot receive your Bitcoin without publishing the exact secret you need to receive its Monero. It never learns your key half unless you take the refund.

Timelocks and refunds

Cancel timelock: 24 Bitcoin blocks after the lock confirms, roughly 4 hours. After that, either side can broadcast the pre-signed cancel transaction, which moves the BTC to a second output; from there you broadcast the refund and get your BTC back, less mining fees. The refund signature is itself an adaptor signature, so publishing it reveals your Monero key half to the maker, which then recovers its XMR.

Punish timelock: 144 blocks after the cancel confirms, roughly 24 hours. If the refund has not been claimed by then, the maker can spend the cancelled output to itself. Even then it cannot spend the XMR alone; the taker software asks it for its key half (a cooperative redeem) and the reference implementation grants it, but that is the maker's choice, not a protocol guarantee. Keep your taker running, or come back within a day.

Early refund: if the maker cannot lock its Monero within about 10 minutes of trying, or your Bitcoin lock has not confirmed within 2 hours, it signs an early refund of your Bitcoin straight away. The worst case for an attentive taker is a wait, then your BTC back less network fees.

Where the code lives

The protocol was described in a 2020 paper (Gugger, "Bitcoin-Monero Cross-chain Atomic Swap") and first implemented by the COMIT team as xmr-btc-swap; the code base is maintained today at github.com/eigenwallet/core, and both our maker and the taker on our server are builds of it. The desktop app reaches the same maker if you add our rendezvous node, /dns4/p2p.btc-xmr.com/tcp/8890/p2p/12D3KooWBPe3sx6dDqE1RSzeBpH1ayghtBp4cgyymti5rPy79xWz. A Tor mirror of this site is at btcxmrj6vte7yjuefnju3nowry5o76po6mtsnnk5jkoj3jmyp2mt2oqd.onion.

Questions

Can the maker steal my Bitcoin?

No. Your BTC sits in a 2-of-2 output that needs both signatures. The only ways out are the maker redeeming it, which reveals the key you need for the Monero, or the cancel and refund transactions signed before the lock was broadcast.

How long until I get my BTC back if the maker goes offline?

If the maker never locks Monero, it issues an early refund within minutes. Otherwise the cancel timelock is 24 blocks (about 4 hours) after your lock confirms, and the refund stays claimable for 144 more blocks (about 24 hours).

What if I close my browser mid-swap?

In the browser version the taker runs on our server and keeps going without you: it sweeps the XMR to your address, or refunds the BTC to the wallet you connected with. In the desktop app the taker is on your machine: keep it running, or reopen it within a day.

Is an atomic swap anonymous?

No account, KYC or email, but the Bitcoin transactions are public like any other. You get Monero without a custodian, not a clean history for the Bitcoin you spend.

Swap BTC for XMR now · How the atomic swap works

More: Swap BTC to XMR without KYC and without an accou · Monero without KYC or an account: hold BTC, atom · What a BTC to XMR swap costs here · Swapping BTC to XMR over Tor · Swap with btc-xmr.com from the eigenwallet deskt · No makers found: fixing an empty maker list in t · eigenwallet vs UnstoppableSwap: same network, ne