558: Remove websocket transport from CLI r=thomaseizinger a=thomaseizinger
I've also incorporated some of the ideas in how to modularize the Tor integration with libp2p. For more details, please see the individual patches.
Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
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.
Libp2p's transports are meant to be composed. Hence, any form of
fallback should be implemented by emitting `MultiaddrNotSupported`
from the `listen` and `dial` functions.
This allows us to completely remove the tcp transport from the tor
transport.
549: Bump Swatinem/rust-cache from 1.2.0 to 1.3.0 r=thomaseizinger a=dependabot[bot]
Bumps [Swatinem/rust-cache](https://github.com/Swatinem/rust-cache) from 1.2.0 to 1.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/releases">Swatinem/rust-cache's releases</a>.</em></p>
<blockquote>
<h2>v1.3.0</h2>
<ul>
<li>Use Rust toolchain file as additional cache key.</li>
<li>Allow for a configurable target-dir.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/blob/v1/CHANGELOG.md">Swatinem/rust-cache's changelog</a>.</em></p>
<blockquote>
<h2>1.3.0</h2>
<ul>
<li>Use Rust toolchain file as additional cache key.</li>
<li>Allow for a configurable target-dir.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="842ef286ff"><code>842ef28</code></a> update dependencies and rebuild</li>
<li><a href="1b344a0a23"><code>1b344a0</code></a> prepare new version</li>
<li><a href="31c41a926e"><code>31c41a9</code></a> Handle missing cargo installs gracefully</li>
<li><a href="ebd95456c3"><code>ebd9545</code></a> rebuild</li>
<li><a href="3b8bbcb11d"><code>3b8bbcb</code></a> add description</li>
<li><a href="f82d41bcc2"><code>f82d41b</code></a> feat: allow for configurable target-dir</li>
<li><a href="063471b9dd"><code>063471b</code></a> update dependencies</li>
<li><a href="ce325b6065"><code>ce325b6</code></a> rebuild</li>
<li><a href="da42bbe56d"><code>da42bbe</code></a> Additionally key on Rust toolchain file(s) if present</li>
<li>See full diff in <a href="https://github.com/Swatinem/rust-cache/compare/v1.2.0...v1.3.0">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Swatinem/rust-cache&package-manager=github_actions&previous-version=1.2.0&new-version=1.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
551: Bump strum from 0.20.0 to 0.21.0 r=thomaseizinger a=dependabot[bot]
Bumps [strum](https://github.com/Peternator7/strum) from 0.20.0 to 0.21.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Peternator7/strum/blob/master/CHANGELOG.md">strum's changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/Peternator7/strum/commits">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=strum&package-manager=cargo&previous-version=0.20.0&new-version=0.21.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
555: Bump zip from 0.5.12 to 0.5.13 r=thomaseizinger a=dependabot[bot]
Bumps [zip](https://github.com/zip-rs/zip) from 0.5.12 to 0.5.13.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/zip-rs/zip/commits">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zip&package-manager=cargo&previous-version=0.5.12&new-version=0.5.13)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
539: Bump rust_decimal_macros from 1.13.0 to 1.14.1 r=thomaseizinger a=dependabot[bot]
Bumps [rust_decimal_macros](https://github.com/paupino/rust-decimal) from 1.13.0 to 1.14.1.
<details>
<summary>Commits</summary>
<ul>
<li><a href="e346c59b35"><code>e346c59</code></a> Version 1.14.1</li>
<li><a href="91163c4a2f"><code>91163c4</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/386">#386</a> from paupino/issues/384</li>
<li><a href="3a4393012c"><code>3a43930</code></a> Replace negate with wrapping_neg to prevent overflow</li>
<li><a href="4b59f535fb"><code>4b59f53</code></a> Attempt to reproduce <a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/384">#384</a></li>
<li><a href="1ea5b89f9e"><code>1ea5b89</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/385">#385</a> from paupino/feature/exp-underflow</li>
<li><a href="779de167bf"><code>779de16</code></a> Fix some unrelated documentation</li>
<li><a href="569f5b3b34"><code>569f5b3</code></a> Add test for panic conditions</li>
<li><a href="b7279d8a60"><code>b7279d8</code></a> Add in better logic for negative exp</li>
<li><a href="8b4f146ca7"><code>8b4f146</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/381">#381</a> from paupino/version/1.14.0</li>
<li><a href="93bed3c976"><code>93bed3c</code></a> Version 1.14.0</li>
<li>Additional commits viewable in <a href="https://github.com/paupino/rust-decimal/compare/1.13.0...1.14.1">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rust_decimal_macros&package-manager=cargo&previous-version=1.13.0&new-version=1.14.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
515: Make it easier to create a bitcoin::Wallet for testing r=thomaseizinger a=thomaseizinger
Forcing the user to create an implementation of `EstimateFeeRate`
every time they want to create a wallet for testing is tedious and
leads to duplicated code.
The implementation for tests is rarely dynamic and thus can be
simplified to static arguments.
This also allows us to provide convenience constructors to make tests
that don't care about fees less distracting by reducing the number of
constants that are floating around.
Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
541: Bump rust_decimal from 1.13.0 to 1.14.1 r=thomaseizinger a=dependabot[bot]
Bumps [rust_decimal](https://github.com/paupino/rust-decimal) from 1.13.0 to 1.14.1.
<details>
<summary>Commits</summary>
<ul>
<li><a href="e346c59b35"><code>e346c59</code></a> Version 1.14.1</li>
<li><a href="91163c4a2f"><code>91163c4</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/386">#386</a> from paupino/issues/384</li>
<li><a href="3a4393012c"><code>3a43930</code></a> Replace negate with wrapping_neg to prevent overflow</li>
<li><a href="4b59f535fb"><code>4b59f53</code></a> Attempt to reproduce <a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/384">#384</a></li>
<li><a href="1ea5b89f9e"><code>1ea5b89</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/385">#385</a> from paupino/feature/exp-underflow</li>
<li><a href="779de167bf"><code>779de16</code></a> Fix some unrelated documentation</li>
<li><a href="569f5b3b34"><code>569f5b3</code></a> Add test for panic conditions</li>
<li><a href="b7279d8a60"><code>b7279d8</code></a> Add in better logic for negative exp</li>
<li><a href="8b4f146ca7"><code>8b4f146</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/381">#381</a> from paupino/version/1.14.0</li>
<li><a href="93bed3c976"><code>93bed3c</code></a> Version 1.14.0</li>
<li>Additional commits viewable in <a href="https://github.com/paupino/rust-decimal/compare/1.13.0...1.14.1">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rust_decimal&package-manager=cargo&previous-version=1.13.0&new-version=1.14.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
545: Release version 0.7.0 r=da-kami a=comit-botty-mc-botface
Hi @da-kami!
This PR was created in response to a manual trigger of the release workflow here: https://github.com/comit-network/xmr-btc-swap/actions/runs/884754906.
I've updated the changelog and bumped the versions in the manifest files in this commit: 7e6ff81efb.
Merging this PR will create a GitHub release and upload any assets that are created as part of the release build.
Co-authored-by: COMIT Botty McBotface <botty@coblox.tech>
531: Bump thiserror from 1.0.24 to 1.0.25 r=thomaseizinger a=dependabot[bot]
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.24 to 1.0.25.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/thiserror/releases">thiserror's releases</a>.</em></p>
<blockquote>
<h2>1.0.25</h2>
<ul>
<li>Support <code>error(transparent)</code> on errors containing a non-<code>'static</code> inner error (<a href="https://github-redirect.dependabot.com/dtolnay/thiserror/issues/113">#113</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="19cb5cee4b"><code>19cb5ce</code></a> Release 1.0.25</li>
<li><a href="e49c10f2ba"><code>e49c10f</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/thiserror/issues/134">#134</a> from dtolnay/nonstatic</li>
<li><a href="1ed8751081"><code>1ed8751</code></a> Support non-static AsDynError lifetimes</li>
<li><a href="51a1ff6593"><code>51a1ff6</code></a> Add regression test for issue 113</li>
<li><a href="ee2a47d3af"><code>ee2a47d</code></a> Adjust macro hygiene test formatting</li>
<li><a href="c610d97267"><code>c610d97</code></a> Update ui test suite to nightly-2021-05-14</li>
<li><a href="c10adbc25e"><code>c10adbc</code></a> Ignore manual_map clippy lint</li>
<li>See full diff in <a href="https://github.com/dtolnay/thiserror/compare/1.0.24...1.0.25">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=thiserror&package-manager=cargo&previous-version=1.0.24&new-version=1.0.25)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
535: Bitcoin network check when building PSBT r=da-kami a=da-kami
This ensures that funds are not sent to an address on the wrong network.
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Daniel Karzel <daniel@comit.network>
521: Introduce dedicated ParseResult to simplify error handling in main r=da-kami a=thomaseizinger
543: Tell dependabot to stop automatically rebasing PRs r=thomaseizinger a=thomaseizinger
This interferes with bors trying to merge several PRs at once.
Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
Forcing the user to create an implementation of `EstimateFeeRate`
every time they want to create a wallet for testing is tedious and
leads to duplicated code.
The implementation for tests is rarely dynamic and thus can be
simplified to static arguments.
This also allows us to provide convenience constructors to make tests
that don't care about fees less distracting by reducing the number of
constants that are floating around.
542: More resilient `MoneroWalletRpc` startup in the harness r=da-kami a=da-kami
Recently we se this problem on CI quite often:
```
May 27 01:26:55.898 INFO testcontainers::core::wait_for_message: Found message after comparing 80 lines
May 27 01:27:00.858 INFO testcontainers::core::wait_for_message: Found message after comparing 2 lines
May 27 01:27:00.859 INFO monero_harness: Starting monerod: DQma_monerod
May 27 01:27:08.143 INFO testcontainers::core::wait_for_message: Found message after comparing 183 lines
May 27 01:27:08.204 INFO monero_harness: Starting miner wallet: miner
May 27 01:27:09.832 INFO testcontainers::core::wait_for_message: Found message after comparing 16 lines
May 27 01:27:12.261 INFO monero_harness: Starting wallet: alice
May 27 01:27:14.482 INFO testcontainers::core::wait_for_message: Found message after comparing 16 lines
thread 'alice_punishes_after_restart_if_bob_dead' panicked at 'called `Result::unwrap()` on an `Err` value: error sending request for url (http://127.0.0.1:49177/json_rpc): operation was canceled: connection closed before message completed
```
Given the message `connection closed before message completed` it is likely that the `monero-wallet-rpc` is not fully started yet.
Unfortunately we cannot wait to see a different message in the logs upon container startup, because there are just no further deterministic messages after the one we are currently listening on.
To overcome this problem without extending testcontainers we introduce a retry mechanism when creating the wallet.
Co-authored-by: Daniel Karzel <daniel@comit.network>
538: Add ping protocol to ensure connection is alive r=da-kami a=da-kami
Fixes#532
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.
Co-authored-by: Daniel Karzel <daniel@comit.network>
Recently we se this problem on CI quite often:
```
May 27 01:26:55.898 INFO testcontainers::core::wait_for_message: Found message after comparing 80 lines
May 27 01:27:00.858 INFO testcontainers::core::wait_for_message: Found message after comparing 2 lines
May 27 01:27:00.859 INFO monero_harness: Starting monerod: DQma_monerod
May 27 01:27:08.143 INFO testcontainers::core::wait_for_message: Found message after comparing 183 lines
May 27 01:27:08.204 INFO monero_harness: Starting miner wallet: miner
May 27 01:27:09.832 INFO testcontainers::core::wait_for_message: Found message after comparing 16 lines
May 27 01:27:12.261 INFO monero_harness: Starting wallet: alice
May 27 01:27:14.482 INFO testcontainers::core::wait_for_message: Found message after comparing 16 lines
thread 'alice_punishes_after_restart_if_bob_dead' panicked at 'called `Result::unwrap()` on an `Err` value: error sending request for url (http://127.0.0.1:49177/json_rpc): operation was canceled: connection closed before message completed
```
Given the message `connection closed before message completed` it is likely that the `monero-wallet-rpc` is not fully started yet.
Unfortunately we cannot wait to see a different message in the logs, because there are just no further deterministic messages after the one we are currently listening on.
to overcome this problem without extending testcontainers we introduce a retry mechanism when creating the wallet.
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.