1Inch Fusion+ swap between EVM <-> Bitcoin chain with Privacy
Here’s a cleaner, more casual version:
⸻
Atomic swaps are awesome because they’re trustless, but they have a privacy problem. Anyone watching the blockchain can link swaps by connecting the hash preimage key. Obscura Swap fixes this using zero-knowledge proofs.
The HTLC pre-image only gets revealed on Ethereum, while on the Bitcoin side, it just looks like a regular Taproot transaction. So, nobody can link the swap just by watching both blockchains. You still get the same trustless guarantees—it’s all handled by cryptography.
This project showcases atomic swap protocol between Bitcoin and Ethereum, based on Multichain Taprootized Atomic Swaps (arXiv:2402.16735) and inspired by 1inch’s fusion-resolver-example and distributed-lab’s taprootized-atomic-swaps.
On Ethereum side, Mostly extended the 1inch’s fusion-resolver-example Used the same Escrow contract factory and Resolver contract
On Bitcoin side, The escrow contract is implemented using Tapscript. Unlike a typical atomic swap, here the hash lock (H) isn’t based on a random pre-image—it’s actually a private key. To claim the contract, you have to combine (using a Schnorr tweak) this secret key with the receipt’s private key. To make sure the right secret key is being used, the contract creator also has to provide a zero-knowledge proof.
Basically, the proof shows that the same secret key used to generate the hash lock (H) is also the one used to derive the public key for claiming the tapscript, along with the user’s public key.
Prover side: Sp1 is used to generate the proof Since Sp1 is ZkVM proof statement is written in rust We generate the Sp1 Groth16 proof since we need privacy On demo to skip the proof generation time mock proof is used Actual proof can be generated by just toggling one cmd flag
Program Flow: Please refer this: https://github.com/MdTeach/MeshSwap#atomic-swap-between-bitcoin---ethereum

