Commit Graph

756 Commits

Author SHA1 Message Date
Daniel Karzel
35f206ca12 asb uses binary, asb staging services
Upgrading the asb by using latest release through GitHub API
Pull and build service can be used for staging.
2021-03-23 10:04:16 +11:00
Daniel Karzel
9c1cd794dd Fix asb name changes 2021-03-10 22:53:50 +11:00
Daniel Karzel
a22a975a4c Run bitcoind as simple to see logs in journalctl
Remove pid file
prevent from logging timestamps
2021-03-10 10:40:31 +11:00
Daniel Karzel
8f0b878204 bitcoind service 2021-03-09 17:52:25 +11:00
Daniel Karzel
cfb885c49e more cleanup 2021-03-09 17:35:00 +11:00
Daniel Karzel
70a90241cc Rename, log to journal, monerod service 2021-03-09 17:20:58 +11:00
Daniel Karzel
f87bdca3ec fix timer 2021-02-25 11:57:08 +11:00
Daniel Karzel
fbbae0eebd Switch from After to Required
start-asb.service should not start up if start-monero-wallet-rpc.service failed on startup.
This dependency is better expressed with Requires than with After because Requires will not start the unit upon failure of the required one.
2021-02-24 12:14:34 +11:00
Daniel Karzel
fbd0eb7548 Send emails OnFailure through dedicated service
The unit-status-email@.service allows being triggered through multiple services with @.
Note that everything after the @ is passed to the unit-status-email@.service as parameter.
We pass the complete service name OnFailure using %n.
The parameter can then be accessed by %i within the unit-status-email@.service.
Hence, to pass the service name to our email script for processing we use %i within unit-status-email@.service.
2021-02-24 12:12:38 +11:00
Daniel Karzel
85704d18f8 Combine stdout and stderr into one logfile 2021-02-24 10:14:27 +11:00
Daniel Karzel
0ebc9a79c7 Systemd service files and readme 2021-02-22 22:42:12 +11:00
Daniel Karzel
915026eb4d Systemd service files and readme 2021-02-22 21:59:02 +11:00
bors[bot]
61a8282be1
Merge #203
203: Introduce dynamic rates r=da-kami a=D4nte



Co-authored-by: Franck Royer <franck@coblox.tech>
Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: Daniel Karzel <daniel@comit.network>
2021-02-22 04:36:49 +00:00
bors[bot]
12c67bee3d
Merge #210
210: Change monitoring to default wallet r=da-kami a=da-kami

The automated swap backend (asb) requires Monero funds, because Alice is selling Monero.
We use a hardcoded default wallet named asb-wallet. This wallet is opened upon startup.
If the default wallet does not exist it will be created.

Additionally there is a check for the balance - if the balance is zero an address is printed for depositing funds.

Co-authored-by: Daniel Karzel <daniel@comit.network>
2021-02-22 04:03:35 +00:00
Daniel Karzel
b4ceee49df Change monitoring to default wallet
The automated swap backend (asb) requires Monero funds, because Alice is selling Monero.
We use a hardcoded default wallet named asb-wallet. This wallet is opened upon startup.
If the default wallet does not exist it will be created.
2021-02-22 15:00:06 +11:00
Daniel Karzel
9496dce917 Skip heartbeat messages 2021-02-22 14:51:22 +11:00
Thomas Eizinger
a8bfc1d686 Make LatestRate::Error require std::error::Error trait bound
This allows us to use .context instead of .map_err when calling
`latest_rate()`. For the static rate module, we simply fill in
`Infallible` which is actually better suited because it describes
that we are never using this error.
2021-02-22 13:27:47 +11:00
Thomas Eizinger
b47b06aa23 Import anyhow::Result across the codebase
There is no need to fully qualify this type because it is a type
alias for std::Result. We can mix and match the two as we want.
2021-02-22 13:26:56 +11:00
Franck Royer
519d1a5701 Log rate and amounts for Alice when doing execution setup 2021-02-22 13:26:27 +11:00
Franck Royer
b20c16df78 Improving logging on failure 2021-02-22 13:26:27 +11:00
Franck Royer
644f4c1732 Bubble up ws error to consumer
Note that because we are using `watch` channel, only a reference to the
channel value can be returned.
Hence, using custom Error that can be cloned to be able to
pass `Result` through the channel.
2021-02-22 13:26:27 +11:00
Franck Royer
92b3df4158 Introduce dynamic rates 2021-02-22 13:24:59 +11:00
bors[bot]
b9b8d2ce1a
Merge #215
215: Debug log level in monero harness tests to see RPC responses r=da-kami a=da-kami

