[comit-dev] XMR<>BTC Atomic Swap - PoC to Prototype - Closure

Franck Royer franck at coblox.tech
Tue Jan 12 04:17:30 UTC 2021

Hi comit-dev,

We are happy to report that we have achieved our goals of the XMR<>BTC
Atomic - PoC to Prototype project. 🎉🎉🎉

The kick-off can be found at [1] and latest update at [2]

First, let's review our goals and elaborate on the achievements:

> ## Objectives
> ## Mainnet
> - Ensure that the software is usable on mainnet without fund loss.

We have indeed done a number of mainnet swaps. However, recovery of
funds was more difficult than anticipated so we downgraded this goal
to testnet.
We have documented the results in [3]. We are aware of some scenarios
where the protocol would allow the swap to be successful but due to
some limitations in our software, the swap is aborted and refunded
We have also learned about some limitations in our network stack that
we will resolve in the future.

> - Learn technical restrictions of the software and protocol.

We have learned a number of limitations in our current software that
we intend to tackle for the next project. For example, we intend to
revamp the network stack.

We also need to have more fine grain states to ensure that Bob can
restart and resume a swap in a specific scenario documented in [3].

Finally, we learned that automated recovery can be difficult (i.e.,
broadcasting cancel/refund transactions when timelock are hit) simply
because catering to all possible error scenarios can lead to a complex
state machine.
For now, we decide that we will privilege manual recovery moving
forward and only incrementally implement automated recovery once the
software is more mature.

We have also learned a lot about the Monero tooling and what can be
done with `monero-wallet-rpc` and `monero-wallet-cli`. This gives us a
better idea on how the architecture and UX of a MVP would look like.

> - Understand whether and what manual recovery tools would be needed by the user for a MVP.

This point has been touched above. One of the challenges we encounter
is that it is not possible to import a private key in an existing
monero wallet. So instead, the swap CLI needs to create a new monero
wallet to import a private key. This is how we refund or redeem the
This creates some challenges around the UX that we are keen to tackle.

> ## UX
> - Define a product that would be used, validating the viability of said product using GUI mocks first.

We have decided to go on with a Single Market Maker product. There was
good feedback from the community and users we interviewed. It is also
a product that does not need to solve some hard problems such as
decentralised orderbook and peer discovery.
Moreover, a single market maker product can act as a seed for a more
decentralised approach.

> - Better understand the habits of users in terms of wallets to make assumptions that avoid entry barriers.

This part was very interesting. The biggest learning here is that
there does not seem to be any specific Bitcoin wallet used by the
Monero community. Another learning was that users expect the swap CLI
to have a hot wallet to transfer funds to for a swap.
These learnings make our decision process easier and will influence
what we build next.

# What's next?

Rest reassured, we are not stopping here 🚀

We will shortly kick-off a follow-up project and share our goals with you.

D, F & R.


[1] https://lists.comit.network/pipermail/comit-dev/2020-November/000024.html
[2] https://lists.comit.network/pipermail/comit-dev/2021-January/000036.html
[3] https://github.com/comit-network/xmr-btc-swap/issues/135

More information about the comit-dev mailing list