Three primitives.
One open protocol.
BasicSwap is a decentralized coordination layer for atomic swaps. It holds no funds and does not process, initiate, or execute swaps on your behalf. It carries the encrypted messages traders use to find each other and agree on terms; settlement happens entirely on the blockchains of the coins being traded.
In that sense it is a SWIFT for cross-chain atomic swaps, except there is no company or operator anyone can compel, censor, or switch off.
What BasicSwap is, and what it is not ↓A decentralized messaging protocol that facilitates atomic swaps.
- An end-to-end encrypted mesh that gossips offers, bids, and lock signatures between peers.
- A set of open atomic swap protocols (HTLC, OtVES, SwapLock) executed on each coin's own chain.
- Open source under MIT. Anyone can read, audit, fork, or extend it.
Not an exchange. Not a custodian. Not a server.
- BasicSwap does not initiate, process, or execute swaps. Each chain does that itself.
- BasicSwap does not hold funds, issue wallets, or generate keys. Core wallets do that.
- BasicSwap does not run servers or central matching. No operator can pause it.
Adaptor signatures.
Atomicity without a Monero script.
The Bitcoin side of a BTC↔XMR swap has script. The Monero side does not. That asymmetry is what blocked cross-chain atomic swaps for years. One-Time Verifiably Encrypted Signatures (OtVES) fix it.
The signature that redeems the Bitcoin is encrypted under one party's half of the Monero spend key. Broadcasting that spend reveals the half on-chain; combined with the other half, it unlocks the Monero. On Monero, atomicity is pure cryptography. The Bitcoin side still uses ordinary script and timelocks, which the paper calls semi-scriptless.
BasicSwap was the first DEX to implement OtVES for XMR atomic swaps, working since 2020.
Read the BTC↔XMR atomic-swap paper ↗- key exchange
- ECDH (secp256k1)
- encryption
- AES-256-CBC
- auth
- HMAC-SHA256
- storage
- 1-hour buckets, 31-day TTL
- spam resistance
- PoW · on-chain fees
SMSG.
An encrypted message mesh.
SMSG is the secure-messaging layer inside Particl's P2P network. It carries the BasicSwap order book and every step of the swap conversation. End-to-end encrypted, peer-to-peer, with no central matcher to subpoena.
The mesh is many small nodes gossiping. Any node can carry any message. No node is privileged. A bid disappears from the open layer once it's delivered: messages live in time-bucketed storage that ages out after 31 days.
Lightweight node fetching.
No chain to install.
Phones don't run full nodes. So BasicSwap Mobile reads chain state from public Electrum nodes directly. No daemon to install, no 50 GB sync, no explorer dependency. The thin client speaks the same protocol the heavy client does.
For Monero, the same pattern works against public RPC endpoints with view-only proofs. The phone never syncs a chain. The swap's atomicity holds either way; the trade-off is that light mode trusts the node's view of the chain, where a full coin core verifies it first-hand.
// 1. Subscribe to the chain tip
tip = electrum.blockchain.headers.subscribe()
// 2. Read history + transactions on demand
hist = electrum.blockchain.scripthash.get_history(scripthash)
tx = electrum.blockchain.transaction.get(txid)
// 3. Track confirmation depth against the tip
confs = tip.height - hist.height + 1
// 4. Light mode trusts the server's view.
// Run a full coin core to verify first-party.
Eight messages.
Then settlement, on chain.
A BasicSwap OtVES swap is a sequence of eight signed messages on the SMSG mesh, plus on-chain transactions. The sequence below traces one XMR ↔ BTC swap, and shows who sends what.
OfferMessage
Bob → mesh
Bob gossips an OfferMessage onto SMSG: "I will trade 1.25 XMR for 0.052 BTC". The whole mesh now sees it.
XmrBidMessage
Alice → mesh
Alice spots the offer on her client and broadcasts a bid for it. SMSG carries it to Bob without revealing IP or identity.
XmrBidAcceptMessage
Bob → mesh
Bob accepts the bid. Both sides now have the cryptographic material needed to begin the swap.
XmrBidLockTxSigsMessage
Alice → mesh
Alice produces adaptor signatures and presigned refund branches. She sends them through SMSG to Bob.
XmrSplitTxMessage
Bob → mesh
Bob shares the Monero split transaction. The XMR funds are locked on chain, but only Alice can spend them with the secret she will reveal.
XmrBidLockSpendTxMessage
Alice → mesh
Alice publishes the BTC spend transaction. The act of publishing reveals the secret embedded in her adaptor signature.
XmrBidLockReleaseMessage
Bob → mesh
Bob extracts the revealed secret from the BTC chain and uses it to claim the XMR Alice locked. The swap atomically completes.
on-chain settlement
Alice ↔ Bob
Either both transactions confirm or, if anyone walks away, the presigned refund branches return the funds. No coordinator was ever in the loop.
Ready to use BasicSwap? Pick a surface.
Run the full protocol
Self-host a node and your own coin core wallets. Make markets, manage offers, and settle across all 14 chains, with nothing held back.
Explore BasicSwap Desktop →Swap from anywhere
The consumer surface, in a browser or mobile wallet. No node to run, no chain to sync, the same atomic guarantees underneath.
Explore BasicSwap Mobile →