Commit Graph

63 Commits

Author SHA1 Message Date
devbordecraft
7a12a847a0 Fetch multiple UTXOs when we do max_giveable 2021-09-01 13:25:29 +10:00
devbordecraft
f2df838a3c Allow withdrawing and viewing of the bitcoin balance on swap-cli 2021-09-01 13:25:27 +10:00
bors[bot]
51d8623ed7
Merge #704
704: Allow withdrawing and viewing of the bitcoin balance on swap-cli r=rishflab a=devbordecraft

Same mechanics of the ASB but on swap-cli as discussed in #694

Co-authored-by: devbordecraft <devbordecraft>
2021-09-01 01:47:11 +00:00
devbordecraft
e8a6af1517 Allow withdrawing and viewing of the bitcoin balance on swap-cli
Fix formatting issue

Fix after review
2021-08-31 20:42:28 +02:00
rishflab
8598bcade1 Configure electrum client to retry 5 times 2021-08-31 18:26:03 +10:00
Daniel Karzel
18faa786d6 Fail if something goes wrong when checking tx lock status
Probably a failure when interacting with the electrum node to get script
 status updates
2021-08-31 18:26:00 +10:00
Thomas Eizinger
25b123d6ed
Load wallet in monero-wallet-rpc on demand if necessary
Previously, we relied on the wallet in the `monero-wallet-rpc` daemon
to be loaded as we do on startup. As a consequence of this expectation,
restarting `monero-wallet-rpc` to fix bugs like #652 resulted in the
ASB no longer operating correctly.

To fix this, we now load the wallet on-demand in case the daemon responds
with the error code -13.

Ideally, we would implement this behaviour generically using the proxy
pattern on the `MoneroWalletRpc` trait. Unfortunately, when attempting
to do so we uncover a limitation in the design of `jsonrpc_client`.
This limitation is tracked in https://github.com/thomaseizinger/rust-jsonrpc-client/issues/47.
Once fixed, we can implement this logic in a more robust way that is not
tied to the `check_tx_key` RPC call but applies to any RPC call automatically.
2021-08-27 09:39:29 +10:00
Thomas Eizinger
c04d2dc944
Merge two CHANGED sections in old changelog entry 2021-08-26 23:24:47 +10:00
Thomas Eizinger
6c446825b7
Instruct Ping to keep the connection alive 2021-08-18 12:45:17 +10:00
COMIT Botty McBotface
7126d77dc1 Prepare release 0.8.1 2021-08-16 01:37:09 +00:00
Thomas Eizinger
0296509110
Upgrade to bdk 0.10
This fixes #546. I don't know why, but I can't reproduce the problem
with the updated dependency.
2021-08-12 18:47:05 +10:00
Thomas Eizinger
5c4aec6ae3
Rendezvous point is not defaulted 2021-07-09 14:19:21 +10:00
COMIT Botty McBotface
403e3d2b33 Prepare release 0.8.0 2021-07-09 02:02:13 +00:00
Daniel Karzel
0dc3943d9c
Update default Monero node URLs and info
xmr.to nodes are not served at the xmr.to domain but moved to melo.tools
2021-07-08 16:42:18 +10:00
Daniel Karzel
ab24f7bce5
Revert "Prepare release 0.8.0"
This reverts commit 50da9580
2021-07-08 15:03:37 +10:00
COMIT Botty McBotface
50da958078 Prepare release 0.8.0 2021-07-07 08:31:00 +00:00
Thomas Eizinger
40eccd089f
Change --data-dir for --data-base-dir 2021-07-07 17:14:55 +10:00
Thomas Eizinger
acfd2dd6bb
Store Monero receive address in database and load it on resume 2021-07-06 20:08:24 +10:00
Thomas Eizinger
5463bde4f8
Add a mandatory --change-address parameter to buy-xmr
Fixes #513.
2021-07-06 20:07:53 +10:00
Daniel Karzel
625ff4868a
Changelog entry for the rendezvous integration 2021-07-06 20:03:54 +10:00
Thomas Eizinger
ec4234fbb9
Merge --seller-addr and --seller-peer-id into --seller parameter
This simplifies the CLI's interface.
2021-07-06 14:51:08 +10:00
Thomas Eizinger
bb8e841b0d
Make CHANGELOG.md follow the semantic newline spec 2021-06-29 11:05:41 +10:00
Your Name
665ea503d2 Make price ticker ws url configurable 2021-06-28 03:19:49 -07:00
Daniel Karzel
8e80628a71
Changelog entry for price guarantee changes 2021-06-23 17:54:42 +10:00
Thomas Eizinger
8a30ef725c
Refactor transports to construct them specific for each application
Instead of splitting up the transports into capabilities, we compose
them directly for each application. This allows us to remove the
websocket transport for the CLI which is really only needed for the
ASB to allow retrieval of quotes via the browser.
2021-06-21 09:01:19 +10:00
xscd
03857ca835 Print the Bitcoin address to the terminal as a QR code 2021-06-16 15:18:16 +03:00
COMIT Botty McBotface
7e6ff81efb Prepare release 0.7.0 2021-05-28 07:17:26 +00:00
Daniel Karzel
202f6d1fa0
Bitcoin network check when building PSBT
This ensures that funds are not sent to an address on the wrong network.
2021-05-28 09:54:35 +10:00
Daniel Karzel
c9064d5a37
Add ping protocol to ensure connection is alive
Adds the ping behaviour to both ASB and CLI behaviour that periodically pings a connected party to ensure that the underlying network connection is still alive.
This fixes problems with long-running connections that become dead without a connection closure being reported back to the swarm.
2021-05-27 11:19:27 +10:00
COMIT Botty McBotface
3f2d094f65
Prepare release 0.6.0 2021-05-24 16:00:43 +10:00
Daniel Karzel
01af9a5676
Bitcoin transaction published state
This improves the error handling on the ASB.
Once the Bitcoin redeem transaction is seen in mempool, the state machine cannot transition to a cancel scenario anymore because at that point the CLI will have redeemed the Monero.
The additional state then waits for transaction finality.
2021-05-24 10:53:14 +10:00
Daniel Karzel
7ec323ea1f
Mainnet changelog entry 2021-05-20 13:03:33 +10:00
Daniel Karzel
1cdc23de32
Explicitly specify monero-wallet-rpc deamon port
In order to allow people to plug into public nodes / be more flexible with their own setup we now enforce specifying the monero daemon port to be used by the `monero-wallet-rpc`.
2021-05-14 09:50:52 +10:00
Philipp Hoenisch
fc0cceb180
Toggle json logs using commandline flag. 2021-05-11 15:28:25 +10:00
Daniel Karzel
652aae9590
Introduce a minimum buy amount
Introduces a minimum buy Bitcoin amount similar to the maximum amount already present.
For the CLI the minimum amount is enforced by waiting until at least the minimum is available as max-giveable amount.
2021-05-11 12:03:02 +10:00
Daniel Karzel
1d62f4916c
Move max_buy and ask_spread into config
Max-buy and spread is not something that one would configure on every run.
More convenient to keep this in the config.

