Bitcoin–Monero Cross-chain Atomic Swap
Find a file
Mohan 1f2a0605bc
refactor(bob): EventLoop concurrency (#642)
* progress

* fix race condition where EventLoopHandle::swap_handle would take forever if event loop was not running

* add trace statements in bob event loop, inform swarm about redials

* progress

* revamp of protocols/swap_setup, reliable error propagation, slowly getting this to work...

* some formatting

* fix react shengigans

* If a connection handler died which had an assigned swap setup request, notify the swarm that the request failed

* key inflight swap setup request by (PeerId, SwapID) instead of just peer id

* add min height to swap state page

* extract should_acknowledge_transfer_proof out of event loop, propagate swap setup errors to event loop with context

* add --trace to justfile

* remove docker_test_all.sh

* add back the correct connection_keep_alive swap_setup/alice.rs

* fix some memory leaks

* let swarm_setup behaviour instruct swarm to dial peer

* fmt

* reduce diff

* remove redial::Redialing

* add trace statements to swap_setup/bob.rs

* extract swap setup protocol itself into run_swap_setup

* make queues unbounded, small nitpicks

* do not buffer transfer proof acknowledgements

* prevent swap_setup/bob.rs from keeping all connections alive

* buffer transfer proofs

* do not redial ALL peers

* keep all connections alive with swap_setup/bob.rs

* add comment
2025-11-08 17:48:15 +01:00
.cargo fix(ci): Dockerfile and own monero-depends (#536) 2025-08-29 15:31:22 +02:00
.cursor/rules feat(monero-sys): Build system (#500) 2025-08-27 16:45:59 +02:00
.github fix(ci): homebrew recipe wrong filenames 2025-11-04 20:25:28 +01:00
.sqlx Unify the sqlx migrations (#528) 2025-08-20 10:40:28 +02:00
.vscode feat(gui): Voluntary donations (#418) 2025-06-25 16:37:47 +02: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 rename dev_scripts to dev-scripts, move homebrew template into its own folder 2025-10-19 19:17:13 +02:00
docs Removing old name for eigenwallet (#638) 2025-10-23 17:41:50 +02:00
electrum-pool fix(electrum-pool): propagate error chain to caller 2025-09-24 13:21:44 +02:00
flatpak fix flaptak 2025-08-18 11:33:58 +02:00
libp2p-rendezvous-node refactor(alice): concretize enc sig publication requirement (#664) 2025-11-01 00:44:58 +01:00
libp2p-tor feat: upgrade to arti 1.5.0 (#585) 2025-09-27 12:40:35 +02:00
monero-harness fix(monero-sys): Transfer atomicity (#620) 2025-10-14 12:37:55 +02:00
monero-rpc refactor(workspace): swap-fs, swap-serde, swap-env crates (#459) 2025-07-14 22:05:43 +02:00
monero-rpc-pool refactor: swap-core / swap-machine (#530) 2025-10-10 16:29:00 +02:00
monero-sys fix(monero-sys): Transfer atomicity (#620) 2025-10-14 12:37:55 +02:00
src-gui refactor(bob): EventLoop concurrency (#642) 2025-11-08 17:48:15 +01:00
src-tauri Prepare release 3.2.10 (#687) 2025-11-08 04:38:48 +01:00
swap refactor(bob): EventLoop concurrency (#642) 2025-11-08 17:48:15 +01:00
swap-asb Prepare release 3.2.10 (#687) 2025-11-08 04:38:48 +01:00
swap-controller Prepare release 3.2.10 (#687) 2025-11-08 04:38:48 +01:00
swap-controller-api feat(asb): Add registration-status controller cmd (#671) 2025-11-02 23:13:28 +01:00
swap-core fix(bob): Retries in state machine (#677) 2025-11-06 19:49:38 +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(env): reduce monero_finality_confirmations and monero_double_spend_safe_confirmations to 15 (#683) 2025-11-06 21:41:55 +01:00
swap-feed refactor: swap-core / swap-machine (#530) 2025-10-10 16:29:00 +02:00
swap-fs feat(gui): Monero wallet (#442) 2025-07-18 15:08:36 +02:00
swap-machine feat(alice): Concurrently send transfer proof and receive encrypted signature (#651) 2025-10-26 16:36:00 +01:00
swap-orchestrator feat(orchestrator): expose rendezvous-node port 2025-10-25 23:59:36 +02:00
swap-p2p refactor(bob): EventLoop concurrency (#642) 2025-11-08 17:48:15 +01:00
swap-proptest refactor: swap-core / swap-machine (#530) 2025-10-10 16:29:00 +02:00
swap-serde dprint fmt 2025-10-11 15:27:50 +02: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(orchestrator): add rendezvous-node service 2025-10-25 23:51:56 +02: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 Prepare release 3.2.10 (#687) 2025-11-08 04:38:48 +01:00
Cargo.toml refactor: rename "rendezvous-server" to "rendezvous-node" 2025-10-25 23:50:16 +02:00
CHANGELOG.md Prepare release 3.2.10 (#687) 2025-11-08 04:38:48 +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 refactor(bob): EventLoop concurrency (#642) 2025-11-08 17:48:15 +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
regenerate_sqlx_cache.sh fix(build system): delete stale .sqlx folders 2025-08-20 10:56:27 +02:00
rust-toolchain.toml feat: Orchestration & Controller (#492) 2025-08-06 15:33:41 +02: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-----