CI keeps failing when generating blocks, but response is only printed on debug level.
To investigate what is the problem change monero-harness log levels to debug.

Example failure:

https://github.com/comit-network/xmr-btc-swap/runs/1938109584

The failure happened when generating blocks, but without seeing the response error it is impossible to know what happened. Could not reproduce this problem locally. 

Co-authored-by: Daniel Karzel <daniel@comit.network>
2021-02-22 01:18:56 +00:00
bors[bot]
0359f8fbc0
Merge #216
216: To avoid CI failure wait for the balance instead of sleep r=da-kami a=da-kami



Co-authored-by: Daniel Karzel <daniel@comit.network>
2021-02-22 01:09:08 +00:00
bors[bot]
a6724f29af
Merge #214
214: Rename nectar to asb (automated swap backend) r=da-kami a=da-kami



Co-authored-by: Daniel Karzel <daniel@comit.network>
2021-02-22 00:39:19 +00:00
Daniel Karzel
bdb35c310d To avoid CI failure wait for the balance instead of sleep 2021-02-22 11:36:14 +11:00
Daniel Karzel
7e25c4ad4f Debug log level in monero harness tests to see RPC responses
CI keeps failing when generating blocks, but response is only printed on debug level.
To investigate what is the problem change monero-harness log levels to debug.
2021-02-22 11:03:21 +11:00
bors[bot]
81228c9d5b
Merge #209
209: Upgrade to bdk 0.4 r=thomaseizinger a=thomaseizinger

Effectively, this also means:

- Upgrading to rust-bitcoin 0.26
- Upgrading to miniscript 5
- Upgrading monero to 0.10
- Upgrading curve25519-dalek to 3
- Upgrading bitcoin-harness to rust-bitcoin 0.26 (https://github.com/coblox/bitcoin-harness-rs/pull/21)
- Upgrade `ecdsa_fun` to latest version
- Replace `cross_curve_dleq` with `sigma_fun` (to avoid an upgrade dance on that library)

I refrained from specifying `rev`s in the Cargo.toml because we have a lock-file anyway. This should allow us to update those dependencies easier in the future by just running `cargo update -p <dependency>`.

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2021-02-22 00:00:06 +00:00
bors[bot]
c4df3fdcbc
Merge #213
213: Properly calculate the confirmations for Bitcoin tx r=da-kami a=da-kami

Once the transaction was included into a block it has one confirmation - before inclusion it has zero.
current-block-height - transaction-block-height = zero; but that means one confirmation.
Hence, the confirmation calculation was adapted to: Current-block-height - (transaction-block-height - 1).

I could not think of a more elegant solution - if you have one please comment :)

Co-authored-by: Daniel Karzel <daniel@comit.network>
2021-02-21 23:30:17 +00:00
Daniel Karzel
fe3d6f1fef Rename nectar to asb (automated swap backend) 2021-02-22 10:24:11 +11:00
Daniel Karzel
164de3c524 Properly calculate the confirmations for Bitcoin tx
Once the transaction was included into a block it has one confirmation - before inclusion it has zero.
current-block-height - transaction-block-height = zero; but that means one confirmation.
Hence, the confirmation calculation was adapted to: Current-block-height - (transaction-block-height - 1).
2021-02-19 17:09:53 +11:00
Thomas Eizinger
2d8ede80e1
Use released version of backoff 2021-02-19 15:18:40 +11:00
Thomas Eizinger
cabf0efb8c
Only construct proof system once
The proof system is a static element and can be reused several times.
2021-02-19 15:18:39 +11:00
Thomas Eizinger
84bc2c82b7
Upgrade to bdk 4.0
To achieve this we also:

