Bitcoin–Monero Cross-chain Atomic Swap
Find a file
Mohan 801ce8fd9d
feat(taker): Improve maker discovery (#692)
* mvp

* only redial if DisconnectedAndNotDialing

* progress

* progress

* progress

* some progress

* progress

* extract common logic into behaviour_util::ConnectionTracker

* extract common logic into BackoffTracker helper struct

* add comment in quote::background behaviour

* BackoffTracker rename get_backoff to get(...)

* cleanup, fix some things that got lost during rebase

* properly propagate quote::background ToSwarm events

* actually persist event loop, add quotes and rendezvous::discovery to cli behaviour

* some progress, cleanup, comments

* progress

* redial all peers that we dont know dont support quote, use quotes_cached behaviour in example, add remove_peer(...) to redial behaviour, don't redial discovered rendezvous peers

* remove old todo

* quotes_cached.rs: cache last connected endpoint

* rename: add_peer_address -> queue_peer_address

* extract p2p defaults into swap-p2p/defaults.rs

* split rendezvous.rs into two sub-modules

* remove unused bob::BackgroundQuoteReceived

* replace usage of list_sellers with event loop

* prune: remove list_sellers command

* use backoff helper in swap-p2p/src/protocols/quotes.rs

* refactor rendezvous::register behaviour, getting some unit tests working again

* add all peer addresses to the swarm on init

* less agressive redials

* extract magic backoff numbers

* proof of concept: drill tracing span into event loop through channels

* add BackoffTracker::increment, re-schedule register when we lose connection to rendezvous point

* fetch identify version and propagate into UI

* forbid private/local/loopback ip addresses to be shared/accepted through Identify

* remove legacy list_sellers code

* ensure uuids are unique for alice during swap_setup

* formatting and nitpicks

* fix: allow multiple swap setup requests over the same connection handler

* small cleanups

* fix: protocols/quotes.rs unit tests

* revert: listen on 0.0.0.0 for asb p2p

* propagate handle_pending_inbound_connection and handle_pending_outbound_connection to identify patch source

* replace loop with repeated return Poll::Ready in discovery.rs

* format

* MultiAddrVecExt trait, emit rendezvous addresses to rendezvous-node swarm

* fix: strictly disallow concurrent swap setup requests for the same swap on the same connection

* fix tests etc

* remove slop from futures_util.rs

* address some comments

* behaviour_util.rs: track inflight dials, add tests, return Some(peer_id) if internal state was changed

* replace boring-avatars with jidenticon

* feat: add peer discovery status dialog

* remove buy-xmr cli command, remove "sellers" arg for BuyXmrArgs, add changelog

* disable body overscroll

* add changelog for jidenticon

* increase quote fetch interval to 45s

* fix rendezvous::register_and_discover_together test
2025-12-01 18:03:13 +01:00
.cargo fix(p2p): Addresses were not cached in redial behaviour (#717) 2025-11-12 22:39:32 +01:00
.cursor/rules feat(monero-sys): Build system (#500) 2025-08-27 16:45:59 +02:00
.github fix(ci/cd): Use proper command substitution for getting the binary paths (#771) 2025-11-30 19:08:29 +01:00
.helix build: Improve caching (#681) 2025-11-12 12:39:21 +01:00
.sqlx feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
.vscode fix(monero-sys): Correctly handle multiple transaction keys (#629) 2025-11-09 21:01:40 +01:00
bitcoin-wallet refactor: swap-core / swap-machine (#530) 2025-10-10 16:29:00 +02:00
dev-docs docs: clarify orchestrator restart instructions (#581) 2025-09-25 02:20:09 +02:00
dev-scripts feat(flatpak): work around nvidia driver compatibility by setting WEBKIT_DISABLE_DMABUF_RENDERER=1 (#742) 2025-11-24 12:33:59 +01:00
docs Removing old name for eigenwallet (#638) 2025-10-23 17:41:50 +02:00
electrum-pool fix(monero-sys): don't panic on closed channel (#756) 2025-11-25 13:08:12 +01:00
flatpak feat(flatpak): work around nvidia driver compatibility by setting WEBKIT_DISABLE_DMABUF_RENDERER=1 (#742) 2025-11-24 12:33:59 +01:00
libp2p-rendezvous-node feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
libp2p-tor fix(monero-sys): don't panic on closed channel (#756) 2025-11-25 13:08:12 +01:00
monero-harness fix(monero-sys): don't panic on closed channel (#756) 2025-11-25 13:08:12 +01:00
monero-rpc fix(monero-sys): don't panic on closed channel (#756) 2025-11-25 13:08:12 +01:00
monero-rpc-pool fix(monero-sys): don't panic on closed channel (#756) 2025-11-25 13:08:12 +01:00
monero-sys fix(monero-sys): don't panic on closed channel (#756) 2025-11-25 13:08:12 +01:00
monero-tests fix(tree-wide): tests (#731) 2025-11-19 18:55:45 +01:00
src-gui feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
src-tauri feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
swap feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
swap-asb Release version 3.3.8 (#773) 2025-11-30 22:29:35 +01:00
swap-controller feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
swap-controller-api feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
swap-core fix(tree-wide): tests (#731) 2025-11-19 18:55:45 +01:00
swap-db feat(alice): Concurrently send transfer proof and receive encrypted signature (#651) 2025-10-26 16:36:00 +01:00
swap-env feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
swap-feed fix(monero-sys): don't panic on closed channel (#756) 2025-11-25 13:08:12 +01:00
swap-fs feat(gui): Monero wallet (#442) 2025-07-18 15:08:36 +02:00
swap-machine feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
swap-orchestrator fix(monero-sys): don't panic on closed channel (#756) 2025-11-25 13:08:12 +01:00
swap-p2p feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
swap-proptest fix(tree-wide): tests (#731) 2025-11-19 18:55:45 +01:00
swap-serde fix(tree-wide): tests (#731) 2025-11-19 18:55:45 +01:00
throttle feat(swap-p2p): Reduce max redial interval to 30s, set idle connection timeout to 2h, increase auth and multiplex timeout to 60s 2025-10-17 00:46:57 +02:00
utils/gpg_keys add einliterflasche gpg key 2025-11-05 15:52:22 +01:00
.dockerignore rename dev_scripts to dev-scripts, move homebrew template into its own folder 2025-10-19 19:17:13 +02:00
.gitignore feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
.gitmodules refactor: swap-core / swap-machine (#530) 2025-10-10 16:29:00 +02:00
.taurignore feat(monero-sys): Monero bindings (#303) 2025-06-17 10:55:50 +02:00
AGENT.md rebranding: eigenwallet (#461) 2025-07-17 16:31:29 +02:00
Cargo.lock feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
Cargo.toml feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
CHANGELOG.md feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
CLAUDE.md feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
CONTRIBUTING.md docs(dev): switch test instructions to nextest (#361) 2025-05-27 11:05:49 +02:00
dprint.json Replace vendored monero-seed with monero-oxide import 2025-10-24 19:57:04 +02:00
justfile feat(taker): Improve maker discovery (#692) 2025-12-01 18:03:13 +01:00
LICENSE Change license to GPLv3 2020-10-12 17:13:25 +11:00
README.md fix(asb): Retry punish (#630) 2025-10-17 00:16:02 +02:00
rust-toolchain.toml fix(monero-sys): Correctly handle multiple transaction keys (#629) 2025-11-09 21:01:40 +01:00

eigenwallet

This is the monorepo containing the source code for all of our core projects:

  • swap contains the source code for the main swapping binaries, asb and swap
  • gui contains the new tauri based user interface
  • tauri contains the tauri bindings between binaries and user interface
  • and other crates we use in our binaries

If you're just here for the software, head over to the releases tab and grab the binary for your operating system! If you're just looking for documentation, check out our docs page or our github docs.

Join our Matrix room to follow development more closely.

The project was previously known as UnstoppableSwap. Read this for our motivation for the rename.

image image image

Contributing

We have a justfile containing a lot of useful commands. Run just help to see all the available commands.

Running tests

This repository uses cargo-nextest to run the test suite.

cargo install cargo-nextest
cargo nextest run

Donations

If you want to donate to the project, you can use the following address. Donations will be used to fund development.

Please only do so if you do not need the money. We'd rather you keep it but people ask from time to time so we're adding it here. Either one of the address below can be used to donate.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

87QwQmWZQwS6RvuprCqWuJgmystL8Dw6BCx8SrrCjVJhZYGc5s6kf9A2awfFfStvEGCGeNTBNqLGrHzH6d4gi7jLM2aoq9o is our donation address for Github (signed by binarybaron)
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQQ1qETX9LVbxE4YD/GZt10+FHaibgUCaJTWlQAKCRCZt10+FHai
bhasAQDGrAkZu+FFwDZDUEZzrIVS42he+GeMiS+ykpXyL5I7RQD/dXCR3f39zFsK
1A7y45B3a8ZJYTzC7bbppg6cEnCoWQE=
=j+Vz
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

4A1tNBcsxhQA7NkswREXTD1QGz8mRyA7fGnCzPyTwqzKdDFMNje7iHUbGhCetfVUZa1PTuZCoPKj8gnJuRrFYJ2R2CEzqbJ is our donation address (signed by binarybaron)
-----BEGIN PGP SIGNATURE-----

iQGzBAEBCAAdFiEEBRhGD+vsHaFKFVp7RK5vCxZqrVoFAmjxV4YACgkQRK5vCxZq
rVrFogv9F650Um1TsPlqQ+7kdobCwa7yH5uXOp1p22YaiwWGHKRU5rUSb6Ac+zI0
3Io39VEoZufQqXqEqaiH7Q/08ABQR5r0TTPtSLNjOSEQ+ecClwv7MeF5CIXZYDdB
AlEOnlL0CPfA24GQMhfp9lvjNiTBA2NikLARWJrc1JsLrFMK5rHesv7VHJEtm/gu
We5eAuNOM2k3nAABTWzLiMJkH+G1amJmfkCKkBCk04inA6kZ5COUikMupyQDtsE4
hrr/KrskMuXzGY+rjP6NhWqr/twKj819TrOxlYD4vK68cZP+jx9m+vSBE6mxgMbN
tBVdo9xFVCVymOYQCV8BRY8ScqP+YPNV5d6BMyDH9tvHJrGqZTNQiFhVX03Tw6mg
hccEqYP1J/TaAlFg/P4HtqsxPBZD6x3IdSxXhrJ0IjrqLpVtKyQlTZGsJuNjFWG8
LKixaxxR7iWsyRZVCnEqCgDN8hzKZIE3Ph+kLTa4z4mTNEYyWUNeKRrFrSxKvEOK
KM0Pp53f
=O/zf
-----END PGP SIGNATURE-----