ETH-XMR Atomic Swap development update (live on stagenet!)

Hey all, I'm back with an update on ETH-XMR atomic swap development progress. I'm happy to announce that 5/7 CCS milestones have been completed, completing all the core development (ie. development directly on the swap process) for this CCS!

What's been done

  • milestone 1: finished features for the codebase and added lots of tests
  • milestone 2: refactored the swap contract to be a factory, reducing the gas for the ETH holder by ~5.3x.
  • milestone 3: DLEq integration to further decrease gas costs significantly, reduces gas for the ETH holder by slightly over 1/3 and for the XMR holder by 25x!
  • milestone 4: added a websockets server and improved RPC calls for easier testing, since websockets allows for push notifications. added integration tests for success/refund/abort cases.
  • milestone 5: launched 9 nodes on stagenet and wrote/ran an automated tester on them to ensure the nodes are stable and make/take offers with each other successfully.

In summary, the swap is now live on stagenet, with the Goerli testnet on the Ethereum side.

Trying it on stagenet

I need you to try out the swap on stagenet. This is really critical as I want to uncover any and all bugs so they can be fixed, and I would love feedback on the UX in general.

The documentation for trying it out on stagenet as a XMR-taker or XMR-maker is HERE.

Please, try it out, and let me know of any feedback or issues you encounter. You will need stagenet XMR if you want to act as a maker and you will need Goerli ETH to be a maker OR a taker (PM me if the faucets don't work for either).

If you're an XMR-taker, you can also try out the UI. At this point, it's basically a nice way to easily see all the offers on the network and take offers, but doesn't integrate with Metamask at the moment (that's a next step!)

What's next

My priority is finishing the last 2 milestones on the CCS:

  • milestone 6 is regarding further research and a write-up of the protocol. I've mostly completed this, just need to finalize and organize the document. Much of the research component of this is aimed at further improvements to the protocol implementation and UX, particularly with regards to privacy.
  • milestone 7 is regarding the UI. The last task to be done here is Metamask integration. This will allow XMR-takers to not need to interact with the CLI anymore and be able to use the swap entirely in-browser by using Metamask to sign.

wen mainnet?

You're probably all wondering when the swap will be ready for mainnet, and here's my answer:

After stagenet is tested a lot

A good first step towards mainnet is after the stagenet swaps have been tested by community members and there aren't any critical issues. I really need everyone's help for this part, try out the swap and try to break it! This will make it more resilient for mainnet.

I've also implemented a recovery module for the case where the node crashes in the middle of a swap. It would be useful for people to simulate this themselves by just stopping the node in the middle of a swap, and then trying the recovery instructions here.

After an audit

Code that is going to deal with monetary value should be audited by an experienced third-party. The swap will be more mainnet-ready after an audit and resolving of the found issues. I plan to start searching for auditors after the last few development issues are completed.

Legal concerns

To be completely honest, as I'm working on this independently and not within a company, I don't have any legal protection if something were to go wrong with the swap and someone wanted to come after me. Even with audits and all precautions taken, there's always a chance of something going wrong. On my side, I don't feel comfortable recommending anyone use the swap on mainnet until any legal liabilities are cleared up. This is on me to talk to a lawyer and figure out, I just wanted to bring this up for additional context.


To summarize, please try out the swap on stagenet!! And if you encounter any issues at all, please open an issue on the repo. Thank you everyone for your continued support!

submitted by /u/elizabethereum
[link] [comments]

Leave a Reply

Your email address will not be published. Required fields are marked *