- upgrade rust-bitcoin to 0.26
- upgrade bitcoin-harness to latest version (which also depends bitcoin 0.26)
- upgrade to latest edcsa-fun
- replace cross_curve_dleq proof with sigma_fun (to avoid an upgrade dance over there)
2021-02-19 15:18:37 +11:00
bors[bot]
374c2d4372
Merge #205
205: Optimize GitHub workflow file r=thomaseizinger a=thomaseizinger

See commit messages for further details.

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2021-02-18 05:56:02 +00:00
Thomas Eizinger
fb45ff66eb
Update rust-toolchain to new toml syntax
This allows us to completely skip the "Install Rust" step in CI
because the rust-toolchain file completely describes what we need.
The first invocation of cargo will simply install all the required
components.

Additionally, we make all caches dependant on the version of Rust
that we require.
2021-02-18 13:16:05 +11:00
Thomas Eizinger
8072f4d7ee
Only install tomlfmt if we don't have ~/.cargo/bin cached 2021-02-18 13:15:30 +11:00
bors[bot]
b3f49cf83e
Merge #200
200: Wait for refund if insufficient Monero is locked up r=da-kami a=da-kami

In a scenario where Alice does not lock up sufficient funds Bob should properly transition to refunds. At the moment the CLI just panics. 
I noticed this when Alice accidentally had a different amount set than Bob. In the future this should not happen, because Alice provides the amount for Bob. However, in case Alice is malicious Bob should still transition correctly. 

Co-authored-by: Daniel Karzel <daniel@comit.network>
2021-02-17 05:00:39 +00:00
bors[bot]
8537b88a68
Merge #201
201: Fix ASB - Prevent the future from being stopped in production r=da-kami a=da-kami



Co-authored-by: Daniel Karzel <daniel@comit.network>
2021-02-17 04:45:48 +00:00
Thomas Eizinger
a3b5c13b52
Upgrade to actions/cache@v2.1.4
Usually, we can follow the rolling major tag (@v2) of actions.
However the recent release (2.1.4) is not yet included. See
https://github.com/actions/cache/issues/528 for more details.

We do want to depend on 2.1.4 because it contains a fix that allows
us to use the cache action MacOS. v2 also features better compression
and allows for multiple paths to be specified.
2021-02-17 14:50:44 +11:00
Thomas Eizinger
f1b097877b
Split build_test into build and test
Building binaries and building tests results in different artifacts
inside the `target` directory. If we use distinct caches for these
commands, the caches are more useful because less code has to be
re-built.
2021-02-17 14:46:12 +11:00
Thomas Eizinger
e57c005920
Remove unused matrix entry 2021-02-17 14:43:53 +11:00
Thomas Eizinger
acbc0f5551
Upload nectar binary in addition to swap_cli 2021-02-17 14:42:15 +11:00
Thomas Eizinger
3c7880f771
Fix path to CLI for artifact upload
The name was recently changed but the workflow wasn't adapted.
2021-02-17 14:40:34 +11:00
bors[bot]
48635156ad
Merge #206
206: Remove misplaced wallet sync call r=rishflab a=rishflab

These bdk wallet sync calls must of gotten lost during a rebase. Removed the call in build TxLock and added one when nectar starts up

Co-authored-by: rishflab <rishflab@hotmail.com>
2021-02-17 03:36:25 +00:00
bors[bot]
bd00abe070
Merge #204
204: Upgrade to testcontainers v0.12 r=thomaseizinger a=thomaseizinger



Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2021-02-17 01:16:50 +00:00
Daniel Karzel
babd1d7b60
Wait for refund if insufficient Monero is locked up 2021-02-17 11:58:05 +11:00
Daniel Karzel
ebb869e6f4 Distinguish transient and permanent Electrum errors 2021-02-17 11:56:17 +11:00
Daniel Karzel
9b93cabfdf Use context instead of map_error 2021-02-17 11:09:09 +11:00
rishflab
fe362d765b Add sync wallet on nectar's startup 2021-02-17 10:56:39 +11:00