Swap Bitcoin across the fork.
SwapSha trades SHA-256 Bitcoin (BTC) for BLAKE2b-chain Bitcoin (XBT), and back, without anyone holding your coins in between. It is open source and built on a fork of Boltz.
- Proof of work
- SHA-256
- Block header
- 80 bytes
- Proof of work
- BLAKE2b-256
- Block header
- 164 bytes
Split at block 961,640 on August 30, 2026.
What SwapSha does
The BLAKE2b chain forked from Bitcoin at block 961,640. Since then the two chains have run separately, and moving value from one to the other usually means handing coins to an exchange or a person and waiting. SwapSha uses two time-locked contracts instead, one on each chain, tied to the same secret.
Non-custodial
Your coins are locked in a hash time-locked contract (HTLC), never in a SwapSha wallet. You get a rescue file before you fund, so you can take a refund yourself if the provider goes offline.
Atomic
Both contracts are claimed with the same secret. Claiming your side reveals it, which lets the provider claim theirs. If the swap stalls, each side refunds after its timeout.
Replay-protected
Every signature SwapSha makes on the BLAKE2b chain uses SIGHASH_UNIFIED (0x21), which the SHA-256 chain rejects. Before locking anything, SwapSha checks whether your funding transaction could be replayed onto the other chain, and refuses the swap if it could.
Open source
SwapSha is a public fork of the Boltz backend and web app under AGPL-3.0. Every change is published, so anyone can read it, run it, or check it.
How a swap works
Here is BTC to XBT. The reverse direction runs the same steps with the chains swapped.
0x21. Claiming reveals the secret.If the provider disappears
Wait out your timeout and refund your BTC with the rescue file. You don't need the provider's help or permission.
If you never claim
The provider's lock expires first and refunds to the provider. Your lock expires later and refunds to you.
Coins from before the fork
Coins you held before August 30, 2026 exist on both chains, and spending them on one chain can move them on the other. SwapSha flags these and won't lock its side.
Roadmap
SwapSha ships in phases. Each one has to pass its exit tests before the next begins. Mainnet stays switched off in the code until Phase 5.
-
1On-chain swap engine
Testing on testnet4Chain swaps in both directions, with no Lightning. Every test passes on regtest:
- BTC to XBT and XBT to BTC
- Both refund paths, yours and the provider's
- Recovery after the engine is killed mid-swap
- Replay protection and the pre-fork coin checks
-
2Lightning swaps
PlannedSwaps with a Lightning leg on one or both sides, using hold invoices.
-
3StartOS package
PlannedSwapSha as a service for Start9 servers, running against your own nodes, with an operator dashboard and backups.
-
4Swaps in Crossbill
PlannedA Swaps tab in the Crossbill iPhone wallet. The app checks the contracts itself and can refund even when the provider is offline.
-
5Mainnet, small and slow
PlannedReal swaps with low limits on a self-hosted node. Limits rise only after an independent review of the contract and signing code.
-
6Public web app
After Phase 5A public swap page at swapsha.com. Work on this starts only after Phase 5 is complete.
Read the source
Three repositories, all public at github.com/SwapSha-com. Issues and pull requests are welcome.
SIGHASH_UNIFIED and 164-byte headers.
Fork of boltz-core.
swapsha-web-app
The swap interface. Not deployed yet.
Fork of boltz-web-app. AGPL-3.0.