Commit graph

3327 commits

Author SHA1 Message Date
Mohan
e9839b7acf
Update README.md 2025-08-06 15:48:17 +02:00
Mohan
6ee053fd8f
docs: swap-orchestrator 2025-08-06 15:38:21 +02:00
Mohan
97a4a31af9
feat: Orchestration & Controller (#492)
* fix: formatting in stress_test.rs

* refactor: move asb binary into swap-asb

* refactor(swap-asb): remove unused disable_timestamp argument

* fix(monero-sys): Include search path for aarch64-linux-gnu

* fix(swap): notpick formatting in swap.rs

* feat(swap-env): Split up config wizard, add default rendezvous points

* feat(swap-controller, swap-controller-api): Minimal maker shell with just a check-connection command

* fix(monero-rpc-pool): Use new axum route path syntax to prevent runtime panic

* feat(ci): Specify crate when building binaries; build asb-controller

* fix: Add swap-controller, swap-controller-api crates and their dependencies to Cargo.toml

* feat(Dockerfile): Build asb-controller; default to 1.87 rust toolchain

* feat(swap-orchestrator): Compose spec generator

* formatting: nitpicks

* fix: add swap-orchestrator auto generated files to gitginore

* refactoring(swap-orchestrator: Use Into<_> to derive asb::Network and electrs::Network from Bitcoin/Monero network, use defaults

* feat(swap-env): Change default bitcoin_confirmation_target to 1

* feat: Dockerfile for asb-controller, bitcoin-balance and monero-balance controller commands

* formatting: nitpicks

* changelog: default bitcoin finality confirmations change

* feat(ci): Build swap-orchestrator binary

* disable rpc server by default, split rpc-bind into rpc-bind-port and rpc-bind-host

* feat(swap-controller): Add monero-address command to print primary address of internal wallet

* chore: upgrade rustyline to 17.0.0

* changelog: Document CONTROLLER, ORCHESTRATOR and JSON-RPC server

* refactor: Change swap-orchestrator binary to just "orchestrator"

* refactor: let RpcServer::start(...) take port and host seperately

* default electrum servers in config wizard

* formatting

* feat(swap-orchestrator): README

* feat(swap-controller): Add Multiaddresses and ActiveConnections command

Signed-off-by: Binarybaron <binarybaron@protonmail.com>

* refactor(asb/event_loop.rs): Move quote logic and tower service into their own modules

* fix(swap): some unit tests

* feat(swap-controller): redumentary repl command auto complete

* formatting

* feat(swap-orchestrator): Burn Git commit hash into orchestrator binary

* feat(swap-orchestrator): burn git commit hash into binary when building from source

* feat(Dockerfiles): Build with --locked

* feat: derive ports for images from network combination

add some doc into the docker compose file

* small refactorings

* feat(swap-controller): Add get-swaps command

* feat: add more default electrum mainnet nodes

* feat: build asb-controller docker image in ci, move asb Dockerfile into swap-asb

* fix: do not allow pre-built docker images for now

* amend changelog

* remove default monero_daemon_url, default to None (Monero RPC pool)

* unify asb and orchestrator wizard for monero daemon url setup

---------

Signed-off-by: Binarybaron <binarybaron@protonmail.com>
2025-08-06 15:33:41 +02:00
Binarybaron
7c82853050 fix(monero-rpc-pool): stress-test compile error 2025-08-04 14:23:31 +02:00
Mohan
b0b8df8101
feat(monero-rpc-pool): TCP pool (#497)
* change monero-rpc-pool logs to trace

* feat(monero-rpc-pool): Cache TCP connections

* just fmt

* check if tx_lock was previously published

* move network into config struct, add stress-test bin

* small fixes

* amend

* use monero network type

* use monero netowkring type everywhere

* amend

* amend changelog

* use existing swap-serde types
2025-08-04 14:22:39 +02:00
Gecko Botty
886dbcbef2
Prepare release 3.0.0-beta.5 (#499)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-08-04 11:51:06 +02:00
Mohan
4a7f6f53cf
amend: changelog 2025-08-04 11:48:35 +02:00
Mohan
0936d6210e
fix(swap): Split approve-and-sign and publish-lock-tx into two states (#498)
* fix(swap): Split approve-and-sign and publish-lock-tx into two states

* fix: cannot get blockchain height

* add RetrievingMoneroBlockheight, RetrievingMoneroBlockheight tauri events

* propagate daemon blcok height fetch error, treat height 0 as error

* check if tx_lock was previously published
2025-08-04 11:46:57 +02:00
Gecko Botty
e7cfecd070
Prepare release 3.0.0-beta.4 (#496)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-08-03 20:59:42 +02:00
Binarybaron
1bfb4b7e8d amend: self-signed tls certificates changelog 2025-08-03 20:59:24 +02:00
Binarybaron
249fd25a3b amend changelog 2025-08-03 20:51:47 +02:00
Binarybaron
2039212f0c feat(gui): Add swapanarchy.cfd, darkness.su and eigen.center rendezvous points 2025-08-03 20:48:08 +02:00
Binarybaron
1ee532375d feat(monero-sys): Increase rpc retries from 3 to 10 2025-08-03 20:43:56 +02:00
Mohan
2c0efa217c
fix(monero-rpc-pool): TLS hanging (#495) 2025-08-03 13:19:47 +02:00
Mohan
d7031fdcfb
chore: Upgrade bdk to 2.0.0 (#494)
* chore: Upgrade bdk to 2.0.0

* bump

* fix some clippy stuff
2025-08-03 01:55:40 +02:00
Mohan
84aba174c3
feat(rendezvous-server): Listen on onion address (#491) 2025-08-02 14:42:12 +02:00
Mohan
a826c2326d
feat: Move rendvous-server into mono repository (#490)
* feat: Move rendvous-server into mono repository

* dprint fmt
2025-08-02 01:27:45 +02:00
Mohan
4455589dab
Create submit_rendezvous_point.md 2025-08-02 00:55:14 +02:00
Mohan
e86b38cae2
docs: add community ran rendezvous point 2025-08-02 00:43:08 +02:00
Gecko Botty
9c056088c5
Prepare release 3.0.0-beta.3 (#489)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-08-01 15:14:50 +02:00
Binarybaron
d7578092d0 fix: ci update toolchaint to 1.87 2025-08-01 15:12:27 +02:00
Binarybaron
f67da9b4a8 feat: whitelist /gethashes.bin for clearnet 2025-08-01 12:41:36 +02:00
Mohan
d21baa8350
refactor(monero-rpc-pool): ureq -> raw hyper (#487)
* refactor(monero-rpc-pool): ureq -> raw hyper

* whitelist "getblocks.bin", refactor config constructors, use arti-client, record lowerst seen block height, small style changes

* display effective bandwidth

* compact wallet overview page a bit

* record latencies correctly

* add setting for monero tor routing, add ssl support for hyper, lengthen window duration for bandwidth tracker

* remove unwrap

* refactor ui

* dont fail silently tor bootstrap

* some workarounds for buggy wallet2 stuff
2025-08-01 12:02:07 +02:00
Mohan
cd12d17580
refactor(monero-rpc-pool): reqwest -> ureq (#486)
* refactor(monero-rpc-pool): Replace reqwest with ureq

* wrap sync calls in spawn_blocking

* put into spawn_blocking
2025-07-29 21:19:37 +02:00
Mohan
1ee4100684
docs: add newer screenshots 2025-07-29 20:19:21 +02:00
Mohan
fb29fb97d1
refactor: rename crate to libp2p-tor (#485)
* refactor: Rename libp2p-community-tor to libp2p-tor

* fmt
2025-07-29 20:13:42 +02:00
Mohan
db5d02ea3d
refactor: Move libp2p-community-tor into monorepo (#484)
* refactor: Move libp2p-community-tor into monorepo

* fmt
2025-07-29 20:10:15 +02:00
Mohan
69ddd2486d
feat(gui): DFX.swiss integration (#451)
* feat(gui): Monero wallet

* progress

* refactor

* progress, dont delete wallet, re-fetch approvals and background periodically

* show transaction history correctly

* Enable fetching tx hashes

* Try add the wallet listener event callbacks, not working

* fix: Redeem XMR to internal main wallet, not temp wallet

* feat(monero-sys): Support signing messages

* feat(gui): DFX.swiss integration

* refactor: format, slight refactorings

* progress

* type safety

* refactoring of callback system

* make free floating functions generic

* refactor: Format files

* refactor(gui): Split wallet components and redesign balanceOverview component

* refactor(gui): Add action buttons and transaction section

* wrapper event listener

* progress, compiles

* works!

* WORKS! Event received on balance change

* refactor: format and slight refactorings and comments

* refactor(gui): Start with implementation of send dialog

- new number input
- new button variant and size

* add @tauri-apps/plugin-dialog

* feat(gui): Add permissions for file dialog

* fix(monero-harness): Compile issue

* feat(gui): Extract seed from Monero wallet and use for derivation, allow opening existing wallet file

* feat(gui): Always refresh the approval list from frontend when resolving

* fix(monero-rpc-pool): Implement Into<String> for ServerInfo

* fix(monero-sys): Use oneshot channel for all wallets

* feat(gui, monero-sys): Display recently opened wallets

* small refactors

* fix(gui): Enable background_sync, display temp "Loading..." if values are null

* feat(gui): Remove headers from pages, show selected navigation item

* feat(gui): Explicitly tell user if no swaps have been made yet

* feat(gui): send sync and history updates

* feat(gui): Fetch monero wallet details when context becomes availiable

* feat(gui): Display Monero primary address without modal

* feat(gui): Make "swap" button on wallet page take you to "/swap"

* feat(gui): Rework send modal, adjust number input, added send to field

* feat(gui): set block restore height, not working

* refactor(gui): Optimize number input and add support for switching between currency

* feat(gui): Display real fiat currency prices in send modal

* feat(gui): Add error message for too high send amount

* feat(gui): Modern UI for SeedSelectionDialog

* feat(gui): Wrap MoneroWalletActions

* wip

* refactoring approval callback

* feat(gui): Send Direction of Transaction in History to Frontend

* feat(gui): Let user approve transaction before publishing

* feat: Display 8 digits for Monero amounts by default

* feat(monero-sys): Store pending (non published) transactions in Mutex map inside wallet thread

This allows seperating signing and publishing transactions cleanly

* dprint fmt

* fix(gui): Refresh Monero wallet history C++ struct before serializing

* feat(monero-rpc-pool): Fail after three JSON-RPC errors

* feat(monero-sys): Add wrapper around verify_wallet_password

* feat(gui): Allow opening password-protected Wallets

* refactor: fmt, remove receive button

* fix(gui): Convert to XMR before converting into Fiat

* feat(gui): Add dialog for setting restore height

* feat(gui): block height can be changed, blocks when too low

* refactor(monero-sys): Remove old WalletListener code

* feat(gui): Continually ask for user to select wallet and enter password, if user rejects, offer to select different wallet

* refactor(swap): Extract "select Monero wallet" into own function

* refactor(tauri): Dont kill monero-wallet-rpc

* refactor(tauri): Avoid multiple concurrent Contexts starting

* refactor: Change "Cancel" to "Change wallet" on PasswordEntryDialog

* feat(gui): show curent block height, fix blockage

* Cargo.lock update

* refactor(monero-sys): Use match instead of is_err() and expect(...)

* refactor: better context for WalletHandle constructor method errors handling

* refactor(monero-sys): Common open_with<F>(path: String, daemon: Daemon, wallet_op: F) function

* feat: check empty password before requeston password for wallet

* feat: Remove "Checking for available remote nodes" from frontend

* feat(gui): Allow sweeping entire Monero balance

* feat(monero-rpc-pool): Keep alive TCP connections, do not record JSON-RPC errors as failure if >=3 nodes failed

If >=3 nodes failed we assume it was an actual issue on our side, not an issue with the node

* refactor(swap): Remove dead code

* add comment to WalletHandleListener::on_refreshed{...}

* feat(gui): show current block height in the field

* refactor: remove unused UserCancelledError;

* refactor: No Arc<Mutex<_>> for Pending TXs map

* refactor: remove redundant } catch (error) {

* feat: add our new crates to `OUR_CRATES` in tracing util

* fix(gui): Add math.ceil to piconero conversion to ensure integer

* fix(gui): Close menu when option is clicked

* review and improve/reduce uses of unsafe, also remove unique_ptr wrapper around TransactionHistory to avoid double free

* fix(gui): Use monero amount from units.tsx

* fix(gui): Use PromiseInvokeButton for simplification for approving of send transaction

* update comment, rename function

* refactor(gui): Fix alignment of amounts

* refactor(gui): Remove sending and refreshing states from wallet

* fix(cli, gui): use old seed flow on no tauri, fix minor issues in gui

* fix: use the new named function

* refactor(gui): Add skeletons for monero wallet when still loading

* fix

* get working

* feat(gui): Add tooltip to buy monero button

* refactor: Format files

* refactor(gui): Do not store logs in redux-persist

---------

Co-authored-by: Maksim Kirillov <maksim.kirillov@staticlabs.de>
Co-authored-by: b-enedict <benedict.seuss@gmail.com>
Co-authored-by: einliterflasche <einliterflasche@pm.me>
2025-07-28 11:00:33 +02:00
Gecko Botty
591d0b8e20
Prepare release 3.0.0-beta.2 (#482)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-07-27 23:57:40 +02:00
Mohan
65a3ebdbe2
refactor(gui): Do not store logs in redux-persist (#476)
* refactor(gui): Do not store logs in redux-persist

* amend fmt
2025-07-23 22:13:56 +02:00
Mohan
18f1f45642
fix(monero-sys): Lock refresh before storing wallet file (#475)
* fix(monero-sys): Lock refresh before storing wallet file

* amend
2025-07-23 22:01:06 +02:00
Binarybaron
5ab89ec383 fix(flatpak): Link to .org instead of .net 2025-07-22 21:22:22 +02:00
Gecko Botty
c5daddcb56
Prepare release 3.0.0-beta (#473)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-07-18 15:41:26 +02:00
Mohan
1ad4bcadf5
feat(gui): Rework transaction history ui (#470)
Co-authored-by: b-enedict <benedict.seuss@gmail.com>
2025-07-18 15:33:59 +02:00
Binarybaron
c1c45571f0 dprint fmt 2025-07-18 15:24:03 +02:00
Binarybaron
7102962898 changelog: Monero wallet 2025-07-18 15:17:09 +02:00
Binarybaron
eb98b10c94 fix(swap): Dont cleanup because we have no Tokio reactor 2025-07-18 15:14:54 +02:00
Mohan
a7823d7489
feat(gui): Monero wallet (#442)
* feat(gui): Monero wallet

* progress

* refactor

* progress, dont delete wallet, re-fetch approvals and background periodically

* show transaction history correctly

* Enable fetching tx hashes

* Try add the wallet listener event callbacks, not working

* fix: Redeem XMR to internal main wallet, not temp wallet

* type safety

* refactoring of callback system

* make free floating functions generic

* refactor: Format files

* refactor(gui): Split wallet components and redesign balanceOverview component

* refactor(gui): Add action buttons and transaction section

* wrapper event listener

* progress, compiles

* works!

* WORKS! Event received on balance change

* refactor: format and slight refactorings and comments

* refactor(gui): Start with implementation of send dialog

- new number input
- new button variant and size

* add @tauri-apps/plugin-dialog

* feat(gui): Add permissions for file dialog

* fix(monero-harness): Compile issue

* feat(gui): Extract seed from Monero wallet and use for derivation, allow opening existing wallet file

* feat(gui): Always refresh the approval list from frontend when resolving

* fix(monero-rpc-pool): Implement Into<String> for ServerInfo

* fix(monero-sys): Use oneshot channel for all wallets

* feat(gui, monero-sys): Display recently opened wallets

* small refactors

* fix(gui): Enable background_sync, display temp "Loading..." if values are null

* feat(gui): Remove headers from pages, show selected navigation item

* feat(gui): Explicitly tell user if no swaps have been made yet

* feat(gui): send sync and history updates

* feat(gui): Fetch monero wallet details when context becomes availiable

* feat(gui): Display Monero primary address without modal

* feat(gui): Make "swap" button on wallet page take you to "/swap"

* feat(gui): Rework send modal, adjust number input, added send to field

* feat(gui): set block restore height, not working

* refactor(gui): Optimize number input and add support for switching between currency

* feat(gui): Display real fiat currency prices in send modal

* feat(gui): Add error message for too high send amount

* feat(gui): Modern UI for SeedSelectionDialog

* feat(gui): Wrap MoneroWalletActions

* wip

* refactoring approval callback

* feat(gui): Send Direction of Transaction in History to Frontend

* feat(gui): Let user approve transaction before publishing

* feat: Display 8 digits for Monero amounts by default

* feat(monero-sys): Store pending (non published) transactions in Mutex map inside wallet thread

This allows seperating signing and publishing transactions cleanly

* dprint fmt

* fix(gui): Refresh Monero wallet history C++ struct before serializing

* feat(monero-rpc-pool): Fail after three JSON-RPC errors

* feat(monero-sys): Add wrapper around verify_wallet_password

* feat(gui): Allow opening password-protected Wallets

* refactor: fmt, remove receive button

* fix(gui): Convert to XMR before converting into Fiat

* feat(gui): Add dialog for setting restore height

* feat(gui): block height can be changed, blocks when too low

* refactor(monero-sys): Remove old WalletListener code

* feat(gui): Continually ask for user to select wallet and enter password, if user rejects, offer to select different wallet

* refactor(swap): Extract "select Monero wallet" into own function

* refactor(tauri): Dont kill monero-wallet-rpc

* refactor(tauri): Avoid multiple concurrent Contexts starting

* refactor: Change "Cancel" to "Change wallet" on PasswordEntryDialog

* feat(gui): show curent block height, fix blockage

* Cargo.lock update

* refactor(monero-sys): Use match instead of is_err() and expect(...)

* refactor: better context for WalletHandle constructor method errors handling

* refactor(monero-sys): Common open_with<F>(path: String, daemon: Daemon, wallet_op: F) function

* feat: check empty password before requeston password for wallet

* feat: Remove "Checking for available remote nodes" from frontend

* feat(gui): Allow sweeping entire Monero balance

* feat(monero-rpc-pool): Keep alive TCP connections, do not record JSON-RPC errors as failure if >=3 nodes failed

If >=3 nodes failed we assume it was an actual issue on our side, not an issue with the node

* refactor(swap): Remove dead code

* add comment to WalletHandleListener::on_refreshed{...}

* feat(gui): show current block height in the field

* refactor: remove unused UserCancelledError;

* refactor: No Arc<Mutex<_>> for Pending TXs map

* refactor: remove redundant } catch (error) {

* feat: add our new crates to `OUR_CRATES` in tracing util

* fix(gui): Add math.ceil to piconero conversion to ensure integer

* fix(gui): Close menu when option is clicked

* review and improve/reduce uses of unsafe, also remove unique_ptr wrapper around TransactionHistory to avoid double free

* fix(gui): Use monero amount from units.tsx

* fix(gui): Use PromiseInvokeButton for simplification for approving of send transaction

* update comment, rename function

* refactor(gui): Fix alignment of amounts

* refactor(gui): Remove sending and refreshing states from wallet

* fix(cli, gui): use old seed flow on no tauri, fix minor issues in gui

* fix: use the new named function

* refactor(gui): Add skeletons for monero wallet when still loading

* refactor(gui): Remove isLoading from wallet slice

* feat(gui): Add success dialog after send transaction was approved

* fix(gui): Floor piconero amount in sendMoneroTransaction

* feat(gui): Allow view on explorer button on send success modal

* feat(backend): save the wallet state on events

* fix(structure): move throttle into its own crate

* fix(log): remove spammy logs

* fix(logs): log folder in confid

* remove "sync progress: " log

* small refactors

* save wallet at most every 60s

* remove useless logs

* underscore unused variables

* feat(gui): Add timestamp of the tx

* feat(gui): Add the legacy wallet init option

* legac ybutton

* Fix(gui, asb): reverse the log config
remove log in bridge.h
cleanup

* use none for .store(..)

* display dot for running swap

---------

Co-authored-by: Maksim Kirillov <maksim.kirillov@staticlabs.de>
Co-authored-by: b-enedict <benedict.seuss@gmail.com>
Co-authored-by: einliterflasche <einliterflasche@pm.me>
2025-07-18 15:08:36 +02:00
Gecko Botty
eb0dc10489
Prepare release 2.5.6 (#466)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-07-18 11:02:50 +02:00
Binarybaron
4d85e1e961 change flatpak to http://flatpak.eigenwallet.net/ 2025-07-18 10:42:33 +02:00
Mohan
e79a5f700b
changelog: Docker image moved and rename 2025-07-18 10:14:35 +02:00
Binarybaron
a8651c9d6d fix(ci): Push docker image to ghcr.io/eigenwallet/asb 2025-07-18 09:25:35 +02:00
Mohan
fead93fe8d
refactor: swap-feed crate (#464)
* refactor: Move price feed of asb into swap-feed crate

Also move the tracing-subscriber deps into the workspace

* fix conversion methods
2025-07-17 20:27:30 +02:00
Binarybaron
8f53eb4dc3 fix(CHANGELOG): Merge CHANGELOG entries from releases without missing Github releases into 2.4.5 2025-07-17 18:49:55 +02:00
unstoppableswap-botty
a8e8cc762b
Prepare release 2.4.5 (#463)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-07-17 18:39:10 +02:00
Binarybaron
2e069cd038 rebranding: Change Tauri productName 2025-07-17 18:19:46 +02:00
Mohan
e3e1ff5f17
rebranding: eigenwallet (#461)
* rebranding: Change github/UnstoppableSwap to github/eigenwallet

* rebranding: change Unstoppable -> eigenwallet in a bunch of places

* rebranding: change tauri icon
2025-07-17 16:31:29 +02:00
unstoppableswap-botty
7bcb804d27
Prepare release 2.4.3 (#462)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-07-17 16:24:03 +02:00
Binarybaron
fde686c555 fix(dprint): ignore monero-seed for dprint 2025-07-17 16:22:09 +02:00
Binarybaron
c970dcdd4e rebranding: Change github/UnstoppableSwap to github/eigenwallet 2025-07-16 15:58:27 +02:00