* version independent monerod path with localhost-only binding * fixed lint target and install script * created 3rd ETH key constant to avoid race condition in tests * updated run-integration-tests.sh with the same changes made to run-unit-tests.sh * new design for paritioning out 2 unique keys to test packages * restored accidentally deleted tests/alice.key * removed websocket connection leaks from tests * made file paths unique between tests with better file cleanup * fix for the websocket connection leak commit * reverted increase of GenerateBlocks (didn't mean to commit that) * fixed maker/taker key that I had reversed * fixed incorrect zero-balance check * fixed comment on ClaimOrRefund * added back sample script for installing go in /usr/local/go * etchclient creation cleanup using t.Cleanup() * minor cleanup to ganache_test_keys code * initial dynamic monero-wallet-rpc implementation for tests * converted monero tests to use dynamic monero-wallet-rpc services * unit tests all using dynamic monero-wallet-rpc services * fixed 2 tests that failed after moving to dynamic monero-wallet-rpc services * fixed low balance issues in TestSwapState_NotifyClaimed Co-authored-by: noot <36753753+noot@users.noreply.github.com>
net_makeOfferAndSubscribe, swap_getOffers, implement happy path integration test (#101)
ETH-XMR Atomic Swaps
This is a WIP implementation of ETH-XMR atomic swaps, currently in the pre-production development phase. It currently consists of swapd and swapcli binaries, the swap daemon and swap CLI tool respectively, which allow for peers to discover each other over the network, query peers for their current available offers, and the ability to make and take swap offers and perform the swap protocol. The swapd program has a JSON-RPC endpoint which the user can use to interact with it. swapcli is a command-line utility that interacts with swapd by performing RPC calls.
Disclaimer
This code is unaudited and under active development and should not be used on mainnet or any networks that hold monetary value!!!
Protocol
Please see the protocol documentation for how it works.
Swap instructions
Trying it locally
To try the swap locally with two nodes (maker and taker) on a development environment, follow the instructions here.
Trying it on Monero's stagenet and Ethereum's Goerli testnet
To try the swap on Stagenet/Goerli, follow the instructions here.
Additional documentation
Developer instructions
Please see the developer docs.
Recovery module
In case the swap process crashes during a swap, you can recover your funds with the recovery module. Please see the instructions here.
RPC API
The swap process comes with a HTTP JSON-RPC API as well as a Websockets API. You can find the documentation here.
Contributions
If you'd like to contribute, feel free to fork the repo and make a pull request. Please make sure the CI is passing - you can run make build, make lint, and make test to make sure the checks pass locally.
Donations
The work on this project is currently funded via a Monero CCS Proposal If you would like help fund this project, feel free to contribute to a follow-up CCS proposal when it's ready for funding. In the meantime, check out other CCS proposals ready for funding.