layout: cp
title: ETH-XMR Atomic Swap Development
author: noot
date: Dec 4 2021
amount: 56 XMR
milestones:
- name: Maintainence of existing codebase
funds: 5 XMR
done: 5 February 2022
status: finished
- name: Contract improvements
funds: 8 XMR
done: 27 January 2022
status: finished
- name: DLEq integration
funds: 12 XMR
done: 1 May 2022
status: finished
- name: Integration testing
funds: 8 XMR
done: 21 March 2022
status: finished
- name: Network testing
funds: 8 XMR
done: 24 May 2022
status: finished
- name: Pre-print paper and additional research
funds: 5 XMR
done: 23 June 2022
status: finished
- name: UI
funds: 10 XMR
done: 23 June 2022
status: finished
payouts:
- date: 28 January 2022
amount: 8
- date: 8 February 2022
amount: 5
- date: 22 March 2022
amount: 8
- date: 27 May 2022
amount: 20
- date: 29 June 2022
amount: 5
- date: 29 June 2022
amount: 10
Summary
This proposal is for the continued development of ETH-XMR atomic swaps. The milestones include continued maintence and testing of the current codebase, gas improvements, network and integration testing, and documentation. At the completion of this proposal, there will be an audit-ready pre-production release of the ETH-XMR atomic swap software, as well as a pre-print paper outlining future improvements to the protocol. The total estimated duration of this proposal is 16 weeks.
Team
noot will be completing milestones 1-6. Milestone 7 will be completed by Tbaut.
About me (noot)
Since I'm quite new to the Monero space, I figured I'd post a little bit about me here. I've been working as a professional blockchain protocol engineer for nearly 4 years (will be 4 years in March 2022). I also have a Bachelor's of Applied Science specializing in Computer Engineering from the University of Toronto. For my undergraduate thesis project, I explored adding privacy to Ethereum, which ended up with me writing a Go implementation of RingCT. Although the project didn't really go anywhere, it was my introduction to real-life cryptography and of course Monero. Since then I've been casually following Monero. I've always loved the tech and the ethos and I'm glad to finally be able to contribute to it!
I'm passionate about privacy-preserving technologies and I think Monero really is the best and only (afaik) cryptocurrency that's truly private. I hope this project will bring more users to Monero by reducing the onboarding overhead, specifically by not needing to rely on a centralized exchange. I hope this work, along with the current inspiring XMR-BTC swap work being done, will help bring in fully decentralized, peer-to-peer exchanges.
Most of my past work is focused on alternative blockchain protocol implementations, including implementations for Polkadot and Filecoin. I've also worked on Ethermint (EVM Cosmos module), a little bit on some ETH2 libraries, and written/tested various smart contracts in my day, which consists of most of my Ethereum experience. I've also worked on go-libp2p-noise (a handshake protocol for the p2p library libp2p) and go-schorrkel (schnorr signatures over ristretto255, used in Polkadot), both of which are now in production! The language I've used the most is Go (namely why this project is in Go), but I've also used Rust, JS, and Solidity.
Since I'll be continuing to work full-time, this project will be done on a part-time basis. As of writing I'm the only person who will be working on this. I estimate I'll be able to put in ~15 hours per week, which might vary week-to-week depending on how busy I am.
Motivation
Atomic swaps are a method for trustlessly exchanging funds across blockchains. An ETH-XMR atomic swap will allow for users to, in a trustless and completely decentralized manner, exchange Ether for Monero. This connects the leading smart contract blockchain (and the home of defi) with the leading privacy-preserving blockchain. Along with the BTC-XMR atomic swaps, this will allow for completely decentralized cross-chain exchanges to be built that allow for XMR swaps.
Milestones
1. Maintenance of existing codebase (estimated 2 weeks)
This includes:
- improved unit tests, >70% test coverage for whole repo
- inline documentation (ie. code-level docs)
- JSON-RPC API documentation
- general code cleanup
2. Swap contract improvements (estimated 2 weeks)
There is already a smart contract (Swap.sol) that implements the Ethereum on-chain side of the protocol. However, to reduce gas costs, this can be turned into a "factory" style contract that allows users to create swap instances without having to re-deploy a contract, thus allowing for gas savings.
This milestone includes:
- Creation of swap factory contract
- Testing and integration of contract with codebase
- Documentation on how to deploy the swap contract ot any EVM-based chain and interact with it