The max-buy Bitcoin value was adapted to `0.02` which is more reasonable for mainnet.
Activated feature `serde-float` to serialize the spread (Decimal) as float instead of string.

```
...

[maker]
max_buy_btc = 0.02
ask_spread = 0.02
```
2021-05-11 12:02:57 +10:00
Daniel Karzel
daa572e5bf
Move recovery commands in dedicated module
Less clutter in the folder structure.
2021-05-07 16:21:02 +10:00
Daniel Karzel
4deb96a3c5
ASB manual recovery commands
Adds `cancel`, `refund`, `punish`, `redeem` and `safely-abort` commands to the ASB that can be used to trigger the specific scenario for the swap by ID.
2021-05-07 16:19:11 +10:00
Daniel Karzel
ea76ae5821
Return proper error to CLI for all expected scenarios
When a CLI requests a spot price have some errors that are expected, where we can provide a proper error message for the CLI:
- Balance of ASB too low
- Buy amount sent by CLI exceeds maximum buy amount accepted by ASB
- ASB is running in maintenance mode and does not accept incoming swap requests

All of these errors returns a proper error to the CLI and prints a warning in the ASB logs.
Any other unexpected error will result in closing the channel with the CLI and printing an error in the ASB logs.
2021-05-07 14:52:51 +10:00
Daniel Karzel
f6497778ed
Add resume-only mode for the ASB
Resume-only is a maintenance mode where no swaps are accepted but unfinished swaps are resumed.
This is achieve by ignoring incoming spot-price requests (that would lead to execution setup) in the event-loop.
2021-05-07 14:52:51 +10:00
Daniel Karzel
69f7565746
!fixup Different default directories for CLI and ASB
Using the same default directory as data-/config-dir has caused unwanted side effects when running both applications on the same machine.
Use these directory names:
- ASB: xmr-btc-swap/asb
- CLI: xmr-btc-swap/cli

Since the functionality is now application specific the respective functions were moved into the appropriate module of the application.
2021-04-30 11:03:13 +10:00
Daniel Karzel
b0ffeeab1d
Different default directories for CLI and ASB
Using the same default directory as data-/config-dir has caused unwanted side effects when running both applications on the same machine.
Use these directory names:
- ASB: xmr-btc-swap-asb
- CLI: xmr-btc-swap-cli

Since the functionality is now application specific the respective functions were moved into the appropriate module of the application.
2021-04-29 19:02:16 +10:00
Philipp Hoenisch
99db8c9108
Apply suggestions from code review
Co-authored-by: Daniel Karzel <daniel.karzel@coblox.tech>
2021-04-28 16:04:25 +10:00
Philipp Hoenisch
632293cf91
Add support for swapping through Tor.
This PR does a few things.
* It adds a TorTransport which either dials through Tor's socks5 proxy or via clearnet.
* It enables ASB to register hidden services for each network it is listening on. We assume that we only care about different ports and re-use the same onion-address for all of them. The ASB requires to have access to Tor's control port.
* It adds support to dial through a local Tor socks5 proxy. We assume that Tor is always available on localhost.  Swap cli only requires Tor to be running so that it can send messages via Tor's socks5 proxy.
* It adds a new e2e test which swaps through Tor. For this we assume that Tor is currently running on localhost. All other tests are running via clear net.
2021-04-27 14:51:41 +10:00
COMIT Botty McBotface
43dc74cd9d Prepare release 0.5.0 2021-04-17 07:23:09 +00:00
Daniel Karzel
a114460520
Better wording 2021-04-17 16:51:41 +10:00
Thomas Eizinger
d1bc7e8fc2
Add changelog entry for redial fix 2021-04-17 16:50:49 +10:00
Thomas Eizinger
e957cbd909
Rewrite changelog entry as fix rather than a change 2021-04-17 16:39:01 +10:00
Daniel Karzel
c1e993deb2
Json codec for quote protocol
A `RequestResponseCodec` for pull-based protocols where the response is encoded using JSON.
This was added to more properly express the behavior of the quote protocol, where the dialer
doesn't send any message and expects the listener to directly send the response.

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2021-04-16 16:00:45 +10:00
Daniel Karzel
f70e2aa8d6
Listen on tcp and websocket transports
- Listen on both tcp and websockets as default
- Listening addresses in config as array
- Configure fallback transport using `or_transport` - if listening on a given address fails on WS, we fall back to TCP.
2021-04-16 16:00:38 +10:00