Compare commits

...

705 Commits

Author SHA1 Message Date
binarybaron
81b89d63c2
docs: Add notice about breaking backwards compatability 2024-11-20 15:24:06 +01:00
Binarybaron
a2cc3591b1 fix: do not panic if electrum server does not support fee estimation 2024-11-11 16:43:43 +01:00
Binarybaron
44fafc792e feat(asb): Add Dockerfile 2024-11-11 16:02:55 +01:00
Byron Hambly
050d4f5f48
Merge pull request #1801 from comit-network/dependabot/cargo/anyhow-1.0.91
build(deps): bump anyhow from 1.0.90 to 1.0.91
2024-10-24 08:26:23 +02:00
Byron Hambly
0fb411c8a6
Merge pull request #1803 from comit-network/dependabot/cargo/thiserror-1.0.65
build(deps): bump thiserror from 1.0.64 to 1.0.65
2024-10-24 08:25:50 +02:00
Byron Hambly
d69cf30efe
Merge pull request #1794 from comit-network/dependabot/cargo/uuid-1.11.0
build(deps): bump uuid from 1.10.0 to 1.11.0
2024-10-24 08:25:41 +02:00
dependabot[bot]
fac5df93fa
build(deps): bump thiserror from 1.0.64 to 1.0.65
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.64 to 1.0.65.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.64...1.0.65)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-23 11:46:56 +00:00
dependabot[bot]
02a3711cc9
build(deps): bump anyhow from 1.0.90 to 1.0.91
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.90 to 1.0.91.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.90...1.0.91)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-23 11:45:51 +00:00
Byron Hambly
4afd8a44e4
Merge pull request #1793 from comit-network/dependabot/cargo/futures-0.3.31
build(deps): bump futures from 0.3.30 to 0.3.31
2024-10-22 09:44:27 +02:00
Byron Hambly
8e6327a2e6
Merge pull request #1795 from comit-network/dependabot/cargo/hyper-1.5.0
build(deps): bump hyper from 1.4.1 to 1.5.0
2024-10-22 09:43:57 +02:00
Byron Hambly
cb42f7ae27
Merge pull request #1799 from comit-network/dependabot/cargo/serde_json-1.0.132
build(deps): bump serde_json from 1.0.128 to 1.0.132
2024-10-22 09:43:26 +02:00
Byron Hambly
d5d2663442
Merge pull request #1798 from comit-network/dependabot/cargo/anyhow-1.0.90
build(deps): bump anyhow from 1.0.89 to 1.0.90
2024-10-22 09:43:16 +02:00
dependabot[bot]
7b1b5ec3a5
build(deps): bump serde_json from 1.0.128 to 1.0.132
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.128 to 1.0.132.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/1.0.128...1.0.132)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 11:45:16 +00:00
dependabot[bot]
de7c8aec0a
build(deps): bump anyhow from 1.0.89 to 1.0.90
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.89 to 1.0.90.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.89...1.0.90)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 11:44:43 +00:00
dependabot[bot]
d521815e91
build(deps): bump hyper from 1.4.1 to 1.5.0
Bumps [hyper](https://github.com/hyperium/hyper) from 1.4.1 to 1.5.0.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v1.4.1...v1.5.0)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-16 11:58:25 +00:00
dependabot[bot]
ec567ccba1
build(deps): bump uuid from 1.10.0 to 1.11.0
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.10.0 to 1.11.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.10.0...1.11.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-16 11:55:59 +00:00
dependabot[bot]
61c7afb358
build(deps): bump futures from 0.3.30 to 0.3.31
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.30 to 0.3.31.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.30...0.3.31)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-15 11:32:11 +00:00
Byron Hambly
d841741d3c
Merge pull request #1779 from comit-network/dependabot/cargo/async-trait-0.1.83
build(deps): bump async-trait from 0.1.82 to 0.1.83
2024-10-14 13:52:16 +02:00
Byron Hambly
f2ee1004e1
Merge pull request #1783 from comit-network/dependabot/cargo/regex-1.11.0
build(deps): bump regex from 1.10.6 to 1.11.0
2024-10-14 13:52:06 +02:00
Byron Hambly
f151653c65
Merge pull request #1785 from comit-network/dependabot/cargo/tempfile-3.13.0
build(deps): bump tempfile from 3.12.0 to 3.13.0
2024-10-14 13:51:56 +02:00
Byron Hambly
9e68fd0d9f
Merge pull request #1786 from comit-network/dependabot/cargo/reqwest-0.12.8
build(deps): bump reqwest from 0.12.7 to 0.12.8
2024-10-14 13:51:49 +02:00
Byron Hambly
5d88d33243
Merge pull request #1787 from comit-network/dependabot/cargo/once_cell-1.20.2
build(deps): bump once_cell from 1.20.0 to 1.20.2
2024-10-14 13:51:39 +02:00
Byron Hambly
23980df163
Merge pull request #1789 from comit-network/dependabot/github_actions/actions/checkout-4.2.1
build(deps): bump actions/checkout from 4.1.7 to 4.2.1
2024-10-14 13:51:30 +02:00
Byron Hambly
a837d1c22b
Merge pull request #1792 from comit-network/dependabot/github_actions/Swatinem/rust-cache-2.7.5
build(deps): bump Swatinem/rust-cache from 2.7.3 to 2.7.5
2024-10-14 13:51:01 +02:00
dependabot[bot]
3d4bc971a2
build(deps): bump Swatinem/rust-cache from 2.7.3 to 2.7.5
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.7.3 to 2.7.5.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/swatinem/rust-cache/compare/v2.7.3...v2.7.5)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 11:07:29 +00:00
binarybaron
19710e296d
docs: Add notice to ReadMe about status of maintenance (#1790)
docs: Add notice to ReadMe about status of maintenance and reference community fork at UnstoppableSwap/core
2024-10-09 14:58:27 +02:00
dependabot[bot]
851086c5a2
build(deps): bump actions/checkout from 4.1.7 to 4.2.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.7...v4.2.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-08 11:47:11 +00:00
dependabot[bot]
88e6112736
build(deps): bump once_cell from 1.20.0 to 1.20.2
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.20.0 to 1.20.2.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.20.0...v1.20.2)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 11:39:41 +00:00
dependabot[bot]
a3ffd35fc0
build(deps): bump reqwest from 0.12.7 to 0.12.8
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.12.7 to 0.12.8.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.12.7...v0.12.8)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 11:09:42 +00:00
dependabot[bot]
12c6974458
build(deps): bump tempfile from 3.12.0 to 3.13.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.12.0 to 3.13.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.12.0...v3.13.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 11:37:04 +00:00
dependabot[bot]
6abd951b46
build(deps): bump regex from 1.10.6 to 1.11.0
Bumps [regex](https://github.com/rust-lang/regex) from 1.10.6 to 1.11.0.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.10.6...1.11.0)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 11:36:32 +00:00
Byron Hambly
bfb0053919
Merge pull request #1778 from comit-network/dependabot/cargo/thiserror-1.0.64
build(deps): bump thiserror from 1.0.63 to 1.0.64
2024-09-25 14:34:15 +02:00
Byron Hambly
c78ffa7351
Merge pull request #1776 from comit-network/dependabot/cargo/once_cell-1.20.0
build(deps): bump once_cell from 1.19.0 to 1.20.0
2024-09-25 14:34:06 +02:00
dependabot[bot]
523adc6d26
build(deps): bump async-trait from 0.1.82 to 0.1.83
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.82 to 0.1.83.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.82...0.1.83)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-25 11:18:25 +00:00
dependabot[bot]
e01986bb50
build(deps): bump thiserror from 1.0.63 to 1.0.64
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.63 to 1.0.64.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.63...1.0.64)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 11:42:15 +00:00
Byron Hambly
a979871610
Merge pull request #1775 from comit-network/dependabot/cargo/anyhow-1.0.89
build(deps): bump anyhow from 1.0.88 to 1.0.89
2024-09-16 13:30:09 +02:00
dependabot[bot]
e3f31af88a
build(deps): bump once_cell from 1.19.0 to 1.20.0
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.19.0 to 1.20.0.
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.19.0...v1.20.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 11:15:38 +00:00
dependabot[bot]
fe77b5af95
build(deps): bump anyhow from 1.0.88 to 1.0.89
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.88 to 1.0.89.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.88...1.0.89)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 11:14:20 +00:00
Byron Hambly
f20d71f74b
Merge pull request #1771 from comit-network/dependabot/cargo/serde-1.0.210
build(deps): bump serde from 1.0.208 to 1.0.210
2024-09-12 13:55:19 +02:00
Byron Hambly
0584256622
Merge pull request #1768 from comit-network/dependabot/cargo/tokio-util-0.7.12
build(deps): bump tokio-util from 0.7.11 to 0.7.12
2024-09-12 13:55:09 +02:00
Byron Hambly
dcb4d02988
Merge pull request #1767 from comit-network/dependabot/cargo/serde_json-1.0.128
build(deps): bump serde_json from 1.0.124 to 1.0.128
2024-09-12 13:54:57 +02:00
Byron Hambly
545ef8fb30
Merge pull request #1766 from comit-network/dependabot/cargo/async-trait-0.1.82
build(deps): bump async-trait from 0.1.81 to 0.1.82
2024-09-12 13:54:47 +02:00
Byron Hambly
433ed87263
Merge pull request #1773 from comit-network/dependabot/cargo/anyhow-1.0.88
build(deps): bump anyhow from 1.0.86 to 1.0.88
2024-09-12 13:53:46 +02:00
dependabot[bot]
8022d8b423
build(deps): bump anyhow from 1.0.86 to 1.0.88
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.86 to 1.0.88.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.86...1.0.88)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-12 11:08:00 +00:00
dependabot[bot]
4114772bb7
build(deps): bump serde from 1.0.208 to 1.0.210
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.208 to 1.0.210.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.208...v1.0.210)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 12:02:58 +00:00
dependabot[bot]
ff9f349889
build(deps): bump tokio-util from 0.7.11 to 0.7.12
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.11 to 0.7.12.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.11...tokio-util-0.7.12)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-05 11:47:31 +00:00
dependabot[bot]
a8a99db738
build(deps): bump serde_json from 1.0.124 to 1.0.128
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.124 to 1.0.128.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.124...1.0.128)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-05 11:47:01 +00:00
dependabot[bot]
29ee6acb95
build(deps): bump async-trait from 0.1.81 to 0.1.82
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.81 to 0.1.82.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.81...0.1.82)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 11:31:16 +00:00
Byron Hambly
aef729331f
Merge pull request #1760 from comit-network/dependabot/cargo/regex-1.10.6
build(deps): bump regex from 1.10.5 to 1.10.6
2024-08-22 15:18:09 +02:00
dependabot[bot]
2faf7561bd
build(deps): bump regex from 1.10.5 to 1.10.6
Bumps [regex](https://github.com/rust-lang/regex) from 1.10.5 to 1.10.6.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.10.5...1.10.6)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 11:57:24 +00:00
Einliterflasche
7871cf256b
feat(asb + cli): Redact logs + unify tracing infrastructure (#1733) 2024-08-21 16:33:04 +02:00
Byron Hambly
55bfd95694
Merge pull request #1759 from comit-network/dependabot/cargo/reqwest-0.12.7
build(deps): bump reqwest from 0.12.5 to 0.12.7
2024-08-20 15:43:11 +02:00
dependabot[bot]
3cebddf593
build(deps): bump reqwest from 0.12.5 to 0.12.7
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.12.5 to 0.12.7.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.12.5...v0.12.7)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-20 11:31:40 +00:00
Byron Hambly
c3831e93cc
Merge pull request #1758 from comit-network/dependabot/cargo/serde-1.0.208
build(deps): bump serde from 1.0.206 to 1.0.208
2024-08-16 13:50:10 +02:00
dependabot[bot]
4eff6fe503
build(deps): bump serde from 1.0.206 to 1.0.208
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.206 to 1.0.208.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.206...v1.0.208)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-16 11:04:29 +00:00
Byron Hambly
018e803f88
Merge pull request #1754 from comit-network/dependabot/cargo/serde-1.0.206
build(deps): bump serde from 1.0.205 to 1.0.206
2024-08-12 15:19:57 +02:00
Byron Hambly
504d05bfad
Merge pull request #1753 from comit-network/dependabot/cargo/serde_json-1.0.124
build(deps): bump serde_json from 1.0.122 to 1.0.124
2024-08-12 15:19:47 +02:00
dependabot[bot]
33901a2ea9
build(deps): bump serde from 1.0.205 to 1.0.206
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.205 to 1.0.206.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.205...v1.0.206)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 11:07:58 +00:00
dependabot[bot]
c8cbd27b79
build(deps): bump serde_json from 1.0.122 to 1.0.124
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.122 to 1.0.124.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.122...v1.0.124)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 11:07:36 +00:00
Byron Hambly
f755993fc6
Merge pull request #1748 from comit-network/dependabot/cargo/tempfile-3.12.0
build(deps): bump tempfile from 3.11.0 to 3.12.0
2024-08-08 15:08:23 +02:00
Byron Hambly
ae614b5567
Merge pull request #1750 from comit-network/dependabot/cargo/serde-1.0.205
build(deps): bump serde from 1.0.204 to 1.0.205
2024-08-08 15:07:57 +02:00
dependabot[bot]
f799da5203
build(deps): bump serde from 1.0.204 to 1.0.205
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.204 to 1.0.205.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.204...v1.0.205)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-08 11:50:16 +00:00
dependabot[bot]
952fb71a6a
build(deps): bump tempfile from 3.11.0 to 3.12.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.11.0 to 3.12.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/commits)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-07 11:15:11 +00:00
Byron Hambly
180458d587
Merge pull request #1746 from comit-network/dependabot/cargo/tempfile-3.11.0
build(deps): bump tempfile from 3.10.1 to 3.11.0
2024-08-05 14:15:21 +02:00
dependabot[bot]
6a76e9efbe
build(deps): bump tempfile from 3.10.1 to 3.11.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.10.1 to 3.11.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.10.1...v3.11.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-05 11:18:44 +00:00
Byron Hambly
7634fe1702
Merge pull request #1744 from comit-network/dependabot/cargo/serde_json-1.0.122
build(deps): bump serde_json from 1.0.121 to 1.0.122
2024-08-05 09:47:37 +02:00
dependabot[bot]
9aaa7d358f
build(deps): bump serde_json from 1.0.121 to 1.0.122
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.121 to 1.0.122.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.121...v1.0.122)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-02 11:39:10 +00:00
Byron Hambly
204aa85e59
Merge pull request #1741 from comit-network/dependabot/cargo/mockito-1.5.0
build(deps): bump mockito from 1.4.0 to 1.5.0
2024-08-01 20:26:23 +02:00
Byron Hambly
7c509d3ea3
Merge pull request #1742 from comit-network/dependabot/cargo/toml-0.8.19
build(deps): bump toml from 0.8.17 to 0.8.19
2024-08-01 20:24:43 +02:00
binarybaron
cc854be8f4
feat: Enhance history command with more swap details (#1725) 2024-08-01 18:35:03 +02:00
dependabot[bot]
af6bc47ed3
build(deps): bump toml from 0.8.17 to 0.8.19
Bumps [toml](https://github.com/toml-rs/toml) from 0.8.17 to 0.8.19.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.17...toml-v0.8.19)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 11:39:35 +00:00
dependabot[bot]
587212abc7
build(deps): bump mockito from 1.4.0 to 1.5.0
Bumps [mockito](https://github.com/lipanski/mockito) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/lipanski/mockito/releases)
- [Commits](https://github.com/lipanski/mockito/compare/1.4.0...1.5.0)

---
updated-dependencies:
- dependency-name: mockito
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 11:38:09 +00:00
Byron Hambly
b18ba95e8c
Merge pull request #1740 from comit-network/dependabot/cargo/toml-0.8.17
build(deps): bump toml from 0.8.16 to 0.8.17
2024-07-31 17:40:25 +02:00
dependabot[bot]
6e09c73cf3
build(deps): bump toml from 0.8.16 to 0.8.17
Bumps [toml](https://github.com/toml-rs/toml) from 0.8.16 to 0.8.17.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.16...toml-v0.8.17)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-31 11:39:26 +00:00
Byron Hambly
132cfe782c
Merge pull request #1736 from comit-network/dependabot/github_actions/thomaseizinger/keep-a-changelog-new-release-3.1.0
build(deps): bump thomaseizinger/keep-a-changelog-new-release from 3.0.0 to 3.1.0
2024-07-29 19:38:20 +02:00
Byron Hambly
3611a1aced
Merge pull request #1737 from comit-network/dependabot/cargo/serde_json-1.0.121
build(deps): bump serde_json from 1.0.118 to 1.0.121
2024-07-29 19:37:51 +02:00
Byron Hambly
21f26a5b44
Merge pull request #1738 from comit-network/dependabot/cargo/tokio-socks-0.5.2
build(deps): bump tokio-socks from 0.5.1 to 0.5.2
2024-07-29 19:37:28 +02:00
dependabot[bot]
9700d192b2
build(deps): bump tokio-socks from 0.5.1 to 0.5.2
Bumps [tokio-socks](https://github.com/sticnarf/tokio-socks) from 0.5.1 to 0.5.2.
- [Release notes](https://github.com/sticnarf/tokio-socks/releases)
- [Changelog](https://github.com/sticnarf/tokio-socks/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sticnarf/tokio-socks/compare/v0.5.1...v0.5.2)

---
updated-dependencies:
- dependency-name: tokio-socks
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-29 12:02:43 +00:00
dependabot[bot]
254874276c
build(deps): bump serde_json from 1.0.118 to 1.0.121
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.118 to 1.0.121.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.118...v1.0.121)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-29 12:00:29 +00:00
dependabot[bot]
011aa0cb9c
build(deps): bump thomaseizinger/keep-a-changelog-new-release
Bumps [thomaseizinger/keep-a-changelog-new-release](https://github.com/thomaseizinger/keep-a-changelog-new-release) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/thomaseizinger/keep-a-changelog-new-release/releases)
- [Changelog](https://github.com/thomaseizinger/keep-a-changelog-new-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/thomaseizinger/keep-a-changelog-new-release/compare/3.0.0...3.1.0)

---
updated-dependencies:
- dependency-name: thomaseizinger/keep-a-changelog-new-release
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-29 11:25:26 +00:00
Byron Hambly
8bf4ea08be
Merge pull request #1735 from comit-network/dependabot/cargo/toml-0.8.16
build(deps): bump toml from 0.8.15 to 0.8.16
2024-07-26 14:57:26 +02:00
dependabot[bot]
f3640aceb2
build(deps): bump toml from 0.8.15 to 0.8.16
Bumps [toml](https://github.com/toml-rs/toml) from 0.8.15 to 0.8.16.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.15...toml-v0.8.16)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-26 12:23:43 +00:00
binarybaron
45e14c5a1e
Revert: 8284bea778fb4003d339d6fc4ca93f6d8299e635 2024-07-26 11:51:33 +02:00
binarybaron
f29bf20e8d
Revert "fix: Reintroduce Dockerfile"
This reverts commit 77a43ba28cca49d269f22ba7dce13c19c5b435a7.
2024-07-26 11:46:27 +02:00
binarybaron
b52e07ace9
Revert "fix: Reintroduce docker build action"
This reverts commit 49cae19059f09b5eadb72b4f73fef7c82c9913e0.
2024-07-26 11:46:19 +02:00
binarybaron
77a43ba28c
fix: Reintroduce Dockerfile 2024-07-26 11:45:48 +02:00
binarybaron
49cae19059
fix: Reintroduce docker build action 2024-07-26 11:45:22 +02:00
binarybaron
7b5929deb5
Merge pull request #9 from UnstoppableSwap/release/0.13.4
Release version 0.13.4
2024-07-26 00:38:02 +02:00
UnstoppableSwap Botty
8284bea778 Prepare release 0.13.4 2024-07-25 22:31:14 +00:00
binarybaron
0ad78e4f30
revert: Update CHANGELOG.md 2024-07-26 00:20:17 +02:00
binarybaron
fc6bb336c8
Merge branch 'comit-network:master' into master 2024-07-26 00:19:41 +02:00
COMIT Botty McBotface
33ad3c374a
Prepare release 0.13.4 (#1734) 2024-07-25 23:14:31 +02:00
Einliterflasche
2fe428779a
feat(asb): Retry locking Monero (#1731)
We retry to lock the Monero wallet until we succeed or until the cancel timelock expires.

This is necessary because the monero-wallet-rpc can sometimes error out due to various reasons, such as
- no connection to the daemon
- "failed to get output distribution"

See https://github.com/comit-network/xmr-btc-swap/issues/1726
2024-07-25 23:06:50 +02:00
binarybaron
2eda2476eb
Revert "Merge branch 'master' into master" (#1730)
This reverts commit ce8d3afe60f520523fe6ab6b8d1b3de3d07e2027, reversing
changes made to 75cfc6b0d4169d72f136266af122381a05bb9efe.
2024-07-25 15:01:12 +02:00
binarybaron
aaa52e9559
Merge pull request #8 from comit-network/master
Merge parent repository
2024-07-25 14:04:14 +02:00
binarybaron
ce8d3afe60
Merge branch 'master' into master 2024-07-25 14:03:47 +02:00
binarybaron
75cfc6b0d4
fix(cli): allow bitcoin-change-address to be omitted when making request to rpc server (#1728) 2024-07-25 00:13:15 +02:00
binarybaron
c80bdb2d8c
fix(asb): Allow history command to be run while asb is running (#1724)
Co-authored-by: einliterflasche <einliterflasche@pm.me>
2024-07-23 14:52:01 +02:00
binarybaron
ef49b471d8 docs: add binarybaron.asc 2024-07-23 14:12:44 +02:00
binarybaron
cf87f19e82
Merge pull request #7 from UnstoppableSwap/release/0.13.3
Release version 0.13.3
2024-07-22 16:57:18 +02:00
UnstoppableSwap Botty
410fcf2117 Prepare release 0.13.3 2024-07-22 14:40:59 +00:00
binarybaron
8ba8e3bd5c
fix: Revert 0.13.3 release 2024-07-22 16:32:04 +02:00
binarybaron
eef78cddb2
CI: Exclude preview releases from "latest" docker release tag 2024-07-22 16:27:56 +02:00
binarybaron
f24c11f0a3
Merge branch 'comit-network:master' into master 2024-07-22 16:18:41 +02:00
Byron Hambly
8e6d1e37e8
Merge pull request #1719 from comit-network/dependabot/cargo/toml-0.8.15
build(deps): bump toml from 0.8.14 to 0.8.15
2024-07-18 13:54:04 +02:00
Byron Hambly
f4630fa9d1
Merge pull request #1720 from comit-network/dependabot/cargo/thiserror-1.0.63
build(deps): bump thiserror from 1.0.62 to 1.0.63
2024-07-18 13:53:56 +02:00
dependabot[bot]
cb85439905
build(deps): bump thiserror from 1.0.62 to 1.0.63
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.62 to 1.0.63.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.62...1.0.63)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-18 11:24:34 +00:00
dependabot[bot]
74af379f80
build(deps): bump toml from 0.8.14 to 0.8.15
Bumps [toml](https://github.com/toml-rs/toml) from 0.8.14 to 0.8.15.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.14...toml-v0.8.15)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-18 11:24:12 +00:00
Byron Hambly
b3813f3769
Merge pull request #1718 from comit-network/dependabot/cargo/tokio-1.38.1
build(deps): bump tokio from 1.38.0 to 1.38.1
2024-07-18 09:57:48 +02:00
dependabot[bot]
7c9af191bc
build(deps): bump tokio from 1.38.0 to 1.38.1
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.38.0 to 1.38.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.38.0...tokio-1.38.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-17 11:08:57 +00:00
binarybaron
97788e6f54
Merge branch 'comit-network:master' into master 2024-07-17 00:08:37 +02:00
binarybaron
85c4db1d75
fix: Format cooperative redeem reject using thiserror (#1716) 2024-07-16 20:13:58 +02:00
binarybaron
612784b3e0
Merge pull request #6 from UnstoppableSwap/release/0.13.3
Release version 0.13.3
2024-07-16 11:45:00 +02:00
UnstoppableSwap Botty
7c54fb2848 Prepare release 0.13.3 2024-07-16 09:40:03 +00:00
binarybaron
f5bda640a0
fix: Remove duplicate entry from CHANGELOG.md 2024-07-16 11:31:18 +02:00
binarybaron
d8f84cbad9
Merge pull request #5 from UnstoppableSwap/release/0.13.3
Release version 0.13.3
2024-07-16 11:25:43 +02:00
UnstoppableSwap Botty
c430e89502 Prepare release 0.13.3 2024-07-16 09:25:28 +00:00
binarybaron
eab4b00478
feat: Release Docker image on build 2024-07-16 11:19:56 +02:00
binarybaron
d55c6e8c1a
fix(Dockerfile): Use local repo 2024-07-16 11:11:40 +02:00
binarybaron
60a3177710
feat: Dockerfile for asb 2024-07-16 10:43:47 +02:00
COMIT Botty McBotface
1f322b78c8
Prepare release 0.13.3 (#1714) 2024-07-15 16:45:19 +02:00
Byron Hambly
12b9ceebcf
Merge pull request #1676 from patrini32/cooperative-release-of-funds
Allow for cooperative release of funds
2024-07-15 10:00:44 +02:00
Byron Hambly
77f7222f71
Merge pull request #1712 from comit-network/dependabot/cargo/thiserror-1.0.62
build(deps): bump thiserror from 1.0.61 to 1.0.62
2024-07-15 09:38:24 +02:00
dependabot[bot]
31d76cbdf4
build(deps): bump thiserror from 1.0.61 to 1.0.62
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.61 to 1.0.62.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.61...1.0.62)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-12 11:25:56 +00:00
patrini32
845b9428b7
remove whitespaces 2024-07-11 11:02:23 +03:00
patrini32
ee04ff8a3b
fix formatting 2024-07-11 10:58:07 +03:00
binarybaron
f8c3276642 Merge branch 'cooperative-release-of-funds' of https://github.com/patrini32/xmr-btc-swap into pr/1676 2024-07-11 09:30:49 +02:00
binarybaron
073baa9752 Update swap.rs 2024-07-11 09:30:48 +02:00
binarybaron
f72005312c
Merge branch 'master' into cooperative-release-of-funds 2024-07-11 09:23:38 +02:00
Einliterflasche
4115a452e3
allow --change-address to be omitted and default to internal wallet address (#1709)
allow --change-address to be omitted and default to internal wallet address (#1709)

Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
Co-authored-by: Byron Hambly <byron@hambly.dev>
2024-07-11 09:19:41 +02:00
Byron Hambly
c385059138
Merge pull request #1710 from comit-network/dependabot/cargo/hyper-1.4.1
build(deps): bump hyper from 1.3.1 to 1.4.1
2024-07-10 15:25:03 +02:00
Byron Hambly
c283d6a911
Merge pull request #1711 from comit-network/dependabot/cargo/vergen-8.3.2
build(deps): bump vergen from 8.3.1 to 8.3.2
2024-07-10 15:24:45 +02:00
dependabot[bot]
dcb4edf585
build(deps): bump vergen from 8.3.1 to 8.3.2
Bumps [vergen](https://github.com/rustyhorde/vergen) from 8.3.1 to 8.3.2.
- [Release notes](https://github.com/rustyhorde/vergen/releases)
- [Commits](https://github.com/rustyhorde/vergen/commits)

---
updated-dependencies:
- dependency-name: vergen
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-10 11:19:33 +00:00
dependabot[bot]
47f8a65209
build(deps): bump hyper from 1.3.1 to 1.4.1
Bumps [hyper](https://github.com/hyperium/hyper) from 1.3.1 to 1.4.1.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v1.3.1...v1.4.1)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-10 11:19:16 +00:00
Byron Hambly
bf9abd4101
Merge pull request #1707 from comit-network/dependabot/cargo/uuid-1.10.0
build(deps): bump uuid from 1.9.1 to 1.10.0
2024-07-10 09:23:25 +02:00
dependabot[bot]
2af22c1aba
build(deps): bump uuid from 1.9.1 to 1.10.0
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.9.1 to 1.10.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.9.1...1.10.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-09 11:08:29 +00:00
Byron Hambly
e2198d49a0
Merge pull request #1704 from comit-network/dependabot/cargo/qrcode-0.14.1
build(deps): bump qrcode from 0.14.0 to 0.14.1
2024-07-09 09:03:58 +02:00
Byron Hambly
f0abb4396d
Merge pull request #1705 from comit-network/dependabot/cargo/serde-1.0.204
build(deps): bump serde from 1.0.203 to 1.0.204
2024-07-09 09:03:48 +02:00
Byron Hambly
537672df08
Merge pull request #1706 from comit-network/dependabot/cargo/async-trait-0.1.81
build(deps): bump async-trait from 0.1.80 to 0.1.81
2024-07-09 09:03:37 +02:00
dependabot[bot]
cd29870e11
build(deps): bump async-trait from 0.1.80 to 0.1.81
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.80 to 0.1.81.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.80...0.1.81)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-08 11:04:55 +00:00
dependabot[bot]
ab1001a18c
build(deps): bump serde from 1.0.203 to 1.0.204
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.203 to 1.0.204.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.203...v1.0.204)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-08 11:04:38 +00:00
dependabot[bot]
294b658f43
build(deps): bump qrcode from 0.14.0 to 0.14.1
Bumps [qrcode](https://github.com/kennytm/qrcode-rust) from 0.14.0 to 0.14.1.
- [Release notes](https://github.com/kennytm/qrcode-rust/releases)
- [Commits](https://github.com/kennytm/qrcode-rust/commits/v0.14.1)

---
updated-dependencies:
- dependency-name: qrcode
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-08 11:04:18 +00:00
binarybaron
2824ebc893 Update swap.rs 2024-07-03 20:39:49 +02:00
binarybaron
07f788eb81 Update swap.rs 2024-07-03 20:14:09 +02:00
binarybaron
ef75019ac6 Update swap.rs 2024-07-03 20:12:22 +02:00
binarybaron
26e66ce9b9 Update swap.rs 2024-07-03 20:02:04 +02:00
binarybaron
d7b649b7a6 feat: Allow for cooperative Monero redeem after Bitcoin punish has happened 2024-07-03 19:47:45 +02:00
binarybaron
c5aa7edb6b
chore: Fix typo (#1701) 2024-07-02 12:03:56 +02:00
COMIT Botty McBotface
5c9185876d
Prepare release 0.13.2 (#1700) 2024-07-02 02:11:36 +02:00
binarybaron
6c1b85e408
Revert "Prepare release 0.13.2 (#1694)" (#1699)
This reverts commit 415323e4fcebc81e7e6ad0fdc50c600914575a36.
2024-07-02 01:53:57 +02:00
binarybaron
26109d6d8a
Revert "Prepare release 0.13.2 (#1697)" (#1698)
This reverts commit 5e735ef4f72cb95f9372cd6d69f39f5f9019283b.
2024-07-02 01:51:58 +02:00
COMIT Botty McBotface
5e735ef4f7
Prepare release 0.13.2 (#1697) 2024-07-02 01:28:07 +02:00
binarybaron
aa9b3c4687
fix: Add a new migration script for creating the buffered_transfer_proofs table (#1695) 2024-07-02 01:20:20 +02:00
COMIT Botty McBotface
415323e4fc
Prepare release 0.13.2 (#1694) 2024-07-01 23:27:00 +02:00
patrini32
173d077751
feat (Cli): Display reason for failed cancel-refund operation to the user (#1668)
We now display the reason for a failed cancel-refund operation to the user.

Fixes #683
2024-07-01 23:14:44 +02:00
binarybaron
23a27680a4
feat (Bob): Buffer transfer proof to database when we are running a different swap (#1669) 2024-06-28 21:39:30 +02:00
binarybaron
4c9d1e8d8d
Reduce check interval for Monero watch_for_transfer (#1670)
Oftentimes we fail to check the status of the Monero transaction on the first try (because it hasn't been registered on our Monero daemon yet, it takes a few seconds).

By decreasing the check interval from the default of 2 minutes to a 10th of that, we ensure that Bob get's his transfer proof faster.
2024-06-27 14:24:27 +02:00
Byron Hambly
21fed8c291
Merge pull request #1689 from comit-network/dependabot/cargo/uuid-1.9.1
build(deps): bump uuid from 1.9.0 to 1.9.1
2024-06-25 15:34:43 +02:00
Byron Hambly
5390a50eda
Merge pull request #1688 from comit-network/dependabot/cargo/serde_json-1.0.118
build(deps): bump serde_json from 1.0.117 to 1.0.118
2024-06-25 15:34:33 +02:00
dependabot[bot]
5551f513d5
build(deps): bump uuid from 1.9.0 to 1.9.1
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.9.0 to 1.9.1.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.9.0...1.9.1)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-25 11:49:47 +00:00
dependabot[bot]
fbf1c3dabf
build(deps): bump serde_json from 1.0.117 to 1.0.118
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.117 to 1.0.118.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.117...v1.0.118)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-25 11:48:33 +00:00
Byron Hambly
23a4d624da
Merge pull request #1687 from ikmckenz/add-missing-test
Add concurrent_bobs_after_xmr_lock_proof_sent test to ci
2024-06-25 10:37:50 +02:00
Ian McKenzie
3fc934a189 Add concurrent_bobs_after_xmr_lock_proof_sent test to ci 2024-06-24 21:27:13 -07:00
Byron Hambly
194fa1b1cb
Merge pull request #1686 from comit-network/dependabot/cargo/strum-0.26.3
build(deps): bump strum from 0.26.2 to 0.26.3
2024-06-24 14:00:21 +02:00
Byron Hambly
58baa48eba
Merge pull request #1685 from comit-network/dependabot/cargo/uuid-1.9.0
build(deps): bump uuid from 1.8.0 to 1.9.0
2024-06-24 14:00:02 +02:00
Byron Hambly
6f57517c05
Merge pull request #1684 from comit-network/dependabot/cargo/proptest-1.5.0
build(deps): bump proptest from 1.4.0 to 1.5.0
2024-06-24 13:59:52 +02:00
dependabot[bot]
2068a4cf78
build(deps): bump strum from 0.26.2 to 0.26.3
Bumps [strum](https://github.com/Peternator7/strum) from 0.26.2 to 0.26.3.
- [Release notes](https://github.com/Peternator7/strum/releases)
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/compare/v0.26.2...v0.26.3)

---
updated-dependencies:
- dependency-name: strum
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 11:12:44 +00:00
dependabot[bot]
dabe1abb21
build(deps): bump uuid from 1.8.0 to 1.9.0
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.8.0...1.9.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 11:10:02 +00:00
dependabot[bot]
cca0d0027e
build(deps): bump proptest from 1.4.0 to 1.5.0
Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/proptest-rs/proptest/releases)
- [Changelog](https://github.com/proptest-rs/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/proptest-rs/proptest/compare/v1.4.0...v1.5.0)

---
updated-dependencies:
- dependency-name: proptest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 11:09:33 +00:00
dependabot[bot]
4d557d1ef9
build(deps): bump mockito from 1.3.0 to 1.4.0 (#1567)
* build(deps): bump mockito from 1.3.0 to 1.3.1

Bumps [mockito](https://github.com/lipanski/mockito) from 1.3.0 to 1.3.1.
- [Release notes](https://github.com/lipanski/mockito/releases)
- [Commits](https://github.com/lipanski/mockito/compare/1.3.0...1.3.1)

---
updated-dependencies:
- dependency-name: mockito
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: breaking change in mockito async

* bump mockito to 1.4

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Byron Hambly <byron@hambly.dev>
2024-06-19 15:35:05 +02:00
Byron Hambly
1d5df5498c
Merge pull request #1682 from comit-network/dependabot/cargo/serial_test-3.1.1
build(deps): bump serial_test from 3.0.0 to 3.1.1
2024-06-19 15:21:14 +02:00
Byron Hambly
787edbbca2
Merge pull request #1681 from comit-network/dependabot/cargo/url-2.5.2
build(deps): bump url from 2.5.0 to 2.5.2
2024-06-19 13:58:17 +02:00
dependabot[bot]
543f2748b5
build(deps): bump serial_test from 3.0.0 to 3.1.1
Bumps [serial_test](https://github.com/palfrey/serial_test) from 3.0.0 to 3.1.1.
- [Release notes](https://github.com/palfrey/serial_test/releases)
- [Commits](https://github.com/palfrey/serial_test/compare/v3.0.0...v3.1.1)

---
updated-dependencies:
- dependency-name: serial_test
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-19 11:35:30 +00:00
dependabot[bot]
7da996ab7b
build(deps): bump url from 2.5.0 to 2.5.2
Bumps [url](https://github.com/servo/rust-url) from 2.5.0 to 2.5.2.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.5.0...v2.5.2)

---
updated-dependencies:
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-19 11:34:57 +00:00
Byron Hambly
ad212c8663
Merge pull request #1680 from comit-network/dependabot/cargo/reqwest-0.12.5
build(deps): bump reqwest from 0.12.4 to 0.12.5
2024-06-18 15:27:21 +02:00
dependabot[bot]
f4792174da
build(deps): bump reqwest from 0.12.4 to 0.12.5
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.12.4 to 0.12.5.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.12.4...v0.12.5)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 11:45:28 +00:00
Byron Hambly
cbab8647fd
Merge pull request #1679 from comit-network/dependabot/github_actions/actions/checkout-4.1.7
build(deps): bump actions/checkout from 4.1.6 to 4.1.7
2024-06-13 18:01:00 +02:00
dependabot[bot]
122aee022a
build(deps): bump actions/checkout from 4.1.6 to 4.1.7
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.6 to 4.1.7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.6...v4.1.7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-13 11:53:20 +00:00
COMIT Botty McBotface
a3b1e772b2
Prepare release 0.13.1 (#1675) 2024-06-10 20:23:50 +02:00
Byron Hambly
90494ba4a5
fix: monero wallet refresh (#1596)
This PR changes the following behaviour in the refresh functionality of the monero wallet
- Allows for multiple retries because in some cases users have experienced an issue where the wallet rpc returns `no connection to daemon` even though the daemon is available. I'm not 100% sure why this happens but retrying often fixes the issue
- Print the current sync height after each failed attempt at syncing to see how far we've come
- The `monero-wallet-rpc` is started with the `--no-initial-sync` flag which ensures that as soon as it's started, it's ready to respond to requests
- The `monero-wallet-rpc` was upgraded to `v0.18.3.1` because this PR https://github.com/monero-project/monero/pull/8941 has improved some of the issues mentioned above


This PR is part of a larger effort to fix this issue https://github.com/comit-network/xmr-btc-swap/issues/1432
2024-06-10 18:53:52 +02:00
Byron Hambly
9594b0c46b
Merge pull request #1673 from comit-network/bob-extensive-quote-log
feat (Bob): Log extensive information about deposit requirements
2024-06-07 09:41:43 +02:00
Byron Hambly
72202b714e
Merge pull request #1663 from comit-network/dependabot/cargo/tokio-1.38.0
build(deps): bump tokio from 1.37.0 to 1.38.0
2024-06-07 09:32:01 +02:00
binarybaron
55b67d31d4 feat (Bob): Log extensive information about deposit requirements 2024-06-06 15:21:48 +02:00
dependabot[bot]
b99978879d
build(deps): bump tokio from 1.37.0 to 1.38.0
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.37.0 to 1.38.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.37.0...tokio-1.38.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-06 11:25:09 +00:00
chengehe
49a7f7eed6
chore: remove repeat word (#1671)
Signed-off-by: chengehe <hechenge@yeah.net>
2024-06-06 12:10:19 +02:00
Byron Hambly
2eb9e01f97
Merge pull request #1667 from comit-network/dependabot/cargo/toml-0.8.14
build(deps): bump toml from 0.8.13 to 0.8.14
2024-06-04 15:22:03 +02:00
dependabot[bot]
16d5ffc07e
build(deps): bump toml from 0.8.13 to 0.8.14
Bumps [toml](https://github.com/toml-rs/toml) from 0.8.13 to 0.8.14.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.13...toml-v0.8.14)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-04 11:31:51 +00:00
pokkst
9635c0b551
fix (Bob): Check if Bitcoin redeem transaction was published before transitioning to CancelTimelockExpired (#1427)
* fix (Bob): Check if Bitcoin redeem transaction was published before transitioning to CancelTimelockExpired

---------

Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2024-06-04 12:49:15 +02:00
dependabot[bot]
1930540c1f
build(deps): bump reqwest from 0.11.27 to 0.12.4 (#1588)
* build(deps): bump reqwest from 0.11.27 to 0.12.0

Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.27 to 0.12.0.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.27...v0.12.0)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* wip

* wip

* ci: lock sqlx-cli install

* bump reqwest to 0.12.2

* deps: reqwest to 0.12.4

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Byron Hambly <byron@hambly.dev>
2024-05-30 10:27:48 +02:00
COMIT Botty McBotface
2932abc9ec
Prepare release 0.13.0 (#1659) 2024-05-29 16:00:17 +02:00
binarybaron
41687ffab9
CI: Fix faulty x86-darwin release name (#1658) 2024-05-29 11:58:28 +02:00
Byron Hambly
6c487d4a5f
Merge pull request #1654 from comit-network/dependabot/cargo/serde-1.0.203
build(deps): bump serde from 1.0.202 to 1.0.203
2024-05-28 12:57:11 +02:00
Byron Hambly
21e6bbe681
Merge pull request #1656 from delta1/ci-binaries
ci: wip fixing binaries
2024-05-28 12:39:32 +02:00
Byron Hambly
e09401b9f7
ci: wip fixing build binaries actions 2024-05-28 12:37:55 +02:00
Byron Hambly
81d1f7e1bb
Merge pull request #1655 from delta1/ci-binaries
ci: wip fixing build binaries actions
2024-05-28 12:23:41 +02:00
Byron Hambly
66bc59892a
ci: wip fixing build binaries actions 2024-05-28 12:21:19 +02:00
dependabot[bot]
6399343de9
build(deps): bump serde from 1.0.202 to 1.0.203
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.202 to 1.0.203.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.202...v1.0.203)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-27 11:29:09 +00:00
Byron Hambly
7b9ca3b420
Merge pull request #1653 from delta1/deps-miniscript
deps: bump miniscript 9.0.0 to 9.0.2 to fix overflow issue
2024-05-27 13:04:17 +02:00
Byron Hambly
268a24083f
deps: bump miniscript 9.0.0 to 9.0.2 to fix overflow issue 2024-05-27 12:57:32 +02:00
Byron Hambly
1d4a536bb1
Merge pull request #1652 from delta1/ci-release-bins
ci: fix build-release-binaries
2024-05-27 12:20:23 +02:00
Byron Hambly
52d56ae254
ci: fix build-release-binaries 2024-05-27 12:19:26 +02:00
Byron Hambly
2ef2863e89
Merge pull request #1651 from delta1/ci-release-bins
ci: fix build-release-binaries
2024-05-27 12:04:47 +02:00
Byron Hambly
bbf8f84312
ci: fix build-release-binaries 2024-05-27 12:04:04 +02:00
Byron Hambly
a471a17a88
Merge pull request #1648 from delta1/ci-fix-stable
ci: fix duplicate definition of check_stable
2024-05-27 11:38:09 +02:00
Byron Hambly
e6d37c01a6
ci: fix duplicate definition of check_stable 2024-05-27 11:06:10 +02:00
Byron Hambly
796863359f
upgrade secp256kfun (#1466)
* ci: add cargo check on rust stable

* refactor: upgrade secp256kfun and fix resulting issues

* build(deps): update sigma_fun and ecdsa_fun to a52142cf7f

 #1520
 #1521

* chore: fix clippy issue

* update to 91112f80b24

* bump to 294de1721add

* chore(deps): remove spectral

spectral fails to compile on rust stable 1.76 due to dep on deprecated
rustc-serialize

* secp256kfun: update to 7da9d277 and set rev in manifest

* update to 6fdc5d8

* switch to crates.io versions of ecdsa_fun and sigma_fun

* ci: update toolchain to 1.74 and fix draft action

* clippy fixes

---------

Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
2024-05-27 11:03:20 +02:00
Byron Hambly
1e2dddb61b
Merge pull request #1629 from comit-network/dependabot/cargo/toml-0.8.13
build(deps): bump toml from 0.8.12 to 0.8.13
2024-05-27 10:09:28 +02:00
Byron Hambly
dc8e1e53f2
Merge pull request #1647 from comit-network/monero-wallet-rpc-update-01831
CLI: Upgrade monero-wallet-rpc to 0.18.3.1, clarify a few log. messages
2024-05-27 09:42:06 +02:00
binarybaron
32ca0b1a4a CLI: Upgrade monero-wallet-rpc to 0.18.3.1, clarify a few log. messages 2024-05-25 18:22:17 +02:00
binarybaron
c433bd2389
CLI: Initiate tracing earlier to avoid lost logs (#1646) 2024-05-25 17:59:12 +02:00
binarybaron
0ca98cd0b7
Make tracing file appender blocking (#1643) 2024-05-25 14:43:22 +02:00
binarybaron
2f28ef9401
Add missing changelog entries (#1641) 2024-05-24 18:06:21 +02:00
binarybaron
0c4b7d50c2
Lower DEFAULT_BITCOIN_CONFIRMATION_TARGET to 1 to ensure timely confirmation of bitcoin transactions (#1640) 2024-05-24 18:02:29 +02:00
Byron Hambly
838a7ab5fb
Merge pull request #1637 from comit-network/dependabot/github_actions/actions/checkout-4.1.6
build(deps): bump actions/checkout from 4.1.1 to 4.1.6
2024-05-23 13:54:11 +02:00
Byron Hambly
db78a1e99e
Merge pull request #1636 from comit-network/dependabot/github_actions/Swatinem/rust-cache-2.7.3
build(deps): bump Swatinem/rust-cache from 2.7.1 to 2.7.3
2024-05-23 13:54:00 +02:00
dependabot[bot]
b443a96469
build(deps): bump actions/checkout from 4.1.1 to 4.1.6
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.1 to 4.1.6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.1...v4.1.6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-23 11:10:29 +00:00
dependabot[bot]
97210739a1
build(deps): bump Swatinem/rust-cache from 2.7.1 to 2.7.3
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.7.1 to 2.7.3.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/swatinem/rust-cache/compare/v2.7.1...v2.7.3)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-23 11:10:26 +00:00
yamabiiko
5ff46be279
RPC server for API Interface (#1276)
* saving: implementing internal api shared by cli and rpc server

* writing async rpc methods and using arc for shared struct references

* cleaning up, renamed Init to Context

* saving: cleaning up and initial work for tests

* Respond with bitcoin withdraw txid

* Print RPC server address

* Cleanup, formatting, add `get_seller`, `get_swap_start_date` RPC endpoints

* fixing tests in cli module

* uncommenting and fixing more tests

* split api module and propagate errors with rpc server

* moving methods to api and validating addresses for rpc

* add broadcast channel to handle shutdowns gracefully and prepare for RPC server test

* added files

* Update rpc.rs

* adding new unfinished RPC tests

* updating rpc-server tests

* fixing warnings

* fixing formatting and cargo clippy warnings

* fix missing import in test

* fix: add data_dir to config to make config command work

* set server listen address manually and return file locations in JSON on Config

* Add called api method and swap_id to tracing for context, reduced boilerplate

* Pass server_address properly to RpcServer

* Update Cargo.lock

* dprint fmt

* Add cancel_refund RPC endpoint

* Combine Cmd and Params

* Disallow concurrent swaps

* Use RwLock instead of Mutex to allow for parallel reads and add get_current_swap endpoint

* Return wallet descriptor to RPC API caller

* Append all cli logs to single log file

After careful consideration, I've concluded that it's not practical/possible to ensure that the previous behaviour (one log file per swap) is preserved due to limitations of the tracing-subscriber crate and a big in the built in JSON formatter

* Add get_swap_expired_timelock timelock, other small refactoring

- Add get_swap_expired_timelock endpoint to return expired timelock if one exists. Fails if bitcoin lock tx has not yet published or if swap is already finished.
- Rename current_epoch to expired_timelock to enforce consistent method names
- Add blocks left until current expired timelock expires (next timelock expires) to ExpiredTimelock struct
- Change .expect() to .unwrap() in rpc server method register because those will only fail if we register the same method twice which will never happen

* initiating swaps in a separate task and handling shutdown signals with broadcast queues

* Replace get_swap_start_date, get_seller, get_expired_timelock with one get_swap_info rpc method

* WIP: Struct for concurrent swaps manager

* Ensure correct tracing spans

* Add note regarding Request, Method structs

* Update request.rs

* Add tracing span attribute log_reference_id to logs caused by rpc call

* Sync bitcoin wallet before initial max_giveable call

* use Span::current() to pass down to tracing span to spawned tasks

* Remove unused shutdown channel

* Add `get_monero_recovery_info` RPC endpoint

- Add `get_monero_recovery_info` RPC endpoint
- format PrivateViewKey using Display

* Rename `Method::RawHistory` to `Method::GetRawStates`

* Wait for swap to be suspended after sending signal

* Remove notes

* Add tracing span attribute log_reference_id to logs caused by rpc call

* Sync bitcoin wallet before initial max_giveable call

* use Span::current() to pass down to tracing span to spawned tasks

* Remove unused shutdown channel

* Add `get_monero_recovery_info` RPC endpoint

- Add `get_monero_recovery_info` RPC endpoint
- format PrivateViewKey using Display

* Rename `Method::RawHistory` to `Method::GetRawStates`

* Wait for swap to be suspended after sending signal

* Return additonal info on GetSwapInfo

* Update wallet.rs

* fix compile issues for tests and use serial_test crate

* fix rpc tests, only check for RPC errors and not returned values

* Rename `get_raw_history` tp `get_raw_states`

* Fix typo in rpc server stopped tracing log

* Remove unnecessary success property on suspend_current_swap response

* fixing test_cli_arguments and other tests

* WIP: RPC server integration tests

* WIP: Integration tests for RPC server

* Update rpc tests

* fix compile and warnings in tests/rpc.rs

* test: fix assert

* clippy --fix

* remove otp file

* cargo clippy fixes

* move resume swap initialization code out of spawned task

* Use `in_current_span` to pass down tracing span to spawned tasks

* moving buy_xmr initialization code out of spawned tasks

* cargo fmt

* Moving swap initialization code inside tokio select block to handle swap lock release logic

* Remove unnecessary swap suspension listener from determine_btc_to_swap call in BuyXmr

* Spawn event loop before requesting quote

* Release swap lock after receiving shutdown signal

* Remove inner tokio::select in BuyXmr and Resume

* Improve debug text for swap resume

* Return error to API caller if bid quote request fails

* Print error if one occurs during process invoked by API call

* Return bid quote to API caller

* Use type safe query! macro for database retrieval of states

* Return tx_lock_fee to API caller on GetSwapInfo call

Update request.rs

* Allow API caller to retrieve last synced bitcoin balane and avoid costly sync

* Return restore height on MoneroRecovery command to API Caller

* Include entire error cause-chain in API response

* Add span to bitcoin wallet logs

* Log event loop connection properties as tracing fields

* Wait for background tasks to complete before exiting CLI

* clippy

* specify sqlx patch version explicitly

* remove mem::forget and replace with _guard

* ci: add rpc test job

* test: wrap rpc test in #[cfg(test)]

* add missing tokio::test attribute

* fix and merge rpc tests, parse uuuid and multiaddr from serde_json value

* default Tor socks port to 9050, Cargo fmt

* Update swap/sqlite_dev_setup.sh: add version

Co-authored-by: Byron Hambly <byron@hambly.dev>

* ci: free up space on ubuntu test job

* Update swap/src/bitcoin/wallet.rs

Co-authored-by: Byron Hambly <byron@hambly.dev>

* Update swap/src/bitcoin/wallet.rs

Co-authored-by: Byron Hambly <byron@hambly.dev>

* fmt

---------

Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
Co-authored-by: Byron Hambly <byron@hambly.dev>
2024-05-22 15:12:58 +02:00
Byron Hambly
7d4a6c90f3
Merge pull request #1633 from comit-network/dependabot/cargo/anyhow-1.0.86
build(deps): bump anyhow from 1.0.83 to 1.0.86
2024-05-20 13:47:35 +02:00
Byron Hambly
2fba218429
Merge pull request #1632 from comit-network/dependabot/cargo/thiserror-1.0.61
build(deps): bump thiserror from 1.0.60 to 1.0.61
2024-05-20 13:47:21 +02:00
dependabot[bot]
928fe33532
build(deps): bump anyhow from 1.0.83 to 1.0.86
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.83 to 1.0.86.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.83...1.0.86)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-20 11:31:28 +00:00
dependabot[bot]
3bb6f060a0
build(deps): bump thiserror from 1.0.60 to 1.0.61
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.60 to 1.0.61.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.60...1.0.61)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-20 11:30:15 +00:00
icy-ux
8d8c938a94
document use of asb export-bitcoin-wallet (#1280)
* document use of asb export-bitcoin-wallet

Add to the `asb` document @delta1's text on exporting the Bitcoin wallet
descriptor and importing the descriptor into Sparrow Wallet.

TODO: maybe it would make sense to add the images to Git, instead of
linking to files on Github?

* bring asb/README.md into compliance with dprint

* update bullet point formatting in asb/README.md

* run

* add images to git

---------

Co-authored-by: icyfestive <>
Co-authored-by: Byron Hambly <byron@hambly.dev>
2024-05-20 10:28:44 +02:00
Byron Hambly
0b5a26a5e8
Merge pull request #1631 from comit-network/dependabot/cargo/itertools-0.13.0
build(deps): bump itertools from 0.12.1 to 0.13.0
2024-05-17 14:28:06 +02:00
dependabot[bot]
0e5241787f
build(deps): bump itertools from 0.12.1 to 0.13.0
Bumps [itertools](https://github.com/rust-itertools/itertools) from 0.12.1 to 0.13.0.
- [Changelog](https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-itertools/itertools/compare/v0.12.1...v0.13.0)

---
updated-dependencies:
- dependency-name: itertools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-17 11:58:52 +00:00
Byron Hambly
4b8f7987f7
Merge pull request #1630 from comit-network/dependabot/github_actions/actions/checkout-4.1.6
build(deps): bump actions/checkout from 4.1.5 to 4.1.6
2024-05-17 13:33:13 +02:00
dependabot[bot]
c8e5768955
build(deps): bump actions/checkout from 4.1.5 to 4.1.6
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.5 to 4.1.6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.5...v4.1.6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-17 11:12:37 +00:00
dependabot[bot]
6edcc28b8d
build(deps): bump toml from 0.8.12 to 0.8.13
Bumps [toml](https://github.com/toml-rs/toml) from 0.8.12 to 0.8.13.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.12...toml-v0.8.13)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-16 11:18:16 +00:00
Byron Hambly
8cd0d3cd17
Merge pull request #1628 from comit-network/dependabot/cargo/serde-1.0.202
build(deps): bump serde from 1.0.201 to 1.0.202
2024-05-15 14:23:45 +02:00
dependabot[bot]
d9de1b6cf3
build(deps): bump serde from 1.0.201 to 1.0.202
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.201 to 1.0.202.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.201...v1.0.202)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-15 11:33:15 +00:00
Byron Hambly
0a2a32a31b
Merge pull request #1627 from comit-network/dependabot/cargo/serde-1.0.201
build(deps): bump serde from 1.0.200 to 1.0.201
2024-05-08 14:29:56 +02:00
Byron Hambly
71ea249d73
Merge pull request #1626 from comit-network/dependabot/cargo/serde_json-1.0.117
build(deps): bump serde_json from 1.0.116 to 1.0.117
2024-05-08 14:29:48 +02:00
dependabot[bot]
081bb965ee
build(deps): bump serde from 1.0.200 to 1.0.201
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.200 to 1.0.201.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.200...v1.0.201)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-08 11:59:51 +00:00
dependabot[bot]
f1d7859334
build(deps): bump serde_json from 1.0.116 to 1.0.117
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.116 to 1.0.117.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.116...v1.0.117)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-08 11:58:50 +00:00
Byron Hambly
6acabda6ab
Merge pull request #1623 from comit-network/dependabot/github_actions/actions/checkout-4.1.5
build(deps): bump actions/checkout from 4.1.4 to 4.1.5
2024-05-07 15:28:47 +02:00
Byron Hambly
38c8fd76a4
Merge pull request #1624 from comit-network/dependabot/cargo/anyhow-1.0.83
build(deps): bump anyhow from 1.0.82 to 1.0.83
2024-05-07 15:28:39 +02:00
Byron Hambly
84b5a6f7e9
Merge pull request #1625 from comit-network/dependabot/cargo/thiserror-1.0.60
build(deps): bump thiserror from 1.0.59 to 1.0.60
2024-05-07 15:28:31 +02:00
dependabot[bot]
252c394ef6
build(deps): bump thiserror from 1.0.59 to 1.0.60
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.59 to 1.0.60.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.59...1.0.60)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-07 12:01:20 +00:00
dependabot[bot]
d40059192a
build(deps): bump anyhow from 1.0.82 to 1.0.83
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.82 to 1.0.83.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.82...1.0.83)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-07 11:59:43 +00:00
dependabot[bot]
ed8deeff57
build(deps): bump actions/checkout from 4.1.4 to 4.1.5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.4 to 4.1.5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.4...v4.1.5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-07 11:26:23 +00:00
Byron Hambly
98b5335231
Merge pull request #1622 from comit-network/dependabot/cargo/tokio-util-0.7.11
build(deps): bump tokio-util from 0.7.10 to 0.7.11
2024-05-06 14:30:07 +02:00
Byron Hambly
417bfe34a5
Merge pull request #1621 from comit-network/dependabot/github_actions/thomaseizinger/create-pull-request-1.4.0
build(deps): bump thomaseizinger/create-pull-request from 1.3.1 to 1.4.0
2024-05-06 14:29:46 +02:00
dependabot[bot]
7661b19300
build(deps): bump tokio-util from 0.7.10 to 0.7.11
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.10 to 0.7.11.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.10...tokio-util-0.7.11)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-06 11:47:38 +00:00
dependabot[bot]
ca5bfed392
build(deps): bump thomaseizinger/create-pull-request from 1.3.1 to 1.4.0
Bumps [thomaseizinger/create-pull-request](https://github.com/thomaseizinger/create-pull-request) from 1.3.1 to 1.4.0.
- [Release notes](https://github.com/thomaseizinger/create-pull-request/releases)
- [Changelog](https://github.com/thomaseizinger/create-pull-request/blob/master/CHANGELOG.md)
- [Commits](https://github.com/thomaseizinger/create-pull-request/compare/1.3.1...1.4.0)

---
updated-dependencies:
- dependency-name: thomaseizinger/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-06 11:05:47 +00:00
Byron Hambly
58b775bdf2
Merge pull request #1620 from comit-network/dependabot/cargo/serde-1.0.200
build(deps): bump serde from 1.0.199 to 1.0.200
2024-05-02 15:59:19 +02:00
dependabot[bot]
cc3abf647c
build(deps): bump serde from 1.0.199 to 1.0.200
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.199 to 1.0.200.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.199...v1.0.200)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-02 11:31:44 +00:00
Byron Hambly
73bb1b88c9
Merge pull request #1619 from comit-network/dependabot/cargo/base64-0.22.1
build(deps): bump base64 from 0.22.0 to 0.22.1
2024-05-02 07:07:46 +02:00
dependabot[bot]
ad6b00beec
build(deps): bump base64 from 0.22.0 to 0.22.1
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.22.0 to 0.22.1.
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.22.0...v0.22.1)

---
updated-dependencies:
- dependency-name: base64
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-01 11:36:56 +00:00
Byron Hambly
61a19c35a7
Merge pull request #1616 from comit-network/dependabot/cargo/serde-1.0.199
build(deps): bump serde from 1.0.198 to 1.0.199
2024-04-30 13:08:01 +02:00
Byron Hambly
026fcd13f2
Merge pull request #1617 from comit-network/dependabot/cargo/data-encoding-2.6.0
build(deps): bump data-encoding from 2.5.0 to 2.6.0
2024-04-30 12:55:44 +02:00
dependabot[bot]
1aca4462e7
build(deps): bump serde from 1.0.198 to 1.0.199
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.198 to 1.0.199.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.198...v1.0.199)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-30 10:29:01 +00:00
dependabot[bot]
79b4d8efbc
build(deps): bump data-encoding from 2.5.0 to 2.6.0
Bumps [data-encoding](https://github.com/ia0/data-encoding) from 2.5.0 to 2.6.0.
- [Commits](https://github.com/ia0/data-encoding/commits)

---
updated-dependencies:
- dependency-name: data-encoding
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-30 10:28:44 +00:00
Byron Hambly
0beb91f537
Merge pull request #1618 from delta1/ci-macos
ci: fix macos-latest and add macos-12
2024-04-30 12:25:46 +02:00
Byron Hambly
24466c0234
ci: fix macos-latest and add macos-12
macos-latest is now aarch64, add macos-12 for x64_64
2024-04-30 10:17:18 +02:00
Byron Hambly
2b850924b1
Merge pull request #1615 from comit-network/dependabot/github_actions/actions/checkout-4.1.4
build(deps): bump actions/checkout from 4.1.3 to 4.1.4
2024-04-28 20:23:14 +02:00
dependabot[bot]
8a88bde4f5
build(deps): bump actions/checkout from 4.1.3 to 4.1.4
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.3 to 4.1.4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.3...v4.1.4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-25 11:42:46 +00:00
Byron Hambly
1fecc687a7
Merge pull request #1614 from comit-network/dependabot/github_actions/actions/checkout-4.1.3
build(deps): bump actions/checkout from 4.1.2 to 4.1.3
2024-04-22 14:03:48 +02:00
Byron Hambly
afa683b7e0
Merge pull request #1613 from comit-network/dependabot/cargo/thiserror-1.0.59
build(deps): bump thiserror from 1.0.58 to 1.0.59
2024-04-22 14:03:39 +02:00
dependabot[bot]
5997453525
build(deps): bump actions/checkout from 4.1.2 to 4.1.3
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.2...v4.1.3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-22 11:18:11 +00:00
dependabot[bot]
e389027439
build(deps): bump thiserror from 1.0.58 to 1.0.59
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.58 to 1.0.59.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.58...1.0.59)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-22 11:17:01 +00:00
Byron Hambly
aeefd8f271
Merge pull request #1612 from comit-network/dependabot/cargo/serde-1.0.198
build(deps): bump serde from 1.0.197 to 1.0.198
2024-04-17 15:53:29 +02:00
Byron Hambly
effeabd007
Merge pull request #1611 from comit-network/dependabot/cargo/hyper-1.3.1
build(deps): bump hyper from 1.3.0 to 1.3.1
2024-04-17 15:53:20 +02:00
dependabot[bot]
1ff67ec943
build(deps): bump serde from 1.0.197 to 1.0.198
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.197 to 1.0.198.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.197...v1.0.198)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-17 11:50:26 +00:00
dependabot[bot]
6ba11b1738
build(deps): bump hyper from 1.3.0 to 1.3.1
Bumps [hyper](https://github.com/hyperium/hyper) from 1.3.0 to 1.3.1.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v1.3.0...v1.3.1)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-17 11:50:10 +00:00
Byron Hambly
18ec158d2e
Merge pull request #1609 from comit-network/dependabot/cargo/serde_json-1.0.116
build(deps): bump serde_json from 1.0.115 to 1.0.116
2024-04-16 19:35:58 +02:00
Byron Hambly
b0dffc5370
Merge pull request #1610 from comit-network/dependabot/cargo/hyper-1.3.0
build(deps): bump hyper from 1.2.0 to 1.3.0
2024-04-16 19:35:47 +02:00
dependabot[bot]
76c72cceb2
build(deps): bump serde_json from 1.0.115 to 1.0.116
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.115 to 1.0.116.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.115...v1.0.116)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-16 12:27:29 +00:00
dependabot[bot]
f0f197de20
build(deps): bump hyper from 1.2.0 to 1.3.0
Bumps [hyper](https://github.com/hyperium/hyper) from 1.2.0 to 1.3.0.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v1.2.0...v1.3.0)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-16 12:24:28 +00:00
Byron Hambly
f380d0928e
Merge pull request #1603 from delta1/ci-check-stable
ci: add cargo check job on stable rust
2024-04-16 14:21:58 +02:00
Byron Hambly
877001549a
Merge pull request #1607 from comit-network/dependabot/cargo/async-trait-0.1.80
build(deps): bump async-trait from 0.1.79 to 0.1.80
2024-04-12 14:46:28 +02:00
dependabot[bot]
23216dea07
build(deps): bump async-trait from 0.1.79 to 0.1.80
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.79 to 0.1.80.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.79...0.1.80)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-12 12:00:31 +00:00
Byron Hambly
a250940ff1
Merge pull request #1606 from comit-network/dependabot/cargo/time-0.3.36
build(deps): bump time from 0.3.34 to 0.3.36
2024-04-11 14:13:10 +02:00
dependabot[bot]
a449d9b600
build(deps): bump time from 0.3.34 to 0.3.36
Bumps [time](https://github.com/time-rs/time) from 0.3.34 to 0.3.36.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.34...v0.3.36)

---
updated-dependencies:
- dependency-name: time
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-11 11:48:20 +00:00
Byron Hambly
0072fbe0c6
Merge pull request #1604 from comit-network/dependabot/cargo/anyhow-1.0.82
build(deps): bump anyhow from 1.0.81 to 1.0.82
2024-04-10 14:00:34 +02:00
dependabot[bot]
4767c68467
build(deps): bump anyhow from 1.0.81 to 1.0.82
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.81 to 1.0.82.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.81...1.0.82)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-10 11:34:44 +00:00
Byron Hambly
0d63087ab9
ci: add cargo check job on stable rust 2024-04-10 09:53:32 +02:00
Byron Hambly
d230ed2705
Merge pull request #1600 from comit-network/dependabot/github_actions/thomaseizinger/keep-a-changelog-new-release-3.0.0
build(deps): bump thomaseizinger/keep-a-changelog-new-release from 2.0.0 to 3.0.0
2024-04-09 17:43:24 +02:00
Byron Hambly
19705becc5
Merge pull request #1601 from comit-network/dependabot/cargo/pem-3.0.4
build(deps): bump pem from 3.0.3 to 3.0.4
2024-04-09 14:26:45 +02:00
dependabot[bot]
cf0b9aa601
build(deps): bump pem from 3.0.3 to 3.0.4
Bumps [pem](https://github.com/jcreekmore/pem-rs) from 3.0.3 to 3.0.4.
- [Changelog](https://github.com/jcreekmore/pem-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jcreekmore/pem-rs/compare/v3.0.3...v3.0.4)

---
updated-dependencies:
- dependency-name: pem
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-09 11:55:30 +00:00
dependabot[bot]
a87ffaa631
build(deps): bump thomaseizinger/keep-a-changelog-new-release
Bumps [thomaseizinger/keep-a-changelog-new-release](https://github.com/thomaseizinger/keep-a-changelog-new-release) from 2.0.0 to 3.0.0.
- [Release notes](https://github.com/thomaseizinger/keep-a-changelog-new-release/releases)
- [Changelog](https://github.com/thomaseizinger/keep-a-changelog-new-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/thomaseizinger/keep-a-changelog-new-release/compare/2.0.0...3.0.0)

---
updated-dependencies:
- dependency-name: thomaseizinger/keep-a-changelog-new-release
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-09 11:25:28 +00:00
Byron Hambly
bad0117e58
Merge pull request #1590 from comit-network/dependabot/cargo/async-trait-0.1.79
build(deps): bump async-trait from 0.1.78 to 0.1.79
2024-04-09 09:32:41 +02:00
Byron Hambly
b67ee29bf7
Merge branch 'master' into dependabot/cargo/async-trait-0.1.79 2024-04-08 18:05:33 +02:00
Byron Hambly
f76dee4c30
Merge pull request #1595 from comit-network/dependabot/cargo/serde_json-1.0.115
build(deps): bump serde_json from 1.0.114 to 1.0.115
2024-04-08 18:03:58 +02:00
Byron Hambly
af70589eba
Merge pull request #1599 from comit-network/dependabot/cargo/comfy-table-7.1.1
build(deps): bump comfy-table from 7.1.0 to 7.1.1
2024-04-08 18:03:22 +02:00
dependabot[bot]
73370ce7d9
build(deps): bump comfy-table from 7.1.0 to 7.1.1
Bumps [comfy-table](https://github.com/nukesor/comfy-table) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/nukesor/comfy-table/releases)
- [Changelog](https://github.com/Nukesor/comfy-table/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nukesor/comfy-table/compare/v7.1.0...v7.1.1)

---
updated-dependencies:
- dependency-name: comfy-table
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-08 11:42:05 +00:00
Byron Hambly
2c27bb8f68
Merge pull request #1598 from comit-network/dependabot/cargo/port_check-0.2.1
build(deps): bump port_check from 0.1.5 to 0.2.1
2024-04-02 14:28:59 +02:00
dependabot[bot]
c231a34399
build(deps): bump port_check from 0.1.5 to 0.2.1
Bumps [port_check](https://github.com/ufoscout/port-check-rs) from 0.1.5 to 0.2.1.
- [Commits](https://github.com/ufoscout/port-check-rs/commits/v0.2.1)

---
updated-dependencies:
- dependency-name: port_check
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-02 11:28:21 +00:00
Byron Hambly
4801098601
Merge pull request #1597 from comit-network/dependabot/cargo/tokio-1.37.0
build(deps): bump tokio from 1.36.0 to 1.37.0
2024-03-29 14:17:45 +02:00
dependabot[bot]
be8b3c1dde
build(deps): bump tokio from 1.36.0 to 1.37.0
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.36.0 to 1.37.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.36.0...tokio-1.37.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-29 11:37:49 +00:00
dependabot[bot]
f575a93bbb
build(deps): bump serde_json from 1.0.114 to 1.0.115
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.114 to 1.0.115.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.114...v1.0.115)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-26 11:06:45 +00:00
dependabot[bot]
870911bd58
build(deps): bump async-trait from 0.1.78 to 0.1.79
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.78 to 0.1.79.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.78...0.1.79)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-26 09:06:19 +00:00
Byron Hambly
bd07bde535
Merge pull request #1594 from comit-network/monero-wallet-refresh-fix
Monero wallet refresh fix redux
2024-03-26 11:02:30 +02:00
Byron Hambly
91460a29cd
Merge branch 'master' into monero-wallet-refresh-fix 2024-03-26 10:19:50 +02:00
Byron Hambly
d6cac9fc1b
Merge pull request #1593 from comit-network/revert-1487-monero-wallet-refresh-fix
Revert "Monero wallet refresh fix (#1487)"
2024-03-26 10:19:35 +02:00
Byron Hambly
f337708877
Merge branch 'master' into monero-wallet-refresh-fix 2024-03-26 09:55:24 +02:00
Byron Hambly
36edac8ae3
Merge branch 'master' into revert-1487-monero-wallet-refresh-fix 2024-03-26 09:41:23 +02:00
Byron Hambly
50ff0b1e91
Merge pull request #1592 from comit-network/ci-sqlx-locked
ci: lock install version for sqlx-cli
2024-03-26 09:41:11 +02:00
Byron Hambly
9d426066a9
ci: lock install version for sqlx-cli 2024-03-26 09:08:38 +02:00
Byron Hambly
a19501a002
Revert "Monero wallet refresh fix (#1487)"
This reverts commit d8dacbdee99a8d951977e62db1c888cc9ed56ea8.
2024-03-26 09:06:31 +02:00
binarybaron
d8dacbdee9
Monero wallet refresh fix (#1487)
* Upgrade monero-wallet-rpc to `v0.18.3.1`

* Give feedback to user about state of monero refresh and retry if fails

This commit changes the following behaviour in the refresh functionality of the monero wallet
- Allows for multiple retries because in some cases users have experienced an issue where the wallet rpc returns `no connection to daemon` even though the daemon is available. I'm not 100% sure why this happens but retrying often fixes the issue
- Attempt to print the current sync height while the wallet is syncing. This only works to some degree because the `monero-wallet-rpc` stops responding (or takes a long time to respond) while it's refreshing
- The `monero-wallet-rpc` is started with the `--no-initial-sync` flag which ensures that as soon as it's started, it's ready to respond to requests
---------

Co-authored-by: Byron Hambly <bhambly@blockstream.com>
Co-authored-by: Byron Hambly <byron@hambly.dev>
2024-03-25 15:08:54 +01:00
binarybaron
bfc1e829dc Update CHANGELOG.md 2024-03-25 15:07:11 +01:00
binarybaron
85cee51eee Run dprint fmt 2024-03-25 15:05:31 +01:00
binarybaron
8eaf437d74
Merge branch 'master' into monero-wallet-refresh-fix 2024-03-25 14:59:58 +01:00
Ian McKenzie
eb15f477fa
Verify hashes of monero cli on download (#1572)
* Bump Monero CLI for macos aarch64 to match other platforms

* Check hash on download of monero cli

* change panic to bail

---------

Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2024-03-22 11:18:40 +02:00
Byron Hambly
c0d3a02beb
Merge pull request #1587 from comit-network/dependabot/cargo/reqwest-0.11.27
build(deps): bump reqwest from 0.11.26 to 0.11.27
2024-03-20 13:24:53 +02:00
dependabot[bot]
1901594d28
build(deps): bump reqwest from 0.11.26 to 0.11.27
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.26 to 0.11.27.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.26...v0.11.27)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-20 11:09:02 +00:00
Byron Hambly
06bbb89631
Merge pull request #1585 from comit-network/dependabot/cargo/uuid-1.8.0
build(deps): bump uuid from 1.7.0 to 1.8.0
2024-03-19 15:27:44 +02:00
Byron Hambly
993e68edca
Merge pull request #1586 from comit-network/dependabot/cargo/toml-0.8.12
build(deps): bump toml from 0.8.11 to 0.8.12
2024-03-19 15:27:25 +02:00
dependabot[bot]
5d1b9cf4c3
build(deps): bump toml from 0.8.11 to 0.8.12
Bumps [toml](https://github.com/toml-rs/toml) from 0.8.11 to 0.8.12.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.11...toml-v0.8.12)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-19 11:23:48 +00:00
dependabot[bot]
d77f208aae
build(deps): bump uuid from 1.7.0 to 1.8.0
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.7.0...1.8.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-19 11:22:48 +00:00
Byron Hambly
d059ed8644
Merge pull request #1584 from comit-network/dependabot/cargo/async-trait-0.1.78
build(deps): bump async-trait from 0.1.77 to 0.1.78
2024-03-18 15:57:45 +02:00
dependabot[bot]
3b83822a71
build(deps): bump async-trait from 0.1.77 to 0.1.78
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.77 to 0.1.78.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.77...0.1.78)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 11:35:06 +00:00
Byron Hambly
b11733dea9
Merge pull request #1582 from comit-network/dependabot/cargo/qrcode-0.14.0
build(deps): bump qrcode from 0.13.0 to 0.14.0
2024-03-14 17:05:35 +02:00
dependabot[bot]
fea34cc35b
build(deps): bump qrcode from 0.13.0 to 0.14.0
Bumps [qrcode](https://github.com/kennytm/qrcode-rust) from 0.13.0 to 0.14.0.
- [Release notes](https://github.com/kennytm/qrcode-rust/releases)
- [Commits](https://github.com/kennytm/qrcode-rust/commits)

---
updated-dependencies:
- dependency-name: qrcode
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-14 11:58:41 +00:00
Byron Hambly
c69acfbeb1
Merge pull request #1581 from comit-network/dependabot/cargo/reqwest-0.11.26
build(deps): bump reqwest from 0.11.25 to 0.11.26
2024-03-13 14:51:41 +02:00
dependabot[bot]
a61f7809d9
build(deps): bump reqwest from 0.11.25 to 0.11.26
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.25 to 0.11.26.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.25...v0.11.26)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-13 11:32:44 +00:00
Byron Hambly
98920d97e4
Merge pull request #1579 from comit-network/dependabot/cargo/thiserror-1.0.58
build(deps): bump thiserror from 1.0.57 to 1.0.58
2024-03-12 18:44:04 +02:00
Byron Hambly
2cde21a5a1
Merge pull request #1578 from comit-network/dependabot/cargo/anyhow-1.0.81
build(deps): bump anyhow from 1.0.80 to 1.0.81
2024-03-12 18:43:32 +02:00
Byron Hambly
bb1df6b987
Merge pull request #1577 from comit-network/dependabot/cargo/toml-0.8.11
build(deps): bump toml from 0.8.10 to 0.8.11
2024-03-12 18:43:10 +02:00
Byron Hambly
d1b10efdee
Merge pull request #1576 from comit-network/dependabot/github_actions/actions/checkout-4.1.2
build(deps): bump actions/checkout from 4.1.1 to 4.1.2
2024-03-12 18:42:32 +02:00
dependabot[bot]
46eee5ccfc
build(deps): bump anyhow from 1.0.80 to 1.0.81
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.80 to 1.0.81.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.80...1.0.81)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-12 13:11:43 +00:00
dependabot[bot]
ccff348cdd
build(deps): bump toml from 0.8.10 to 0.8.11
Bumps [toml](https://github.com/toml-rs/toml) from 0.8.10 to 0.8.11.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.10...toml-v0.8.11)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-12 13:11:35 +00:00
dependabot[bot]
bf262acf00
build(deps): bump thiserror from 1.0.57 to 1.0.58
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.57 to 1.0.58.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.57...1.0.58)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-12 13:11:26 +00:00
dependabot[bot]
28937b8693
build(deps): bump actions/checkout from 4.1.1 to 4.1.2
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.1...v4.1.2)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-12 13:10:43 +00:00
Byron Hambly
c05597970d
Merge pull request #1580 from comit-network/delta1-patch-1
ci: specify version of sqlx-cli
2024-03-12 15:10:06 +02:00
Byron Hambly
82eac08bfe
ci: specify version of sqlx-cli 2024-03-12 14:55:52 +02:00
Byron Hambly
efc06e7401
Merge pull request #1574 from comit-network/dependabot/cargo/strum-0.26.2
build(deps): bump strum from 0.26.1 to 0.26.2
2024-03-11 18:27:59 +02:00
Byron Hambly
d15a4476f9
Merge pull request #1575 from comit-network/dependabot/cargo/reqwest-0.11.25
build(deps): bump reqwest from 0.11.24 to 0.11.25
2024-03-11 18:27:42 +02:00
dependabot[bot]
6af198743a
build(deps): bump reqwest from 0.11.24 to 0.11.25
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.24 to 0.11.25.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.24...v0.11.25)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 11:54:48 +00:00
dependabot[bot]
397aa972bb
build(deps): bump strum from 0.26.1 to 0.26.2
Bumps [strum](https://github.com/Peternator7/strum) from 0.26.1 to 0.26.2.
- [Release notes](https://github.com/Peternator7/strum/releases)
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 11:54:07 +00:00
Byron Hambly
81fabdd451
Merge pull request #1570 from comit-network/dependabot/cargo/base64-0.22.0
build(deps): bump base64 from 0.21.7 to 0.22.0
2024-03-04 14:44:14 +02:00
dependabot[bot]
bb596fcc09
build(deps): bump base64 from 0.21.7 to 0.22.0
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.21.7 to 0.22.0.
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.21.7...v0.22.0)

---
updated-dependencies:
- dependency-name: base64
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-04 11:48:02 +00:00
Byron Hambly
76a59e8d85
Merge pull request #1566 from comit-network/dependabot/cargo/tempfile-3.10.1
build(deps): bump tempfile from 3.10.0 to 3.10.1
2024-02-27 16:40:21 +02:00
dependabot[bot]
3037bbcbe4
build(deps): bump tempfile from 3.10.0 to 3.10.1
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.10.0 to 3.10.1.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.10.0...v3.10.1)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-27 11:36:17 +00:00
dependabot[bot]
00abded1c5
build(deps): bump mockito from 1.2.0 to 1.3.0 (#1561)
* build(deps): bump mockito from 1.2.0 to 1.3.0

Bumps [mockito](https://github.com/lipanski/mockito) from 1.2.0 to 1.3.0.
- [Release notes](https://github.com/lipanski/mockito/releases)
- [Commits](https://github.com/lipanski/mockito/compare/1.2.0...1.3.0)

---
updated-dependencies:
- dependency-name: mockito
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): update http to 0.2.11

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2024-02-23 22:25:06 +02:00
Ian McKenzie
b2ca1b5f8c
Upgrade testcontainers from 0.12 to 0.14 (#1552)
* Upgrade testcontainers from 0.12 to 0.14

* minor cleanup

---------

Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2024-02-23 21:04:27 +02:00
Byron Hambly
9c5914ff7a
Merge pull request #1562 from comit-network/dependabot/cargo/hyper-1.2.0
build(deps): bump hyper from 1.1.0 to 1.2.0
2024-02-23 20:52:52 +02:00
dependabot[bot]
005361c833
build(deps): bump hyper from 1.1.0 to 1.2.0
Bumps [hyper](https://github.com/hyperium/hyper) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v1.1.0...v1.2.0)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-22 11:43:08 +00:00
Byron Hambly
c3b474d7db
Merge pull request #1559 from comit-network/dependabot/cargo/serde_json-1.0.114
build(deps): bump serde_json from 1.0.113 to 1.0.114
2024-02-20 14:17:29 +02:00
Byron Hambly
abc0897948
Merge pull request #1560 from comit-network/dependabot/cargo/serde-1.0.197
build(deps): bump serde from 1.0.196 to 1.0.197
2024-02-20 14:17:14 +02:00
dependabot[bot]
344440bb54
build(deps): bump serde from 1.0.196 to 1.0.197
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.196 to 1.0.197.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.196...v1.0.197)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-20 11:55:59 +00:00
dependabot[bot]
d8d1c4178e
build(deps): bump serde_json from 1.0.113 to 1.0.114
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.113 to 1.0.114.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.113...v1.0.114)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-20 11:55:23 +00:00
Byron Hambly
d3797bf50a
Merge pull request #1558 from comit-network/dependabot/cargo/anyhow-1.0.80
build(deps): bump anyhow from 1.0.79 to 1.0.80
2024-02-19 19:28:33 +02:00
dependabot[bot]
2c11f38659
build(deps): bump anyhow from 1.0.79 to 1.0.80
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.79 to 1.0.80.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.79...1.0.80)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-19 11:59:24 +00:00
Byron Hambly
82e22f0eea
Merge pull request #1554 from comit-network/dependabot/github_actions/thomaseizinger/keep-a-changelog-new-release-2.0.0
build(deps): bump thomaseizinger/keep-a-changelog-new-release from 1.3.0 to 2.0.0
2024-02-15 13:15:41 +02:00
Byron Hambly
fbe1244392
Merge pull request #1553 from comit-network/dependabot/cargo/thiserror-1.0.57
build(deps): bump thiserror from 1.0.56 to 1.0.57
2024-02-15 07:32:25 +02:00
dependabot[bot]
640290023a
build(deps): bump thiserror from 1.0.56 to 1.0.57
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.56 to 1.0.57.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.56...1.0.57)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-15 04:30:57 +00:00
dependabot[bot]
3d2b51998e
build(deps): bump thomaseizinger/keep-a-changelog-new-release
Bumps [thomaseizinger/keep-a-changelog-new-release](https://github.com/thomaseizinger/keep-a-changelog-new-release) from 1.3.0 to 2.0.0.
- [Release notes](https://github.com/thomaseizinger/keep-a-changelog-new-release/releases)
- [Changelog](https://github.com/thomaseizinger/keep-a-changelog-new-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/thomaseizinger/keep-a-changelog-new-release/compare/1.3.0...2.0.0)

---
updated-dependencies:
- dependency-name: thomaseizinger/keep-a-changelog-new-release
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-15 04:29:12 +00:00
Byron Hambly
f12cf36364
ci: free up space on ubuntu test job (#1555)
* ci: free up space on ubuntu test job

(cherry picked from commit d234d2335f49ba5c0284fe0efd696856be2e58bf)

* fixup! ci: free up space on ubuntu test job

* ci use commit hash instead of malleable tag for free space action
2024-02-14 22:22:35 +02:00
binarybaron
2bc8d0062e Merge branch 'monero-wallet-refresh-fix' of https://github.com/comit-network/xmr-btc-swap into monero-wallet-refresh-fix 2024-02-07 23:04:55 +01:00
Byron Hambly
1507a0787a
Merge pull request #1548 from comit-network/dependabot/cargo/tempfile-3.10.0
build(deps): bump tempfile from 3.9.0 to 3.10.0
2024-02-06 19:58:39 +02:00
Byron Hambly
0c7e84449a
Merge pull request #1551 from comit-network/dependabot/cargo/toml-0.8.10
build(deps): bump toml from 0.8.9 to 0.8.10
2024-02-06 15:05:45 +02:00
dependabot[bot]
039192aeb6
build(deps): bump toml from 0.8.9 to 0.8.10
Bumps [toml](https://github.com/toml-rs/toml) from 0.8.9 to 0.8.10.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.9...toml-v0.8.10)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-06 11:54:55 +00:00
dependabot[bot]
b1a72940df
build(deps): bump tempfile from 3.9.0 to 3.10.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.9.0 to 3.10.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.9.0...v3.10.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-06 11:53:45 +00:00
Byron Hambly
0dcf6d887c
Merge branch 'master' into monero-wallet-refresh-fix 2024-02-06 09:55:36 +02:00
Byron Hambly
4cfef2f1fd
Merge pull request #1544 from comit-network/dependabot/cargo/time-0.3.34
build(deps): bump time from 0.3.32 to 0.3.34
2024-02-05 14:47:27 +02:00
Byron Hambly
dd30566c26
Merge branch 'master' into monero-wallet-refresh-fix 2024-02-05 14:43:43 +02:00
Byron Hambly
ecad2150c7
Merge pull request #1545 from comit-network/dependabot/cargo/tokio-1.36.0
build(deps): bump tokio from 1.35.1 to 1.36.0
2024-02-05 14:31:41 +02:00
dependabot[bot]
1b0a6d22fe
build(deps): bump tokio from 1.35.1 to 1.36.0
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.35.1 to 1.36.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.35.1...tokio-1.36.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 11:29:31 +00:00
dependabot[bot]
ac2a13b1d0
build(deps): bump time from 0.3.32 to 0.3.34
Bumps [time](https://github.com/time-rs/time) from 0.3.32 to 0.3.34.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.32...v0.3.34)

---
updated-dependencies:
- dependency-name: time
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 11:28:50 +00:00
Ian McKenzie
140dc6dc04
Upgrade to vergen 8.3, move to git describe --dirty --tags for semver (#1543)
* Upgrade to vergen 8.3, move to git describe --dirty --tags for semver

* Add newline to build.rs
2024-02-04 08:43:59 +02:00
Byron Hambly
4a758f7c8a
Merge pull request #1540 from comit-network/dependabot/cargo/config-0.14.0
build(deps): bump config from 0.13.4 to 0.14.0
2024-02-01 15:49:27 +02:00
Byron Hambly
11517a64c9
Merge pull request #1541 from comit-network/dependabot/cargo/time-0.3.32
build(deps): bump time from 0.3.31 to 0.3.32
2024-02-01 15:17:45 +02:00
Byron Hambly
fb4468a458
Merge pull request #1542 from comit-network/dependabot/cargo/reqwest-0.11.24
build(deps): bump reqwest from 0.11.23 to 0.11.24
2024-02-01 14:08:49 +02:00
Byron Hambly
ac15963e13
Merge pull request #1539 from comit-network/dependabot/cargo/toml-0.8.9
build(deps): bump toml from 0.8.8 to 0.8.9
2024-02-01 14:08:31 +02:00
dependabot[bot]
e08770f405
build(deps): bump reqwest from 0.11.23 to 0.11.24
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.23 to 0.11.24.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.23...v0.11.24)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-01 11:34:26 +00:00
dependabot[bot]
9a024db955
build(deps): bump time from 0.3.31 to 0.3.32
Bumps [time](https://github.com/time-rs/time) from 0.3.31 to 0.3.32.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.31...v0.3.32)

---
updated-dependencies:
- dependency-name: time
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-01 11:33:32 +00:00
dependabot[bot]
83080abe30
build(deps): bump config from 0.13.4 to 0.14.0
Bumps [config](https://github.com/mehcode/config-rs) from 0.13.4 to 0.14.0.
- [Changelog](https://github.com/mehcode/config-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mehcode/config-rs/compare/v0.13.4...0.14.0)

---
updated-dependencies:
- dependency-name: config
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-01 11:32:59 +00:00
dependabot[bot]
45d6326dc1
build(deps): bump toml from 0.8.8 to 0.8.9
Bumps [toml](https://github.com/toml-rs/toml) from 0.8.8 to 0.8.9.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.8...toml-v0.8.9)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-01 11:32:36 +00:00
Byron Hambly
4fd52b74e8
Merge pull request #1538 from comit-network/dependabot/cargo/itertools-0.12.1
build(deps): bump itertools from 0.12.0 to 0.12.1
2024-01-30 15:14:28 +02:00
dependabot[bot]
db7fe0dc99
build(deps): bump itertools from 0.12.0 to 0.12.1
Bumps [itertools](https://github.com/rust-itertools/itertools) from 0.12.0 to 0.12.1.
- [Changelog](https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-itertools/itertools/compare/v0.12.0...v0.12.1)

---
updated-dependencies:
- dependency-name: itertools
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-30 11:41:32 +00:00
Byron Hambly
ab3720d51a
Merge pull request #1525 from comit-network/dependabot/cargo/serial_test-3.0.0
build(deps): bump serial_test from 2.0.0 to 3.0.0
2024-01-29 16:22:19 +02:00
Byron Hambly
14d83b1792
Merge pull request #1536 from comit-network/dependabot/cargo/strum-0.26.1
build(deps): bump strum from 0.25.0 to 0.26.1
2024-01-29 16:22:01 +02:00
Byron Hambly
8ff8c95228
Merge pull request #1537 from comit-network/dependabot/cargo/serde-1.0.196
build(deps): bump serde from 1.0.195 to 1.0.196
2024-01-29 14:29:38 +02:00
Byron Hambly
779fe93279
Merge pull request #1535 from comit-network/dependabot/cargo/serde_json-1.0.113
build(deps): bump serde_json from 1.0.111 to 1.0.113
2024-01-29 14:29:21 +02:00
dependabot[bot]
9d9e408ee0
build(deps): bump serde from 1.0.195 to 1.0.196
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.195 to 1.0.196.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.195...v1.0.196)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 11:06:50 +00:00
dependabot[bot]
1ad6af6d5c
build(deps): bump strum from 0.25.0 to 0.26.1
Bumps [strum](https://github.com/Peternator7/strum) from 0.25.0 to 0.26.1.
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 11:06:15 +00:00
dependabot[bot]
44875e2274
build(deps): bump serde_json from 1.0.111 to 1.0.113
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.111 to 1.0.113.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.111...v1.0.113)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 11:05:33 +00:00
Byron Hambly
b6453315c2
Merge pull request #1533 from comit-network/dependabot/cargo/uuid-1.7.0
build(deps): bump uuid from 1.6.1 to 1.7.0
2024-01-19 14:16:04 +02:00
dependabot[bot]
fada511c9a
build(deps): bump uuid from 1.6.1 to 1.7.0
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.6.1 to 1.7.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.6.1...1.7.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-19 11:58:59 +00:00
Byron Hambly
6f60117aa4
Merge pull request #1532 from comit-network/dependabot/github_actions/Swatinem/rust-cache-2.7.3
build(deps): bump Swatinem/rust-cache from 2.7.2 to 2.7.3
2024-01-15 14:18:11 +02:00
dependabot[bot]
85712aa95f
build(deps): bump Swatinem/rust-cache from 2.7.2 to 2.7.3
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.7.2 to 2.7.3.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/swatinem/rust-cache/compare/v2.7.2...v2.7.3)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-15 11:38:18 +00:00
Byron Hambly
06bfada867
Merge pull request #1530 from comit-network/dependabot/cargo/base64-0.21.7
build(deps): bump base64 from 0.21.6 to 0.21.7
2024-01-12 13:30:04 +02:00
dependabot[bot]
b945fa3ee6
build(deps): bump base64 from 0.21.6 to 0.21.7
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.21.6 to 0.21.7.
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.21.6...v0.21.7)

---
updated-dependencies:
- dependency-name: base64
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-12 11:13:36 +00:00
Byron Hambly
da86cf4f58
Merge pull request #1528 from comit-network/dependabot/github_actions/Swatinem/rust-cache-2.7.2
build(deps): bump Swatinem/rust-cache from 2.7.1 to 2.7.2
2024-01-11 15:10:50 +02:00
dependabot[bot]
aedabcbcbb
build(deps): bump Swatinem/rust-cache from 2.7.1 to 2.7.2
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.7.1 to 2.7.2.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/swatinem/rust-cache/compare/v2.7.1...v2.7.2)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-11 11:43:10 +00:00
Byron Hambly
d7a19f1450
Merge pull request #1527 from comit-network/dependabot/cargo/base64-0.21.6
build(deps): bump base64 from 0.21.5 to 0.21.6
2024-01-09 13:43:28 +02:00
dependabot[bot]
f50ee16bf1
build(deps): bump base64 from 0.21.5 to 0.21.6
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.21.5 to 0.21.6.
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.21.5...v0.21.6)

---
updated-dependencies:
- dependency-name: base64
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-09 11:20:03 +00:00
Byron Hambly
979e97c40a
Merge pull request #1526 from comit-network/dependabot/cargo/serde-1.0.195
build(deps): bump serde from 1.0.194 to 1.0.195
2024-01-08 14:31:55 +02:00
dependabot[bot]
afe0060c4a
build(deps): bump serde from 1.0.194 to 1.0.195
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.194 to 1.0.195.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.194...v1.0.195)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 11:27:16 +00:00
dependabot[bot]
dd9d5246c3
build(deps): bump serial_test from 2.0.0 to 3.0.0
Bumps [serial_test](https://github.com/palfrey/serial_test) from 2.0.0 to 3.0.0.
- [Release notes](https://github.com/palfrey/serial_test/releases)
- [Commits](https://github.com/palfrey/serial_test/compare/v2.0.0...v3.0.0)

---
updated-dependencies:
- dependency-name: serial_test
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 11:27:04 +00:00
Byron Hambly
e5c776e52e
Merge pull request #1519 from comit-network/dependabot/cargo/anyhow-1.0.79
build(deps): bump anyhow from 1.0.78 to 1.0.79
2024-01-04 14:01:17 +02:00
Byron Hambly
47d9313e5c
Merge pull request #1522 from comit-network/dependabot/cargo/serde_json-1.0.111
build(deps): bump serde_json from 1.0.110 to 1.0.111
2024-01-04 14:00:52 +02:00
dependabot[bot]
57d19ad852
build(deps): bump serde_json from 1.0.110 to 1.0.111
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.110 to 1.0.111.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.110...v1.0.111)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-04 11:46:51 +00:00
Byron Hambly
f88ba46323
Merge pull request #1518 from comit-network/dependabot/cargo/serde_json-1.0.110
build(deps): bump serde_json from 1.0.109 to 1.0.110
2024-01-02 18:56:10 +02:00
Byron Hambly
e868d6b2b3
Merge pull request #1517 from comit-network/dependabot/cargo/thiserror-1.0.56
build(deps): bump thiserror from 1.0.53 to 1.0.56
2024-01-02 18:55:51 +02:00
Byron Hambly
72cab2fed1
Merge pull request #1516 from comit-network/dependabot/cargo/async-trait-0.1.77
build(deps): bump async-trait from 0.1.76 to 0.1.77
2024-01-02 18:55:32 +02:00
Byron Hambly
5381117a92
Merge pull request #1515 from comit-network/dependabot/cargo/serde-1.0.194
build(deps): bump serde from 1.0.193 to 1.0.194
2024-01-02 18:54:50 +02:00
dependabot[bot]
b31779dfe1
build(deps): bump anyhow from 1.0.78 to 1.0.79
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.78 to 1.0.79.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.78...1.0.79)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-02 11:46:23 +00:00
dependabot[bot]
10ba9203fa
build(deps): bump serde_json from 1.0.109 to 1.0.110
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.109 to 1.0.110.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.109...v1.0.110)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-02 11:45:36 +00:00
dependabot[bot]
36c4e4fa6e
build(deps): bump thiserror from 1.0.53 to 1.0.56
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.53 to 1.0.56.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.53...1.0.56)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-02 11:45:19 +00:00
dependabot[bot]
ed2d0c9ddc
build(deps): bump async-trait from 0.1.76 to 0.1.77
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.76 to 0.1.77.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/commits)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-02 11:45:06 +00:00
dependabot[bot]
d675626477
build(deps): bump serde from 1.0.193 to 1.0.194
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.193 to 1.0.194.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.193...v1.0.194)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-02 11:44:56 +00:00
Byron Hambly
81bb856808
Merge pull request #1514 from comit-network/dependabot/cargo/serde_json-1.0.109
build(deps): bump serde_json from 1.0.108 to 1.0.109
2024-01-01 13:57:57 +02:00
Byron Hambly
dfe02beb00
Merge pull request #1513 from comit-network/dependabot/cargo/thiserror-1.0.53
build(deps): bump thiserror from 1.0.52 to 1.0.53
2024-01-01 13:57:38 +02:00
Byron Hambly
0264c0edb1
Merge pull request #1512 from comit-network/dependabot/cargo/anyhow-1.0.78
build(deps): bump anyhow from 1.0.77 to 1.0.78
2024-01-01 13:57:19 +02:00
Byron Hambly
717b960d53
Merge pull request #1511 from comit-network/dependabot/cargo/async-trait-0.1.76
build(deps): bump async-trait from 0.1.75 to 0.1.76
2024-01-01 13:57:02 +02:00
dependabot[bot]
81119af523
build(deps): bump serde_json from 1.0.108 to 1.0.109
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.108 to 1.0.109.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.108...v1.0.109)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 11:20:15 +00:00
dependabot[bot]
5de4d1dfa7
build(deps): bump thiserror from 1.0.52 to 1.0.53
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.52 to 1.0.53.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.52...1.0.53)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 11:19:15 +00:00
dependabot[bot]
1c8c9034c0
build(deps): bump anyhow from 1.0.77 to 1.0.78
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.77 to 1.0.78.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.77...1.0.78)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 11:18:24 +00:00
dependabot[bot]
4f6f6b8054
build(deps): bump async-trait from 0.1.75 to 0.1.76
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.75 to 0.1.76.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.75...0.1.76)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 11:17:35 +00:00
Byron Hambly
8387fb8c3e
Merge pull request #1510 from comit-network/dependabot/cargo/tempfile-3.9.0
build(deps): bump tempfile from 3.8.1 to 3.9.0
2023-12-29 15:51:42 +02:00
Byron Hambly
a8991f571e
Merge branch 'master' into monero-wallet-refresh-fix 2023-12-29 15:39:21 +02:00
binarybaron
bd3e6136ce Update wallet.rs 2023-12-29 14:13:20 +01:00
binarybaron
48abcd5b43 Add extra log message before opening redeem XMR wallet on Bob 2023-12-29 13:54:11 +01:00
binarybaron
07101deab1 Unify monero-wallet-rpc downloader logging 2023-12-29 13:54:11 +01:00
binarybaron
9e33e8b1d1 Give feedback to user about state of monero refresh and retry if fails
This commit changes the following behaviour in the refresh functionality of the monero wallet
- Allows for multiple retries because in some cases users have experienced an issue where the wallet rpc returns `no connection to daemon` even though the daemon is available. I'm not 100% sure why this happens but retrying often fixes the issue
- Attempt to print the current sync height while the wallet is syncing. This only works to some degree because the `monero-wallet-rpc` stops responding (or takes a long time to respond) while it's refreshing
- The `monero-wallet-rpc` is started with the `--no-initial-sync` flag which ensures that as soon as it's started, it's ready to respond to requests
2023-12-29 13:54:06 +01:00
dependabot[bot]
05b460a2c9
build(deps): bump tempfile from 3.8.1 to 3.9.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.8.1 to 3.9.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.8.1...v3.9.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-28 11:25:47 +00:00
Byron Hambly
8704d263c5
Merge pull request #1509 from comit-network/dependabot/cargo/anyhow-1.0.77
build(deps): bump anyhow from 1.0.76 to 1.0.77
2023-12-27 14:18:28 +02:00
dependabot[bot]
844bf23ed5
build(deps): bump anyhow from 1.0.76 to 1.0.77
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.76 to 1.0.77.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.76...1.0.77)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-27 11:58:34 +00:00
Byron Hambly
1d860b2794
Merge pull request #1508 from comit-network/dependabot/cargo/thiserror-1.0.52
build(deps): bump thiserror from 1.0.51 to 1.0.52
2023-12-26 14:01:18 +02:00
dependabot[bot]
0f68415129
build(deps): bump thiserror from 1.0.51 to 1.0.52
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.51 to 1.0.52.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.51...1.0.52)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-26 11:20:49 +00:00
Byron Hambly
3ec7f78c79
Merge pull request #1507 from comit-network/dependabot/cargo/futures-0.3.30
build(deps): bump futures from 0.3.29 to 0.3.30
2023-12-25 14:07:50 +02:00
dependabot[bot]
2026bb9fdf
build(deps): bump futures from 0.3.29 to 0.3.30
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.29 to 0.3.30.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.29...0.3.30)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-25 11:55:47 +00:00
Byron Hambly
9279af837f
Merge pull request #1505 from comit-network/dependabot/cargo/anyhow-1.0.76
build(deps): bump anyhow from 1.0.75 to 1.0.76
2023-12-21 19:42:42 +02:00
Byron Hambly
012260e361
Merge pull request #1506 from comit-network/dependabot/cargo/async-trait-0.1.75
build(deps): bump async-trait from 0.1.74 to 0.1.75
2023-12-21 18:23:10 +02:00
dependabot[bot]
712327ed03
build(deps): bump async-trait from 0.1.74 to 0.1.75
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.74 to 0.1.75.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.74...0.1.75)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-21 11:23:58 +00:00
dependabot[bot]
f29ff00feb
build(deps): bump anyhow from 1.0.75 to 1.0.76
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.75 to 1.0.76.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.75...1.0.76)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-21 11:22:43 +00:00
Byron Hambly
771809a226
Merge pull request #1504 from comit-network/dependabot/cargo/tokio-1.35.1
build(deps): bump tokio from 1.35.0 to 1.35.1
2023-12-21 07:51:49 +02:00
Byron Hambly
7f2b265ceb
Merge pull request #1503 from comit-network/dependabot/cargo/reqwest-0.11.23
build(deps): bump reqwest from 0.11.22 to 0.11.23
2023-12-21 07:51:33 +02:00
dependabot[bot]
3b9fbc866d
build(deps): bump tokio from 1.35.0 to 1.35.1
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.35.0 to 1.35.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.35.0...tokio-1.35.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-20 11:31:38 +00:00
Byron Hambly
7f2a0334d7
Merge pull request #1502 from comit-network/dependabot/cargo/time-0.3.31
build(deps): bump time from 0.3.30 to 0.3.31
2023-12-19 14:38:33 +02:00
Byron Hambly
0f7a415a6a
Merge pull request #1501 from comit-network/dependabot/cargo/async-trait-0.1.74
build(deps): bump async-trait from 0.1.68 to 0.1.74
2023-12-19 14:38:22 +02:00
Byron Hambly
89312fe09d
Merge pull request #1500 from comit-network/dependabot/cargo/toml-0.8.8
build(deps): bump toml from 0.7.6 to 0.8.8
2023-12-19 14:38:13 +02:00
Byron Hambly
bdd8231a92
Merge pull request #1499 from comit-network/dependabot/cargo/hyper-1.1.0
build(deps): bump hyper from 1.0.1 to 1.1.0
2023-12-19 14:37:50 +02:00
dependabot[bot]
3298313d51
build(deps): bump reqwest from 0.11.22 to 0.11.23
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.22 to 0.11.23.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.22...v0.11.23)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-19 11:42:55 +00:00
dependabot[bot]
3d88102cd9
build(deps): bump time from 0.3.30 to 0.3.31
Bumps [time](https://github.com/time-rs/time) from 0.3.30 to 0.3.31.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.30...v0.3.31)

---
updated-dependencies:
- dependency-name: time
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-19 11:42:37 +00:00
dependabot[bot]
c9757caf1e
build(deps): bump async-trait from 0.1.68 to 0.1.74
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.68 to 0.1.74.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.68...0.1.74)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-19 11:42:25 +00:00
dependabot[bot]
cf89da7e84
build(deps): bump toml from 0.7.6 to 0.8.8
Bumps [toml](https://github.com/toml-rs/toml) from 0.7.6 to 0.8.8.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.7.6...toml-v0.8.8)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-19 11:42:08 +00:00
dependabot[bot]
38ba2fc387
build(deps): bump hyper from 1.0.1 to 1.1.0
Bumps [hyper](https://github.com/hyperium/hyper) from 1.0.1 to 1.1.0.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v1.0.1...v1.1.0)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-19 11:41:54 +00:00
Byron Hambly
ec9b162585
Merge pull request #1477 from comit-network/dependabot/cargo/dialoguer-0.11.0
build(deps): bump dialoguer from 0.10.4 to 0.11.0
2023-12-18 14:58:42 +02:00
Byron Hambly
d68fccba56
Merge pull request #1495 from comit-network/dependabot/cargo/futures-0.3.29
build(deps): bump futures from 0.3.28 to 0.3.29
2023-12-18 14:58:09 +02:00
Byron Hambly
336fb658f3
Merge pull request #1498 from comit-network/dependabot/cargo/rust_decimal_macros-1.30.0
build(deps): bump rust_decimal_macros from 1.29.1 to 1.30.0
2023-12-18 14:57:31 +02:00
Byron Hambly
298d44fa09
Merge pull request #1497 from comit-network/dependabot/cargo/itertools-0.12.0
build(deps): bump itertools from 0.10.5 to 0.12.0
2023-12-18 14:57:24 +02:00
Byron Hambly
e6a3157913
Merge pull request #1496 from comit-network/dependabot/cargo/tracing-appender-0.2.3
build(deps): bump tracing-appender from 0.2.2 to 0.2.3
2023-12-18 14:57:11 +02:00
Byron Hambly
b813679b91
Merge pull request #1494 from comit-network/dependabot/cargo/thiserror-1.0.51
build(deps): bump thiserror from 1.0.50 to 1.0.51
2023-12-18 14:56:57 +02:00
dependabot[bot]
85b5c40384
build(deps): bump rust_decimal_macros from 1.29.1 to 1.30.0
Bumps [rust_decimal_macros](https://github.com/paupino/rust-decimal) from 1.29.1 to 1.30.0.
- [Release notes](https://github.com/paupino/rust-decimal/releases)
- [Changelog](https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paupino/rust-decimal/compare/1.29.1...1.30.0)

---
updated-dependencies:
- dependency-name: rust_decimal_macros
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 11:18:39 +00:00
dependabot[bot]
46d93b67cb
build(deps): bump itertools from 0.10.5 to 0.12.0
Bumps [itertools](https://github.com/rust-itertools/itertools) from 0.10.5 to 0.12.0.
- [Changelog](https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-itertools/itertools/compare/v0.10.5...v0.12.0)

---
updated-dependencies:
- dependency-name: itertools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 11:17:44 +00:00
dependabot[bot]
839d74be05
build(deps): bump tracing-appender from 0.2.2 to 0.2.3
Bumps [tracing-appender](https://github.com/tokio-rs/tracing) from 0.2.2 to 0.2.3.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-appender-0.2.2...tracing-appender-0.2.3)

---
updated-dependencies:
- dependency-name: tracing-appender
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 11:17:25 +00:00
dependabot[bot]
07db057b34
build(deps): bump futures from 0.3.28 to 0.3.29
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.28 to 0.3.29.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.28...0.3.29)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 11:17:03 +00:00
dependabot[bot]
ab43a51fbf
build(deps): bump thiserror from 1.0.50 to 1.0.51
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.50 to 1.0.51.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.50...1.0.51)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 11:16:41 +00:00
Byron Hambly
f5c2d63527
Merge pull request #1493 from comit-network/dependabot/cargo/mockito-1.2.0
build(deps): bump mockito from 1.1.0 to 1.2.0
2023-12-15 19:25:56 +02:00
Byron Hambly
cab4dc0a6a
Merge pull request #1488 from comit-network/dependabot/github_actions/actions/upload-artifact-4
build(deps): bump actions/upload-artifact from 3 to 4
2023-12-15 19:25:21 +02:00
Byron Hambly
9cd080f026
Merge pull request #1492 from comit-network/dependabot/cargo/tempfile-3.8.1
build(deps): bump tempfile from 3.8.0 to 3.8.1
2023-12-15 18:09:39 +02:00
Byron Hambly
df7aff938f
Merge pull request #1491 from comit-network/dependabot/cargo/qrcode-0.13.0
build(deps): bump qrcode from 0.12.0 to 0.13.0
2023-12-15 18:09:20 +02:00
Byron Hambly
c2d71f1616
Merge pull request #1490 from comit-network/dependabot/cargo/config-0.13.4
build(deps): bump config from 0.13.3 to 0.13.4
2023-12-15 18:08:58 +02:00
Byron Hambly
c8412761e0
Merge pull request #1489 from comit-network/dependabot/cargo/time-0.3.30
build(deps): bump time from 0.3.24 to 0.3.30
2023-12-15 18:07:41 +02:00
dependabot[bot]
55f95c970e
build(deps): bump mockito from 1.1.0 to 1.2.0
Bumps [mockito](https://github.com/lipanski/mockito) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/lipanski/mockito/releases)
- [Commits](https://github.com/lipanski/mockito/compare/1.1.0...1.2.0)

---
updated-dependencies:
- dependency-name: mockito
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 11:22:38 +00:00
dependabot[bot]
4d200f0c78
build(deps): bump tempfile from 3.8.0 to 3.8.1
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.8.0 to 3.8.1.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/commits)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 11:21:58 +00:00
dependabot[bot]
e44134c96d
build(deps): bump qrcode from 0.12.0 to 0.13.0
Bumps [qrcode](https://github.com/kennytm/qrcode-rust) from 0.12.0 to 0.13.0.
- [Release notes](https://github.com/kennytm/qrcode-rust/releases)
- [Commits](https://github.com/kennytm/qrcode-rust/commits)

---
updated-dependencies:
- dependency-name: qrcode
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 11:21:20 +00:00
dependabot[bot]
b4eb49e6ce
build(deps): bump config from 0.13.3 to 0.13.4
Bumps [config](https://github.com/mehcode/config-rs) from 0.13.3 to 0.13.4.
- [Changelog](https://github.com/mehcode/config-rs/blob/v0.13.4/CHANGELOG.md)
- [Commits](https://github.com/mehcode/config-rs/compare/0.13.3...v0.13.4)

---
updated-dependencies:
- dependency-name: config
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 11:20:24 +00:00
dependabot[bot]
999adf8215
build(deps): bump time from 0.3.24 to 0.3.30
Bumps [time](https://github.com/time-rs/time) from 0.3.24 to 0.3.30.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.24...v0.3.30)

---
updated-dependencies:
- dependency-name: time
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 11:19:47 +00:00
dependabot[bot]
8d95643fa7
build(deps): bump actions/upload-artifact from 3 to 4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 11:14:29 +00:00
Byron Hambly
5408a02072
Merge pull request #1483 from comit-network/dependabot/cargo/serde_json-1.0.108
build(deps): bump serde_json from 1.0.96 to 1.0.108
2023-12-14 20:08:07 +02:00
binarybaron
dc1ad6df7d Upgrade monero-wallet-rpc to v0.18.3.1 2023-12-14 17:24:11 +01:00
Byron Hambly
64674f230a
Merge pull request #1486 from comit-network/dependabot/cargo/tokio-tar-0.3.1
build(deps): bump tokio-tar from 0.3.0 to 0.3.1
2023-12-14 16:18:47 +02:00
Byron Hambly
87be3a121b
Merge pull request #1485 from comit-network/dependabot/cargo/reqwest-0.11.22
build(deps): bump reqwest from 0.11.18 to 0.11.22
2023-12-14 16:18:30 +02:00
Byron Hambly
9ba607b98b
Merge pull request #1484 from comit-network/dependabot/cargo/tokio-1.35.0
build(deps): bump tokio from 1.32.0 to 1.35.0
2023-12-14 16:18:10 +02:00
Byron Hambly
7c5b1b3abd
Merge pull request #1482 from comit-network/dependabot/cargo/pem-3.0.3
build(deps): bump pem from 3.0.2 to 3.0.3
2023-12-14 13:48:53 +02:00
dependabot[bot]
b7b54e8c5d
build(deps): bump tokio-tar from 0.3.0 to 0.3.1
Bumps [tokio-tar](https://github.com/vorot93/tokio-tar) from 0.3.0 to 0.3.1.
- [Commits](https://github.com/vorot93/tokio-tar/compare/v0.3.0...v0.3.1)

---
updated-dependencies:
- dependency-name: tokio-tar
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-14 11:40:30 +00:00
dependabot[bot]
9e4303c196
build(deps): bump reqwest from 0.11.18 to 0.11.22
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.18 to 0.11.22.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.18...v0.11.22)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-14 11:39:54 +00:00
dependabot[bot]
e21043be4e
build(deps): bump tokio from 1.32.0 to 1.35.0
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.32.0 to 1.35.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.32.0...tokio-1.35.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-14 11:39:26 +00:00
dependabot[bot]
d39c9eb738
build(deps): bump serde_json from 1.0.96 to 1.0.108
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.96 to 1.0.108.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.96...v1.0.108)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-14 11:39:04 +00:00
dependabot[bot]
ab2db98c79
build(deps): bump pem from 3.0.2 to 3.0.3
Bumps [pem](https://github.com/jcreekmore/pem-rs) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/jcreekmore/pem-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jcreekmore/pem-rs/compare/v3.0.2...v3.0.3)

---
updated-dependencies:
- dependency-name: pem
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-14 11:38:45 +00:00
Byron Hambly
6d87781a68
Merge pull request #1476 from comit-network/dependabot/cargo/base64-0.21.5
build(deps): bump base64 from 0.21.2 to 0.21.5
2023-12-13 14:41:44 +02:00
Byron Hambly
1db391dc6a
Merge pull request #1478 from comit-network/dependabot/cargo/toml-0.7.6
build(deps): bump toml from 0.5.11 to 0.7.6
2023-12-13 14:41:34 +02:00
Byron Hambly
b54938ff7b
Merge pull request #1480 from comit-network/dependabot/cargo/anyhow-1.0.75
build(deps): bump anyhow from 1.0.71 to 1.0.75
2023-12-13 14:41:25 +02:00
Byron Hambly
9f401cd471
Merge pull request #1481 from comit-network/dependabot/cargo/serde-1.0.193
build(deps): bump serde from 1.0.164 to 1.0.193
2023-12-13 14:41:15 +02:00
Byron Hambly
f9c4a4e344
Merge pull request #1475 from comit-network/dependabot/cargo/tempfile-3.8.0
build(deps): bump tempfile from 3.6.0 to 3.8.0
2023-12-13 14:05:17 +02:00
dependabot[bot]
9481f54fe0
build(deps): bump serde from 1.0.164 to 1.0.193
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.164 to 1.0.193.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.164...v1.0.193)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-13 11:46:38 +00:00
dependabot[bot]
b015397400
build(deps): bump anyhow from 1.0.71 to 1.0.75
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.71 to 1.0.75.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.71...1.0.75)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-13 11:46:20 +00:00
dependabot[bot]
641c107012
build(deps): bump toml from 0.5.11 to 0.7.6
Bumps [toml](https://github.com/toml-rs/toml) from 0.5.11 to 0.7.6.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.5.11...toml-v0.7.6)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-13 11:45:38 +00:00
dependabot[bot]
69751d204d
build(deps): bump dialoguer from 0.10.4 to 0.11.0
Bumps [dialoguer](https://github.com/console-rs/dialoguer) from 0.10.4 to 0.11.0.
- [Changelog](https://github.com/console-rs/dialoguer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/console-rs/dialoguer/compare/v0.10.4...v0.11.0)

---
updated-dependencies:
- dependency-name: dialoguer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-13 11:45:21 +00:00
dependabot[bot]
ae67e6386b
build(deps): bump base64 from 0.21.2 to 0.21.5
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.21.2 to 0.21.5.
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.21.2...v0.21.5)

---
updated-dependencies:
- dependency-name: base64
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-13 11:45:05 +00:00
dependabot[bot]
8ff683f815
build(deps): bump tempfile from 3.6.0 to 3.8.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.6.0 to 3.8.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.6.0...v3.8.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-13 11:44:49 +00:00
Byron Hambly
66283194e5
Merge pull request #1474 from comit-network/dependabot/cargo/comfy-table-7.1.0
build(deps): bump comfy-table from 6.1.4 to 7.1.0
2023-12-12 20:11:36 +02:00
Byron Hambly
8a3eed18b0
Merge pull request #1468 from comit-network/dependabot/cargo/uuid-1.6.1
build(deps): bump uuid from 1.4.1 to 1.6.1
2023-12-12 20:11:15 +02:00
Byron Hambly
3fb4926b6b
Merge pull request #1473 from comit-network/dependabot/cargo/sha2-0.10.8
build(deps): bump sha2 from 0.10.6 to 0.10.8
2023-12-12 15:52:07 +02:00
Byron Hambly
38e248ce3a
Merge pull request #1472 from comit-network/dependabot/cargo/hyper-1.0.1
build(deps): bump hyper from 0.14.26 to 1.0.1
2023-12-12 15:51:56 +02:00
Byron Hambly
2877a6bc60
Merge pull request #1471 from comit-network/dependabot/cargo/thiserror-1.0.50
build(deps): bump thiserror from 1.0.40 to 1.0.50
2023-12-12 15:51:20 +02:00
Byron Hambly
7b3374f29d
Merge pull request #1470 from comit-network/dependabot/cargo/proptest-1.4.0
build(deps): bump proptest from 1.2.0 to 1.4.0
2023-12-12 15:51:07 +02:00
Byron Hambly
a3555fe733
Merge pull request #1469 from comit-network/dependabot/cargo/data-encoding-2.5.0
build(deps): bump data-encoding from 2.4.0 to 2.5.0
2023-12-12 15:50:42 +02:00
dependabot[bot]
0ea8ce71b6
build(deps): bump comfy-table from 6.1.4 to 7.1.0
Bumps [comfy-table](https://github.com/nukesor/comfy-table) from 6.1.4 to 7.1.0.
- [Release notes](https://github.com/nukesor/comfy-table/releases)
- [Changelog](https://github.com/Nukesor/comfy-table/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nukesor/comfy-table/compare/v6.1.4...v7.1.0)

---
updated-dependencies:
- dependency-name: comfy-table
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-12 11:44:32 +00:00
dependabot[bot]
8b8c69a9cc
build(deps): bump sha2 from 0.10.6 to 0.10.8
Bumps [sha2](https://github.com/RustCrypto/hashes) from 0.10.6 to 0.10.8.
- [Commits](https://github.com/RustCrypto/hashes/compare/sha2-v0.10.6...sha2-v0.10.8)

---
updated-dependencies:
- dependency-name: sha2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-12 11:42:48 +00:00
dependabot[bot]
81ea313d4e
build(deps): bump hyper from 0.14.26 to 1.0.1
Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.26 to 1.0.1.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.26...v1.0.1)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-12 11:42:37 +00:00
dependabot[bot]
42e0cdcae9
build(deps): bump thiserror from 1.0.40 to 1.0.50
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.40 to 1.0.50.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.40...1.0.50)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-12 11:42:26 +00:00
dependabot[bot]
9c7d33acbe
build(deps): bump proptest from 1.2.0 to 1.4.0
Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.2.0 to 1.4.0.
- [Release notes](https://github.com/proptest-rs/proptest/releases)
- [Changelog](https://github.com/proptest-rs/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/proptest-rs/proptest/compare/v1.2.0...v1.4.0)

---
updated-dependencies:
- dependency-name: proptest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-12 11:42:14 +00:00
dependabot[bot]
c7bf84d936
build(deps): bump data-encoding from 2.4.0 to 2.5.0
Bumps [data-encoding](https://github.com/ia0/data-encoding) from 2.4.0 to 2.5.0.
- [Commits](https://github.com/ia0/data-encoding/commits)

---
updated-dependencies:
- dependency-name: data-encoding
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-12 11:42:04 +00:00
dependabot[bot]
f602bec096
build(deps): bump uuid from 1.4.1 to 1.6.1
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.4.1 to 1.6.1.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.4.1...1.6.1)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-12 11:41:50 +00:00
Byron Hambly
b7347da27a
Merge pull request #1461 from comit-network/dependabot/cargo/url-2.5.0
build(deps): bump url from 2.4.0 to 2.5.0
2023-12-11 15:24:34 +02:00
Byron Hambly
c8034c58a8
Merge pull request #1462 from comit-network/dependabot/cargo/tokio-util-0.7.10
build(deps): bump tokio-util from 0.7.3 to 0.7.10
2023-12-11 15:24:24 +02:00
Byron Hambly
141b9a99fc
Merge pull request #1463 from comit-network/dependabot/cargo/strum-0.25.0
build(deps): bump strum from 0.24.1 to 0.25.0
2023-12-11 15:24:14 +02:00
Byron Hambly
8570e2b658
Merge pull request #1464 from comit-network/dependabot/cargo/tracing-0.1.40
build(deps): bump tracing from 0.1.38 to 0.1.40
2023-12-11 15:23:54 +02:00
dependabot[bot]
46a73e2a63
build(deps): bump tracing from 0.1.38 to 0.1.40
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.38 to 0.1.40.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.38...tracing-0.1.40)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-11 11:17:40 +00:00
dependabot[bot]
73162adcd7
build(deps): bump strum from 0.24.1 to 0.25.0
Bumps [strum](https://github.com/Peternator7/strum) from 0.24.1 to 0.25.0.
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-11 11:17:18 +00:00
dependabot[bot]
564302b184
build(deps): bump tokio-util from 0.7.3 to 0.7.10
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.3 to 0.7.10.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/commits)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-11 11:16:48 +00:00
dependabot[bot]
7ccb9d61be
build(deps): bump url from 2.4.0 to 2.5.0
Bumps [url](https://github.com/servo/rust-url) from 2.4.0 to 2.5.0.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.4.0...v2.5.0)

---
updated-dependencies:
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-11 11:16:30 +00:00
Byron Hambly
3ae7e581f0
Merge pull request #1458 from comit-network/dependabot/github_actions/actions/setup-python-5
build(deps): bump actions/setup-python from 4 to 5
2023-12-11 12:29:18 +02:00
dependabot[bot]
c8802bad3d
build(deps): bump actions/setup-python from 4 to 5
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-07 11:13:34 +00:00
Byron Hambly
db400ad4c4
Merge pull request #1456 from delta1/rust-1.70
ci: update minimum rust version to 1.70
2023-12-06 13:54:05 +02:00
Byron Hambly
dbb66fe6b7
ci: remove bors
bors has been deprecated for some time and seems to be gone now.
2023-12-06 13:19:50 +02:00
Byron Hambly
53972cdeb3
ci: update minimum rust version to 1.70
this is to fix the issue with installing sqlx-cli in ci
2023-12-06 12:31:13 +02:00
bors[bot]
e1c3a5d991
Merge #1451
1451: build(deps): bump Swatinem/rust-cache from 2.6.2 to 2.7.1 r=delta1 a=dependabot[bot]

Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.6.2 to 2.7.1.
<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>v2.7.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix save-if documentation in readme by <a href="https://github.com/rukai"><code>`@​rukai</code></a>` in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/166">Swatinem/rust-cache#166</a></li>
<li>Support for <code>trybuild</code> and similar macro testing tools by <a href="https://github.com/neysofu"><code>`@​neysofu</code></a>` in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/168">Swatinem/rust-cache#168</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/rukai"><code>`@​rukai</code></a>` made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/166">Swatinem/rust-cache#166</a></li>
<li><a href="https://github.com/neysofu"><code>`@​neysofu</code></a>` made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/168">Swatinem/rust-cache#168</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/Swatinem/rust-cache/compare/v2.6.2...v2.7.0">https://github.com/Swatinem/rust-cache/compare/v2.6.2...v2.7.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's changelog</a>.</em></p>
<blockquote>
<h2>2.7.1</h2>
<ul>
<li>Update toml parser to fix parsing errors.</li>
</ul>
<h2>2.7.0</h2>
<ul>
<li>Properly cache <code>trybuild</code> tests.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="3cf7f8cc28"><code>3cf7f8c</code></a> 2.7.1</li>
<li><a href="e03705e031"><code>e03705e</code></a> changelog</li>
<li><a href="b86d1c6caa"><code>b86d1c6</code></a> bump all the other dependencies too</li>
<li><a href="f27990c89a"><code>f27990c</code></a> Update Dependencies (<a href="https://redirect.github.com/swatinem/rust-cache/issues/172">#172</a>)</li>
<li><a href="a95ba19544"><code>a95ba19</code></a> 2.7.0</li>
<li><a href="82c8487d00"><code>82c8487</code></a> changelog</li>
<li><a href="67c46e7159"><code>67c46e7</code></a> Support for <code>trybuild</code> and similar macro testing tools (<a href="https://redirect.github.com/swatinem/rust-cache/issues/168">#168</a>)</li>
<li><a href="44b6087283"><code>44b6087</code></a> Fix save-if documentation in readme (<a href="https://redirect.github.com/swatinem/rust-cache/issues/166">#166</a>)</li>
<li>See full diff in <a href="https://github.com/swatinem/rust-cache/compare/v2.6.2...v2.7.1">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=2.6.2&new-version=2.7.1)](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` show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- ``@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>
2023-10-23 14:09:36 +00:00
dependabot[bot]
9819f74c12
build(deps): bump Swatinem/rust-cache from 2.6.2 to 2.7.1
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.6.2 to 2.7.1.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/swatinem/rust-cache/compare/v2.6.2...v2.7.1)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-23 11:25:08 +00:00
bors[bot]
d6c1353ed5
Merge #1450
1450: build(deps): bump pem to 3.0 r=delta1 a=delta1

replaces #1415

also fixes the `seed_from_pem_fails_for_long_seed` unit test, which was "passing" but not actually testing what it meant to.

Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2023-10-23 09:43:13 +00:00
Byron Hambly
dcf9f24b77
build(deps): bump pem to 3.0
replaces #1415

also fixes the `seed_from_pem_fails_for_long_seed` unit test, which was
"passing" but not actually testing what it meant to.
2023-10-23 11:21:04 +02:00
bors[bot]
04e618feaa
Merge #1449
1449: build(deps): bump actions/checkout from 4.0.0 to 4.1.1 r=delta1 a=dependabot[bot]

Bumps [actions/checkout](https://github.com/actions/checkout) from 4.0.0 to 4.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/checkout/releases">actions/checkout's releases</a>.</em></p>
<blockquote>
<h2>v4.1.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Update CODEOWNERS to Launch team by <a href="https://github.com/joshmgross"><code>`@​joshmgross</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1510">actions/checkout#1510</a></li>
<li>Correct link to GitHub Docs by <a href="https://github.com/peterbe"><code>`@​peterbe</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1511">actions/checkout#1511</a></li>
<li>Link to release page from what's new section by <a href="https://github.com/cory-miller"><code>`@​cory-miller</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1514">actions/checkout#1514</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/joshmgross"><code>`@​joshmgross</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1510">actions/checkout#1510</a></li>
<li><a href="https://github.com/peterbe"><code>`@​peterbe</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1511">actions/checkout#1511</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v4...v4.1.1">https://github.com/actions/checkout/compare/v4...v4.1.1</a></p>
<h2>v4.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README.md for V4 by <a href="https://github.com/sivapalan"><code>`@​sivapalan</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1452">actions/checkout#1452</a></li>
<li>Add support for partial checkout filters by <a href="https://github.com/finleygn"><code>`@​finleygn</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1396">actions/checkout#1396</a></li>
<li>Prepare 4.1.0 release by <a href="https://github.com/cory-miller"><code>`@​cory-miller</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1496">actions/checkout#1496</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/sivapalan"><code>`@​sivapalan</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1452">actions/checkout#1452</a></li>
<li><a href="https://github.com/finleygn"><code>`@​finleygn</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1396">actions/checkout#1396</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v4.0.0...v4.1.0">https://github.com/actions/checkout/compare/v4.0.0...v4.1.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>v4.1.0</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/1396">Add support for partial checkout filters</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="b4ffde65f4"><code>b4ffde6</code></a> Link to release page from what's new section (<a href="https://redirect.github.com/actions/checkout/issues/1514">#1514</a>)</li>
<li><a href="8530928916"><code>8530928</code></a> Correct link to GitHub Docs (<a href="https://redirect.github.com/actions/checkout/issues/1511">#1511</a>)</li>
<li><a href="7cdaf2fbc0"><code>7cdaf2f</code></a> Update CODEOWNERS to Launch team (<a href="https://redirect.github.com/actions/checkout/issues/1510">#1510</a>)</li>
<li><a href="8ade135a41"><code>8ade135</code></a> Prepare 4.1.0 release (<a href="https://redirect.github.com/actions/checkout/issues/1496">#1496</a>)</li>
<li><a href="c533a0a4cf"><code>c533a0a</code></a> Add support for partial checkout filters (<a href="https://redirect.github.com/actions/checkout/issues/1396">#1396</a>)</li>
<li><a href="72f2cec99f"><code>72f2cec</code></a> Update README.md for V4 (<a href="https://redirect.github.com/actions/checkout/issues/1452">#1452</a>)</li>
<li>See full diff in <a href="https://github.com/actions/checkout/compare/v4.0.0...v4.1.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=4.0.0&new-version=4.1.1)](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` show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- ``@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>
2023-10-18 12:16:37 +00:00
dependabot[bot]
eac6a6be5c
build(deps): bump actions/checkout from 4.0.0 to 4.1.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.0.0 to 4.1.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.0.0...v4.1.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 11:13:47 +00:00
bors[bot]
c93eaa8057
Merge #1447
1447: Update lock timeout to 10 min r=binarybaron a=pokkst

This updates the lock timeout from 3 min to 10 min.

Over Tor, it is sometimes very slow to setup a swap, completely missing the 3 minute window. The BTC will still lock and broadcast, but the ASB will have already stopped watching for the lock tx, thus will not lock the XMR once the BTC lock tx confirms. This mitigates that issue.

Co-authored-by: pokkst <pokkst@protonmail.com>
2023-09-30 19:13:34 +00:00
pokkst
5182b4f53a
Update lock timeout to 10 min 2023-09-29 08:08:25 -05:00
bors[bot]
2de492f23a
Merge #1445
1445: Release version 0.12.3 r=binarybaron a=comit-botty-mc-botface

Hi `@binarybaron!`

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/6252660853.
I've updated the changelog and bumped the versions in the manifest files in this commit: 782407897577b44c5b9fe3f3a46001efaa5e4449.

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>
2023-09-23 20:04:24 +00:00
COMIT Botty McBotface
7824078975 Prepare release 0.12.3 2023-09-20 18:34:50 +00:00
bors[bot]
a3455d6032
Merge #1443
1443: Add CHANGELOG entry for PR 1441 r=binarybaron a=binarybaron



Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
2023-09-08 09:45:43 +00:00
binarybaron
332fd39164
Add CHANGELOG entry for PR 1441 2023-09-08 11:45:10 +02:00
bors[bot]
7d6b1c2244
Merge #1441
1441: Dynamically choose monero daemon to connect to r=delta1 a=binarybaron

The GUI now does this with https://github.com/UnstoppableSwap/unstoppableswap-gui/pull/157. However, ideally, this should be handled by swap itself and not by a third party wrapper which is why this PR implements a similar behaviour for  swap. On startup we loop through list of public Monero daemons and choose one dynamically based on their response to the get_info RPC call.

Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
2023-09-08 07:20:57 +00:00
binarybaron
3467523849 Dynamically choose monero daemon to connect to 2023-09-07 19:10:23 +02:00
bors[bot]
1f793c5d98
Merge #1442
1442: build(deps): bump actions/checkout from 3.5.3 to 4.0.0 r=delta1 a=dependabot[bot]

Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.3 to 4.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/checkout/releases">actions/checkout's releases</a>.</em></p>
<blockquote>
<h2>v4.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update default runtime to node20 by <a href="https://github.com/takost"><code>`@​takost</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1436">actions/checkout#1436</a></li>
<li>Support fetching without the --progress option by <a href="https://github.com/simonbaird"><code>`@​simonbaird</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1067">actions/checkout#1067</a></li>
<li>Release 4.0.0 by <a href="https://github.com/takost"><code>`@​takost</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1447">actions/checkout#1447</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/takost"><code>`@​takost</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1436">actions/checkout#1436</a></li>
<li><a href="https://github.com/simonbaird"><code>`@​simonbaird</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1067">actions/checkout#1067</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v3...v4.0.0">https://github.com/actions/checkout/compare/v3...v4.0.0</a></p>
<h2>v3.6.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Mark test scripts with Bash'isms to be run via Bash by <a href="https://github.com/dscho"><code>`@​dscho</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1377">actions/checkout#1377</a></li>
<li>Add option to fetch tags even if fetch-depth &gt; 0 by <a href="https://github.com/RobertWieczoreck"><code>`@​RobertWieczoreck</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/579">actions/checkout#579</a></li>
<li>Release 3.6.0 by <a href="https://github.com/luketomlinson"><code>`@​luketomlinson</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1437">actions/checkout#1437</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/RobertWieczoreck"><code>`@​RobertWieczoreck</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/579">actions/checkout#579</a></li>
<li><a href="https://github.com/luketomlinson"><code>`@​luketomlinson</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1437">actions/checkout#1437</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v3.5.3...v3.6.0">https://github.com/actions/checkout/compare/v3.5.3...v3.6.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's changelog</a>.</em></p>
<blockquote>
<h2>v4.0.0</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/1067">Support fetching without the --progress option</a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/1436">Update to node20</a></li>
</ul>
<h2>v3.6.0</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/1377">Fix: Mark test scripts with Bash'isms to be run via Bash</a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/579">Add option to fetch tags even if fetch-depth &gt; 0</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="3df4ab11eb"><code>3df4ab1</code></a> Release 4.0.0 (<a href="https://redirect.github.com/actions/checkout/issues/1447">#1447</a>)</li>
<li><a href="8b5e8b7687"><code>8b5e8b7</code></a> Support fetching without the --progress option (<a href="https://redirect.github.com/actions/checkout/issues/1067">#1067</a>)</li>
<li><a href="97a652b800"><code>97a652b</code></a> Update default runtime to node20 (<a href="https://redirect.github.com/actions/checkout/issues/1436">#1436</a>)</li>
<li><a href="f43a0e5ff2"><code>f43a0e5</code></a> Release 3.6.0 (<a href="https://redirect.github.com/actions/checkout/issues/1437">#1437</a>)</li>
<li><a href="7739b9ba2e"><code>7739b9b</code></a> Add option to fetch tags even if fetch-depth &gt; 0 (<a href="https://redirect.github.com/actions/checkout/issues/579">#579</a>)</li>
<li><a href="96f53100ba"><code>96f5310</code></a> Mark test scripts with Bash'isms to be run via Bash (<a href="https://redirect.github.com/actions/checkout/issues/1377">#1377</a>)</li>
<li>See full diff in <a href="https://github.com/actions/checkout/compare/v3.5.3...v4.0.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=3.5.3&new-version=4.0.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` show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- ``@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>
2023-09-05 12:48:19 +00:00
dependabot[bot]
a96527fc2a
build(deps): bump actions/checkout from 3.5.3 to 4.0.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.3 to 4.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3.5.3...v4.0.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-05 11:38:13 +00:00
bors[bot]
191247efeb
Merge #1440
1440: Update build-release-binaries.yml rustc version to 1.67 r=binarybaron a=binarybaron



Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
2023-09-02 19:35:37 +00:00
binarybaron
16c1daea78
Update build-release-binaries.yml rustc version to 1.67 2023-09-02 19:15:15 +02:00
bors[bot]
5b162368ca
Merge #1438
1438: Revert "Refresh monero monitoring wallet at startup to ensure daemon is is av…" r=binarybaron a=binarybaron

Reverts comit-network/xmr-btc-swap#1436

Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
2023-09-01 15:36:24 +00:00
binarybaron
2e1909685d
Revert "Refresh monero monitoring wallet at startup to ensure daemon is is av…" 2023-09-01 17:36:00 +02:00
bors[bot]
a34c112622
Merge #1436
1436: Refresh monero monitoring wallet at startup to ensure daemon is is av… r=delta1 a=binarybaron

…ailable

Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
2023-08-31 12:04:54 +00:00
binarybaron
844ebc7de3 Refresh monero monitoring wallet at startup to ensure daemon is is available 2023-08-31 00:47:18 +02:00
bors[bot]
d664f1e71d
Merge #1435
1435: Use older version sqlx-cli to be compatible with MSRV r=binarybaron a=binarybaron



Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
2023-08-30 20:43:37 +00:00
binarybaron
dd388d471a Use older version sqlx-cli to be compatible with MSRV 2023-08-30 22:39:14 +02:00
bors[bot]
a57c53434d
Merge #1431
1431: build(deps): bump Swatinem/rust-cache from 2.6.1 to 2.6.2 r=delta1 a=dependabot[bot]

Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.6.1 to 2.6.2.
<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>v2.6.2</h2>
<h2>What's Changed</h2>
<ul>
<li>dep: Use <code>smol-toml</code> instead of <code>toml</code> by <a href="https://github.com/NobodyXu"><code>`@​NobodyXu</code></a>` in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/164">Swatinem/rust-cache#164</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/Swatinem/rust-cache/compare/v2...v2.6.2">https://github.com/Swatinem/rust-cache/compare/v2...v2.6.2</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's changelog</a>.</em></p>
<blockquote>
<h2>2.6.2</h2>
<ul>
<li>Fix <code>toml</code> parsing.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="e207df5d26"><code>e207df5</code></a> 2.6.2</li>
<li><a href="decb69d790"><code>decb69d</code></a> Update dependencies and add changelog</li>
<li><a href="ab6b2769d1"><code>ab6b276</code></a> dep: Use <code>smol-toml</code> instead of <code>toml</code> (<a href="https://redirect.github.com/swatinem/rust-cache/issues/164">#164</a>)</li>
<li>See full diff in <a href="https://github.com/swatinem/rust-cache/compare/v2.6.1...v2.6.2">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=2.6.1&new-version=2.6.2)](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` show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- ``@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>
2023-08-21 12:49:27 +00:00
dependabot[bot]
ca90c97b5d
build(deps): bump Swatinem/rust-cache from 2.6.1 to 2.6.2
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.6.1 to 2.6.2.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/swatinem/rust-cache/compare/v2.6.1...v2.6.2)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-21 11:49:48 +00:00
bors[bot]
f0e94c60cd
Merge #1430
1430: build(deps): bump Swatinem/rust-cache from 2.6.0 to 2.6.1 r=delta1 a=dependabot[bot]

Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.6.0 to 2.6.1.
<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>v2.6.1</h2>
<ul>
<li>Fix hash contributions of <code>Cargo.lock</code>/<code>Cargo.toml</code> files.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's changelog</a>.</em></p>
<blockquote>
<h2>2.6.1</h2>
<ul>
<li>Fix hash contributions of <code>Cargo.lock</code>/<code>Cargo.toml</code> files.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="578b235f6e"><code>578b235</code></a> 2.6.1</li>
<li><a href="5113490c3f"><code>5113490</code></a> prepare 2.6.1</li>
<li><a href="c0e052c18c"><code>c0e052c</code></a> Fix hashing of parsed <code>Cargo.toml</code> (<a href="https://redirect.github.com/swatinem/rust-cache/issues/160">#160</a>)</li>
<li><a href="4e0f4b19dd"><code>4e0f4b1</code></a> Fix typo in hashing parsed <code>Cargo.lock</code> (<a href="https://redirect.github.com/swatinem/rust-cache/issues/159">#159</a>)</li>
<li><a href="b919e1427f"><code>b919e14</code></a> feat: Add logging to <code>Cargo.lock</code>/<code>Cargo.toml</code> hashing (<a href="https://redirect.github.com/swatinem/rust-cache/issues/156">#156</a>)</li>
<li>See full diff in <a href="https://github.com/swatinem/rust-cache/compare/v2.6.0...v2.6.1">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=2.6.0&new-version=2.6.1)](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` show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- ``@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>
2023-08-14 12:08:07 +00:00
bors[bot]
d0a35ab21b
Merge #1428
1428: Fix issue where Windows cannot open ASB wallet to create lock XMR transaction r=delta1 a=pokkst

It seems on Windows that opening an already opened wallet results in an error/crash. This does not seem to be the case for Linux and macOS. Removing this line fixed the issue on Windows, and had no regressions on macOS/Linux from my testing.

Co-authored-by: pokkst <pokkst@protonmail.com>
2023-08-14 11:38:10 +00:00
dependabot[bot]
5aadfbf996
build(deps): bump Swatinem/rust-cache from 2.6.0 to 2.6.1
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/swatinem/rust-cache/compare/v2.6.0...v2.6.1)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-14 11:37:40 +00:00
bors[bot]
4c69013c1b
Merge #1429
1429: Immediately sync bitcoin tx status upon subscribing r=binarybaron a=binarybaron



Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
2023-08-13 19:21:02 +00:00
binarybaron
2e181dac9c Immediately sync bitcoin tx status upon subscribing 2023-08-13 14:33:49 +02:00
pokkst
d7d87d96ac
Maybe fix issue on Windows where the wallet cannot open during XMR locking phase
(cherry picked from commit 879cb8bc0131b8a059466ca00ae9f7842c4ac018)
2023-08-08 18:25:30 -05:00
bors[bot]
20afb35d5b
Merge #1423
1423: Release version 0.12.2 r=delta1 a=comit-botty-mc-botface

Hi `@delta1!`

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/5794466350.
I've updated the changelog and bumped the versions in the manifest files in this commit: 94febeca03cf59abee3f508b8d1efe316a8264c1.

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>
2023-08-08 10:28:43 +00:00
COMIT Botty McBotface
94febeca03 Prepare release 0.12.2 2023-08-08 08:17:28 +00:00
bors[bot]
2d95e8854a
Merge #1422
1422: ci: add rustfmt to draft-new-release r=delta1 a=delta1

fixing the draft new release action, churn in dprint means that now rustfmt is run separately so it needs to be installed at this step 

previous failure: https://github.com/comit-network/xmr-btc-swap/actions/runs/5787093337/job/15683238703 

Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2023-08-08 07:51:42 +00:00
Byron Hambly
bde151f535
ci: add rustfmt to draft-new-release since changes to dprint 2023-08-08 09:48:44 +02:00
bors[bot]
cf95f465a5
Merge #1421
1421: ci: fix dprint version for draft action r=delta1 a=delta1

This should fix the dprint issue in the draft release action - [link to failing action](https://github.com/comit-network/xmr-btc-swap/actions/runs/5763212564/job/15624561961) 

Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2023-08-07 15:05:47 +00:00
Byron Hambly
e741de1c08
ci: fix dprint version for draft action 2023-08-07 15:31:09 +02:00
bors[bot]
6c305d2cc2
Merge #1419
1419: fix typo in asb/README.md r=binarybaron a=icy-ux

points should be plural

Co-authored-by: icy-ux <>
2023-08-04 20:38:13 +00:00
icy-ux
3fa7cbbc15 fix typo 2023-08-04 19:15:04 +00:00
bors[bot]
9c811f87cd
Merge #1417
1417: feat(asb): allow asb to register with mulitple rendezvous nodes r=binarybaron a=delta1

implements #633  

This PR updates the ASB to be able to register with multiple rendezvous nodes. A unit test is added that checks this behaviour. I also tested it manually overnight and it repeatedly reregistered with the specified nodes.  

The config file option is left as `rendezvous_point` for backwards compatibility, but now uses the same deserialization as introduced in #1231 so that multiple addresses can be specified in a comma separated string, or as a toml array of strings.

Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2023-08-04 13:57:35 +00:00
Byron Hambly
6b9f4cca99
Merge branch 'master' into multi-rendezvous 2023-08-04 13:06:08 +00:00
Byron Hambly
5e192acac2
feat(asb): allow asb to register with mulitple rendezvous nodes 2023-08-04 15:04:58 +02:00
bors[bot]
6eb4f43591
Merge #1418
1418: build(deps): bump Swatinem/rust-cache from 2.5.1 to 2.6.0 r=delta1 a=dependabot[bot]

Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.5.1 to 2.6.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>v2.6.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add &quot;buildjet&quot; as a second <code>cache-provider</code> backend <a href="https://github.com/joroshiba"><code>`@​joroshiba</code></a>` in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/154">Swatinem/rust-cache#154</a></li>
<li>Clean up sparse registry index.</li>
<li>Do not clean up src of <code>-sys</code> crates.</li>
<li>Remove <code>.cargo/credentials.toml</code> before saving.</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/joroshiba"><code>`@​joroshiba</code></a>` made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/154">Swatinem/rust-cache#154</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/Swatinem/rust-cache/compare/v2.5.1...v2.6.0">https://github.com/Swatinem/rust-cache/compare/v2.5.1...v2.6.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's changelog</a>.</em></p>
<blockquote>
<h2>2.6.0</h2>
<ul>
<li>Add &quot;buildjet&quot; as a second <code>cache-provider</code> backend.</li>
<li>Clean up sparse registry index.</li>
<li>Do not clean up src of <code>-sys</code> crates.</li>
<li>Remove <code>.cargo/credentials.toml</code> before saving.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="b8a6852b4f"><code>b8a6852</code></a> 2.6.0</li>
<li><a href="80c47cc945"><code>80c47cc</code></a> Clean up <code>credentials.toml</code></li>
<li><a href="5ec9842c14"><code>5ec9842</code></a> bump test dependencies</li>
<li><a href="3312b3ab47"><code>3312b3a</code></a> Slightly improve docs</li>
<li><a href="f6987ea139"><code>f6987ea</code></a> Improve errors and cleanup</li>
<li><a href="e97a782690"><code>e97a782</code></a> move buildjet test into its own workflow</li>
<li><a href="b00faf5858"><code>b00faf5</code></a> Add BuildJet Option (<a href="https://redirect.github.com/swatinem/rust-cache/issues/154">#154</a>)</li>
<li><a href="9de8f90afb"><code>9de8f90</code></a> Add <code>jemalloc</code> to test <code>-sys</code> style dependencies</li>
<li><a href="fd201ad913"><code>fd201ad</code></a> test globbing of <code>rust-toolchain</code> differently</li>
<li><a href="cf3f88254c"><code>cf3f882</code></a> &quot;properly rename git-registry workflow&quot;</li>
<li>Additional commits viewable in <a href="https://github.com/swatinem/rust-cache/compare/v2.5.1...v2.6.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=2.5.1&new-version=2.6.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-02 13:22:12 +00:00
dependabot[bot]
3d744a3470
build(deps): bump Swatinem/rust-cache from 2.5.1 to 2.6.0
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.5.1 to 2.6.0.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/swatinem/rust-cache/compare/v2.5.1...v2.6.0)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-02 11:48:03 +00:00
bors[bot]
137da75953
Merge #1404
1404: build(deps): bump Swatinem/rust-cache from 2.4.0 to 2.5.1 r=delta1 a=dependabot[bot]

Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.4.0 to 2.5.1.
<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>v2.5.1</h2>
<ul>
<li>Fix hash contribution of <code>Cargo.lock</code>.</li>
</ul>
<h2>v2.5.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: Rm workspace crates version before caching by <a href="https://github.com/NobodyXu"><code>`@​NobodyXu</code></a>` in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/147">Swatinem/rust-cache#147</a></li>
<li>feat: Add hash of <code>.cargo/config.toml</code> to key by <a href="https://github.com/NobodyXu"><code>`@​NobodyXu</code></a>` in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/149">Swatinem/rust-cache#149</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/NobodyXu"><code>`@​NobodyXu</code></a>` made their first contribution in <a href="https://redirect.github.com/Swatinem/rust-cache/pull/147">Swatinem/rust-cache#147</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/Swatinem/rust-cache/compare/v2.4.0...v2.5.0">https://github.com/Swatinem/rust-cache/compare/v2.4.0...v2.5.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's changelog</a>.</em></p>
<blockquote>
<h2>2.5.1</h2>
<ul>
<li>Fix hash contribution of <code>Cargo.lock</code>.</li>
</ul>
<h2>2.5.0</h2>
<ul>
<li>feat: Rm workspace crates version before caching.</li>
<li>feat: Add hash of <code>.cargo/config.toml</code> to key.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="dd05243424"><code>dd05243</code></a> 2.5.1</li>
<li><a href="65dbc54a5d"><code>65dbc54</code></a> update changelog</li>
<li><a href="be7377e68e"><code>be7377e</code></a> fix <code>src/config.ts</code>: Remove <code>sort_object</code> (<a href="https://redirect.github.com/swatinem/rust-cache/issues/152">#152</a>)</li>
<li><a href="2656b87321"><code>2656b87</code></a> 2.5.0</li>
<li><a href="715970feed"><code>715970f</code></a> feat: Add hash of <code>.cargo/config.toml</code> to key (<a href="https://redirect.github.com/swatinem/rust-cache/issues/149">#149</a>)</li>
<li><a href="3d4000164d"><code>3d40001</code></a> feat: Rm workspace crates version before caching (<a href="https://redirect.github.com/swatinem/rust-cache/issues/147">#147</a>)</li>
<li>See full diff in <a href="https://github.com/swatinem/rust-cache/compare/v2.4.0...v2.5.1">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=2.4.0&new-version=2.5.1)](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>
2023-08-01 11:26:11 +00:00
dependabot[bot]
5207d10d08
build(deps): bump Swatinem/rust-cache from 2.4.0 to 2.5.1
Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.4.0 to 2.5.1.
- [Release notes](https://github.com/swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/swatinem/rust-cache/compare/v2.4.0...v2.5.1)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-01 09:23:52 +00:00
bors[bot]
7514d5f166
Merge #1402
1402: build(deps): bump thomaseizinger/create-pull-request from 1.3.0 to 1.3.1 r=delta1 a=dependabot[bot]

Bumps [thomaseizinger/create-pull-request](https://github.com/thomaseizinger/create-pull-request) from 1.3.0 to 1.3.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/thomaseizinger/create-pull-request/blob/master/CHANGELOG.md">thomaseizinger/create-pull-request's changelog</a>.</em></p>
<blockquote>
<h2>[1.3.1] - 2023-06-28</h2>
<h3>Fixed</h3>
<ul>
<li>Deprecation warning for <code>set-output</code> command from <code>actions/core</code> dependency.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="757d462102"><code>757d462</code></a> Fix typo in changelog</li>
<li><a href="cfc84bd61e"><code>cfc84bd</code></a> Prepare release 1.3.1</li>
<li><a href="ff534205ac"><code>ff53420</code></a> Add missed changelog entry (<a href="https://redirect.github.com/thomaseizinger/create-pull-request/issues/263">#263</a>)</li>
<li><a href="85c8625f2a"><code>85c8625</code></a> Fix set-output deprecation warning (<a href="https://redirect.github.com/thomaseizinger/create-pull-request/issues/257">#257</a>)</li>
<li>See full diff in <a href="https://github.com/thomaseizinger/create-pull-request/compare/1.3.0...1.3.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=thomaseizinger/create-pull-request&package-manager=github_actions&previous-version=1.3.0&new-version=1.3.1)](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>
> **Note**
> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.


Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2023-08-01 09:01:32 +00:00
Byron Hambly
95db52e856
Merge branch 'master' into dependabot/github_actions/thomaseizinger/create-pull-request-1.3.1 2023-08-01 09:01:05 +00:00
bors[bot]
73a744baa6
Merge #1398
1398: build(deps): bump rust_decimal from 1.29.1 to 1.30.0 r=delta1 a=dependabot[bot]

Bumps [rust_decimal](https://github.com/paupino/rust-decimal) from 1.29.1 to 1.30.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md">rust_decimal's changelog</a>.</em></p>
<blockquote>
<h2>1.30.0</h2>
<p>As the minor releases for Rust Decimal are getting smaller, I'll be looking at formally starting version 2 of the
Decimal library. This will be unstable as we find experiment with a new API and address some of the constraints the current
implementation of the library has (e.g. revised error types for better const support).</p>
<h3>Added</h3>
<ul>
<li>Add <code>proptest</code> feature support for <code>Decimal</code> (<a href="https://redirect.github.com/paupino/rust-decimal/pull/582">#582</a>).</li>
<li>Implement an <code>is_integer</code> function for an efficient means to check whether a <code>Decimal</code> is an integer with no fractional portion. (<a href="https://redirect.github.com/paupino/rust-decimal/pull/591">#591</a>).</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Improved GitHub Actions Workflow (<a href="https://redirect.github.com/paupino/rust-decimal/pull/592">#592</a>).</li>
</ul>
<h3>Credit</h3>
<p>Thank you to <a href="https://github.com/cardoe/"><code>`@​cardoe</code></a>` for your contribution!</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/paupino/rust-decimal/commits">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.29.1&new-version=1.30.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>
> **Note**
> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-31 15:28:46 +00:00
dependabot[bot]
5dee0896ff
build(deps): bump thomaseizinger/create-pull-request from 1.3.0 to 1.3.1
Bumps [thomaseizinger/create-pull-request](https://github.com/thomaseizinger/create-pull-request) from 1.3.0 to 1.3.1.
- [Release notes](https://github.com/thomaseizinger/create-pull-request/releases)
- [Changelog](https://github.com/thomaseizinger/create-pull-request/blob/master/CHANGELOG.md)
- [Commits](https://github.com/thomaseizinger/create-pull-request/compare/1.3.0...1.3.1)

---
updated-dependencies:
- dependency-name: thomaseizinger/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-31 11:09:36 +00:00
bors[bot]
2c4dfc0f45
Merge #1416
1416: build(deps): update rust-toolchain to 1.67 and bump uuid to 1.4 r=delta1 a=delta1

some of the dependency updates are requiring a higher version of the rust toolchain. bump up to 1.67 and fix new clippy lints.

also fix dprint to 0.39.1 because 0.40 has breaking changes.

Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2023-07-31 10:05:05 +00:00
Byron Hambly
acdba8474b
build(deps): update rust-toolchain to 1.67 and bump uuid to 1.4
some of the dependency updates are requiring a higher version of the
rust toolchain. bump to 1.67 and fix new clippy lints.

also fix dprint to 0.39.1 because 0.40 has breaking changes.
2023-07-31 11:49:28 +02:00
dependabot[bot]
fad91d15ba
build(deps): bump rust_decimal from 1.29.1 to 1.30.0
Bumps [rust_decimal](https://github.com/paupino/rust-decimal) from 1.29.1 to 1.30.0.
- [Changelog](https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paupino/rust-decimal/commits)

---
updated-dependencies:
- dependency-name: rust_decimal
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-15 11:58:30 +00:00
bors[bot]
0dbdf51e6d
Merge #1396
1396: build(deps): bump actions/checkout from 3.5.2 to 3.5.3 r=delta1 a=dependabot[bot]

Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.2 to 3.5.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/checkout/releases">actions/checkout's releases</a>.</em></p>
<blockquote>
<h2>v3.5.3</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix: Checkout Issue in self hosted runner due to faulty submodule check-ins by <a href="https://github.com/megamanics"><code>`@​megamanics</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1196">actions/checkout#1196</a></li>
<li>Fix typos found by codespell by <a href="https://github.com/DimitriPapadopoulos"><code>`@​DimitriPapadopoulos</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1287">actions/checkout#1287</a></li>
<li>Add support for sparse checkouts by <a href="https://github.com/dscho"><code>`@​dscho</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1369">actions/checkout#1369</a></li>
<li>Release v3.5.3 by <a href="https://github.com/TingluoHuang"><code>`@​TingluoHuang</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1376">actions/checkout#1376</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/megamanics"><code>`@​megamanics</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1196">actions/checkout#1196</a></li>
<li><a href="https://github.com/DimitriPapadopoulos"><code>`@​DimitriPapadopoulos</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1287">actions/checkout#1287</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v3...v3.5.3">https://github.com/actions/checkout/compare/v3...v3.5.3</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's changelog</a>.</em></p>
<blockquote>
<h2>v3.5.3</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/1196">Fix: Checkout fail in self-hosted runners when faulty submodule are checked-in</a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/1287">Fix typos found by codespell</a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/1369">Add support for sparse checkouts</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="c85c95e3d7"><code>c85c95e</code></a> Release v3.5.3 (<a href="https://redirect.github.com/actions/checkout/issues/1376">#1376</a>)</li>
<li><a href="d106d4669b"><code>d106d46</code></a> Add support for sparse checkouts (<a href="https://redirect.github.com/actions/checkout/issues/1369">#1369</a>)</li>
<li><a href="f095bcc56b"><code>f095bcc</code></a> Fix typos found by codespell (<a href="https://redirect.github.com/actions/checkout/issues/1287">#1287</a>)</li>
<li><a href="47fbe2df0a"><code>47fbe2d</code></a> Fix: Checkout fail in self-hosted runners when faulty submodule are checked-i...</li>
<li>See full diff in <a href="https://github.com/actions/checkout/compare/v3.5.2...v3.5.3">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=3.5.2&new-version=3.5.3)](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>
2023-06-12 13:26:16 +00:00
dependabot[bot]
bb8d8fbd8a
build(deps): bump actions/checkout from 3.5.2 to 3.5.3
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3.5.2...v3.5.3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 11:57:21 +00:00
bors[bot]
a0e25de337
Merge #1395
1395: build(deps): bump serde from 1.0.163 to 1.0.164 r=delta1 a=dependabot[bot]

Bumps [serde](https://github.com/serde-rs/serde) from 1.0.163 to 1.0.164.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.164</h2>
<ul>
<li>Allowed enum variants to be individually marked as untagged (<a href="https://redirect.github.com/serde-rs/serde/issues/2403">#2403</a>, thanks <a href="https://github.com/dewert99"><code>`@​dewert99</code></a>)</li>`
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="107018c628"><code>107018c</code></a> Release 1.0.164</li>
<li><a href="a398237930"><code>a398237</code></a> Point out serde(untagged) variants which are out of order</li>
<li><a href="b63c65d7f5"><code>b63c65d</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2470">#2470</a> from dtolnay/contentref</li>
<li><a href="f60324e883"><code>f60324e</code></a> Reuse a single ContentRefDeserializer throughout untagged enum deserialization</li>
<li><a href="361c23a09a"><code>361c23a</code></a> Simplify enumerate().find(...) -&gt; Iterator::position</li>
<li><a href="43b23c7ea0"><code>43b23c7</code></a> Format PR 2403 with rustfmt</li>
<li><a href="6081497506"><code>6081497</code></a> Resolve semicolon_if_nothing_returned pedantic clippy lint</li>
<li><a href="48e5753e76"><code>48e5753</code></a> Allowed Enum variants to be individually marked as untagged (<a href="https://redirect.github.com/serde-rs/serde/issues/2403">#2403</a>)</li>
<li><a href="bbba632ab3"><code>bbba632</code></a> Revert &quot;Ui tests with compile_error resolved at call site&quot;</li>
<li><a href="e77db40b8d"><code>e77db40</code></a> Ui tests with compile_error resolved at call site</li>
<li>Additional commits viewable in <a href="https://github.com/serde-rs/serde/compare/v1.0.163...v1.0.164">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.163&new-version=1.0.164)](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>
2023-06-08 13:22:39 +00:00
dependabot[bot]
2577710f0d
build(deps): bump serde from 1.0.163 to 1.0.164
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.163 to 1.0.164.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.163...v1.0.164)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-08 12:01:09 +00:00
bors[bot]
654c555f52
Merge #1392
1392: build(deps): bump tempfile from 3.5.0 to 3.6.0 r=delta1 a=dependabot[bot]

Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.5.0 to 3.6.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md">tempfile's changelog</a>.</em></p>
<blockquote>
<h2>3.6.0</h2>
<ul>
<li>Update windows-sys to 0.48.</li>
<li>Update rustix min version to 0.37.11</li>
<li>Forward some <code>NamedTempFile</code> and <code>SpooledTempFile</code> methods to the underlying <code>File</code> object for
better performance (especially vectorized writes, etc.).</li>
<li>Implement <code>AsFd</code> and <code>AsHandle</code>.</li>
<li>Misc documentation fixes and code cleanups.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="86b313648f"><code>86b3136</code></a> chore: release 3.6.0</li>
<li><a href="a2b45b3363"><code>a2b45b3</code></a> fix(docs): Change <code>dir</code> and <code>file</code> variable names to match existing comments ...</li>
<li><a href="f474e6a980"><code>f474e6a</code></a> Remove comment on SetFileInformationByHandle (<a href="https://redirect.github.com/Stebalien/tempfile/issues/236">#236</a>)</li>
<li><a href="141c773eb7"><code>141c773</code></a> feat: implement default methods for SpooledTempFile Read/Write (<a href="https://redirect.github.com/Stebalien/tempfile/issues/232">#232</a>)</li>
<li><a href="3590dbfa5e"><code>3590dbf</code></a> chore: modern rust (<a href="https://redirect.github.com/Stebalien/tempfile/issues/231">#231</a>)</li>
<li><a href="c76b783c47"><code>c76b783</code></a> feat: implement AsFd/AsHandle to mirror the AsRaw* variants (<a href="https://redirect.github.com/Stebalien/tempfile/issues/230">#230</a>)</li>
<li><a href="ae4f4c8185"><code>ae4f4c8</code></a> chore: bump rustix min version to 0.37.11 (<a href="https://redirect.github.com/Stebalien/tempfile/issues/229">#229</a>)</li>
<li><a href="94883627f9"><code>9488362</code></a> Forward default NamedTempFile methods (<a href="https://redirect.github.com/Stebalien/tempfile/issues/226">#226</a>)</li>
<li><a href="c41ee486d9"><code>c41ee48</code></a> build(deps): update windows-sys requirement from 0.45 to 0.48 (<a href="https://redirect.github.com/Stebalien/tempfile/issues/227">#227</a>)</li>
<li>See full diff in <a href="https://github.com/Stebalien/tempfile/compare/v3.5.0...v3.6.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tempfile&package-manager=cargo&previous-version=3.5.0&new-version=3.6.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-07 14:21:46 +00:00
dependabot[bot]
e8981708ba
build(deps): bump tempfile from 3.5.0 to 3.6.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.5.0 to 3.6.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.5.0...v3.6.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-07 11:58:08 +00:00
bors[bot]
055e76ef04
Merge #1390
1390: build(deps): bump url from 2.3.1 to 2.4.0 r=delta1 a=dependabot[bot]

Bumps [url](https://github.com/servo/rust-url) from 2.3.1 to 2.4.0.
<details>
<summary>Commits</summary>
<ul>
<li><a href="a3e07c7de5"><code>a3e07c7</code></a> Merge pull request <a href="https://redirect.github.com/servo/rust-url/issues/840">#840</a> from servo/update-ver</li>
<li><a href="1317d9d27f"><code>1317d9d</code></a> update dependencies</li>
<li><a href="a25f3a89e9"><code>a25f3a8</code></a> Update url to v2.4.0</li>
<li><a href="2a12745baf"><code>2a12745</code></a> Update idna to 0.4.0</li>
<li><a href="1e6fd5db7c"><code>1e6fd5d</code></a> Update form_urlencoded to 1.2.0</li>
<li><a href="90833ff69f"><code>90833ff</code></a> Update percent-encoding to 2.3.0</li>
<li><a href="f5b961cfa2"><code>f5b961c</code></a> Update data-url to 0.3.0</li>
<li><a href="0e25146814"><code>0e25146</code></a> Merge pull request <a href="https://redirect.github.com/servo/rust-url/issues/839">#839</a> from servo/fix-838</li>
<li><a href="21f32d64b7"><code>21f32d6</code></a> Fix lint</li>
<li><a href="df88a29c91"><code>df88a29</code></a> Also fix issue where path segment could be confused with drive letter because...</li>
<li>Additional commits viewable in <a href="https://github.com/servo/rust-url/compare/v2.3.1...v2.4.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=url&package-manager=cargo&previous-version=2.3.1&new-version=2.4.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-05 14:33:34 +00:00
dependabot[bot]
491f181695
build(deps): bump url from 2.3.1 to 2.4.0
Bumps [url](https://github.com/servo/rust-url) from 2.3.1 to 2.4.0.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.3.1...v2.4.0)

---
updated-dependencies:
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-05 11:58:39 +00:00
bors[bot]
4243206785
Merge #1388
1388: build(deps): bump base64 from 0.21.1 to 0.21.2 r=delta1 a=dependabot[bot]

Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.21.1 to 0.21.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md">base64's changelog</a>.</em></p>
<blockquote>
<h1>0.21.2</h1>
<ul>
<li>Rollback MSRV to 1.57.0 -- only dev dependencies need 1.60, not the main code</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="1e8246a889"><code>1e8246a</code></a> v0.21.2</li>
<li><a href="13690af07e"><code>13690af</code></a> Merge pull request <a href="https://redirect.github.com/marshallpierce/rust-base64/issues/239">#239</a> from marshallpierce/mp/msrv</li>
<li><a href="02af00a56e"><code>02af00a</code></a> Roll back MSRV to 1.57.0</li>
<li><a href="09c790760d"><code>09c7907</code></a> Remove readme comments about benches needing nightly</li>
<li>See full diff in <a href="https://github.com/marshallpierce/rust-base64/compare/v0.21.1...v0.21.2">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=base64&package-manager=cargo&previous-version=0.21.1&new-version=0.21.2)](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>
2023-05-29 09:37:12 +00:00
dependabot[bot]
5e34dfc40e
build(deps): bump base64 from 0.21.1 to 0.21.2
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.21.1 to 0.21.2.
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.21.1...v0.21.2)

---
updated-dependencies:
- dependency-name: base64
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-26 11:59:33 +00:00
bors[bot]
3a254be793
Merge #1386
1386: build(deps): bump proptest from 1.1.0 to 1.2.0 r=delta1 a=dependabot[bot]

Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.1.0 to 1.2.0.
<details>
<summary>Commits</summary>
<ul>
<li><a href="c65b6aad04"><code>c65b6aa</code></a> Changelog : backfill changelogs</li>
<li><a href="fd43fcc9a8"><code>fd43fcc</code></a> bump version to 1.2.0</li>
<li><a href="567018302c"><code>5670183</code></a> Merge pull request <a href="https://redirect.github.com/proptest-rs/proptest/issues/324">#324</a> from tzemanovic/tomas/sm-prerequisites</li>
<li><a href="b88e9ffa47"><code>b88e9ff</code></a> Merge pull request <a href="https://redirect.github.com/proptest-rs/proptest/issues/318">#318</a> from tzemanovic/tomas/env-vars-config-override</li>
<li><a href="18ca1af60b"><code>18ca1af</code></a> [Fix] NonZero : only impl Arbitrary for 128-bit NonZero nums in non-wasm targ...</li>
<li><a href="6b4df75e92"><code>6b4df75</code></a> proptest/changelog: add <a href="https://redirect.github.com/proptest-rs/proptest/issues/324">#324</a></li>
<li><a href="fb2d578418"><code>fb2d578</code></a> make num sampling functions public</li>
<li><a href="6eb7574fc8"><code>6eb7574</code></a> make SizeRange methods public</li>
<li><a href="a6bc664335"><code>a6bc664</code></a> make <code>VarBitSet</code> public</li>
<li><a href="22672a6230"><code>22672a6</code></a> changelog: add <a href="https://redirect.github.com/proptest-rs/proptest/issues/318">#318</a></li>
<li>Additional commits viewable in <a href="https://github.com/proptest-rs/proptest/compare/v1.1.0...v1.2.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=proptest&package-manager=cargo&previous-version=1.1.0&new-version=1.2.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-24 12:40:34 +00:00
dependabot[bot]
6c0d3007e5
build(deps): bump proptest from 1.1.0 to 1.2.0
Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/proptest-rs/proptest/releases)
- [Changelog](https://github.com/proptest-rs/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/proptest-rs/proptest/compare/v1.1.0...v1.2.0)

---
updated-dependencies:
- dependency-name: proptest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-24 11:59:31 +00:00
bors[bot]
15dd10d3f9
Merge #1380 #1381 #1382
1380: build(deps): bump Swatinem/rust-cache from 2.3.0 to 2.4.0 r=delta1 a=dependabot[bot]

Bumps [Swatinem/rust-cache](https://github.com/Swatinem/rust-cache) from 2.3.0 to 2.4.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>v2.4.0</h2>
<ul>
<li>Fix cache key stability.</li>
<li>Use 8 character hash components to reduce the key length, making it more readable.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's changelog</a>.</em></p>
<blockquote>
<h2>2.4.0</h2>
<ul>
<li>Fix cache key stability.</li>
<li>Use 8 character hash components to reduce the key length, making it more readable.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="988c164c3d"><code>988c164</code></a> 2.4.0</li>
<li><a href="bb80d0f127"><code>bb80d0f</code></a> chore: use 8 character hash components (<a href="https://redirect.github.com/Swatinem/rust-cache/issues/143">#143</a>)</li>
<li><a href="ad97570a01"><code>ad97570</code></a> fix: cache key stability (<a href="https://redirect.github.com/Swatinem/rust-cache/issues/142">#142</a>)</li>
<li>See full diff in <a href="https://github.com/Swatinem/rust-cache/compare/v2.3.0...v2.4.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=2.3.0&new-version=2.4.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>

1381: build(deps): bump data-encoding from 2.3.3 to 2.4.0 r=delta1 a=dependabot[bot]

Bumps [data-encoding](https://github.com/ia0/data-encoding) from 2.3.3 to 2.4.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/ia0/data-encoding/commits/v2.4.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=data-encoding&package-manager=cargo&previous-version=2.3.3&new-version=2.4.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>

1382: build(deps): bump base64 from 0.21.0 to 0.21.1 r=delta1 a=dependabot[bot]

Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.21.0 to 0.21.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md">base64's changelog</a>.</em></p>
<blockquote>
<h1>0.21.1</h1>
<ul>
<li>Remove the possibility of panicking during decoded length calculations</li>
<li><code>DecoderReader</code> no longer sometimes erroneously ignores padding  <a href="https://redirect.github.com/marshallpierce/rust-base64/issues/226">#226</a></li>
</ul>
<h2>Breaking changes</h2>
<ul>
<li><code>Engine.internal_decode</code> return type changed</li>
<li>Update MSRV to 1.60.0</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/marshallpierce/rust-base64/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=base64&package-manager=cargo&previous-version=0.21.0&new-version=0.21.1)](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>
2023-05-23 13:45:51 +00:00
dependabot[bot]
cb9978f52f
build(deps): bump base64 from 0.21.0 to 0.21.1
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.21.0 to 0.21.1.
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/commits)

---
updated-dependencies:
- dependency-name: base64
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 12:00:26 +00:00
dependabot[bot]
89e8731a7a
build(deps): bump data-encoding from 2.3.3 to 2.4.0
Bumps [data-encoding](https://github.com/ia0/data-encoding) from 2.3.3 to 2.4.0.
- [Commits](https://github.com/ia0/data-encoding/commits/v2.4.0)

---
updated-dependencies:
- dependency-name: data-encoding
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 11:59:34 +00:00
dependabot[bot]
fbce61c421
build(deps): bump Swatinem/rust-cache from 2.3.0 to 2.4.0
Bumps [Swatinem/rust-cache](https://github.com/Swatinem/rust-cache) from 2.3.0 to 2.4.0.
- [Release notes](https://github.com/Swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Swatinem/rust-cache/compare/v2.3.0...v2.4.0)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 11:57:32 +00:00
bors[bot]
84ac391ba1
Merge #1379
1379: build(deps): bump reqwest from 0.11.17 to 0.11.18 r=delta1 a=dependabot[bot]

Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.17 to 0.11.18.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/seanmonstar/reqwest/releases">reqwest's releases</a>.</em></p>
<blockquote>
<h2>v0.11.18</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix <code>RequestBuilder::json()</code> method from overriding a previously set <code>content-type</code> header. An existing value will be left in place.</li>
<li>Upgrade internal dependencies for rustls and compression.</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/flyingalex"><code>`@​flyingalex</code></a>` made their first contribution in <a href="https://redirect.github.com/seanmonstar/reqwest/pull/1833">seanmonstar/reqwest#1833</a></li>
<li><a href="https://github.com/cpu"><code>`@​cpu</code></a>` made their first contribution in <a href="https://redirect.github.com/seanmonstar/reqwest/pull/1791">seanmonstar/reqwest#1791</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md">reqwest's changelog</a>.</em></p>
<blockquote>
<h2>v0.11.18</h2>
<ul>
<li>Fix <code>RequestBuilder::json()</code> method from overriding a previously set <code>content-type</code> header. An existing value will be left in place.</li>
<li>Upgrade internal dependencies for rustls and compression.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="00be85efd9"><code>00be85e</code></a> v0.11.18</li>
<li><a href="a0b5ea5d71"><code>a0b5ea5</code></a> deps: update rustls v0.20.1 -&gt; v0.21.0 (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1791">#1791</a>)</li>
<li><a href="b13ca4b339"><code>b13ca4b</code></a> bug: fix custom content-type overidden by json method (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1833">#1833</a>)</li>
<li><a href="eca2a2f23f"><code>eca2a2f</code></a> CI: Enable dependabot for GitHub Action Workflow (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1831">#1831</a>)</li>
<li><a href="9de702ccef"><code>9de702c</code></a> Speedup CI (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1830">#1830</a>)</li>
<li><a href="7e7b116a13"><code>7e7b116</code></a> deps: Update async-compression v0.3.13 =&gt; v0.4.0 (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1828">#1828</a>)</li>
<li>See full diff in <a href="https://github.com/seanmonstar/reqwest/compare/v0.11.17...v0.11.18">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=reqwest&package-manager=cargo&previous-version=0.11.17&new-version=0.11.18)](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>
2023-05-18 12:10:54 +00:00
dependabot[bot]
d1b95c8c5d
build(deps): bump reqwest from 0.11.17 to 0.11.18
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.17 to 0.11.18.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.17...v0.11.18)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-17 11:59:35 +00:00
bors[bot]
2a4a6ce2f2
Merge #1378
1378: build(deps): bump uuid from 1.3.2 to 1.3.3 r=delta1 a=dependabot[bot]

Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.3.2 to 1.3.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/uuid-rs/uuid/releases">uuid's releases</a>.</em></p>
<blockquote>
<h2>1.3.3</h2>
<h2>What's Changed</h2>
<ul>
<li>Use sha hash for checkout action and remove others by <a href="https://github.com/KodrAus"><code>`@​KodrAus</code></a>` in <a href="https://redirect.github.com/uuid-rs/uuid/pull/671">uuid-rs/uuid#671</a></li>
<li>Hard deprecate Timestamp::to_unix_nanos by <a href="https://github.com/KodrAus"><code>`@​KodrAus</code></a>` in <a href="https://redirect.github.com/uuid-rs/uuid/pull/673">uuid-rs/uuid#673</a></li>
<li>Prepare for 1.3.3 release by <a href="https://github.com/KodrAus"><code>`@​KodrAus</code></a>` in <a href="https://redirect.github.com/uuid-rs/uuid/pull/674">uuid-rs/uuid#674</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/uuid-rs/uuid/compare/1.3.2...1.3.3">https://github.com/uuid-rs/uuid/compare/1.3.2...1.3.3</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="2cfe9f180c"><code>2cfe9f1</code></a> Merge pull request <a href="https://redirect.github.com/uuid-rs/uuid/issues/674">#674</a> from uuid-rs/cargo/1.3.3</li>
<li><a href="2bbbb74bd8"><code>2bbbb74</code></a> prepare for 1.3.3 release</li>
<li><a href="534691e274"><code>534691e</code></a> Merge pull request <a href="https://redirect.github.com/uuid-rs/uuid/issues/673">#673</a> from uuid-rs/chore/hard-deprecation</li>
<li><a href="147d4b3314"><code>147d4b3</code></a> update build agents</li>
<li><a href="d89c69de98"><code>d89c69d</code></a> hard deprecate Timestamp::to_unix_nanos</li>
<li><a href="6d22d0c187"><code>6d22d0c</code></a> Merge pull request <a href="https://redirect.github.com/uuid-rs/uuid/issues/671">#671</a> from uuid-rs/ci/cleanups</li>
<li><a href="053690862d"><code>0536908</code></a> use sha hash for checkout action and remove others</li>
<li>See full diff in <a href="https://github.com/uuid-rs/uuid/compare/1.3.2...1.3.3">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uuid&package-manager=cargo&previous-version=1.3.2&new-version=1.3.3)](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>
2023-05-15 13:20:34 +00:00
bors[bot]
6675caeed2
Merge #1377
1377: build(deps): bump Swatinem/rust-cache from 2.2.1 to 2.3.0 r=delta1 a=dependabot[bot]

Bumps [Swatinem/rust-cache](https://github.com/Swatinem/rust-cache) from 2.2.1 to 2.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>v2.3.0</h2>
<ul>
<li>Add <code>cache-all-crates</code> option, which enables caching of crates installed by workflows.</li>
<li>Add installed packages to cache key, so changes to workflows that install rust tools are detected and cached properly.</li>
<li>Fix cache restore failures due to upstream bug.</li>
<li>Fix <code>EISDIR</code> error due to globed directories.</li>
<li>Update runtime <code>`@actions/cache</code>,` <code>`@actions/io</code>` and dev <code>typescript</code> dependencies.</li>
<li>Update <code>npm run prepare</code> so it creates distribution files with the right line endings.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's changelog</a>.</em></p>
<blockquote>
<h2>2.3.0</h2>
<ul>
<li>Add <code>cache-all-crates</code> option, which enables caching of crates installed by workflows.</li>
<li>Add installed packages to cache key, so changes to workflows that install rust tools are detected and cached properly.</li>
<li>Fix cache restore failures due to upstream bug.</li>
<li>Fix <code>EISDIR</code> error due to globed directories.</li>
<li>Update runtime <code>`@actions/cache</code>,` <code>`@actions/io</code>` and dev <code>typescript</code> dependencies.</li>
<li>Update <code>npm run prepare</code> so it creates distribution files with the right line endings.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="060bda31e0"><code>060bda3</code></a> 2.3.0</li>
<li><a href="865fd1f6db"><code>865fd1f</code></a> &quot;update dependencies and changelog&quot;</li>
<li><a href="7c7e41ab01"><code>7c7e41a</code></a> chore: changelog v2.3.0 (<a href="https://redirect.github.com/Swatinem/rust-cache/issues/139">#139</a>)</li>
<li><a href="68aeeba167"><code>68aeeba</code></a> chore: use linefix to ensure platform line endings (<a href="https://redirect.github.com/Swatinem/rust-cache/issues/135">#135</a>)</li>
<li><a href="def0926359"><code>def0926</code></a> feat: add option to cache all crates (<a href="https://redirect.github.com/Swatinem/rust-cache/issues/137">#137</a>)</li>
<li><a href="827c240e23"><code>827c240</code></a> fix: cache key dependency on installed packages (<a href="https://redirect.github.com/Swatinem/rust-cache/issues/138">#138</a>)</li>
<li><a href="5e9fae966f"><code>5e9fae9</code></a> fix: cache restore failures (<a href="https://redirect.github.com/Swatinem/rust-cache/issues/136">#136</a>)</li>
<li><a href="127a0e9568"><code>127a0e9</code></a> &quot;update dependencies and rebuild&quot;</li>
<li><a href="99229f978c"><code>99229f9</code></a> Fix EISDIR error due to globbed directories (<a href="https://redirect.github.com/Swatinem/rust-cache/issues/1">#1</a>) (<a href="https://redirect.github.com/Swatinem/rust-cache/issues/132">#132</a>)</li>
<li>See full diff in <a href="https://github.com/Swatinem/rust-cache/compare/v2.2.1...v2.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=2.2.1&new-version=2.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-15 12:53:21 +00:00
dependabot[bot]
65ee11501f
build(deps): bump uuid from 1.3.2 to 1.3.3
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.3.2 to 1.3.3.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.3.2...1.3.3)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 12:00:19 +00:00
dependabot[bot]
1148bdcd1c
build(deps): bump Swatinem/rust-cache from 2.2.1 to 2.3.0
Bumps [Swatinem/rust-cache](https://github.com/Swatinem/rust-cache) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/Swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Swatinem/rust-cache/compare/v2.2.1...v2.3.0)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 11:57:30 +00:00
bors[bot]
8e0cd0e217
Merge #1376
1376: build(deps): bump serde from 1.0.162 to 1.0.163 r=delta1 a=dependabot[bot]

Bumps [serde](https://github.com/serde-rs/serde) from 1.0.162 to 1.0.163.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.163</h2>
<ul>
<li>Eliminate build script from serde_derive crate to slightly reduce build time (<a href="https://redirect.github.com/serde-rs/serde/issues/2442">#2442</a>, thanks <a href="https://github.com/taiki-e"><code>`@​taiki-e</code></a>)</li>`
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="fccb9499bc"><code>fccb949</code></a> Release 1.0.163</li>
<li><a href="a139ab2572"><code>a139ab2</code></a> Adjust PR 2446 with less overgeneralized name</li>
<li><a href="1d910a484c"><code>1d910a4</code></a> Format with rustfmt 1.5.2-nightly</li>
<li><a href="ee9166ec97"><code>ee9166e</code></a> Revise comments on the FlatMapDeserializer entry taker</li>
<li><a href="b5a9eff32e"><code>b5a9eff</code></a> Resolve while_let_on_iterator clippy lint</li>
<li><a href="9441a29663"><code>9441a29</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2446">#2446</a> from Mingun/dedup2</li>
<li><a href="ab6588ef74"><code>ab6588e</code></a> Extract duplicated code into a function</li>
<li><a href="1d11f03449"><code>1d11f03</code></a> Extract logic of taking flattened fields into a function</li>
<li><a href="e11d01fe1d"><code>e11d01f</code></a> Remove constructors for FlatMapAccess and FlatStructAccess</li>
<li><a href="a901f50850"><code>a901f50</code></a> FlatMapAccess and FlatStructAccess does not need to be public</li>
<li>Additional commits viewable in <a href="https://github.com/serde-rs/serde/compare/v1.0.162...v1.0.163">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.162&new-version=1.0.163)](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>
2023-05-13 07:48:57 +00:00
dependabot[bot]
4c774b3d9a
build(deps): bump serde from 1.0.162 to 1.0.163
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.162 to 1.0.163.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.162...v1.0.163)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-11 11:58:06 +00:00
bors[bot]
d45ce999a0
Merge #1372
1372: build(deps): bump serde from 1.0.160 to 1.0.162 r=delta1 a=dependabot[bot]

Bumps [serde](https://github.com/serde-rs/serde) from 1.0.160 to 1.0.162.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>1.0.162</h2>
<ul>
<li>
<p>Support deserializing flattened adjacently tagged enums from data formats which represent fields as bytes, such as the <code>csv</code> crate (<a href="https://redirect.github.com/serde-rs/serde/issues/2377">#2377</a>, thanks <a href="https://github.com/mfro"><code>`@​mfro</code></a>)</p>`
<pre lang="rust"><code>#[derive(Deserialize)]
pub struct Record {
    common: u64,
    #[serde(flatten)]
    kind: Kind,
}
<p>#[derive(Deserialize)]
#[serde(tag = &quot;kind&quot;, content = &quot;parameter&quot;, rename_all = &quot;lowercase&quot;)]
enum Kind {
Foo(u64),
Bar(bool),
}
</code></pre></p>
<pre lang="csv"><code>common,kind,parameter
1,foo,42
2,bar,true
</code></pre>
</li>
</ul>
<h2>v1.0.161</h2>
<ul>
<li>Improve error messages produced by serde_test on test failure (<a href="https://redirect.github.com/serde-rs/serde/issues/2435">#2435</a>, thanks <a href="https://github.com/Mingun"><code>`@​Mingun</code></a>)</li>`
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="99f165b45a"><code>99f165b</code></a> Release 1.0.162</li>
<li><a href="2fb5560746"><code>2fb5560</code></a> Attempt to generate just one copy of TagContentOtherFieldVisitor's field matc...</li>
<li><a href="bd653ab30c"><code>bd653ab</code></a> Format PR 2377 with rustfmt</li>
<li><a href="b5d68aedaa"><code>b5d68ae</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2377">#2377</a> from mfro/master</li>
<li><a href="624879c4c6"><code>624879c</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2441">#2441</a> from dtolnay/test</li>
<li><a href="bd9e9abf35"><code>bd9e9ab</code></a> Reimplement tests that touched serde_test internal API</li>
<li><a href="3e4a23cbd0"><code>3e4a23c</code></a> Release 1.0.161</li>
<li><a href="6326ceec3f"><code>6326cee</code></a> Don't panic in serde_test on running out of tokens</li>
<li><a href="8f4d37c7ec"><code>8f4d37c</code></a> Convert serde_test's assert_next_token from macro to function</li>
<li><a href="1b8290b318"><code>1b8290b</code></a> Convert serde_test's unexpected from macro to function</li>
<li>Additional commits viewable in <a href="https://github.com/serde-rs/serde/compare/v1.0.160...1.0.162">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.160&new-version=1.0.162)](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>
2023-05-05 20:18:15 +00:00
dependabot[bot]
7f6f3af3f9
build(deps): bump serde from 1.0.160 to 1.0.162
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.160 to 1.0.162.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.160...1.0.162)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-05 11:58:22 +00:00
bors[bot]
18fd2daeba
Merge #1367 #1368 #1369
1367: build(deps): bump reqwest from 0.11.16 to 0.11.17 r=delta1 a=dependabot[bot]

Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.16 to 0.11.17.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/seanmonstar/reqwest/releases">reqwest's releases</a>.</em></p>
<blockquote>
<h2>v0.11.17</h2>
<h2>What's Changed</h2>
<ul>
<li>Upgrade internal dependencies of Experimental HTTP/3 to use quinn v0.9</li>
<li>(wasm) Fix blob url support</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/skyf0l"><code>`@​skyf0l</code></a>` made their first contribution in <a href="https://redirect.github.com/seanmonstar/reqwest/pull/1797">seanmonstar/reqwest#1797</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md">reqwest's changelog</a>.</em></p>
<blockquote>
<h2>v0.11.17</h2>
<ul>
<li>Upgrade internal dependencies of Experimental HTTP/3 to use quinn v0.9</li>
<li>(wasm) Fix blob url support</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="eeca649a3d"><code>eeca649</code></a> v0.11.17</li>
<li><a href="b4d5ab0c8d"><code>b4d5ab0</code></a> update h3 and h3-quinn to 0.0.2 (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1811">#1811</a>)</li>
<li><a href="2fa69ad384"><code>2fa69ad</code></a> wasm: blob url support (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1797">#1797</a>)</li>
<li>See full diff in <a href="https://github.com/seanmonstar/reqwest/compare/v0.11.16...v0.11.17">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=reqwest&package-manager=cargo&previous-version=0.11.16&new-version=0.11.17)](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>

1368: build(deps): bump uuid from 1.3.1 to 1.3.2 r=delta1 a=dependabot[bot]

Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.3.1 to 1.3.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/uuid-rs/uuid/releases">uuid's releases</a>.</em></p>
<blockquote>
<h2>1.3.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Create SECURITY.md by <a href="https://github.com/KodrAus"><code>`@​KodrAus</code></a>` in <a href="https://redirect.github.com/uuid-rs/uuid/pull/668">uuid-rs/uuid#668</a></li>
<li>Faster as_u128 and to_u128_le by <a href="https://github.com/pkoenig10"><code>`@​pkoenig10</code></a>` in <a href="https://redirect.github.com/uuid-rs/uuid/pull/669">uuid-rs/uuid#669</a></li>
<li>prepare for 1.3.2 release by <a href="https://github.com/KodrAus"><code>`@​KodrAus</code></a>` in <a href="https://redirect.github.com/uuid-rs/uuid/pull/670">uuid-rs/uuid#670</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/pkoenig10"><code>`@​pkoenig10</code></a>` made their first contribution in <a href="https://redirect.github.com/uuid-rs/uuid/pull/669">uuid-rs/uuid#669</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/uuid-rs/uuid/compare/1.3.1...1.3.2">https://github.com/uuid-rs/uuid/compare/1.3.1...1.3.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="52867d4b55"><code>52867d4</code></a> Merge pull request <a href="https://redirect.github.com/uuid-rs/uuid/issues/670">#670</a> from uuid-rs/cargo/1.3.2</li>
<li><a href="f0c3f1a80c"><code>f0c3f1a</code></a> prepare for 1.3.2 release</li>
<li><a href="a78ee0aeac"><code>a78ee0a</code></a> Merge pull request <a href="https://redirect.github.com/uuid-rs/uuid/issues/669">#669</a> from pkoenig10/as_u128</li>
<li><a href="7978c5a5ed"><code>7978c5a</code></a> Faster as_u128 and to_u128_le</li>
<li><a href="f725e58353"><code>f725e58</code></a> Merge pull request <a href="https://redirect.github.com/uuid-rs/uuid/issues/668">#668</a> from uuid-rs/KodrAus-patch-1</li>
<li><a href="f1919c150f"><code>f1919c1</code></a> Create SECURITY.md</li>
<li>See full diff in <a href="https://github.com/uuid-rs/uuid/compare/1.3.1...1.3.2">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uuid&package-manager=cargo&previous-version=1.3.1&new-version=1.3.2)](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>

1369: build(deps): bump anyhow from 1.0.70 to 1.0.71 r=delta1 a=dependabot[bot]

Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.70 to 1.0.71.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/anyhow/releases">anyhow's releases</a>.</em></p>
<blockquote>
<h2>1.0.71</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="8b4fc43429"><code>8b4fc43</code></a> Release 1.0.71</li>
<li><a href="3c33b4b072"><code>3c33b4b</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/anyhow/issues/306">#306</a> from dtolnay/noinline</li>
<li><a href="d491b88840"><code>d491b88</code></a> Mark format_err macro as doc(no_inline)</li>
<li>See full diff in <a href="https://github.com/dtolnay/anyhow/compare/1.0.70...1.0.71">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=anyhow&package-manager=cargo&previous-version=1.0.70&new-version=1.0.71)](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>
2023-05-02 11:09:36 +00:00
dependabot[bot]
5b3ce51b4a
build(deps): bump anyhow from 1.0.70 to 1.0.71
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.70 to 1.0.71.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.70...1.0.71)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 12:04:31 +00:00
dependabot[bot]
0d39d52712
build(deps): bump uuid from 1.3.1 to 1.3.2
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.3.1...1.3.2)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 12:03:56 +00:00
dependabot[bot]
f3fb3c26e1
build(deps): bump reqwest from 0.11.16 to 0.11.17
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.16 to 0.11.17.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.16...v0.11.17)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 12:03:22 +00:00
bors[bot]
5505174cb6
Merge #1361
1361: build(deps): bump tracing from 0.1.37 to 0.1.38 r=delta1 a=dependabot[bot]

Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.37 to 0.1.38.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/tokio-rs/tracing/releases">tracing's releases</a>.</em></p>
<blockquote>
<h2>tracing 0.1.38</h2>
<p>This <code>tracing</code> release changes the <code>Drop</code> implementation for <code>Instrumented</code>
<code>Future</code>s so that the attached <code>Span</code> is entered when dropping the <code>Future</code>. This
means that events emitted by the <code>Future</code>'s <code>Drop</code> implementation will now be
recorded within its <code>Span</code>. It also adds <code>#[inline]</code> hints to methods called in
the <code>event!</code> macro's expansion, for an improvement in both binary size and
performance.</p>
<p>Additionally, this release updates the <code>tracing-attributes</code> dependency to
<a href="https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.24">v0.1.24</a>, which updates the <a href="https://crates.io/crates/syn"><code>syn</code></a> dependency to v2.x.x.
<code>tracing-attributes</code> v0.1.24 also includes improvements to the <code>#[instrument]</code>
macro; see <a href="https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.24">the <code>tracing-attributes</code> 0.1.24 release notes</a> for
details.</p>
<h3>Added</h3>
<ul>
<li><code>Instrumented</code> futures will now enter the attached <code>Span</code> in their <code>Drop</code>
implementation, allowing events emitted when dropping the future to occur
within the span (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2562">#2562</a>)</li>
<li><code>#[inline]</code> attributes for methods called by the <code>event!</code> macros, making
generated code smaller (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2555">#2555</a>)</li>
<li><strong>attributes</strong>: <code>level</code> argument to <code>#[instrument(err)]</code> and
<code>#[instrument(ret)]</code> to override the level of
the generated return value event (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2335">#2335</a>)</li>
<li><strong>attributes</strong>: Improved compiler error message when <code>#[instrument]</code> is added to a <code>const fn</code>
(<a href="https://redirect.github.com/tokio-rs/tracing/issues/2418">#2418</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>tracing-attributes</code>: updated to <a href="https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.24">0.1.24</a></li>
<li>Removed unneeded <code>cfg-if</code> dependency (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2553">#2553</a>)</li>
<li><strong>attributes</strong>: Updated <a href="https://crates.io/crates/syn"><code>syn</code></a> dependency to 2.0 (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2516">#2516</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><strong>attributes</strong>: Fix <code>clippy::unreachable</code> warnings in <code>#[instrument]</code>-generated code (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2356">#2356</a>)</li>
<li><strong>attributes</strong>: Removed unused &quot;visit&quot; feature flag from <code>syn</code> dependency (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2530">#2530</a>)</li>
</ul>
<h3>Documented</h3>
<ul>
<li><strong>attributes</strong>: Documented default level for <code>#[instrument(err)]</code> (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2433">#2433</a>)</li>
<li><strong>attributes</strong>: Improved documentation for levels in <code>#[instrument]</code> (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2350">#2350</a>)</li>
</ul>
<p>Thanks to <a href="https://github.com/nitnelave"><code>`@​nitnelave</code></a>,` <a href="https://github.com/jsgf"><code>`@​jsgf</code></a>,` <a href="https://github.com/Abhicodes-crypto"><code>`@​Abhicodes-crypto</code></a>,` <a href="https://github.com/LukeMathWalker"><code>`@​LukeMathWalker</code></a>,` <a href="https://github.com/andrewpollack"><code>`@​andrewpollack</code></a>,`
<a href="https://github.com/quad"><code>`@​quad</code></a>,` <a href="https://github.com/klensy"><code>`@​klensy</code></a>,` <a href="https://github.com/davidpdrsn"><code>`@​davidpdrsn</code></a>,` <a href="https://github.com/dbidwell94"><code>`@​dbidwell94</code></a>,` <a href="https://github.com/ldm0"><code>`@​ldm0</code></a>,` <a href="https://github.com/NobodyXu"><code>`@​NobodyXu</code></a>,` <a href="https://github.com/ilsv"><code>`@​ilsv</code></a>,` and <a href="https://github.com/daxpedda"><code>`@​daxpedda</code></a>`
for contributing to this release!</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="3de7f8c601"><code>3de7f8c</code></a> tracing: prepare to release v0.1.38 (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2575">#2575</a>)</li>
<li><a href="e35265a0a1"><code>e35265a</code></a> attributes: prepare to release v0.1.24 (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2574">#2574</a>)</li>
<li><a href="0114ec1cf5"><code>0114ec1</code></a> subscriber: prepare to release v0.3.17 (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2571">#2571</a>)</li>
<li><a href="53989b422c"><code>53989b4</code></a> chore: fix rustfmt</li>
<li><a href="22355704ea"><code>2235570</code></a> subscriber: add &quot;unicode-case&quot; and &quot;unicode-perl&quot; features to <code>regex</code> depende...</li>
<li><a href="b9becf90fe"><code>b9becf9</code></a> attributes: update UI tests with the latest stable version of Rust (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2568">#2568</a>)</li>
<li><a href="3a65354837"><code>3a65354</code></a> tracing, tracing-futures: instrument <code>Future</code> inside <code>Drop</code> (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2562">#2562</a>)</li>
<li><a href="29d85b1adb"><code>29d85b1</code></a> mock: move layer mock from tracing-subscriber tests (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2369">#2369</a>)</li>
<li><a href="049ad730c1"><code>049ad73</code></a> subscriber: add ability to disable ANSI without crate feature (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2532">#2532</a>)</li>
<li><a href="a066c36729"><code>a066c36</code></a> attributes: update to syn 2.0 (<a href="https://redirect.github.com/tokio-rs/tracing/issues/2516">#2516</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/tokio-rs/tracing/compare/tracing-0.1.37...tracing-0.1.38">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tracing&package-manager=cargo&previous-version=0.1.37&new-version=0.1.38)](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>
2023-04-27 08:18:48 +00:00
dependabot[bot]
96cbb375c7
build(deps): bump tracing from 0.1.37 to 0.1.38
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.37 to 0.1.38.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.37...tracing-0.1.38)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-26 11:58:04 +00:00
bors[bot]
bc530fba86
Merge #1360
1360: build(deps): bump futures from 0.3.27 to 0.3.28 r=delta1 a=dependabot[bot]

Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.27 to 0.3.28.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/releases">futures's releases</a>.</em></p>
<blockquote>
<h2>0.3.28</h2>
<ul>
<li>Update to syn 2. This raises MSRV of utility crates to 1.56. (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2730">#2730</a>, <a href="https://redirect.github.com/rust-lang/futures-rs/issues/2733">#2733</a>)</li>
<li>Fix bug in <code>FlattenUnordered</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2726">#2726</a>, <a href="https://redirect.github.com/rust-lang/futures-rs/issues/2728">#2728</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md">futures's changelog</a>.</em></p>
<blockquote>
<h1>0.3.28 - 2023-03-30</h1>
<ul>
<li>Update to syn 2. This raises MSRV of utility crates to 1.56. (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2730">#2730</a>, <a href="https://redirect.github.com/rust-lang/futures-rs/issues/2733">#2733</a>)</li>
<li>Fix bug in <code>FlattenUnordered</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2726">#2726</a>, <a href="https://redirect.github.com/rust-lang/futures-rs/issues/2728">#2728</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="1685f8bdab"><code>1685f8b</code></a> Release 0.3.28</li>
<li><a href="206b12b05b"><code>206b12b</code></a> Update to syn 2 (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2730">#2730</a>)</li>
<li><a href="98e80d4d28"><code>98e80d4</code></a> Bump MSRV of utility crates to 1.56 (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2733">#2733</a>)</li>
<li><a href="a3f80e6b19"><code>a3f80e6</code></a> Fix unknown_lints and unused_imports warnings in test (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2732">#2732</a>)</li>
<li><a href="3bee39695e"><code>3bee396</code></a> SelectAll doesn't need pin-project (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2729">#2729</a>)</li>
<li><a href="6a436ebd15"><code>6a436eb</code></a> Don't ignore empty state polling (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2728">#2728</a>)</li>
<li><a href="94e020dac7"><code>94e020d</code></a> Use <code>Waker::will_wake()</code> to avoid a cloning op (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2723">#2723</a>)</li>
<li><a href="a730a19c8f"><code>a730a19</code></a> FlattenUnordered: always replace inner wakers (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2726">#2726</a>)</li>
<li><a href="890f8934fd"><code>890f893</code></a> Fix rustdoc warning</li>
<li><a href="4b86e46e40"><code>4b86e46</code></a> Use setup-cross-toolchain-action instead of cross</li>
<li>Additional commits viewable in <a href="https://github.com/rust-lang/futures-rs/compare/0.3.27...0.3.28">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=futures&package-manager=cargo&previous-version=0.3.27&new-version=0.3.28)](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>
2023-04-21 11:50:38 +00:00
dependabot[bot]
59c1de91ac
build(deps): bump futures from 0.3.27 to 0.3.28
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.27 to 0.3.28.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.27...0.3.28)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-20 13:19:08 +00:00
bors[bot]
ff7d036ab7
Merge #1357 #1358 #1359
1357: build(deps): bump conquer-once from 0.3.2 to 0.4.0 r=delta1 a=dependabot[bot]

Bumps [conquer-once](https://github.com/oliver-giersch/conquer-once) from 0.3.2 to 0.4.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/oliver-giersch/conquer-once/releases">conquer-once's releases</a>.</em></p>
<blockquote>
<h2>v0.4.0</h2>
<p>This release bumps the MSRV to <code>1.49.0</code>, allowing some depracated <code>std</code> functionality to be replaced with alternatives that were stabilized in that version.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/oliver-giersch/conquer-once/blob/master/RELEASES.md">conquer-once's changelog</a>.</em></p>
<blockquote>
<h3>Release <code>0.3.2</code></h3>
<ul>
<li>fixes potential UB due to insufficiently strict bounds on <code>Sync</code> implementation for <code>OnceCell</code> (see [Issue <a href="https://redirect.github.com/oliver-giersch/conquer-once/issues/3">#3</a>](<a href="https://redirect.github.com/oliver-giersch/conquer-once/issues/3">oliver-giersch/conquer-once#3</a>))</li>
</ul>
<h3>Release <code>0.3.3</code></h3>
<ul>
<li>improves and clarifies wording of public documentation</li>
<li>improves internal documentation around all uses of unsafe code</li>
</ul>
<h2>Release <code>0.4.0</code></h2>
<ul>
<li>bumps MSRV to 1.49.0</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="82747caafd"><code>82747ca</code></a> bump version in README</li>
<li><a href="3ef336f03e"><code>3ef336f</code></a> revert edition bump</li>
<li><a href="43f816a162"><code>43f816a</code></a> bump Cargo.toml version, rust edition to 2021,MSRV</li>
<li><a href="9370e0a194"><code>9370e0a</code></a> bump MSRV to 1.49.0</li>
<li><a href="82ebf601ea"><code>82ebf60</code></a> bump version to 0.3.3</li>
<li><a href="f788ee4855"><code>f788ee4</code></a> completes internal unsafe docs/clarification</li>
<li><a href="f75a52e371"><code>f75a52e</code></a> fix clippy warning under 1.36.0</li>
<li><a href="6f2924915e"><code>6f29249</code></a> clippy 1.36 should fail but doesn't?</li>
<li><a href="dc267663b1"><code>dc26766</code></a> fix CI toolchain</li>
<li><a href="4bc74b003d"><code>4bc74b0</code></a> fix CI</li>
<li>Additional commits viewable in <a href="https://github.com/oliver-giersch/conquer-once/compare/v0.3.2...v0.4.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=conquer-once&package-manager=cargo&previous-version=0.3.2&new-version=0.4.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>

1358: build(deps): bump serial_test from 1.0.0 to 2.0.0 r=delta1 a=dependabot[bot]

Bumps [serial_test](https://github.com/palfrey/serial_test) from 1.0.0 to 2.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/palfrey/serial_test/releases">serial_test's releases</a>.</em></p>
<blockquote>
<h2>v2.0.0</h2>
<p>Main change is the <a href="https://redirect.github.com/palfrey/serial_test/pull/96">Syn 2.x upgrade</a> which required an MSRV bump. MSRV is now 1.68.2. Note this is minimum <em>supported</em>, as it may well compile with lower versions, but they're not supported at all.</p>
<p>There's also a small bug fix for an issue when <a href="https://redirect.github.com/palfrey/serial_test/pull/94">running under vscode and stripping attributes</a></p>
<p><strong>Full Changelog</strong>: <a href="https://github.com/palfrey/serial_test/compare/v1.0.0...v2.0.0">https://github.com/palfrey/serial_test/compare/v1.0.0...v2.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="7e3a5ca6f3"><code>7e3a5ca</code></a> 2.0.0</li>
<li><a href="a7222e1f35"><code>a7222e1</code></a> Merge pull request <a href="https://redirect.github.com/palfrey/serial_test/issues/96">#96</a> from palfrey/syn-2</li>
<li><a href="113f07662e"><code>113f076</code></a> Upgrade to Syn 2</li>
<li><a href="21b7a7fa6f"><code>21b7a7f</code></a> Merge pull request <a href="https://redirect.github.com/palfrey/serial_test/issues/94">#94</a> from palfrey/remove-ignore-ignore</li>
<li><a href="fc0497c8e8"><code>fc0497c</code></a> Stop stripping ignore/should_panic attributes</li>
<li><a href="7d6af096bf"><code>7d6af09</code></a> Merge pull request <a href="https://redirect.github.com/palfrey/serial_test/issues/91">#91</a> from palfrey/dependabot/cargo/tokio-1.18.5</li>
<li><a href="1607dec900"><code>1607dec</code></a> Bump tokio from 1.18.4 to 1.18.5</li>
<li><a href="30b772a3d1"><code>30b772a</code></a> Merge pull request <a href="https://redirect.github.com/palfrey/serial_test/issues/92">#92</a> from palfrey/test-rust-version</li>
<li><a href="c1c65d24ea"><code>c1c65d2</code></a> Set rust-version in test to fix clippy issue</li>
<li>See full diff in <a href="https://github.com/palfrey/serial_test/compare/v1.0.0...v2.0.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serial_test&package-manager=cargo&previous-version=1.0.0&new-version=2.0.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>

1359: build(deps): bump async-trait from 0.1.67 to 0.1.68 r=delta1 a=dependabot[bot]

Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.67 to 0.1.68.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/async-trait/releases">async-trait's releases</a>.</em></p>
<blockquote>
<h2>0.1.68</h2>
<ul>
<li>Improve error message if an async fn is written without a function body in an impl block</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="dce60601d7"><code>dce6060</code></a> Release 0.1.68</li>
<li><a href="346f0509c6"><code>346f050</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/async-trait/issues/244">#244</a> from dtolnay/verbatimfn</li>
<li><a href="344a4f2a68"><code>344a4f2</code></a> Handle async impl fn without body</li>
<li>See full diff in <a href="https://github.com/dtolnay/async-trait/compare/0.1.67...0.1.68">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=async-trait&package-manager=cargo&previous-version=0.1.67&new-version=0.1.68)](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>
2023-04-20 12:46:58 +00:00
dependabot[bot]
acc3d8af3c
build(deps): bump async-trait from 0.1.67 to 0.1.68
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.67 to 0.1.68.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.67...0.1.68)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-19 12:01:10 +00:00
dependabot[bot]
af7fbc708d
build(deps): bump serial_test from 1.0.0 to 2.0.0
Bumps [serial_test](https://github.com/palfrey/serial_test) from 1.0.0 to 2.0.0.
- [Release notes](https://github.com/palfrey/serial_test/releases)
- [Commits](https://github.com/palfrey/serial_test/compare/v1.0.0...v2.0.0)

---
updated-dependencies:
- dependency-name: serial_test
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-19 12:00:43 +00:00
dependabot[bot]
64461dec93
build(deps): bump conquer-once from 0.3.2 to 0.4.0
Bumps [conquer-once](https://github.com/oliver-giersch/conquer-once) from 0.3.2 to 0.4.0.
- [Release notes](https://github.com/oliver-giersch/conquer-once/releases)
- [Changelog](https://github.com/oliver-giersch/conquer-once/blob/master/RELEASES.md)
- [Commits](https://github.com/oliver-giersch/conquer-once/compare/v0.3.2...v0.4.0)

---
updated-dependencies:
- dependency-name: conquer-once
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-19 12:00:28 +00:00
bors[bot]
cecf2945a2
Merge #1353 #1354 #1355 #1356
1353: build(deps): bump rust_decimal from 1.29.0 to 1.29.1 r=delta1 a=dependabot[bot]

Bumps [rust_decimal](https://github.com/paupino/rust-decimal) from 1.29.0 to 1.29.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md">rust_decimal's changelog</a>.</em></p>
<blockquote>
<h2>1.29.1</h2>
<h3>Fixed</h3>
<ul>
<li>Fixes an issue with <code>checked_cos</code> and <code>checked_sin</code> where <code>QUARTER_PI</code> would send the calculation into an infinite loop. (#<a href="https://redirect.github.com/paupino/rust-decimal/pull/585">585</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/paupino/rust-decimal/commits">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.29.0&new-version=1.29.1)](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>

1354: build(deps): bump hex-literal from 0.3.4 to 0.4.1 r=delta1 a=dependabot[bot]

Bumps [hex-literal](https://github.com/RustCrypto/utils) from 0.3.4 to 0.4.1.
<details>
<summary>Commits</summary>
<ul>
<li><a href="b8bd42f441"><code>b8bd42f</code></a> hex-literal: enforce const evaluation (<a href="https://redirect.github.com/RustCrypto/utils/issues/889">#889</a>)</li>
<li><a href="13385f64b2"><code>13385f6</code></a> Use minimal permissions for CI jobs (<a href="https://redirect.github.com/RustCrypto/utils/issues/885">#885</a>)</li>
<li><a href="9cba5a5ca0"><code>9cba5a5</code></a> cmov v0.3.0 (<a href="https://redirect.github.com/RustCrypto/utils/issues/886">#886</a>)</li>
<li><a href="66c6226816"><code>66c6226</code></a> hex-literal: release v0.4.0 (<a href="https://redirect.github.com/RustCrypto/utils/issues/884">#884</a>)</li>
<li><a href="f3dfe51805"><code>f3dfe51</code></a> hex-literal: remove support for comments inside literals and migrate to CTFE ...</li>
<li><a href="c1e32c58ca"><code>c1e32c5</code></a> Update Cargo.lock</li>
<li><a href="63fb20f03d"><code>63fb20f</code></a> Add RawPadding trait to block-padding for padding blocks of arbitrary size (#...</li>
<li><a href="734c63b031"><code>734c63b</code></a> cmov: implement constant-time equality comparisons (<a href="https://redirect.github.com/RustCrypto/utils/issues/873">#873</a>)</li>
<li><a href="83c7093d60"><code>83c7093</code></a> zeroize_derive v1.4.2 (<a href="https://redirect.github.com/RustCrypto/utils/issues/883">#883</a>)</li>
<li><a href="4b06984928"><code>4b06984</code></a> zeroize_derive: Inject where clauses; skip unused (<a href="https://redirect.github.com/RustCrypto/utils/issues/882">#882</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/RustCrypto/utils/compare/hex-literal-v0.3.4...hex-literal-v0.4.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=hex-literal&package-manager=cargo&previous-version=0.3.4&new-version=0.4.1)](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>

1355: build(deps): bump hyper from 0.14.25 to 0.14.26 r=delta1 a=dependabot[bot]

Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.25 to 0.14.26.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/hyperium/hyper/releases">hyper's releases</a>.</em></p>
<blockquote>
<h2>v0.14.26</h2>
<h2>Features</h2>
<ul>
<li><strong>http2:</strong> add <code>max_pending_accept_reset_streams</code> configuration option (<a href="https://redirect.github.com/hyperium/hyper/issues/3201">#3201</a>) (<a href="a6f7571a52">a6f7571a</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Noah-Kennedy"><code>`@​Noah-Kennedy</code></a>` made their first contribution in <a href="https://redirect.github.com/hyperium/hyper/pull/3201">hyperium/hyper#3201</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/hyperium/hyper/blob/v0.14.26/CHANGELOG.md">hyper's changelog</a>.</em></p>
<blockquote>
<h3>v0.14.26 (2023-04-13)</h3>
<h4>Features</h4>
<ul>
<li><strong>http2:</strong> add <code>max_pending_accept_reset_streams</code> configuration option (<a href="https://redirect.github.com/hyperium/hyper/issues/3201">#3201</a>) (<a href="a6f7571a52">a6f7571a</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="00d52e4fb7"><code>00d52e4</code></a> v0.14.26</li>
<li><a href="a6f7571a52"><code>a6f7571</code></a> feat(http2): add <code>max_pending_accept_reset_streams</code> configuration option (<a href="https://redirect.github.com/hyperium/hyper/issues/3201">#3201</a>)</li>
<li>See full diff in <a href="https://github.com/hyperium/hyper/compare/v0.14.25...v0.14.26">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=hyper&package-manager=cargo&previous-version=0.14.25&new-version=0.14.26)](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>

1356: build(deps): bump rust_decimal_macros from 1.29.0 to 1.29.1 r=delta1 a=dependabot[bot]

Bumps [rust_decimal_macros](https://github.com/paupino/rust-decimal) from 1.29.0 to 1.29.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md">rust_decimal_macros's changelog</a>.</em></p>
<blockquote>
<h2>1.29.1</h2>
<h3>Fixed</h3>
<ul>
<li>Fixes an issue with <code>checked_cos</code> and <code>checked_sin</code> where <code>QUARTER_PI</code> would send the calculation into an infinite loop. (#<a href="https://redirect.github.com/paupino/rust-decimal/pull/585">585</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/paupino/rust-decimal/commits">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.29.0&new-version=1.29.1)](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>
2023-04-18 13:55:25 +00:00
dependabot[bot]
4c8d5aecb7
build(deps): bump rust_decimal_macros from 1.29.0 to 1.29.1
Bumps [rust_decimal_macros](https://github.com/paupino/rust-decimal) from 1.29.0 to 1.29.1.
- [Release notes](https://github.com/paupino/rust-decimal/releases)
- [Changelog](https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paupino/rust-decimal/commits)

---
updated-dependencies:
- dependency-name: rust_decimal_macros
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-18 11:58:44 +00:00
dependabot[bot]
924e2fea70
build(deps): bump hyper from 0.14.25 to 0.14.26
Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.25 to 0.14.26.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/v0.14.26/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.25...v0.14.26)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-18 11:58:35 +00:00
dependabot[bot]
9970b4a328
build(deps): bump hex-literal from 0.3.4 to 0.4.1
Bumps [hex-literal](https://github.com/RustCrypto/utils) from 0.3.4 to 0.4.1.
- [Release notes](https://github.com/RustCrypto/utils/releases)
- [Commits](https://github.com/RustCrypto/utils/compare/hex-literal-v0.3.4...hex-literal-v0.4.1)

---
updated-dependencies:
- dependency-name: hex-literal
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-18 11:58:22 +00:00
dependabot[bot]
4c7c4509cf
build(deps): bump rust_decimal from 1.29.0 to 1.29.1
Bumps [rust_decimal](https://github.com/paupino/rust-decimal) from 1.29.0 to 1.29.1.
- [Release notes](https://github.com/paupino/rust-decimal/releases)
- [Changelog](https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paupino/rust-decimal/commits)

---
updated-dependencies:
- dependency-name: rust_decimal
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-18 11:58:10 +00:00
bors[bot]
72e554a242
Merge #1347 #1349 #1350 #1351 #1352
1347: build(deps): bump sqlx from 0.6.2 to 0.6.3 r=delta1 a=dependabot[bot]

Bumps [sqlx](https://github.com/launchbadge/sqlx) from 0.6.2 to 0.6.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/launchbadge/sqlx/blob/v0.6.3/CHANGELOG.md">sqlx's changelog</a>.</em></p>
<blockquote>
<h3>0.6.3 - 2023-03-21</h3>
<p>This is a hotfix to address the breakage caused by transitive dependencies upgrading to <code>syn = &quot;2&quot;</code>.</p>
<p>We set <code>default-features = false</code> for our dependency on <code>syn = &quot;1&quot;</code> to be good crates.io citizens,
but failed to enable the features we actually used, which went undetected because we transitively depended on
<code>syn</code> with the default features enabled through other crates,
and so they were also on for us because features are additive.</p>
<p>When those other dependencies upgraded to <code>syn = &quot;2&quot;</code> it was no longer enabling those features for us,
and so compilation broke for projects that don't also depend on <code>syn = &quot;1&quot;</code>, transitively or otherwise.</p>
<p>There is no PR for this fix as there was no longer a dedicated development branch for <code>0.6</code>,
but discussion can be found in [issue <a href="https://redirect.github.com/launchbadge/sqlx/issues/2418">#2418</a>].</p>
<p>As of this release, the <code>0.7</code> release is in alpha and so development is no longer occurring against <code>0.6</code>.
This fix will be forward-ported to <code>0.7</code>.</p>
<p>[issue <a href="https://redirect.github.com/launchbadge/sqlx/issues/2418">#2418</a>]: <a href="https://redirect.github.com/launchbadge/sqlx/issues/2418">launchbadge/sqlx#2418</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="bb064e3789"><code>bb064e3</code></a> chore: CHANGELOG entry for 0.6.3</li>
<li><a href="c6f8a41267"><code>c6f8a41</code></a> fix: non-binding <code>let</code> in SQLite driver</li>
<li><a href="7d4333e50d"><code>7d4333e</code></a> fix(ci): backport change enabling CI on <code>*-dev</code></li>
<li><a href="2ab9156f02"><code>2ab9156</code></a> 0.6.3 hotfix: don't rely on transitive deps enabling <code>syn</code> features</li>
<li>See full diff in <a href="https://github.com/launchbadge/sqlx/compare/v0.6.2...v0.6.3">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sqlx&package-manager=cargo&previous-version=0.6.2&new-version=0.6.3)](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>

1349: build(deps): bump reqwest from 0.11.15 to 0.11.16 r=delta1 a=dependabot[bot]

Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.15 to 0.11.16.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/seanmonstar/reqwest/releases">reqwest's releases</a>.</em></p>
<blockquote>
<h2>v0.11.16</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix building docs on docs.rs by <a href="https://github.com/NobodyXu"><code>`@​NobodyXu</code></a>` in <a href="https://redirect.github.com/seanmonstar/reqwest/pull/1789">seanmonstar/reqwest#1789</a></li>
<li>Set 'rust-version` in Cargo metadata and use it in the MSRV build job by <a href="https://github.com/nickelc"><code>`@​nickelc</code></a>` in <a href="https://redirect.github.com/seanmonstar/reqwest/pull/1793">seanmonstar/reqwest#1793</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md">reqwest's changelog</a>.</em></p>
<blockquote>
<h2>v0.11.16</h2>
<ul>
<li>Chore: set MSRV in <code>Cargo.toml</code>.</li>
<li>Docs: fix build on docs.rs</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="704766979f"><code>7047669</code></a> v0.11.16</li>
<li><a href="cc47ef1e26"><code>cc47ef1</code></a> Set 'rust-version` in Cargo metadata and use it in the MSRV build job (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1793">#1793</a>)</li>
<li><a href="7fdd014d46"><code>7fdd014</code></a> docs: Fix building on docs.rs (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1789">#1789</a>)</li>
<li><a href="bf7ff55649"><code>bf7ff55</code></a> chore: update changelog for 0.11.15</li>
<li>See full diff in <a href="https://github.com/seanmonstar/reqwest/compare/v0.11.15...v0.11.16">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=reqwest&package-manager=cargo&previous-version=0.11.15&new-version=0.11.16)](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>

1350: build(deps): bump serde_json from 1.0.94 to 1.0.96 r=delta1 a=dependabot[bot]

Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.94 to 1.0.96.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.96</h2>
<ul>
<li>Guarantee that <code>to_writer</code> only writes valid UTF-8 strings (<a href="https://redirect.github.com/serde-rs/json/issues/1011">#1011</a>, thanks <a href="https://github.com/stepancheg"><code>`@​stepancheg</code></a>)</li>`
</ul>
<h2>v1.0.95</h2>
<ul>
<li>Preserve f32 precision when serializing f32 -&gt; serde_json::Value -&gt; JSON string in &quot;arbitrary_precision&quot; mode (<a href="https://redirect.github.com/serde-rs/json/issues/1004">#1004</a>, <a href="https://redirect.github.com/serde-rs/json/issues/1005">#1005</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="187f7dadc6"><code>187f7da</code></a> Release 1.0.96</li>
<li><a href="41199cce93"><code>41199cc</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/json/issues/1011">#1011</a> from stepancheg/utf-8</li>
<li><a href="cd5ed8204a"><code>cd5ed82</code></a> Document to_writer only writes valid UTF-8 strings</li>
<li><a href="ce53b862b9"><code>ce53b86</code></a> Fix needless_borrow clippy lint in test</li>
<li><a href="4ea38c4001"><code>4ea38c4</code></a> Release 1.0.95</li>
<li><a href="731886c08e"><code>731886c</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/json/issues/1005">#1005</a> from dtolnay/f32cast</li>
<li><a href="c9bff92c1f"><code>c9bff92</code></a> Fix PartialEq between Value and f32</li>
<li><a href="06f3443c6e"><code>06f3443</code></a> Eliminate f32-to-f64 casting in arbitrary_precision mode</li>
<li><a href="b0990a51db"><code>b0990a5</code></a> Add regression test for issue 1004</li>
<li><a href="02e583360d"><code>02e5833</code></a> Update fuzz crate gitignore to ignore coverage dir</li>
<li>Additional commits viewable in <a href="https://github.com/serde-rs/json/compare/v1.0.94...v1.0.96">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.94&new-version=1.0.96)](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>

1351: build(deps): bump tempfile from 3.4.0 to 3.5.0 r=delta1 a=dependabot[bot]

Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.4.0 to 3.5.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Stebalien/tempfile/blob/master/NEWS">tempfile's changelog</a>.</em></p>
<blockquote>
<h1>3.5.0</h1>
<ul>
<li>Update rustix from 0.36 to 0.37.1. This makes wasi work on rust stable</li>
<li>Update <code>windows-sys</code>, <code>redox_syscall</code></li>
<li>BREAKING: Remove the implementation of <code>Write for &amp;NamedTempFile&lt;F&gt; where &amp;F: Write</code>. Unfortunately, this can cause compile issues in unrelated code (<a href="https://redirect.github.com/Stebalien/tempfile/issues/224">Stebalien/tempfile#224</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/Stebalien/tempfile/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tempfile&package-manager=cargo&previous-version=3.4.0&new-version=3.5.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>

1352: build(deps): bump actions/checkout from 3.5.0 to 3.5.2 r=delta1 a=dependabot[bot]

Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.0 to 3.5.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/checkout/releases">actions/checkout's releases</a>.</em></p>
<blockquote>
<h2>v3.5.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix: Use correct API url / endpoint in GHES by <a href="https://github.com/fhammerl"><code>`@​fhammerl</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1289">actions/checkout#1289</a> based on <a href="https://redirect.github.com/actions/checkout/issues/1286">#1286</a> by <a href="https://github.com/1newsr"><code>`@​1newsr</code></a></li>`
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v3.5.1...v3.5.2">https://github.com/actions/checkout/compare/v3.5.1...v3.5.2</a></p>
<h2>v3.5.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Improve checkout performance on Windows runners by upgrading <code>`@​actions/github</code>` dependency by <a href="https://github.com/BrettDong"><code>`@​BrettDong</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1246">actions/checkout#1246</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/BrettDong"><code>`@​BrettDong</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1246">actions/checkout#1246</a></li>
<li><a href="https://github.com/fhammerl"><code>`@​fhammerl</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1284">actions/checkout#1284</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v3.5.0...v3.5.1">https://github.com/actions/checkout/compare/v3.5.0...v3.5.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's changelog</a>.</em></p>
<blockquote>
<h2>v3.5.2</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/1289">Fix api endpoint for GHES</a></li>
</ul>
<h2>v3.5.1</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/1246">Fix slow checkout on Windows</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="8e5e7e5ab8"><code>8e5e7e5</code></a> Release v3.5.2 (<a href="https://redirect.github.com/actions/checkout/issues/1291">#1291</a>)</li>
<li><a href="eb35239ec2"><code>eb35239</code></a> Fix: convert baseUrl to serverApiUrl 'formatted' (<a href="https://redirect.github.com/actions/checkout/issues/1289">#1289</a>)</li>
<li><a href="83b7061638"><code>83b7061</code></a> Release v3.5.1 (<a href="https://redirect.github.com/actions/checkout/issues/1284">#1284</a>)</li>
<li><a href="40a16ebeed"><code>40a16eb</code></a> Improve checkout performance on Windows runners by upgrading <code>`@​actions/github</code>` ...</li>
<li>See full diff in <a href="https://github.com/actions/checkout/compare/v3.5.0...v3.5.2">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=3.5.0&new-version=3.5.2)](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>
2023-04-17 14:18:19 +00:00
dependabot[bot]
fd8b1b49d0
build(deps): bump actions/checkout from 3.5.0 to 3.5.2
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.0 to 3.5.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3.5.0...v3.5.2)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-14 11:58:03 +00:00
dependabot[bot]
2173e3c678
build(deps): bump tempfile from 3.4.0 to 3.5.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/Stebalien/tempfile/releases)
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/NEWS)
- [Commits](https://github.com/Stebalien/tempfile/commits)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-13 12:05:47 +00:00
dependabot[bot]
fbf222ea9f
build(deps): bump serde_json from 1.0.94 to 1.0.96
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.94 to 1.0.96.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.94...v1.0.96)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-13 12:01:07 +00:00
dependabot[bot]
521ac041dd
build(deps): bump reqwest from 0.11.15 to 0.11.16
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.15 to 0.11.16.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.15...v0.11.16)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-13 11:59:45 +00:00
dependabot[bot]
6629b73a56
build(deps): bump sqlx from 0.6.2 to 0.6.3
Bumps [sqlx](https://github.com/launchbadge/sqlx) from 0.6.2 to 0.6.3.
- [Release notes](https://github.com/launchbadge/sqlx/releases)
- [Changelog](https://github.com/launchbadge/sqlx/blob/v0.6.3/CHANGELOG.md)
- [Commits](https://github.com/launchbadge/sqlx/compare/v0.6.2...v0.6.3)

---
updated-dependencies:
- dependency-name: sqlx
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-13 11:58:14 +00:00
bors[bot]
6ca7d0c55d
Merge #1345
1345: build(deps): bump bdk from 0.27.1 to 0.28.0 r=delta1 a=dependabot[bot]

Bumps [bdk](https://github.com/bitcoindevkit/bdk) from 0.27.1 to 0.28.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/bitcoindevkit/bdk/releases">bdk's releases</a>.</em></p>
<blockquote>
<h2>Release 0.27.2</h2>
<h3>RELEASE YANKED FROM CRATES.IO</h3>
<p>See: <a href="https://redirect.github.com/bitcoindevkit/bdk/issues/897">bitcoindevkit/bdk#897</a></p>
<h3>Summary</h3>
<p>Disable default-features for rust-bitcoin and rust-miniscript dependencies, and for rust-esplora-client optional dependency.</p>
<h3>Changelog</h3>
<p>Changed</p>
<ul>
<li>Set default-features = false for rust-bitcoin and rust-miniscript <a href="https://redirect.github.com/bitcoindevkit/bdk/issues/882">#882</a></li>
<li>Update esplora client dependency to version 0.4 <a href="https://redirect.github.com/bitcoindevkit/bdk/issues/884">#884</a></li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Set dev-dependency base64ct version to &lt;1.6.0 by <a href="https://github.com/notmandatory"><code>`@​notmandatory</code></a>` in <a href="https://redirect.github.com/bitcoindevkit/bdk/pull/877">bitcoindevkit/bdk#877</a></li>
<li>Set <code>default-features = false</code> for rust-bitcoin and rust-miniscript by <a href="https://github.com/benthecarman"><code>`@​benthecarman</code></a>` in <a href="https://redirect.github.com/bitcoindevkit/bdk/pull/882">bitcoindevkit/bdk#882</a></li>
<li>Update esplora client dependency to version 0.4 by <a href="https://github.com/notmandatory"><code>`@​notmandatory</code></a>` in <a href="https://redirect.github.com/bitcoindevkit/bdk/pull/884">bitcoindevkit/bdk#884</a></li>
<li>Bump version to 0.27.2 by <a href="https://github.com/notmandatory"><code>`@​notmandatory</code></a>` in <a href="https://redirect.github.com/bitcoindevkit/bdk/pull/892">bitcoindevkit/bdk#892</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/bitcoindevkit/bdk/compare/v0.27.1...v0.27.2">https://github.com/bitcoindevkit/bdk/compare/v0.27.1...v0.27.2</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/bitcoindevkit/bdk/blob/master/CHANGELOG.md">bdk's changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project can be found here and in each release's git tag and can be viewed with <code>git tag -ln100 &quot;v*&quot;</code>. See also <a href="https://github.com/bitcoindevkit/bdk/blob/master/DEVELOPMENT_CYCLE.md">https://github.com/bitcoindevkit/bdk/blob/master/DEVELOPMENT_CYCLE.md</a> for more details.</p>
<p>Contributors do not need to change this file but do need to add changelog details in their PR descriptions. The person making the next release will collect changelog details from included PRs and edit this file prior to each release.</p>
<p>The format is based on <a href="https://keepachangelog.com/en/1.0.0/">Keep a Changelog</a>,
and this project adheres to <a href="https://semver.org/spec/v2.0.0.html">Semantic Versioning</a>.</p>
<h2>[Unreleased]</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="78529b6a42"><code>78529b6</code></a> Bump version to 0.28.0</li>
<li><a href="0ad65c7776"><code>0ad65c7</code></a> Merge <a href="https://redirect.github.com/bitcoindevkit/bdk/issues/930">bitcoindevkit/bdk#930</a>: Add default <code>std</code> feature, prep for 0.28.0 release</li>
<li><a href="cbcbdd120d"><code>cbcbdd1</code></a> Update CHANGELOG for 0.28.0 release</li>
<li><a href="f507185729"><code>f507185</code></a> Change workflows to run for release branches</li>
<li><a href="573bf52578"><code>573bf52</code></a> Add default feature std</li>
<li><a href="10608afb76"><code>10608af</code></a> Merge <a href="https://redirect.github.com/bitcoindevkit/bdk/issues/875">bitcoindevkit/bdk#875</a>: Bump bip39 crate to v2.0.0</li>
<li><a href="de46a51208"><code>de46a51</code></a> Bump version to 0.27.2</li>
<li><a href="e8acafce8e"><code>e8acafc</code></a> Merge <a href="https://redirect.github.com/bitcoindevkit/bdk/issues/884">bitcoindevkit/bdk#884</a>: Update esplora client dependency to version 0.4</li>
<li><a href="bb2b2d6dd8"><code>bb2b2d6</code></a> Update esplora-client dependency to version 0.4</li>
<li><a href="87c558c9cf"><code>87c558c</code></a> Set default-features = false for rust-bitcoin</li>
<li>Additional commits viewable in <a href="https://github.com/bitcoindevkit/bdk/compare/v0.27.1...v0.28.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bdk&package-manager=cargo&previous-version=0.27.1&new-version=0.28.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-13 10:51:21 +00:00
bors[bot]
6abe6a5f9b
Merge #1338 #1342 #1343 #1344
1338: build(deps): bump async-trait from 0.1.66 to 0.1.68 r=delta1 a=dependabot[bot]

Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.66 to 0.1.68.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/async-trait/releases">async-trait's releases</a>.</em></p>
<blockquote>
<h2>0.1.68</h2>
<ul>
<li>Improve error message if an async fn is written without a function body in an impl block</li>
</ul>
<h2>0.1.67</h2>
<ul>
<li>Update syn dependency to 2.x</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="dce60601d7"><code>dce6060</code></a> Release 0.1.68</li>
<li><a href="346f0509c6"><code>346f050</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/async-trait/issues/244">#244</a> from dtolnay/verbatimfn</li>
<li><a href="344a4f2a68"><code>344a4f2</code></a> Handle async impl fn without body</li>
<li><a href="f8a8650569"><code>f8a8650</code></a> Release 0.1.67</li>
<li><a href="d7a9cae8d2"><code>d7a9cae</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/async-trait/issues/241">#241</a> from dtolnay/syn</li>
<li><a href="15fd2820ac"><code>15fd282</code></a> Ignore match_like_matches_macro clippy lint</li>
<li><a href="032c1506e3"><code>032c150</code></a> Update to syn 2</li>
<li><a href="0d0a3465eb"><code>0d0a346</code></a> Update ui test suite to nightly-2023-03-17</li>
<li>See full diff in <a href="https://github.com/dtolnay/async-trait/compare/0.1.66...0.1.68">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=async-trait&package-manager=cargo&previous-version=0.1.66&new-version=0.1.68)](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>

1342: build(deps): bump serde from 1.0.156 to 1.0.160 r=delta1 a=dependabot[bot]

Bumps [serde](https://github.com/serde-rs/serde) from 1.0.156 to 1.0.160.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.160</h2>
<ul>
<li>Make derived serializer/deserializer internals <code>doc(hidden)</code> (<a href="https://redirect.github.com/serde-rs/serde/issues/2426">#2426</a>, thanks <a href="https://github.com/compiler-errors"><code>`@​compiler-errors</code></a>)</li>`
</ul>
<h2>v1.0.159</h2>
<ul>
<li>Accept empty #[serde()] attribute (<a href="https://redirect.github.com/serde-rs/serde/issues/2422">#2422</a>)</li>
</ul>
<h2>v1.0.158</h2>
<ul>
<li>Fix <em>&quot;expected serde crate attribute to be a string&quot;</em> error when using macro_rules metavariable inside of serde attribute: <code>#[serde(crate = $serde_path)]</code> (<a href="https://redirect.github.com/serde-rs/serde/issues/2409">#2409</a>)</li>
</ul>
<h2>v1.0.157</h2>
<ul>
<li>Update syn dependency to 2.x</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="0c6a2bbf79"><code>0c6a2bb</code></a> Release 1.0.160</li>
<li><a href="a80d830f27"><code>a80d830</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2426">#2426</a> from compiler-errors/dont-doc-private</li>
<li><a href="5f3fd9994e"><code>5f3fd99</code></a> Make serializer/deserializer internals doc(hidden)</li>
<li><a href="d6de911855"><code>d6de911</code></a> Release 1.0.159</li>
<li><a href="04af32230e"><code>04af322</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2422">#2422</a> from dtolnay/emptyattr</li>
<li><a href="4cb8d079f8"><code>4cb8d07</code></a> Accept empty #[serde()] attribute</li>
<li><a href="6ab55a1e52"><code>6ab55a1</code></a> Add regression test for issue 2415</li>
<li><a href="acfd19cb46"><code>acfd19c</code></a> Release serde_derive_internals 0.27.0</li>
<li><a href="e3058105f0"><code>e305810</code></a> Release 1.0.158</li>
<li><a href="dc200a6450"><code>dc200a6</code></a> Reformat comments of non-public serde_derive internals</li>
<li>Additional commits viewable in <a href="https://github.com/serde-rs/serde/compare/v1.0.156...v1.0.160">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.156&new-version=1.0.160)](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>

1343: build(deps): bump uuid from 1.3.0 to 1.3.1 r=delta1 a=dependabot[bot]

Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.3.0 to 1.3.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/uuid-rs/uuid/releases">uuid's releases</a>.</em></p>
<blockquote>
<h2>1.3.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Update syn requirement from 1.0.80 to 2.0.5 by <a href="https://github.com/dependabot"><code>`@​dependabot</code></a>` in <a href="https://redirect.github.com/uuid-rs/uuid/pull/663">uuid-rs/uuid#663</a></li>
<li>Update windows-sys requirement from 0.45.0 to 0.48.0 by <a href="https://github.com/dependabot"><code>`@​dependabot</code></a>` in <a href="https://redirect.github.com/uuid-rs/uuid/pull/665">uuid-rs/uuid#665</a></li>
<li>remove some extra chars in a comment by <a href="https://github.com/KodrAus"><code>`@​KodrAus</code></a>` in <a href="https://redirect.github.com/uuid-rs/uuid/pull/666">uuid-rs/uuid#666</a></li>
<li>Prepare for 1.3.1 release by <a href="https://github.com/KodrAus"><code>`@​KodrAus</code></a>` in <a href="https://redirect.github.com/uuid-rs/uuid/pull/667">uuid-rs/uuid#667</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/uuid-rs/uuid/compare/1.3.0...1.3.1">https://github.com/uuid-rs/uuid/compare/1.3.0...1.3.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="87082b9239"><code>87082b9</code></a> Merge pull request <a href="https://redirect.github.com/uuid-rs/uuid/issues/667">#667</a> from uuid-rs/cargo/1.3.1</li>
<li><a href="a367481dec"><code>a367481</code></a> prepare for 1.3.1 release</li>
<li><a href="ee19f3dfbb"><code>ee19f3d</code></a> Merge pull request <a href="https://redirect.github.com/uuid-rs/uuid/issues/666">#666</a> from uuid-rs/KodrAus-patch-2</li>
<li><a href="8ccdf67de1"><code>8ccdf67</code></a> remove some extra chars in a comment</li>
<li><a href="b111b12627"><code>b111b12</code></a> Merge pull request <a href="https://redirect.github.com/uuid-rs/uuid/issues/665">#665</a> from uuid-rs/dependabot/cargo/windows-sys-0.48.0</li>
<li><a href="faac14c1c0"><code>faac14c</code></a> Update windows-sys requirement from 0.45.0 to 0.48.0</li>
<li><a href="efa468692f"><code>efa4686</code></a> Merge pull request <a href="https://redirect.github.com/uuid-rs/uuid/issues/663">#663</a> from uuid-rs/dependabot/cargo/syn-2.0.5</li>
<li><a href="1795337b99"><code>1795337</code></a> Update syn requirement from 1.0.80 to 2.0.5</li>
<li>See full diff in <a href="https://github.com/uuid-rs/uuid/compare/1.3.0...1.3.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uuid&package-manager=cargo&previous-version=1.3.0&new-version=1.3.1)](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>

1344: build(deps): bump dialoguer from 0.10.3 to 0.10.4 r=delta1 a=dependabot[bot]

Bumps [dialoguer](https://github.com/mitsuhiko/dialoguer) from 0.10.3 to 0.10.4.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/console-rs/dialoguer/blob/master/CHANGELOG.md">dialoguer's changelog</a>.</em></p>
<blockquote>
<h2>0.10.4</h2>
<h3>Enhancements</h3>
<ul>
<li>Added validator for password input</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="fa11422e90"><code>fa11422</code></a> Release 0.10.4</li>
<li><a href="d588da3df1"><code>d588da3</code></a> Merge pull request <a href="https://redirect.github.com/mitsuhiko/dialoguer/issues/219">#219</a> from qt2/password_validation</li>
<li><a href="4b92988853"><code>4b92988</code></a> Replace <code>&amp;str</code> in with <code>&amp;String</code></li>
<li><a href="c3774c0188"><code>c3774c0</code></a> Add <code>PasswordValidator</code> trait</li>
<li><a href="09e2ff16a4"><code>09e2ff1</code></a> Remove mut from <code>Password::interact</code></li>
<li><a href="0f5372377e"><code>0f53723</code></a> Resolve clippy warning on complex type</li>
<li><a href="df37b03c84"><code>df37b03</code></a> Fix doc-test failures on password validation</li>
<li><a href="61af341c2a"><code>61af341</code></a> Merge branch 'console-rs:master' into password_validation</li>
<li><a href="f6f6e26014"><code>f6f6e26</code></a> Merge pull request <a href="https://redirect.github.com/mitsuhiko/dialoguer/issues/240">#240</a> from dhoomakethu/patch-1</li>
<li><a href="8c41f786e9"><code>8c41f78</code></a> Fix README</li>
<li>See full diff in <a href="https://github.com/mitsuhiko/dialoguer/compare/0.10.3...v0.10.4">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dialoguer&package-manager=cargo&previous-version=0.10.3&new-version=0.10.4)](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>
2023-04-13 08:46:03 +00:00
bors[bot]
64da893fa5
Merge #1337
1337: build(deps): bump actions/checkout from 3.3.0 to 3.5.0 r=delta1 a=dependabot[bot]

Bumps [actions/checkout](https://github.com/actions/checkout) from 3.3.0 to 3.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/checkout/releases">actions/checkout's releases</a>.</em></p>
<blockquote>
<h2>v3.5.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add new public key for known_hosts by <a href="https://github.com/cdb"><code>`@​cdb</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1237">actions/checkout#1237</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/cdb"><code>`@​cdb</code></a>` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1237">actions/checkout#1237</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v3.4.0...v3.5.0">https://github.com/actions/checkout/compare/v3.4.0...v3.5.0</a></p>
<h2>v3.4.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Upgrade codeql actions to v2 by <a href="https://github.com/Link"><code>`@​Link</code></a>-` in <a href="https://redirect.github.com/actions/checkout/pull/1209">actions/checkout#1209</a></li>
<li>Upgrade dependencies by <a href="https://github.com/Link"><code>`@​Link</code></a>-` in <a href="https://redirect.github.com/actions/checkout/pull/1210">actions/checkout#1210</a></li>
<li>Backfill changelog and bump actions/io by <a href="https://github.com/cory-miller"><code>`@​cory-miller</code></a>` in <a href="https://redirect.github.com/actions/checkout/pull/1225">actions/checkout#1225</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Link"><code>`@​Link</code></a>-` made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/1209">actions/checkout#1209</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v3.3.0...v3.4.0">https://github.com/actions/checkout/compare/v3.3.0...v3.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>v3.4.0</h2>
<ul>
<li><a href="https://redirect.github.com/actions/checkout/pull/1209">Upgrade codeql actions to v2</a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/1210">Upgrade dependencies</a></li>
<li><a href="https://redirect.github.com/actions/checkout/pull/1225">Upgrade <code>`@​actions/io</code></a></li>`
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="8f4b7f8486"><code>8f4b7f8</code></a> Add new public key for known_hosts (<a href="https://redirect.github.com/actions/checkout/issues/1237">#1237</a>)</li>
<li><a href="cd6a9fd493"><code>cd6a9fd</code></a> Update update-main-version.yml</li>
<li><a href="24cb908017"><code>24cb908</code></a> Bump <code>`@​actions/io</code>` to v1.1.3 (<a href="https://redirect.github.com/actions/checkout/issues/1225">#1225</a>)</li>
<li><a href="27135e314d"><code>27135e3</code></a> Upgrade dependencies (<a href="https://redirect.github.com/actions/checkout/issues/1210">#1210</a>)</li>
<li><a href="7b187184d1"><code>7b18718</code></a> Upgrade codeql actions to v2 (<a href="https://redirect.github.com/actions/checkout/issues/1209">#1209</a>)</li>
<li>See full diff in <a href="https://github.com/actions/checkout/compare/v3.3.0...v3.5.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=3.3.0&new-version=3.5.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-12 20:33:08 +00:00
dependabot[bot]
5a13e2bede
build(deps): bump bdk from 0.27.1 to 0.28.0
Bumps [bdk](https://github.com/bitcoindevkit/bdk) from 0.27.1 to 0.28.0.
- [Release notes](https://github.com/bitcoindevkit/bdk/releases)
- [Changelog](https://github.com/bitcoindevkit/bdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bitcoindevkit/bdk/compare/v0.27.1...v0.28.0)

---
updated-dependencies:
- dependency-name: bdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-12 11:59:20 +00:00
dependabot[bot]
c00330901c
build(deps): bump dialoguer from 0.10.3 to 0.10.4
Bumps [dialoguer](https://github.com/mitsuhiko/dialoguer) from 0.10.3 to 0.10.4.
- [Release notes](https://github.com/mitsuhiko/dialoguer/releases)
- [Changelog](https://github.com/console-rs/dialoguer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mitsuhiko/dialoguer/compare/0.10.3...v0.10.4)

---
updated-dependencies:
- dependency-name: dialoguer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-12 11:58:13 +00:00
dependabot[bot]
10056c5876
build(deps): bump uuid from 1.3.0 to 1.3.1
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.3.0 to 1.3.1.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.3.0...1.3.1)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-12 11:57:45 +00:00
dependabot[bot]
1184109008
build(deps): bump async-trait from 0.1.66 to 0.1.68
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.66 to 0.1.68.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.66...0.1.68)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-12 09:40:47 +00:00
dependabot[bot]
d8a5a646b7
build(deps): bump serde from 1.0.156 to 1.0.160
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.156 to 1.0.160.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.156...v1.0.160)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-12 09:40:43 +00:00
bors[bot]
a726e318bd
Merge #1331
1331: build(deps): bump thiserror from 1.0.39 to 1.0.40 r=delta1 a=dependabot[bot]

Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.39 to 1.0.40.
<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.40</h2>
<ul>
<li>Update syn dependency to 2.x</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="3cec8c4879"><code>3cec8c4</code></a> Release 1.0.40</li>
<li><a href="2c65ceadfa"><code>2c65cea</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/thiserror/issues/227">#227</a> from dtolnay/syn</li>
<li><a href="fb8b81f20b"><code>fb8b81f</code></a> Update to syn 2</li>
<li><a href="0e45dde206"><code>0e45dde</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/thiserror/issues/226">#226</a> from dtolnay/tokenspan</li>
<li><a href="490dc0102b"><code>490dc01</code></a> Eliminate unneeded use of Spanned trait on single tokens</li>
<li>See full diff in <a href="https://github.com/dtolnay/thiserror/compare/1.0.39...1.0.40">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.39&new-version=1.0.40)](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>
2023-04-11 13:46:29 +00:00
bors[bot]
7325d99dfc
Merge #1329
1329: build(deps): bump anyhow from 1.0.69 to 1.0.70 r=delta1 a=dependabot[bot]

Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.69 to 1.0.70.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/anyhow/releases">anyhow's releases</a>.</em></p>
<blockquote>
<h2>1.0.70</h2>
<ul>
<li>Update syn dependency to 2.x</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="e4db1f96fd"><code>e4db1f9</code></a> Release 1.0.70</li>
<li><a href="10f5994a05"><code>10f5994</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/anyhow/issues/302">#302</a> from dtolnay/syn</li>
<li><a href="4a6b90c96a"><code>4a6b90c</code></a> Update to syn 2</li>
<li><a href="553ed38434"><code>553ed38</code></a> Update clippy.toml msrv to match rust-version in Cargo.toml</li>
<li><a href="d30b027581"><code>d30b027</code></a> Ignore let_underscore_untyped pedantic clippy lint</li>
<li><a href="2c2803f901"><code>2c2803f</code></a> Merge pull request <a href="https://redirect.github.com/dtolnay/anyhow/issues/298">#298</a> from dtolnay/constblock</li>
<li><a href="b2492874bc"><code>b249287</code></a> Support const block syntax in ensure! macro</li>
<li><a href="80d4c8d11b"><code>80d4c8d</code></a> Retitle the randomize-layout CI step</li>
<li><a href="4804a783a7"><code>4804a78</code></a> Support a manual trigger on CI workflow</li>
<li><a href="347b473a47"><code>347b473</code></a> Test with randomized type layout on nightly</li>
<li>Additional commits viewable in <a href="https://github.com/dtolnay/anyhow/compare/1.0.69...1.0.70">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=anyhow&package-manager=cargo&previous-version=1.0.69&new-version=1.0.70)](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>
2023-04-11 13:20:20 +00:00
dependabot[bot]
eb900f30e5
build(deps): bump actions/checkout from 3.3.0 to 3.5.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.3.0 to 3.5.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3.3.0...v3.5.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-24 12:01:57 +00:00
bors[bot]
9453b77ba5
Merge #1335
1335: build(deps): bump reqwest from 0.11.14 to 0.11.15 r=delta1 a=dependabot[bot]

Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.14 to 0.11.15.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/seanmonstar/reqwest/releases">reqwest's releases</a>.</em></p>
<blockquote>
<h2>v0.11.15</h2>
<h2>What's Changed</h2>
<ul>
<li>Add <code>RequestBuilder</code> methods to split and reconstruct from its parts.</li>
<li>Add experimental HTTP/3 support. 🧪3️🎉</li>
<li>Fix <code>connection_verbose</code> to log <code>write_vectored</code> calls.</li>
<li>(wasm) Make requests actually cancel if the future is dropped.</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/jneem"><code>`@​jneem</code></a>` made their first contribution in <a href="https://redirect.github.com/seanmonstar/reqwest/pull/1755">seanmonstar/reqwest#1755</a></li>
<li><a href="https://github.com/TurnOfACard"><code>`@​TurnOfACard</code></a>` made their first contribution in <a href="https://redirect.github.com/seanmonstar/reqwest/pull/1762">seanmonstar/reqwest#1762</a></li>
<li><a href="https://github.com/j7nw4r"><code>`@​j7nw4r</code></a>` made their first contribution in <a href="https://redirect.github.com/seanmonstar/reqwest/pull/1765">seanmonstar/reqwest#1765</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/seanmonstar/reqwest/compare/v0.11.14...v0.11.15">https://github.com/seanmonstar/reqwest/compare/v0.11.14...v0.11.15</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md">reqwest's changelog</a>.</em></p>
<blockquote>
<h2>v0.11.15</h2>
<ul>
<li>Add <code>RequestBuilder</code> methods to split and reconstruct from its parts.</li>
<li>Add experimental HTTP/3 support.</li>
<li>Fix <code>connection_verbose</code> to log <code>write_vectored</code> calls.</li>
<li>(wasm) Make requests actually cancel if the future is dropped.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="56190bd4c5"><code>56190bd</code></a> v0.11.15</li>
<li><a href="df2b3baadc"><code>df2b3ba</code></a> wasm: fix premature abort for streaming bodies (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1782">#1782</a>)</li>
<li><a href="4db868b412"><code>4db868b</code></a> Make HTTP/3 feature more unstable (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1780">#1780</a>)</li>
<li><a href="57a8a01e4a"><code>57a8a01</code></a> Add Experimental HTTP/3 Support (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1599">#1599</a>)</li>
<li><a href="119366e957"><code>119366e</code></a> async/request: add methods to split and reassemble a RequestBuilder (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1770">#1770</a>)</li>
<li><a href="673449aa82"><code>673449a</code></a> docs: fix wording on main docs page (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1765">#1765</a>)</li>
<li><a href="c2ac875c36"><code>c2ac875</code></a> Clarify the documentation to show that get will fail if the total download ti...</li>
<li><a href="bb8fec4782"><code>bb8fec4</code></a> Make wasm requests cancel when the future drops. (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1755">#1755</a>)</li>
<li><a href="bdd4db0244"><code>bdd4db0</code></a> Fix <code>connection_verbose</code> to log write_vectored calls (<a href="https://redirect.github.com/seanmonstar/reqwest/issues/1737">#1737</a>)</li>
<li>See full diff in <a href="https://github.com/seanmonstar/reqwest/compare/v0.11.14...v0.11.15">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=reqwest&package-manager=cargo&previous-version=0.11.14&new-version=0.11.15)](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>
2023-03-22 11:20:29 +00:00
dependabot[bot]
b475208a9f
build(deps): bump reqwest from 0.11.14 to 0.11.15
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.14 to 0.11.15.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.14...v0.11.15)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-21 11:58:56 +00:00
dependabot[bot]
d6e0f2d379
build(deps): bump thiserror from 1.0.39 to 1.0.40
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.39 to 1.0.40.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.39...1.0.40)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 11:59:25 +00:00
dependabot[bot]
559292498f
build(deps): bump anyhow from 1.0.69 to 1.0.70
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.69 to 1.0.70.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.69...1.0.70)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 11:59:01 +00:00
bors[bot]
03e0e92840
Merge #1320 #1321 #1322 #1323
1320: build(deps): bump hyper from 0.14.24 to 0.14.25 r=delta1 a=dependabot[bot]

Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.24 to 0.14.25.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/hyperium/hyper/releases">hyper's releases</a>.</em></p>
<blockquote>
<h2>v0.14.25</h2>
<h2>Features</h2>
<ul>
<li><strong>client:</strong>
<ul>
<li>deprecate <code>client::conn</code> types (<a href="https://redirect.github.com/hyperium/hyper/issues/3156">#3156</a>) (<a href="0ced15d3cc">0ced15d3</a>)</li>
<li>add 1.0 compatible client conn API  (<a href="https://redirect.github.com/hyperium/hyper/issues/3155">#3155</a>) (<a href="253cc74d86">253cc74d</a>, closes <a href="https://redirect.github.com/hyperium/hyper/issues/3053">#3053</a>)</li>
<li>add <code>client::connect::capture_connection()</code> (<a href="https://redirect.github.com/hyperium/hyper/issues/3144">#3144</a>) (<a href="c8493399b2">c8493399</a>)</li>
<li>add <code>poison</code> to <code>Connected</code> (<a href="https://redirect.github.com/hyperium/hyper/issues/3145">#3145</a>) (<a href="37ed5a2e3c">37ed5a2e</a>)</li>
</ul>
</li>
<li><strong>server:</strong>
<ul>
<li>deprecate server conn structs (<a href="https://redirect.github.com/hyperium/hyper/issues/3161">#3161</a>) (<a href="02fe20f232">02fe20f2</a>)</li>
<li>backport the split server conn modules from 1.0 (<a href="https://redirect.github.com/hyperium/hyper/issues/3102">#3102</a>) (<a href="84881c9e51">84881c9e</a>, closes <a href="https://redirect.github.com/hyperium/hyper/issues/3079">#3079</a>)</li>
<li>remove some <code>Unpin</code> and <code>'static</code> constraints (<a href="https://redirect.github.com/hyperium/hyper/issues/3119">#3119</a>) (<a href="0368a41a6c">0368a41a</a>)</li>
</ul>
</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/rcoh"><code>`@​rcoh</code></a>` made their first contribution in <a href="https://redirect.github.com/hyperium/hyper/pull/3145">hyperium/hyper#3145</a></li>
<li><a href="https://github.com/iamwwc"><code>`@​iamwwc</code></a>` made their first contribution in <a href="https://redirect.github.com/hyperium/hyper/pull/3119">hyperium/hyper#3119</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/hyperium/hyper/blob/v0.14.25/CHANGELOG.md">hyper's changelog</a>.</em></p>
<blockquote>
<h3>v0.14.25 (2023-03-10)</h3>
<h4>Features</h4>
<ul>
<li><strong>client:</strong>
<ul>
<li>deprecate <code>client::conn</code> types (<a href="https://redirect.github.com/hyperium/hyper/issues/3156">#3156</a>) (<a href="0ced15d3cc">0ced15d3</a>)</li>
<li>add 1.0 compatible client conn API  (<a href="https://redirect.github.com/hyperium/hyper/issues/3155">#3155</a>) (<a href="253cc74d86">253cc74d</a>, closes <a href="https://redirect.github.com/hyperium/hyper/issues/3053">#3053</a>)</li>
<li>add <code>client::connect::capture_connection()</code> (<a href="https://redirect.github.com/hyperium/hyper/issues/3144">#3144</a>) (<a href="c8493399b2">c8493399</a>)</li>
<li>add <code>poison</code> to <code>Connected</code> (<a href="https://redirect.github.com/hyperium/hyper/issues/3145">#3145</a>) (<a href="37ed5a2e3c">37ed5a2e</a>)</li>
</ul>
</li>
<li><strong>server:</strong>
<ul>
<li>deprecate server conn structs (<a href="https://redirect.github.com/hyperium/hyper/issues/3161">#3161</a>) (<a href="02fe20f232">02fe20f2</a>)</li>
<li>backport the split server conn modules from 1.0 (<a href="https://redirect.github.com/hyperium/hyper/issues/3102">#3102</a>) (<a href="84881c9e51">84881c9e</a>, closes <a href="https://redirect.github.com/hyperium/hyper/issues/3079">#3079</a>)</li>
<li>remove some <code>Unpin</code> and <code>'static</code> constraints (<a href="https://redirect.github.com/hyperium/hyper/issues/3119">#3119</a>) (<a href="0368a41a6c">0368a41a</a>)</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a9d4e8321c"><code>a9d4e83</code></a> v0.14.25</li>
<li><a href="645db19125"><code>645db19</code></a> docs(lib): document backport and deprecated features (<a href="https://redirect.github.com/hyperium/hyper/issues/3166">#3166</a>)</li>
<li><a href="fc111eb332"><code>fc111eb</code></a> chore(ci): test deprecations in CI (<a href="https://redirect.github.com/hyperium/hyper/issues/3162">#3162</a>)</li>
<li><a href="86bc7505c8"><code>86bc750</code></a> refactor(server): allow deprecated in the server module (<a href="https://redirect.github.com/hyperium/hyper/issues/3165">#3165</a>)</li>
<li><a href="02fe20f232"><code>02fe20f</code></a> feat(server): deprecate server conn structs (<a href="https://redirect.github.com/hyperium/hyper/issues/3161">#3161</a>)</li>
<li><a href="84881c9e51"><code>84881c9</code></a> feat(server): backport the split server conn modules from 1.0 (<a href="https://redirect.github.com/hyperium/hyper/issues/3102">#3102</a>)</li>
<li><a href="0368a41a6c"><code>0368a41</code></a> feat(server): remove some <code>Unpin</code> and <code>'static</code> constraints (<a href="https://redirect.github.com/hyperium/hyper/issues/3119">#3119</a>)</li>
<li><a href="0ced15d3cc"><code>0ced15d</code></a> feat(client): deprecate <code>client::conn</code> types (<a href="https://redirect.github.com/hyperium/hyper/issues/3156">#3156</a>)</li>
<li><a href="253cc74d86"><code>253cc74</code></a> feat(client): add 1.0 compatible client conn API  (<a href="https://redirect.github.com/hyperium/hyper/issues/3155">#3155</a>)</li>
<li><a href="c8493399b2"><code>c849339</code></a> feat(client): add <code>client::connect::capture_connection()</code> (<a href="https://redirect.github.com/hyperium/hyper/issues/3144">#3144</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/hyperium/hyper/compare/v0.14.24...v0.14.25">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=hyper&package-manager=cargo&previous-version=0.14.24&new-version=0.14.25)](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>

1321: build(deps): bump rust_decimal from 1.28.1 to 1.29.0 r=delta1 a=dependabot[bot]

Bumps [rust_decimal](https://github.com/paupino/rust-decimal) from 1.28.1 to 1.29.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md">rust_decimal's changelog</a>.</em></p>
<blockquote>
<h2>1.29.0</h2>
<h3>Added</h3>
<ul>
<li>New <code>trunc_with_scale</code> function which allows you to truncate a decimal number whilst retaining a specified precision. (<a href="https://redirect.github.com/paupino/rust-decimal/pull/576">#576</a>), (<a href="https://redirect.github.com/paupino/rust-decimal/pull/578">#578</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix issue when rouding using a high precision decimal place on zero values. This would previously allow the <code>Decimal</code> number to enter into an invalid state. (<a href="https://redirect.github.com/paupino/rust-decimal/pull/575">#575</a>)</li>
</ul>
<h3>Changed</h3>
<p>There were also a couple of housekeeping tasks, to help pave the way for v2 of Rust Decimal.</p>
<ul>
<li>Clean up features so that they are explicit in the <code>cargo.toml</code> and leverage the new <code>dep:</code> syntax where required. (<a href="https://redirect.github.com/paupino/rust-decimal/pull/579">#579</a>)</li>
<li>Restructure and compartamentalize Makefile. (<a href="https://redirect.github.com/paupino/rust-decimal/pull/580">#580</a>)</li>
</ul>
<h3>Credit</h3>
<p>Thank you <a href="https://github.com/c410-f3r"><code>`@​c410-f3r</code></a>` and <a href="https://github.com/jon-chuang"><code>`@​jon-chuang</code></a>` for your contributions to this release!</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="7b85dea8f7"><code>7b85dea</code></a> Version 1.29 (<a href="https://redirect.github.com/paupino/rust-decimal/issues/581">#581</a>)</li>
<li><a href="571ad60125"><code>571ad60</code></a> Restructure Makefile for easier navigation (<a href="https://redirect.github.com/paupino/rust-decimal/issues/580">#580</a>)</li>
<li><a href="4edfca78c1"><code>4edfca7</code></a> Use explict features and dependencies (<a href="https://redirect.github.com/paupino/rust-decimal/issues/579">#579</a>)</li>
<li><a href="d6e5ad45e7"><code>d6e5ad4</code></a> Refactor truncate to allow for a shared code path (<a href="https://redirect.github.com/paupino/rust-decimal/issues/578">#578</a>)</li>
<li><a href="e4b5c514f2"><code>e4b5c51</code></a> Introduce <code>trunc_with_scale</code> (<a href="https://redirect.github.com/paupino/rust-decimal/issues/576">#576</a>)</li>
<li><a href="c205456643"><code>c205456</code></a> fix: decimal round_dp on zero with too large dp (<a href="https://redirect.github.com/paupino/rust-decimal/issues/575">#575</a>)</li>
<li>See full diff in <a href="https://github.com/paupino/rust-decimal/compare/1.28.1...1.29.0">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.28.1&new-version=1.29.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>

1322: build(deps): bump futures from 0.3.26 to 0.3.27 r=delta1 a=dependabot[bot]

Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.26 to 0.3.27.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/releases">futures's releases</a>.</em></p>
<blockquote>
<h2>0.3.27</h2>
<ul>
<li>Add <code>TryFlattenUnordered</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2577">#2577</a>, <a href="https://redirect.github.com/rust-lang/futures-rs/issues/2590">#2590</a>, <a href="https://redirect.github.com/rust-lang/futures-rs/issues/2606">#2606</a>, <a href="https://redirect.github.com/rust-lang/futures-rs/issues/2607">#2607</a>)</li>
<li>Add <code>AbortHandle::is_aborted</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2710">#2710</a>)</li>
<li>Add <code>AbortRegistration::handle</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2712">#2712</a>)</li>
<li>Make <code>BiLock</code> strict-provenance compatible (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2716">#2716</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md">futures's changelog</a>.</em></p>
<blockquote>
<h1>0.3.27 - 2023-03-11</h1>
<ul>
<li>Add <code>TryFlattenUnordered</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2577">#2577</a>, <a href="https://redirect.github.com/rust-lang/futures-rs/issues/2590">#2590</a>, <a href="https://redirect.github.com/rust-lang/futures-rs/issues/2606">#2606</a>, <a href="https://redirect.github.com/rust-lang/futures-rs/issues/2607">#2607</a>)</li>
<li>Add <code>AbortHandle::is_aborted</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2710">#2710</a>)</li>
<li>Add <code>AbortRegistration::handle</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2712">#2712</a>)</li>
<li>Make <code>BiLock</code> strict-provenance compatible (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2716">#2716</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="cfc501c9c7"><code>cfc501c</code></a> Release 0.3.27</li>
<li><a href="335b43173f"><code>335b431</code></a> Automatically cancel outdated CI runs on PR</li>
<li><a href="4b9dddf220"><code>4b9dddf</code></a> Remove dead code</li>
<li><a href="d1acf08852"><code>d1acf08</code></a> tests: restore disabled tests and benches for BiLock (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2715">#2715</a>)</li>
<li><a href="0ffaaa0859"><code>0ffaaa0</code></a> Make BiLock strict-provenance compatible (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2716">#2716</a>)</li>
<li><a href="4266221ae0"><code>4266221</code></a> Add AbortRegistration::handle (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2712">#2712</a>)</li>
<li><a href="9c44e14810"><code>9c44e14</code></a> add AbortHandle::is_aborted() (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2710">#2710</a>)</li>
<li><a href="5b64af3f38"><code>5b64af3</code></a> Ensure unreachable branch is eliminated (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2708">#2708</a>)</li>
<li><a href="bc85d233fe"><code>bc85d23</code></a> Simplify Fuse::poll to use a match expression instead of <code>return</code> (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2694">#2694</a>)</li>
<li><a href="b0d2c56e94"><code>b0d2c56</code></a> Poll <code>Select</code> futures without moving them (<a href="https://redirect.github.com/rust-lang/futures-rs/issues/2704">#2704</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/rust-lang/futures-rs/compare/0.3.26...0.3.27">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=futures&package-manager=cargo&previous-version=0.3.26&new-version=0.3.27)](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>

1323: build(deps): bump rust_decimal_macros from 1.28.1 to 1.29.0 r=delta1 a=dependabot[bot]

Bumps [rust_decimal_macros](https://github.com/paupino/rust-decimal) from 1.28.1 to 1.29.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md">rust_decimal_macros's changelog</a>.</em></p>
<blockquote>
<h2>1.29.0</h2>
<h3>Added</h3>
<ul>
<li>New <code>trunc_with_scale</code> function which allows you to truncate a decimal number whilst retaining a specified precision. (<a href="https://redirect.github.com/paupino/rust-decimal/pull/576">#576</a>), (<a href="https://redirect.github.com/paupino/rust-decimal/pull/578">#578</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix issue when rouding using a high precision decimal place on zero values. This would previously allow the <code>Decimal</code> number to enter into an invalid state. (<a href="https://redirect.github.com/paupino/rust-decimal/pull/575">#575</a>)</li>
</ul>
<h3>Changed</h3>
<p>There were also a couple of housekeeping tasks, to help pave the way for v2 of Rust Decimal.</p>
<ul>
<li>Clean up features so that they are explicit in the <code>cargo.toml</code> and leverage the new <code>dep:</code> syntax where required. (<a href="https://redirect.github.com/paupino/rust-decimal/pull/579">#579</a>)</li>
<li>Restructure and compartamentalize Makefile. (<a href="https://redirect.github.com/paupino/rust-decimal/pull/580">#580</a>)</li>
</ul>
<h3>Credit</h3>
<p>Thank you <a href="https://github.com/c410-f3r"><code>`@​c410-f3r</code></a>` and <a href="https://github.com/jon-chuang"><code>`@​jon-chuang</code></a>` for your contributions to this release!</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="7b85dea8f7"><code>7b85dea</code></a> Version 1.29 (<a href="https://redirect.github.com/paupino/rust-decimal/issues/581">#581</a>)</li>
<li><a href="571ad60125"><code>571ad60</code></a> Restructure Makefile for easier navigation (<a href="https://redirect.github.com/paupino/rust-decimal/issues/580">#580</a>)</li>
<li><a href="4edfca78c1"><code>4edfca7</code></a> Use explict features and dependencies (<a href="https://redirect.github.com/paupino/rust-decimal/issues/579">#579</a>)</li>
<li><a href="d6e5ad45e7"><code>d6e5ad4</code></a> Refactor truncate to allow for a shared code path (<a href="https://redirect.github.com/paupino/rust-decimal/issues/578">#578</a>)</li>
<li><a href="e4b5c514f2"><code>e4b5c51</code></a> Introduce <code>trunc_with_scale</code> (<a href="https://redirect.github.com/paupino/rust-decimal/issues/576">#576</a>)</li>
<li><a href="c205456643"><code>c205456</code></a> fix: decimal round_dp on zero with too large dp (<a href="https://redirect.github.com/paupino/rust-decimal/issues/575">#575</a>)</li>
<li>See full diff in <a href="https://github.com/paupino/rust-decimal/compare/1.28.1...1.29.0">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.28.1&new-version=1.29.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-16 08:56:26 +00:00
bors[bot]
d14a444b57
Merge #1325
1325: build(deps): bump serde from 1.0.154 to 1.0.156 r=delta1 a=dependabot[bot]

Bumps [serde](https://github.com/serde-rs/serde) from 1.0.154 to 1.0.156.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.156</h2>
<ul>
<li>Documentation improvements</li>
</ul>
<h2>v1.0.155</h2>
<ul>
<li>Support <code>Serialize</code> and <code>Deserialize</code> impls for <code>core::ffi::CStr</code> and <code>alloc::ffi::CString</code> without &quot;std&quot; feature (<a href="https://redirect.github.com/serde-rs/serde/issues/2374">#2374</a>, thanks <a href="https://github.com/safarir"><code>`@​safarir</code></a>)</li>`
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="54671259aa"><code>5467125</code></a> Release 1.0.156</li>
<li><a href="994f7c7924"><code>994f7c7</code></a> Format with rustfmt 1.5.2-nightly</li>
<li><a href="7a8e4977e2"><code>7a8e497</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2401">#2401</a> from dtolnay/docderive</li>
<li><a href="fb7b6ea7ea"><code>fb7b6ea</code></a> Enable serde derive feature when built by docs.rs</li>
<li><a href="063dd5b93f"><code>063dd5b</code></a> Show derive macros in serde's rustdoc</li>
<li><a href="a38aa31ade"><code>a38aa31</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2400">#2400</a> from Nilstrieb/explicit-reexport</li>
<li><a href="f42b2581da"><code>f42b258</code></a> Use explicit re-export of <code>serde_derive</code> to give rustc more info</li>
<li><a href="2ba406726f"><code>2ba4067</code></a> Release 1.0.155</li>
<li><a href="7e9826e17b"><code>7e9826e</code></a> Add link to core CStr stabilization announcement</li>
<li><a href="f4dcc5c918"><code>f4dcc5c</code></a> Merge pull request <a href="https://redirect.github.com/serde-rs/serde/issues/2374">#2374</a> from safarir/master</li>
<li>Additional commits viewable in <a href="https://github.com/serde-rs/serde/compare/v1.0.154...v1.0.156">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.154&new-version=1.0.156)](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>
2023-03-15 15:12:45 +00:00
dependabot[bot]
0d70cd8d02
build(deps): bump rust_decimal_macros from 1.28.1 to 1.29.0
Bumps [rust_decimal_macros](https://github.com/paupino/rust-decimal) from 1.28.1 to 1.29.0.
- [Release notes](https://github.com/paupino/rust-decimal/releases)
- [Changelog](https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paupino/rust-decimal/compare/1.28.1...1.29.0)

---
updated-dependencies:
- dependency-name: rust_decimal_macros
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-15 13:23:47 +00:00
dependabot[bot]
eb2818da57
build(deps): bump futures from 0.3.26 to 0.3.27
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.26 to 0.3.27.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.26...0.3.27)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-15 13:23:41 +00:00
dependabot[bot]
c176bef555
build(deps): bump rust_decimal from 1.28.1 to 1.29.0
Bumps [rust_decimal](https://github.com/paupino/rust-decimal) from 1.28.1 to 1.29.0.
- [Release notes](https://github.com/paupino/rust-decimal/releases)
- [Changelog](https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paupino/rust-decimal/compare/1.28.1...1.29.0)

---
updated-dependencies:
- dependency-name: rust_decimal
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-15 13:23:35 +00:00
dependabot[bot]
c788094e4a
build(deps): bump hyper from 0.14.24 to 0.14.25
Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.24 to 0.14.25.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/v0.14.25/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.24...v0.14.25)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-15 13:23:32 +00:00
dependabot[bot]
1723ddf133
build(deps): bump serde from 1.0.154 to 1.0.156
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.154 to 1.0.156.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.154...v1.0.156)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-15 13:23:28 +00:00
bors[bot]
4520c1f87c
Merge #1326
1326: chore: fix dprint config and run fmt r=delta1 a=delta1

Recent dprint changes broke the static analysis CI job 

See: https://github.com/dprint/dprint/issues/656

Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2023-03-15 12:36:14 +00:00
Byron Hambly
00cfce57c7
chore: fix dprint config and run fmt 2023-03-15 14:19:57 +02:00
bors[bot]
31914bc1ed
Merge #1318
1318: build(deps): bump serde from 1.0.152 to 1.0.154 r=delta1 a=dependabot[bot]

Bumps [serde](https://github.com/serde-rs/serde) from 1.0.152 to 1.0.154.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.154</h2>
<ul>
<li>Fix &quot;undeclared lifetime&quot; error in generated code when deriving Deserialize for an enum with both <code>flatten</code> and <code>'static</code> fields (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2383">#2383</a>, thanks <a href="https://github.com/Mingun"><code>`@​Mingun</code></a>)</li>`
</ul>
<h2>v1.0.153</h2>
<ul>
<li>Support <code>serde(alias = &quot;…&quot;)</code> attribute used inside of flattened struct (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2387">#2387</a>, thanks <a href="https://github.com/bebecue"><code>`@​bebecue</code></a>)</li>`
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="6a5da85fcd"><code>6a5da85</code></a> Release 1.0.154</li>
<li><a href="0750eee4ff"><code>0750eee</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2383">#2383</a> from Mingun/fix-flatten+static</li>
<li><a href="ef551a517c"><code>ef551a5</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2389">#2389</a> from dtolnay/trimstart</li>
<li><a href="1c5ea24f76"><code>1c5ea24</code></a> Replace use of deprecated trim_left_matches with trim_start_matches</li>
<li><a href="88d73e5250"><code>88d73e5</code></a> Format PR 2387 with rustfmt</li>
<li><a href="1ff2a972c6"><code>1ff2a97</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2388">#2388</a> from serde-rs/exhaustivepatterns</li>
<li><a href="bb72fe2726"><code>bb72fe2</code></a> Update the comment on simpler exhaustive matching in derive</li>
<li><a href="e50b14afee"><code>e50b14a</code></a> Release 1.0.153</li>
<li><a href="cbd1cbef07"><code>cbd1cbe</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2387">#2387</a> from bebecue/fix-1504</li>
<li><a href="01da3f79c9"><code>01da3f7</code></a> Add tests for <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2387">#2387</a></li>
<li>Additional commits viewable in <a href="https://github.com/serde-rs/serde/compare/v1.0.152...v1.0.154">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.152&new-version=1.0.154)](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>
2023-03-09 14:55:05 +00:00
dependabot[bot]
e75f589915
build(deps): bump serde from 1.0.152 to 1.0.154
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.152 to 1.0.154.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.152...v1.0.154)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-09 11:58:03 +00:00
bors[bot]
5eccc3b7fc
Merge #1312 #1315 #1316
1312: build(deps): bump async-trait from 0.1.64 to 0.1.66 r=delta1 a=dependabot[bot]

Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.64 to 0.1.66.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/async-trait/releases">async-trait's releases</a>.</em></p>
<blockquote>
<h2>0.1.66</h2>
<ul>
<li>Set html_root_url attribute</li>
</ul>
<h2>0.1.65</h2>
<ul>
<li>Fix interaction with rustc's single_use_lifetimes lint (<a href="https://github-redirect.dependabot.com/dtolnay/async-trait/issues/238">#238</a>, <a href="https://github-redirect.dependabot.com/dtolnay/async-trait/issues/239">#239</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="9a9b322287"><code>9a9b322</code></a> Release 0.1.66</li>
<li><a href="4cd54b867e"><code>4cd54b8</code></a> Set html_root_url</li>
<li><a href="ccb55b8a15"><code>ccb55b8</code></a> Release 0.1.65</li>
<li><a href="7eea88ba23"><code>7eea88b</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/async-trait/issues/239">#239</a> from dtolnay/singleuse</li>
<li><a href="5883ac897e"><code>5883ac8</code></a> Delete replacement of elided lifetimes in impl heading</li>
<li><a href="f81548d926"><code>f81548d</code></a> Add regression test for issue 238</li>
<li><a href="7937a8900b"><code>7937a89</code></a> Ignore let_underscore_untyped pedantic clippy lint</li>
<li><a href="04e818c2e0"><code>04e818c</code></a> Update ui test suite to nightly-2023-02-25</li>
<li><a href="0bb013ea50"><code>0bb013e</code></a> Show enabling of nightly tests as a CI step</li>
<li><a href="dd45be18fe"><code>dd45be1</code></a> Enable type layout randomization in CI on nightly</li>
<li>Additional commits viewable in <a href="https://github.com/dtolnay/async-trait/compare/0.1.64...0.1.66">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=async-trait&package-manager=cargo&previous-version=0.1.64&new-version=0.1.66)](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>

1315: build(deps): bump serde_json from 1.0.93 to 1.0.94 r=delta1 a=dependabot[bot]

Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.93 to 1.0.94.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.94</h2>
<ul>
<li>Fix message duplication between serde_json::Error's <code>Display</code> and <code>source()</code> (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/991">#991</a>, <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/992">#992</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a15bd09686"><code>a15bd09</code></a> Release 1.0.94</li>
<li><a href="3e418b13be"><code>3e418b1</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/992">#992</a> from dtolnay/errorsource</li>
<li><a href="7eeb169f9b"><code>7eeb169</code></a> Fix message duplication between error Display and source()</li>
<li><a href="d9447c30eb"><code>d9447c3</code></a> Ignore let_underscore_untyped pedantic clippy lint</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.93...v1.0.94">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.93&new-version=1.0.94)](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>

1316: build(deps): bump thiserror from 1.0.38 to 1.0.39 r=delta1 a=dependabot[bot]

Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.38 to 1.0.39.
<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.39</h2>
<ul>
<li>Set html_root_url attribute</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="f729af95d1"><code>f729af9</code></a> Release 1.0.39</li>
<li><a href="391ec2bc1b"><code>391ec2b</code></a> Set html_root_url</li>
<li><a href="a2d1ed1ccf"><code>a2d1ed1</code></a> Enable type layout randomization in CI on nightly</li>
<li><a href="7aaa03d94a"><code>7aaa03d</code></a> Show enabling of nightly tests as a CI step</li>
<li><a href="0010b0fd96"><code>0010b0f</code></a> Support a manual trigger on CI workflow</li>
<li><a href="920ad73295"><code>920ad73</code></a> Ignore extra_unused_type_parameters clippy lint in test</li>
<li><a href="0d23ebc77a"><code>0d23ebc</code></a> Prevent actions duplication on noop merge commits</li>
<li><a href="c5ce7250fa"><code>c5ce725</code></a> Sync license text with rust-lang repos</li>
<li>See full diff in <a href="https://github.com/dtolnay/thiserror/compare/1.0.38...1.0.39">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.38&new-version=1.0.39)](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>
2023-03-06 11:17:29 +00:00
dependabot[bot]
c5067dc8d7
build(deps): bump thiserror from 1.0.38 to 1.0.39
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.38 to 1.0.39.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.38...1.0.39)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 10:27:48 +00:00
dependabot[bot]
f5567ebfd7
build(deps): bump serde_json from 1.0.93 to 1.0.94
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.93 to 1.0.94.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.93...v1.0.94)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 10:27:28 +00:00
dependabot[bot]
4c59117a00
build(deps): bump async-trait from 0.1.64 to 0.1.66
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.64 to 0.1.66.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.64...0.1.66)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 10:26:34 +00:00
bors[bot]
f678f43a24
Merge #1309
1309: build(deps): bump tempfile from 3.3.0 to 3.4.0 r=delta1 a=dependabot[bot]

Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.3.0 to 3.4.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Stebalien/tempfile/blob/master/NEWS">tempfile's changelog</a>.</em></p>
<blockquote>
<h1>3.4.0</h1>
<p>SECURITY: Prior <code>tempfile</code> releases depended on <code>remove_dir_all</code> version 0.5.0 which was vulnerabiel to a <a href="https://github.com/XAMPPRocky/remove_dir_all/security/advisories/GHSA-mc8h-8q98-g5hr">TOCTOU race</a>. This same race is present in rust versions prior to 1.58.1.</p>
<p>Features:</p>
<ul>
<li>Generalized temporary files: <code>NamedTempFile</code> can now abstract over different kinds of files (e.g.,
unix domain sockets, pipes, etc.):
<ul>
<li>Add <code>Builder::make</code> and <code>Builder::make_in</code> for generalized temp file
creation.</li>
<li>Add <code>NamedTempFile::from_parts</code> to complement <code>NamedTempFile::into_parts</code>.</li>
<li>Add generic parameter to <code>NamedTempFile</code> to support wrapping non-File types.</li>
</ul>
</li>
</ul>
<p>Bug Fixes/Improvements:</p>
<ul>
<li>Don't try to create a temporary file multiple times if the file path has been fully specified by
the user (no random characters).</li>
<li><code>NamedTempFile::persist_noclobber</code> is now always atomic on linux when <code>renameat_with</code> is
supported. Previously, it would first link the new path, then unlink the previous path.</li>
<li>Fix compiler warnings on windows.</li>
</ul>
<p>Trivia:</p>
<ul>
<li>Switch from <code>libc</code> to <code>rustix</code> on wasi/unix. This now makes direct syscalls instead of calling
through libc.</li>
<li>Remove <code>remove_dir_all</code> dependency. The rust standard library has optimized their internal version
significantly.</li>
<li>Switch to official windows-sys windows bindings.</li>
</ul>
<p>Breaking:</p>
<ul>
<li>The minimum rust version is now <code>1.48.0</code>.</li>
<li>Mark most functions as <code>must_use</code>.</li>
<li>Uses direct syscalls on linux by default, instead of libc.</li>
<li>The new type parameter in <code>NamedTempFile</code> may lead to type inference issues in some cases.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/Stebalien/tempfile/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tempfile&package-manager=cargo&previous-version=3.3.0&new-version=3.4.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-06 09:51:27 +00:00
dependabot[bot]
a23bf2129a
build(deps): bump tempfile from 3.3.0 to 3.4.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/Stebalien/tempfile/releases)
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/NEWS)
- [Commits](https://github.com/Stebalien/tempfile/commits)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 12:10:49 +00:00
bors[bot]
c10beaf2d7
Merge #1310
1310: build(deps): bump time from 0.3.19 to 0.3.20 r=delta1 a=dependabot[bot]

Bumps [time](https://github.com/time-rs/time) from 0.3.19 to 0.3.20.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/time-rs/time/releases">time's releases</a>.</em></p>
<blockquote>
<h2>v0.3.20</h2>
<p>See the <a href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">changelog</a> for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">time's changelog</a>.</em></p>
<blockquote>
<h2>0.3.20 [2023-02-24]</h2>
<h3>Changed</h3>
<ul>
<li>The minimum supported Rust version is now 1.63.0.</li>
<li>On Unix-based operating systems with known thread-safe environments, functions obtaining the local
offset no longer require a check that the program is single-threaded. This currently includes
MacOS, illumos, and NetBSD.</li>
</ul>
<h3>Added</h3>
<ul>
<li><code>[ignore]</code> component in format descriptions. A <code>count</code> modifier is required, indicating the number
of bytes to ignore when parsing.</li>
<li><code>[unix_timestamp]</code> component in format descriptions. This is currently only usable with
<code>OffsetDateTime</code>. Users can choose between seconds, milliseconds, microseconds, and nanoseconds, and whether the sign is mandatory or optional.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>The API for declaring soundness now uses stricter atomic orderings internally.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d7c725c422"><code>d7c725c</code></a> v0.3.20 release</li>
<li><a href="91afd54287"><code>91afd54</code></a> Add lock to another test</li>
<li><a href="8dca98c946"><code>8dca98c</code></a> Implement <code>[unix_timestamp]</code> component</li>
<li><a href="d07b394baf"><code>d07b394</code></a> Further split logical and memory offset</li>
<li><a href="0229837518"><code>0229837</code></a> Slightly refactor <code>DateTime</code> internals</li>
<li><a href="1daedfb705"><code>1daedfb</code></a> Add missing test for new error variant</li>
<li><a href="4edf73a035"><code>4edf73a</code></a> Use <code>bug!</code> instead of <code>unreachable!</code></li>
<li><a href="0e82474728"><code>0e82474</code></a> Use <code>explicit_generic_args_with_impl_trait</code></li>
<li><a href="3b6d77f1dc"><code>3b6d77f</code></a> Bump MSRV to 1.63</li>
<li><a href="eb7b60e74e"><code>eb7b60e</code></a> Always test local offset</li>
<li>Additional commits viewable in <a href="https://github.com/time-rs/time/compare/v0.3.19...v0.3.20">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time&package-manager=cargo&previous-version=0.3.19&new-version=0.3.20)](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>
2023-02-28 09:10:25 +00:00
bors[bot]
8957f42af3
Merge #1311
1311: readme: fix minor grammar error r=delta1 a=steverusso



Co-authored-by: Steve Russo <steverusso@pm.me>
2023-02-28 08:51:21 +00:00
Steve Russo
4458e00e94 readme: fix minor grammar error 2023-02-27 15:13:17 -05:00
dependabot[bot]
485f6d4a12
build(deps): bump time from 0.3.19 to 0.3.20
Bumps [time](https://github.com/time-rs/time) from 0.3.19 to 0.3.20.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.19...v0.3.20)

---
updated-dependencies:
- dependency-name: time
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-27 12:01:45 +00:00
bors[bot]
f2d2be8572
Merge #1308
1308: build(deps): bump Swatinem/rust-cache from 2.2.0 to 2.2.1 r=delta1 a=dependabot[bot]

Bumps [Swatinem/rust-cache](https://github.com/Swatinem/rust-cache) from 2.2.0 to 2.2.1.
<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>v2.2.1</h2>
<ul>
<li>Update <code>`@actions/cache</code>` dependency to fix usage of <code>zstd</code> compression.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md">Swatinem/rust-cache's changelog</a>.</em></p>
<blockquote>
<h2>2.2.1</h2>
<ul>
<li>Update <code>`@actions/cache</code>` dependency to fix usage of <code>zstd</code> compression.</li>
</ul>
<h2>2.2.0</h2>
<ul>
<li>Add new <code>save-if</code> option to always restore, but only conditionally save the cache.</li>
</ul>
<h2>2.1.0</h2>
<ul>
<li>Only hash <code>Cargo.{lock,toml}</code> files in the configured workspace directories.</li>
</ul>
<h2>2.0.2</h2>
<ul>
<li>Avoid calling <code>cargo metadata</code> on pre-cleanup.</li>
<li>Added <code>prefix-key</code>, <code>cache-directories</code> and <code>cache-targets</code> options.</li>
</ul>
<h2>2.0.1</h2>
<ul>
<li>Primarily just updating dependencies to fix GitHub deprecation notices.</li>
</ul>
<h2>2.0.0</h2>
<ul>
<li>The action code was refactored to allow for caching multiple workspaces and
different <code>target</code> directory layouts.</li>
<li>The <code>working-directory</code> and <code>target-dir</code> input options were replaced by a
single <code>workspaces</code> option that has the form of <code>$workspace -&gt; $target</code>.</li>
<li>Support for considering <code>env-vars</code> as part of the cache key.</li>
<li>The <code>sharedKey</code> input option was renamed to <code>shared-key</code> for consistency.</li>
</ul>
<h2>1.4.0</h2>
<ul>
<li>Clean both <code>debug</code> and <code>release</code> target directories.</li>
</ul>
<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>
<h2>1.2.0</h2>
<ul>
<li>Cache <code>~/.cargo/bin</code>.</li>
<li>Support for custom <code>$CARGO_HOME</code>.</li>
<li>Add a <code>cache-hit</code> output.</li>
<li>Add a new <code>sharedKey</code> option that overrides the automatic job-name based key.</li>
</ul>
<h2>1.1.0</h2>
<ul>
<li>Add a new <code>working-directory</code> input.</li>
<li>Support caching git dependencies.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="6fd3edff69"><code>6fd3edf</code></a> 2.2.1</li>
<li><a href="a1c019f71a"><code>a1c019f</code></a> update dependencies and rebuild</li>
<li><a href="664ce0090f"><code>664ce00</code></a> chore: Create check-dist.yml (<a href="https://github-redirect.dependabot.com/Swatinem/rust-cache/issues/96">#96</a>)</li>
<li>See full diff in <a href="https://github.com/Swatinem/rust-cache/compare/v2.2.0...v2.2.1">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=2.2.0&new-version=2.2.1)](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>
2023-02-25 06:38:05 +00:00
dependabot[bot]
9b07c4e0b6
build(deps): bump Swatinem/rust-cache from 2.2.0 to 2.2.1
Bumps [Swatinem/rust-cache](https://github.com/Swatinem/rust-cache) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/Swatinem/rust-cache/releases)
- [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Swatinem/rust-cache/compare/v2.2.0...v2.2.1)

---
updated-dependencies:
- dependency-name: Swatinem/rust-cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-24 11:20:07 +00:00
bors[bot]
e166ca1160
Merge #1307
1307: build(deps): bump bdk from 0.27.0 to 0.27.1 r=delta1 a=dependabot[bot]

Bumps [bdk](https://github.com/bitcoindevkit/bdk) from 0.27.0 to 0.27.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/bitcoindevkit/bdk/releases">bdk's releases</a>.</em></p>
<blockquote>
<h2>Release 0.27.1</h2>
<h3>Summary</h3>
<p>Fixes <a href="https://rustsec.org/advisories/RUSTSEC-2022-0090">RUSTSEC-2022-0090</a>, this issue is only applicable if you are using the optional sqlite database feature.</p>
<h3>Changelog</h3>
<p>Changed</p>
<ul>
<li>Update optional sqlite dependency from 0.27.0 to 0.28.0. <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/867">#867</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/bitcoindevkit/bdk/compare/v0.27.0...v0.27.1">https://github.com/bitcoindevkit/bdk/compare/v0.27.0...v0.27.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/bitcoindevkit/bdk/blob/master/CHANGELOG.md">bdk's changelog</a>.</em></p>
<blockquote>
<h2>[v0.27.1]</h2>
<h3>Summary</h3>
<p>Fixes <a href="https://rustsec.org/advisories/RUSTSEC-2022-0090">RUSTSEC-2022-0090</a>, this issue is only applicable if you are using the optional sqlite database feature.</p>
<h3>Changed</h3>
<ul>
<li>Update optional sqlite dependency from 0.27.0 to 0.28.0. <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/867">#867</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="7a8e6609b1"><code>7a8e660</code></a> Bump version to 0.27.1</li>
<li><a href="4ec6f3272e"><code>4ec6f32</code></a> Update rusqlite from 0.27.0 to 0.28.0</li>
<li>See full diff in <a href="https://github.com/bitcoindevkit/bdk/compare/v0.27.0...v0.27.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bdk&package-manager=cargo&previous-version=0.27.0&new-version=0.27.1)](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>
2023-02-20 12:17:58 +00:00
dependabot[bot]
99d847da51
build(deps): bump bdk from 0.27.0 to 0.27.1
Bumps [bdk](https://github.com/bitcoindevkit/bdk) from 0.27.0 to 0.27.1.
- [Release notes](https://github.com/bitcoindevkit/bdk/releases)
- [Changelog](https://github.com/bitcoindevkit/bdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bitcoindevkit/bdk/compare/v0.27.0...v0.27.1)

---
updated-dependencies:
- dependency-name: bdk
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-20 12:01:56 +00:00
bors[bot]
e8ba97bb0d
Merge #1306
1306: build(deps): bump time from 0.3.18 to 0.3.19 r=delta1 a=dependabot[bot]

Bumps [time](https://github.com/time-rs/time) from 0.3.18 to 0.3.19.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/time-rs/time/releases">time's releases</a>.</em></p>
<blockquote>
<h2>v0.3.19</h2>
<p>See the <a href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">changelog</a> for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">time's changelog</a>.</em></p>
<blockquote>
<h2>0.3.19 [2022-02-016]</h2>
<h3>Fixed</h3>
<p>This includes the update to the <code>format_description!</code> macro, which was supposed to be included in
0.3.18.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="6afe656a8f"><code>6afe656</code></a> 0.3.19 release</li>
<li>See full diff in <a href="https://github.com/time-rs/time/compare/v0.3.18...v0.3.19">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time&package-manager=cargo&previous-version=0.3.18&new-version=0.3.19)](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>
2023-02-17 12:58:02 +00:00
dependabot[bot]
c1f0998b0d
build(deps): bump time from 0.3.18 to 0.3.19
Bumps [time](https://github.com/time-rs/time) from 0.3.18 to 0.3.19.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.18...v0.3.19)

---
updated-dependencies:
- dependency-name: time
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-17 12:00:59 +00:00
bors[bot]
5cc289abe4
Merge #1305
1305: build(deps): bump time from 0.3.17 to 0.3.18 r=delta1 a=dependabot[bot]

Bumps [time](https://github.com/time-rs/time) from 0.3.17 to 0.3.18.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/time-rs/time/releases">time's releases</a>.</em></p>
<blockquote>
<h2>v0.3.18</h2>
<p>See the <a href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">changelog</a> for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">time's changelog</a>.</em></p>
<blockquote>
<h2>0.3.18 [2022-02-16]</h2>
<h3>Changed</h3>
<ul>
<li>The minimum supported Rust version is now 1.62.0.</li>
</ul>
<h3>Added</h3>
<ul>
<li><code>[first]</code> and <code>[optional]</code> items can now be included in format descriptions. To parse this at
runtime, you must use the <code>format_description::parse_owned</code> method.</li>
<li><code>format_description::parse_borrowed</code></li>
<li>An API has been added to opt out of soundness checks for obtaining the local offset. This replaces
the previous, officially unsupported <code>RUSTFLAGS=&quot;--cfg unsound_local_offset&quot;</code>. End users may call
<code>time::util::local_offset::set_soundness(time::util::local_offset::Soundness::Unsound)</code>. This
method is <code>unsafe</code> because it enables undefined behavior if its safety requirements are not
upheld. Note that libraries <strong>must not</strong> set this to <code>Unsound</code>, as it is impossible for a library
to guarantee end users uphold the required invariants.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Correctly parse offset sign when hour is zero. The parse was previously unconditionally positive,
even if the sign indicated otherwise.</li>
<li>Compilation is fixed for WebAssembly.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="3df1120719"><code>3df1120</code></a> 0.3.18 release</li>
<li><a href="9615d56883"><code>9615d56</code></a> Require user to provide version to methods</li>
<li><a href="c45264ca4d"><code>c45264c</code></a> <code>#[derive(Default)]</code> on enums, bump MSRV to 1.62</li>
<li><a href="43862d2945"><code>43862d2</code></a> Run CI on ubuntu-latest</li>
<li><a href="b5c4bc1a5d"><code>b5c4bc1</code></a> Let user invoke UB if they choose</li>
<li><a href="8dfc955c46"><code>8dfc955</code></a> Lints for Rust 1.66</li>
<li><a href="2ef301fb7a"><code>2ef301f</code></a> Fix build status badge (<a href="https://github-redirect.dependabot.com/time-rs/time/issues/534">#534</a>)</li>
<li><a href="09818dae68"><code>09818da</code></a> Silence warning about unused method</li>
<li><a href="beac001c9e"><code>beac001</code></a> Change to <code>version=X</code>, implement for serde helper</li>
<li><a href="581c44a378"><code>581c44a</code></a> Make offset kind uninhabited</li>
<li>Additional commits viewable in <a href="https://github.com/time-rs/time/compare/v0.3.17...v0.3.18">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time&package-manager=cargo&previous-version=0.3.17&new-version=0.3.18)](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>
2023-02-16 16:16:08 +00:00
dependabot[bot]
35cd7ddd4d
build(deps): bump time from 0.3.17 to 0.3.18
Bumps [time](https://github.com/time-rs/time) from 0.3.17 to 0.3.18.
- [Release notes](https://github.com/time-rs/time/releases)
- [Changelog](https://github.com/time-rs/time/blob/main/CHANGELOG.md)
- [Commits](https://github.com/time-rs/time/compare/v0.3.17...v0.3.18)

---
updated-dependencies:
- dependency-name: time
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-16 11:59:11 +00:00
bors[bot]
dd78ead675
Merge #1304
1304: build(deps): bump bdk from 0.26.0 to 0.27.0 r=delta1 a=dependabot[bot]

Bumps [bdk](https://github.com/bitcoindevkit/bdk) from 0.26.0 to 0.27.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/bitcoindevkit/bdk/releases">bdk's releases</a>.</em></p>
<blockquote>
<h2>Release 0.27.0</h2>
<h3>Summary</h3>
<p>A maintenance release with a bump in project MSRV to 1.57.0, updated dependence and a few developer oriented improvements. Improvements include  better error formatting, don't default to async/await for wasm32 and adding derived PartialEq and Eq on SyncTime.</p>
<h3>Changelog</h3>
<p>Changed</p>
<ul>
<li>Improve display error formatting <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/814">#814</a></li>
<li>Don't default to use async/await on wasm32 <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/831">#831</a></li>
<li>Project MSRV changed from 1.56.1 to 1.57.0 <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/842">#842</a></li>
<li>Update rust-miniscript dependency to latest bug fix release 9.0 <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/844">#844</a></li>
</ul>
<p>Added</p>
<ul>
<li>Derive PartialEq, Eq on SyncTime <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/837">#837</a></li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Update esplora-client by <a href="https://github.com/rajarshimaitra"><code>`@​rajarshimaitra</code></a>` in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/830">bitcoindevkit/bdk#830</a></li>
<li>Bump CI Rust stable version to 1.65.0  by <a href="https://github.com/yukibtc"><code>`@​yukibtc</code></a>` in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/815">bitcoindevkit/bdk#815</a></li>
<li>Bump project MSRV to 1.57.0 by <a href="https://github.com/notmandatory"><code>`@​notmandatory</code></a>` in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/842">bitcoindevkit/bdk#842</a></li>
<li>Improve display error formatting by <a href="https://github.com/yukibtc"><code>`@​yukibtc</code></a>` in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/814">bitcoindevkit/bdk#814</a></li>
<li>Don't default to use <code>async</code>/<code>await</code> on <code>wasm32</code> by <a href="https://github.com/tnull"><code>`@​tnull</code></a>` in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/831">bitcoindevkit/bdk#831</a></li>
<li>Derive <code>PartialEq</code>, <code>Eq</code> on <code>SyncTime</code> by <a href="https://github.com/MaxFangX"><code>`@​MaxFangX</code></a>` in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/837">bitcoindevkit/bdk#837</a></li>
<li>Document return type of <code>sign</code> method. by <a href="https://github.com/Tibo-lg"><code>`@​Tibo-lg</code></a>` in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/834">bitcoindevkit/bdk#834</a></li>
<li>Update CHANGELOG and release process by <a href="https://github.com/notmandatory"><code>`@​notmandatory</code></a>` in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/846">bitcoindevkit/bdk#846</a></li>
<li>Add small clarification to docs by <a href="https://github.com/thunderbiscuit"><code>`@​thunderbiscuit</code></a>` in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/838">bitcoindevkit/bdk#838</a></li>
<li>Update rust-miniscript to 9.0 by <a href="https://github.com/notmandatory"><code>`@​notmandatory</code></a>` in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/844">bitcoindevkit/bdk#844</a></li>
<li>Update electrsd to version 0.22 by <a href="https://github.com/notmandatory"><code>`@​notmandatory</code></a>` in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/847">bitcoindevkit/bdk#847</a></li>
<li>Bump version to 0.27.0 by <a href="https://github.com/notmandatory"><code>`@​notmandatory</code></a>` in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/852">bitcoindevkit/bdk#852</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/MaxFangX"><code>`@​MaxFangX</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/837">bitcoindevkit/bdk#837</a></li>
<li><a href="https://github.com/Tibo-lg"><code>`@​Tibo-lg</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/pull/834">bitcoindevkit/bdk#834</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/bitcoindevkit/bdk/compare/v0.26.0...v0.27.0">https://github.com/bitcoindevkit/bdk/compare/v0.26.0...v0.27.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/bitcoindevkit/bdk/blob/master/CHANGELOG.md">bdk's changelog</a>.</em></p>
<blockquote>
<h2>[v0.27.0]</h2>
<h3>Summary</h3>
<p>A maintenance release with a bump in project MSRV to 1.57.0, updated dependence and a few developer oriented improvements. Improvements include  better error formatting, don't default to async/await for wasm32 and adding derived PartialEq and Eq on SyncTime.</p>
<h3>Changed</h3>
<ul>
<li>Improve display error formatting <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/814">#814</a></li>
<li>Don't default to use async/await on wasm32 <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/831">#831</a></li>
<li>Project MSRV changed from 1.56.1 to 1.57.0 <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/842">#842</a></li>
<li>Update rust-miniscript dependency to latest bug fix release 9.0 <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/844">#844</a></li>
</ul>
<h3>Added</h3>
<ul>
<li>Derive PartialEq, Eq on SyncTime <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/837">#837</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="553df318ff"><code>553df31</code></a> Bump version to 0.27.0</li>
<li><a href="9e2e6411f2"><code>9e2e641</code></a> Fix ci Dockerfile.ledger</li>
<li><a href="5d48e37926"><code>5d48e37</code></a> Bump version to 0.27.0-rc.1</li>
<li><a href="c2a42493fd"><code>c2a4249</code></a> Merge <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/852">bitcoindevkit/bdk#852</a>: Bump version to 0.27.0</li>
<li><a href="0c2570ae07"><code>0c2570a</code></a> Pin dev-dependency zip to 0.6.3</li>
<li><a href="e83bb7c4dc"><code>e83bb7c</code></a> Bump version to 0.27.0</li>
<li><a href="46273fe72f"><code>46273fe</code></a> Merge <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/847">bitcoindevkit/bdk#847</a>: Update electrsd to version 0.22</li>
<li><a href="0b26fa75dc"><code>0b26fa7</code></a> Merge <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/844">bitcoindevkit/bdk#844</a>: Update rust-miniscript to 9.0</li>
<li><a href="35bbe2beef"><code>35bbe2b</code></a> Merge <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/838">bitcoindevkit/bdk#838</a>: Add small clarification to docs</li>
<li><a href="9e7bad8afa"><code>9e7bad8</code></a> Merge <a href="https://github-redirect.dependabot.com/bitcoindevkit/bdk/issues/846">bitcoindevkit/bdk#846</a>: Update CHANGELOG and release process</li>
<li>Additional commits viewable in <a href="https://github.com/bitcoindevkit/bdk/compare/v0.26.0...v0.27.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=bdk&package-manager=cargo&previous-version=0.26.0&new-version=0.27.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-14 07:35:05 +00:00
dependabot[bot]
5b40fe30bb
build(deps): bump bdk from 0.26.0 to 0.27.0
Bumps [bdk](https://github.com/bitcoindevkit/bdk) from 0.26.0 to 0.27.0.
- [Release notes](https://github.com/bitcoindevkit/bdk/releases)
- [Changelog](https://github.com/bitcoindevkit/bdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bitcoindevkit/bdk/compare/v0.26.0...v0.27.0)

---
updated-dependencies:
- dependency-name: bdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 12:01:22 +00:00
bors[bot]
927a1810b4
Merge #1300
1300: build(deps): bump vergen from 7.5.0 to 7.5.1 r=delta1 a=dependabot[bot]

Bumps [vergen](https://github.com/rustyhorde/vergen) from 7.5.0 to 7.5.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/rustyhorde/vergen/releases">vergen's releases</a>.</em></p>
<blockquote>
<h2>v7.5.1</h2>
<ul>
<li>Dependency update for <code>git2</code> to pick up security updates.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="b20c9e93ba"><code>b20c9e9</code></a> version bump for next release</li>
<li><a href="242ef6194f"><code>242ef61</code></a> remove unaligned_references lint</li>
<li><a href="4b42868b8e"><code>4b42868</code></a> Updated to trigger on legacy branch</li>
<li><a href="33e2cf2fe5"><code>33e2cf2</code></a> Updated git2 to catch security updates</li>
<li>See full diff in <a href="https://github.com/rustyhorde/vergen/compare/7.5.0...7.5.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=vergen&package-manager=cargo&previous-version=7.5.0&new-version=7.5.1)](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>
2023-02-10 05:27:04 +00:00
bors[bot]
45a18c55fc
Merge #1301
1301: build(deps): bump serde_json from 1.0.92 to 1.0.93 r=delta1 a=dependabot[bot]

Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.92 to 1.0.93.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.93</h2>
<ul>
<li>Support 128-bit integers in serde_json::to_value (<a href="https://github-redirect.dependabot.com/serde-rs/json/issues/982">#982</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="0ebeede28a"><code>0ebeede</code></a> Release 1.0.93</li>
<li><a href="4fd48503de"><code>4fd4850</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/982">#982</a> from serde-rs/integer128tovalue</li>
<li><a href="e3d13cd61a"><code>e3d13cd</code></a> Support 128-bit integers in to_value</li>
<li><a href="f77ad4750f"><code>f77ad47</code></a> Add test of integer128 to_value</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.92...v1.0.93">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.92&new-version=1.0.93)](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>
2023-02-09 18:27:34 +00:00
dependabot[bot]
1496c656b5
build(deps): bump serde_json from 1.0.92 to 1.0.93
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.92 to 1.0.93.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.92...v1.0.93)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-09 11:03:02 +00:00
dependabot[bot]
fca5402cc5
build(deps): bump vergen from 7.5.0 to 7.5.1
Bumps [vergen](https://github.com/rustyhorde/vergen) from 7.5.0 to 7.5.1.
- [Release notes](https://github.com/rustyhorde/vergen/releases)
- [Commits](https://github.com/rustyhorde/vergen/compare/7.5.0...7.5.1)

---
updated-dependencies:
- dependency-name: vergen
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-09 11:02:42 +00:00
bors[bot]
7a890c5e4c
Merge #1295
1295: build(deps): bump serde_json from 1.0.91 to 1.0.92 r=delta1 a=dependabot[bot]

Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.91 to 1.0.92.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/json/releases">serde_json's releases</a>.</em></p>
<blockquote>
<h2>v1.0.92</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="a9c984f13e"><code>a9c984f</code></a> Release 1.0.92</li>
<li><a href="c42b724c14"><code>c42b724</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/980">#980</a> from serde-rs/docrepr</li>
<li><a href="eaa287cb3a"><code>eaa287c</code></a> Hide repr attribute from documentation</li>
<li><a href="7bc6c86310"><code>7bc6c86</code></a> RawValue -&gt; repr(transparent)</li>
<li><a href="e41ee42d92"><code>e41ee42</code></a> Update indoc dev-dependency to version 2</li>
<li><a href="8cebe89500"><code>8cebe89</code></a> Speed up cargo fuzz CI job</li>
<li><a href="74f510e56d"><code>74f510e</code></a> Sync license text with rust-lang repos</li>
<li><a href="557f45c404"><code>557f45c</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/json/issues/964">#964</a> from dtolnay/docsrs</li>
<li><a href="9edf7fa9b3"><code>9edf7fa</code></a> Replace docs.serde.rs links with intra-rustdoc links</li>
<li><a href="9947ae606e"><code>9947ae6</code></a> Point documentation links to docs.rs instead of docs.serde.rs</li>
<li>See full diff in <a href="https://github.com/serde-rs/json/compare/v1.0.91...v1.0.92">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_json&package-manager=cargo&previous-version=1.0.91&new-version=1.0.92)](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>
2023-02-06 16:04:16 +00:00
bors[bot]
6f189b3ecd
Merge #1294
1294: build(deps): bump proptest from 1.0.0 to 1.1.0 r=delta1 a=dependabot[bot]

Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.0.0 to 1.1.0.
<details>
<summary>Commits</summary>
<ul>
<li><a href="75c749ee50"><code>75c749e</code></a> bump version to 1.1.0</li>
<li><a href="a7c75a1bcb"><code>a7c75a1</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/proptest-rs/proptest/issues/295">#295</a> from proptest-rs/replays-dont-count-cases</li>
<li><a href="a854d2ed7a"><code>a854d2e</code></a> [replays-dont-count-cases] persisted failures are not counted against success...</li>
<li><a href="f8eff50603"><code>f8eff50</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/proptest-rs/proptest/issues/291">#291</a> from schuelermine/fix/prop_assert_ne!</li>
<li><a href="d38268304c"><code>d382683</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/proptest-rs/proptest/issues/294">#294</a> from proptest-rs/fix-ci</li>
<li><a href="ad0a4d311c"><code>ad0a4d3</code></a> [fix-ci] changed the line for where the error occurs</li>
<li><a href="00f29af8e8"><code>00f29af</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/proptest-rs/proptest/issues/288">#288</a> from proptest-rs/const-generic-arbitrary</li>
<li><a href="a16853f4fc"><code>a16853f</code></a> Fix prop_assert_ne! requiring import of prop_assert!</li>
<li><a href="b513a32c72"><code>b513a32</code></a> Config : support disabling failure persistence via env var (<a href="https://github-redirect.dependabot.com/proptest-rs/proptest/issues/287">#287</a>)</li>
<li><a href="7a94e16589"><code>7a94e16</code></a> note that PROPTEST_CASES and other env var requires the std feature (<a href="https://github-redirect.dependabot.com/proptest-rs/proptest/issues/262">#262</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/proptest-rs/proptest/compare/1.0.0...v1.1.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=proptest&package-manager=cargo&previous-version=1.0.0&new-version=1.1.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-06 13:32:25 +00:00
bors[bot]
fd5775db40
Merge #1296 #1297 #1298
1296: build(deps): bump rust_decimal_macros from 1.28.0 to 1.28.1 r=delta1 a=dependabot[bot]

Bumps [rust_decimal_macros](https://github.com/paupino/rust-decimal) from 1.28.0 to 1.28.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md">rust_decimal_macros's changelog</a>.</em></p>
<blockquote>
<h2>1.28.1</h2>
<h3>Fixed</h3>
<ul>
<li>Bumped <code>borsh</code> and <code>criterion</code> dependencies to the latest versions. (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/pull/568">#568</a>)</li>
<li>Removed erroneous debug statements in <code>serde-with-str</code> feature. (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/pull/571">#571</a>)</li>
</ul>
<p>Thanks <a href="https://github.com/attila-lin"><code>`@​attila-lin</code></a>` for your help bumping dependencies.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="84f59436b0"><code>84f5943</code></a> Version 1.28.1 (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/572">#572</a>)</li>
<li><a href="7935895faf"><code>7935895</code></a> Remove debug statements and add lint (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/571">#571</a>)</li>
<li><a href="7675f6df94"><code>7675f6d</code></a> chore: bump <code>borsh</code> and <code>criterion</code> (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/568">#568</a>)</li>
<li>See full diff in <a href="https://github.com/paupino/rust-decimal/compare/1.28.0...1.28.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.28.0&new-version=1.28.1)](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>

1297: build(deps): bump anyhow from 1.0.68 to 1.0.69 r=delta1 a=dependabot[bot]

Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.68 to 1.0.69.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/anyhow/releases">anyhow's releases</a>.</em></p>
<blockquote>
<h2>1.0.69</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="58377abfea"><code>58377ab</code></a> Release 1.0.69</li>
<li><a href="f65b087b52"><code>f65b087</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/anyhow/issues/295">#295</a> from dtolnay/docrepr</li>
<li><a href="10370e94a1"><code>10370e9</code></a> Hide repr attribute from documentation</li>
<li><a href="cf2adb47a1"><code>cf2adb4</code></a> Raise minimum toolchain for the backtrace feature to 1.60</li>
<li><a href="0a45d7665c"><code>0a45d76</code></a> Prevent actions duplication on noop merge commits</li>
<li><a href="3d91f13dcd"><code>3d91f13</code></a> Sync license text with rust-lang repos</li>
<li><a href="ed1327fbab"><code>ed1327f</code></a> Ignore redundant_clone lint on test testing clone</li>
<li>See full diff in <a href="https://github.com/dtolnay/anyhow/compare/1.0.68...1.0.69">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=anyhow&package-manager=cargo&previous-version=1.0.68&new-version=1.0.69)](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>

1298: build(deps): bump rust_decimal from 1.28.0 to 1.28.1 r=delta1 a=dependabot[bot]

Bumps [rust_decimal](https://github.com/paupino/rust-decimal) from 1.28.0 to 1.28.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md">rust_decimal's changelog</a>.</em></p>
<blockquote>
<h2>1.28.1</h2>
<h3>Fixed</h3>
<ul>
<li>Bumped <code>borsh</code> and <code>criterion</code> dependencies to the latest versions. (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/pull/568">#568</a>)</li>
<li>Removed erroneous debug statements in <code>serde-with-str</code> feature. (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/pull/571">#571</a>)</li>
</ul>
<p>Thanks <a href="https://github.com/attila-lin"><code>`@​attila-lin</code></a>` for your help bumping dependencies.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="84f59436b0"><code>84f5943</code></a> Version 1.28.1 (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/572">#572</a>)</li>
<li><a href="7935895faf"><code>7935895</code></a> Remove debug statements and add lint (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/571">#571</a>)</li>
<li><a href="7675f6df94"><code>7675f6d</code></a> chore: bump <code>borsh</code> and <code>criterion</code> (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/568">#568</a>)</li>
<li>See full diff in <a href="https://github.com/paupino/rust-decimal/compare/1.28.0...1.28.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.28.0&new-version=1.28.1)](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>
2023-02-06 12:54:43 +00:00
dependabot[bot]
912a5b4826
build(deps): bump rust_decimal from 1.28.0 to 1.28.1
Bumps [rust_decimal](https://github.com/paupino/rust-decimal) from 1.28.0 to 1.28.1.
- [Release notes](https://github.com/paupino/rust-decimal/releases)
- [Changelog](https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paupino/rust-decimal/compare/1.28.0...1.28.1)

---
updated-dependencies:
- dependency-name: rust_decimal
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 11:07:22 +00:00
dependabot[bot]
76c5b3efa3
build(deps): bump anyhow from 1.0.68 to 1.0.69
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.68 to 1.0.69.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.68...1.0.69)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 11:07:09 +00:00
dependabot[bot]
9ffcf16917
build(deps): bump rust_decimal_macros from 1.28.0 to 1.28.1
Bumps [rust_decimal_macros](https://github.com/paupino/rust-decimal) from 1.28.0 to 1.28.1.
- [Release notes](https://github.com/paupino/rust-decimal/releases)
- [Changelog](https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paupino/rust-decimal/compare/1.28.0...1.28.1)

---
updated-dependencies:
- dependency-name: rust_decimal_macros
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 11:06:55 +00:00
dependabot[bot]
20d8c9225a
build(deps): bump serde_json from 1.0.91 to 1.0.92
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.91 to 1.0.92.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.91...v1.0.92)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 11:06:12 +00:00
dependabot[bot]
5477dd9f04
build(deps): bump proptest from 1.0.0 to 1.1.0
Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/proptest-rs/proptest/releases)
- [Changelog](https://github.com/proptest-rs/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/proptest-rs/proptest/compare/1.0.0...v1.1.0)

---
updated-dependencies:
- dependency-name: proptest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 11:05:58 +00:00
bors[bot]
08e88332b6
Merge #1293
1293: build(deps): bump hyper from 0.14.23 to 0.14.24 r=delta1 a=dependabot[bot]

Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.23 to 0.14.24.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/hyperium/hyper/releases">hyper's releases</a>.</em></p>
<blockquote>
<h2>v0.14.24</h2>
<h2>Bug Fixes</h2>
<ul>
<li><strong>body:</strong> set an internal max to reserve in <code>to_bytes</code> (<a href="4d89adce61">4d89adce</a>)</li>
<li><strong>server:</strong> prevent sending 100-continue if user drops request body (<a href="https://github-redirect.dependabot.com/hyperium/hyper/issues/3138">#3138</a>) (<a href="92443d7ef5">92443d7e</a>)</li>
</ul>
<h2>Features</h2>
<ul>
<li><strong>http2:</strong> add <code>http2_max_header_list_size</code> to <code>hyper::server::Builder</code> (<a href="https://github-redirect.dependabot.com/hyperium/hyper/issues/3006">#3006</a>) (<a href="031425f087">031425f0</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/jiahaoliang"><code>`@​jiahaoliang</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/hyperium/hyper/pull/3006">hyperium/hyper#3006</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/hyperium/hyper/blob/v0.14.24/CHANGELOG.md">hyper's changelog</a>.</em></p>
<blockquote>
<h3>v0.14.24 (2023-02-02)</h3>
<h4>Bug Fixes</h4>
<ul>
<li><strong>body:</strong> set an internal max to reserve in <code>to_bytes</code> (<a href="4d89adce61">4d89adce</a>)</li>
<li><strong>server:</strong> prevent sending 100-continue if user drops request body (<a href="https://github-redirect.dependabot.com/hyperium/hyper/issues/3138">#3138</a>) (<a href="92443d7ef5">92443d7e</a>)</li>
</ul>
<h4>Features</h4>
<ul>
<li><strong>http2:</strong> add <code>http2_max_header_list_size</code> to <code>hyper::server::Builder</code> (<a href="https://github-redirect.dependabot.com/hyperium/hyper/issues/3006">#3006</a>) (<a href="031425f087">031425f0</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="40c01dfb4f"><code>40c01df</code></a> v0.14.24</li>
<li><a href="92443d7ef5"><code>92443d7</code></a> fix(server): prevent sending 100-continue if user drops request body (<a href="https://github-redirect.dependabot.com/hyperium/hyper/issues/3138">#3138</a>)</li>
<li><a href="4d89adce61"><code>4d89adc</code></a> fix(body): set an internal max to reserve in <code>to_bytes</code></li>
<li><a href="031425f087"><code>031425f</code></a> feat(http2): add <code>http2_max_header_list_size</code> to <code>hyper::server::Builder</code> (<a href="https://github-redirect.dependabot.com/hyperium/hyper/issues/3">#3</a>...</li>
<li>See full diff in <a href="https://github.com/hyperium/hyper/compare/v0.14.23...v0.14.24">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=hyper&package-manager=cargo&previous-version=0.14.23&new-version=0.14.24)](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>
2023-02-03 13:45:49 +00:00
dependabot[bot]
63d6204bd7
build(deps): bump hyper from 0.14.23 to 0.14.24
Bumps [hyper](https://github.com/hyperium/hyper) from 0.14.23 to 0.14.24.
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/v0.14.24/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.23...v0.14.24)

---
updated-dependencies:
- dependency-name: hyper
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-03 11:02:28 +00:00
bors[bot]
45c13b2e57
Merge #1292
1292: build(deps): bump uuid from 1.2.2 to 1.3.0 r=delta1 a=dependabot[bot]

Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.2.2 to 1.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/uuid-rs/uuid/releases">uuid's releases</a>.</em></p>
<blockquote>
<h2>1.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix error message. by <a href="https://github.com/basbossink-ds"><code>`@​basbossink-ds</code></a>` in <a href="https://github-redirect.dependabot.com/uuid-rs/uuid/pull/656">uuid-rs/uuid#656</a></li>
<li>implement Arbitrary::size_hint by <a href="https://github.com/Ekleog"><code>`@​Ekleog</code></a>` in <a href="https://github-redirect.dependabot.com/uuid-rs/uuid/pull/657">uuid-rs/uuid#657</a></li>
<li>Always use hyphenated format regardless of flags by <a href="https://github.com/KodrAus"><code>`@​KodrAus</code></a>` in <a href="https://github-redirect.dependabot.com/uuid-rs/uuid/pull/658">uuid-rs/uuid#658</a></li>
<li>Update windows-sys requirement from 0.42.0 to 0.45.0 by <a href="https://github.com/dependabot"><code>`@​dependabot</code></a>` in <a href="https://github-redirect.dependabot.com/uuid-rs/uuid/pull/654">uuid-rs/uuid#654</a></li>
<li>Prepare for 1.3.0 release by <a href="https://github.com/KodrAus"><code>`@​KodrAus</code></a>` in <a href="https://github-redirect.dependabot.com/uuid-rs/uuid/pull/659">uuid-rs/uuid#659</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/basbossink-ds"><code>`@​basbossink-ds</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/uuid-rs/uuid/pull/656">uuid-rs/uuid#656</a></li>
<li><a href="https://github.com/Ekleog"><code>`@​Ekleog</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/uuid-rs/uuid/pull/657">uuid-rs/uuid#657</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/uuid-rs/uuid/compare/1.2.2...1.3.0">https://github.com/uuid-rs/uuid/compare/1.2.2...1.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="573362627c"><code>5733626</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/uuid-rs/uuid/issues/659">#659</a> from uuid-rs/cargo/1.3.0</li>
<li><a href="59ac047014"><code>59ac047</code></a> prepare for 1.3.0 release</li>
<li><a href="e010787850"><code>e010787</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/uuid-rs/uuid/issues/654">#654</a> from uuid-rs/dependabot/cargo/windows-sys-0.45.0</li>
<li><a href="b90b820603"><code>b90b820</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/uuid-rs/uuid/issues/658">#658</a> from uuid-rs/fix/alternate-format</li>
<li><a href="1af8269957"><code>1af8269</code></a> fix up tests around alternative format</li>
<li><a href="e7eaf5b4a2"><code>e7eaf5b</code></a> always use hyphenated format regardless of flags</li>
<li><a href="52197cd275"><code>52197cd</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/uuid-rs/uuid/issues/657">#657</a> from Ekleog/arbitrary-size-hint</li>
<li><a href="b362542ee2"><code>b362542</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/uuid-rs/uuid/issues/656">#656</a> from basbossink-ds/fix/655-deserialize-error-msg</li>
<li><a href="212b902277"><code>212b902</code></a> implement Arbitrary::size_hint</li>
<li><a href="40d8711f11"><code>40d8711</code></a> Also fix the doc comment</li>
<li>Additional commits viewable in <a href="https://github.com/uuid-rs/uuid/compare/1.2.2...1.3.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uuid&package-manager=cargo&previous-version=1.2.2&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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-01 12:57:11 +00:00
dependabot[bot]
a02d84e2b4
build(deps): bump uuid from 1.2.2 to 1.3.0
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.2.2 to 1.3.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.2.2...1.3.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 11:04:59 +00:00
bors[bot]
884df2ff29
Merge #1290
1290: build(deps): bump async-trait from 0.1.63 to 0.1.64 r=delta1 a=dependabot[bot]

Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.63 to 0.1.64.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/async-trait/releases">async-trait's releases</a>.</em></p>
<blockquote>
<h2>0.1.64</h2>
<ul>
<li>Suppress async_yields_async clippy correctness lint in generated code (<a href="https://github-redirect.dependabot.com/dtolnay/async-trait/issues/236">#236</a>, <a href="https://github-redirect.dependabot.com/dtolnay/async-trait/issues/237">#237</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="6a13fce882"><code>6a13fce</code></a> Release 0.1.64</li>
<li><a href="ea573a3823"><code>ea573a3</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/async-trait/issues/237">#237</a> from dtolnay/asyncyieldsasync</li>
<li><a href="54cc1ce438"><code>54cc1ce</code></a> Suppress async_yields_async clippy correctness lint in generated code</li>
<li><a href="e6e736f8df"><code>e6e736f</code></a> Add regression test for issue 236</li>
<li>See full diff in <a href="https://github.com/dtolnay/async-trait/compare/0.1.63...0.1.64">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=async-trait&package-manager=cargo&previous-version=0.1.63&new-version=0.1.64)](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>
2023-01-31 13:04:18 +00:00
bors[bot]
51b7c999c0
Merge #1291
1291: build(deps): bump futures from 0.3.25 to 0.3.26 r=delta1 a=dependabot[bot]

Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.25 to 0.3.26.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/releases">futures's releases</a>.</em></p>
<blockquote>
<h2>0.3.26</h2>
<ul>
<li>Add <code>Either::as_pin_mut</code> and <code>Either::as_pin_ref</code> (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2691">#2691</a>)</li>
<li>Add <code>Shared::ptr_eq</code> and <code>Shared::ptr_hash</code> (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2691">#2691</a>)</li>
<li>Implement <code>FusedStream</code> for <code>Buffered</code> (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2676">#2676</a>)</li>
<li>Implement <code>FusedStream</code> for all streams in <code>ReadyChunks</code> (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2693">#2693</a>)</li>
<li>Fix bug in <code>FuturesOrdered::push_front</code> (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2664">#2664</a>)</li>
<li>Remove <code>Fut::Output: Clone</code> bounds from some <code>Shared</code> methods (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2662">#2662</a>)</li>
<li>Remove <code>T: Debug</code> bounds from <code>Debug</code> implementations of <code>mpsc</code> and <code>oneshot</code> types (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2666">#2666</a>, <a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2667">#2667</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md">futures's changelog</a>.</em></p>
<blockquote>
<h1>0.3.26 - 2023-01-30</h1>
<ul>
<li>Add <code>Either::as_pin_mut</code> and <code>Either::as_pin_ref</code> (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2691">#2691</a>)</li>
<li>Add <code>Shared::ptr_eq</code> and <code>Shared::ptr_hash</code> (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2691">#2691</a>)</li>
<li>Implement <code>FusedStream</code> for <code>Buffered</code> (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2676">#2676</a>)</li>
<li>Implement <code>FusedStream</code> for all streams in <code>ReadyChunks</code> (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2693">#2693</a>)</li>
<li>Fix bug in <code>FuturesOrdered::push_front</code> (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2664">#2664</a>)</li>
<li>Remove <code>Fut::Output: Clone</code> bounds from some <code>Shared</code> methods (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2662">#2662</a>)</li>
<li>Remove <code>T: Debug</code> bounds from <code>Debug</code> implementations of <code>mpsc</code> and <code>oneshot</code> types (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2666">#2666</a>, <a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2667">#2667</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="5e3693a350"><code>5e3693a</code></a> Release 0.3.26</li>
<li><a href="cbba4e0485"><code>cbba4e0</code></a> Update no_atomic_cas.rs</li>
<li><a href="c88ad9b9dc"><code>c88ad9b</code></a> Add <code>Either::as_pin_mut</code> and <code>Either::as_pin_ref</code> (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2691">#2691</a>)</li>
<li><a href="bf3504bbd9"><code>bf3504b</code></a> Implement <code>FusedStream</code> for all streams in <code>ReadyChunks</code> (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2693">#2693</a>)</li>
<li><a href="f5733c93cd"><code>f5733c9</code></a> Update portable-atomic to 1.0 (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2688">#2688</a>)</li>
<li><a href="03edb0f7b3"><code>03edb0f</code></a> Fix bug in FuturesOrdered::push_front (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2664">#2664</a>)</li>
<li><a href="1340b16e71"><code>1340b16</code></a> Remove incorrect error behavior from <code>ready_chunks</code> docs (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2687">#2687</a>)</li>
<li><a href="71f7b78db3"><code>71f7b78</code></a> fix panic when Unfold sink return an error (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2686">#2686</a>)</li>
<li><a href="eb680703f2"><code>eb68070</code></a> Update no_atomic_cas.rs</li>
<li><a href="d8beb28d04"><code>d8beb28</code></a> Set to <code>None</code> only if necessary (<a href="https://github-redirect.dependabot.com/rust-lang/futures-rs/issues/2683">#2683</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/rust-lang/futures-rs/compare/0.3.25...0.3.26">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=futures&package-manager=cargo&previous-version=0.3.25&new-version=0.3.26)](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>
2023-01-31 11:49:54 +00:00
dependabot[bot]
a42380830d
build(deps): bump futures from 0.3.25 to 0.3.26
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.25 to 0.3.26.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.25...0.3.26)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-31 11:02:38 +00:00
dependabot[bot]
0f31a612e4
build(deps): bump async-trait from 0.1.63 to 0.1.64
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.63 to 0.1.64.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.63...0.1.64)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-31 11:02:21 +00:00
bors[bot]
6f7956c8eb
Merge #1289
1289: build(deps): bump dprint/check from 2.1 to 2.2 r=delta1 a=dependabot[bot]

Bumps [dprint/check](https://github.com/dprint/check) from 2.1 to 2.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dprint/check/releases">dprint/check's releases</a>.</em></p>
<blockquote>
<h2>v2.2</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: add input for specifiable config by <a href="https://github.com/kachick"><code>`@​kachick</code></a>` in <a href="https://github-redirect.dependabot.com/dprint/check/pull/9">dprint/check#9</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/kachick"><code>`@​kachick</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/dprint/check/pull/9">dprint/check#9</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/dprint/check/compare/v2.1...v2.2">https://github.com/dprint/check/compare/v2.1...v2.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="2f1cf31537"><code>2f1cf31</code></a> v2.2</li>
<li><a href="58958abb76"><code>58958ab</code></a> chore: remove dprint-another.json</li>
<li><a href="23e4f056b9"><code>23e4f05</code></a> feat: add inputs for specifiable config (<a href="https://github-redirect.dependabot.com/dprint/check/issues/9">#9</a>)</li>
<li><a href="c0ea92f185"><code>c0ea92f</code></a> docs: slightly simplify</li>
<li>See full diff in <a href="https://github.com/dprint/check/compare/v2.1...v2.2">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dprint/check&package-manager=github_actions&previous-version=2.1&new-version=2.2)](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>
2023-01-28 09:46:27 +00:00
dependabot[bot]
ada5df740f
build(deps): bump dprint/check from 2.1 to 2.2
Bumps [dprint/check](https://github.com/dprint/check) from 2.1 to 2.2.
- [Release notes](https://github.com/dprint/check/releases)
- [Commits](https://github.com/dprint/check/compare/v2.1...v2.2)

---
updated-dependencies:
- dependency-name: dprint/check
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-25 11:01:45 +00:00
bors[bot]
58dae512e7
Merge #1286 #1287 #1288
1286: build(deps): bump rust_decimal_macros from 1.27.0 to 1.28.0 r=delta1 a=dependabot[bot]

Bumps [rust_decimal_macros](https://github.com/paupino/rust-decimal) from 1.27.0 to 1.28.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md">rust_decimal_macros's changelog</a>.</em></p>
<blockquote>
<h2>1.28.0</h2>
<h3>Added</h3>
<ul>
<li>Implement <code>TryFrom&lt;&amp;str&gt;</code> for <code>Decimal</code> (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/pull/560">#560</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Explicit string deserialize for <code>Option&lt;Decimal&gt;</code> when using <code>serde-with-str</code> (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/pull/565">#565</a>)</li>
<li>Fix for <code>rescale</code> preventing <code>Decimal::ZERO</code> to be rescaled to an invalid precision (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/pull/566">#566</a>)</li>
</ul>
<h3>Credit</h3>
<p>Thank you to <a href="https://github.com/c410-f3r"><code>`@​c410-f3r</code></a>` for your diligent help adding features to this library!</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d62fe61025"><code>d62fe61</code></a> Version 1.28.0 (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/567">#567</a>)</li>
<li><a href="bc8b53a7ca"><code>bc8b53a</code></a> Fixes rescale internal allowing zeros to scale greater than the maximum possi...</li>
<li><a href="2da7a0d134"><code>2da7a0d</code></a> Explicit string (de)serialize for optional serde-with-str values (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/565">#565</a>)</li>
<li><a href="69c1e7f067"><code>69c1e7f</code></a> Implement <code>TryFrom\&lt;&amp;str&gt;</code> for <code>Decimal</code> (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/560">#560</a>)</li>
<li>See full diff in <a href="https://github.com/paupino/rust-decimal/compare/1.27.0...1.28.0">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.27.0&new-version=1.28.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>

1287: build(deps): bump rust_decimal from 1.27.0 to 1.28.0 r=delta1 a=dependabot[bot]

Bumps [rust_decimal](https://github.com/paupino/rust-decimal) from 1.27.0 to 1.28.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md">rust_decimal's changelog</a>.</em></p>
<blockquote>
<h2>1.28.0</h2>
<h3>Added</h3>
<ul>
<li>Implement <code>TryFrom&lt;&amp;str&gt;</code> for <code>Decimal</code> (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/pull/560">#560</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Explicit string deserialize for <code>Option&lt;Decimal&gt;</code> when using <code>serde-with-str</code> (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/pull/565">#565</a>)</li>
<li>Fix for <code>rescale</code> preventing <code>Decimal::ZERO</code> to be rescaled to an invalid precision (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/pull/566">#566</a>)</li>
</ul>
<h3>Credit</h3>
<p>Thank you to <a href="https://github.com/c410-f3r"><code>`@​c410-f3r</code></a>` for your diligent help adding features to this library!</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d62fe61025"><code>d62fe61</code></a> Version 1.28.0 (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/567">#567</a>)</li>
<li><a href="bc8b53a7ca"><code>bc8b53a</code></a> Fixes rescale internal allowing zeros to scale greater than the maximum possi...</li>
<li><a href="2da7a0d134"><code>2da7a0d</code></a> Explicit string (de)serialize for optional serde-with-str values (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/565">#565</a>)</li>
<li><a href="69c1e7f067"><code>69c1e7f</code></a> Implement <code>TryFrom\&lt;&amp;str&gt;</code> for <code>Decimal</code> (<a href="https://github-redirect.dependabot.com/paupino/rust-decimal/issues/560">#560</a>)</li>
<li>See full diff in <a href="https://github.com/paupino/rust-decimal/compare/1.27.0...1.28.0">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.27.0&new-version=1.28.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>

1288: build(deps): bump async-trait from 0.1.62 to 0.1.63 r=delta1 a=dependabot[bot]

Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.62 to 0.1.63.
<details>
<summary>Commits</summary>
<ul>
<li><a href="36bcff4c0d"><code>36bcff4</code></a> Release 0.1.63</li>
<li><a href="f88c287dff"><code>f88c287</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/async-trait/issues/235">#235</a> from dtolnay/patterns</li>
<li><a href="1c2e90a984"><code>1c2e90a</code></a> Make expansion of nested _ and .. patterns edition independent</li>
<li><a href="80a9c2c8af"><code>80a9c2c</code></a> Add regression test for issue 234</li>
<li><a href="125917ffe0"><code>125917f</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/async-trait/issues/233">#233</a> from dtolnay/reference</li>
<li><a href="ba930258fa"><code>ba93025</code></a> Bypass Sync bound implied by non-existent drop of reference</li>
<li><a href="70bf4b0243"><code>70bf4b0</code></a> Add regression test for issue 232</li>
<li>See full diff in <a href="https://github.com/dtolnay/async-trait/compare/0.1.62...0.1.63">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=async-trait&package-manager=cargo&previous-version=0.1.62&new-version=0.1.63)](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>
2023-01-23 12:06:32 +00:00
dependabot[bot]
4d44fab0dd
build(deps): bump async-trait from 0.1.62 to 0.1.63
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.62 to 0.1.63.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.62...0.1.63)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-23 09:09:57 +00:00
dependabot[bot]
921bac0af8
build(deps): bump rust_decimal from 1.27.0 to 1.28.0
Bumps [rust_decimal](https://github.com/paupino/rust-decimal) from 1.27.0 to 1.28.0.
- [Release notes](https://github.com/paupino/rust-decimal/releases)
- [Changelog](https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paupino/rust-decimal/compare/1.27.0...1.28.0)

---
updated-dependencies:
- dependency-name: rust_decimal
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-23 09:09:40 +00:00
dependabot[bot]
53abde3f88
build(deps): bump rust_decimal_macros from 1.27.0 to 1.28.0
Bumps [rust_decimal_macros](https://github.com/paupino/rust-decimal) from 1.27.0 to 1.28.0.
- [Release notes](https://github.com/paupino/rust-decimal/releases)
- [Changelog](https://github.com/paupino/rust-decimal/blob/master/CHANGELOG.md)
- [Commits](https://github.com/paupino/rust-decimal/compare/1.27.0...1.28.0)

---
updated-dependencies:
- dependency-name: rust_decimal_macros
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-23 09:09:24 +00:00
bors[bot]
ee6c8a8034
Merge #1282
1282: build(deps): bump serial_test from 0.10.0 to 1.0.0 r=delta1 a=dependabot[bot]

Bumps [serial_test](https://github.com/palfrey/serial_test) from 0.10.0 to 1.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/palfrey/serial_test/releases">serial_test's releases</a>.</em></p>
<blockquote>
<h2>v1.0.0</h2>
<p>Nothing since 0.10.0. Well, <a href="https://github-redirect.dependabot.com/palfrey/serial_test/pull/87">a test dependency upgrade on <code>tokio</code></a>, but nothing in the published library. This is mainly just as a &quot;1.0!&quot; release.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="47d09d04ef"><code>47d09d0</code></a> 1.0.0</li>
<li><a href="13c3d6123e"><code>13c3d61</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/palfrey/serial_test/issues/87">#87</a> from palfrey/dependabot/cargo/tokio-1.18.4</li>
<li><a href="125a3f6c7d"><code>125a3f6</code></a> Bump tokio from 1.17.0 to 1.18.4</li>
<li>See full diff in <a href="https://github.com/palfrey/serial_test/compare/v0.10.0...v1.0.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serial_test&package-manager=cargo&previous-version=0.10.0&new-version=1.0.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>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-23 08:45:31 +00:00
bors[bot]
edae3482be
Merge #1283 #1284 #1285
1283: build(deps): bump async-trait from 0.1.61 to 0.1.62 r=delta1 a=dependabot[bot]

Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.61 to 0.1.62.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/async-trait/releases">async-trait's releases</a>.</em></p>
<blockquote>
<h2>0.1.62</h2>
<ul>
<li>Improve error message involving elided lifetimes (<a href="https://github-redirect.dependabot.com/dtolnay/async-trait/issues/229">#229</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d71c74de7b"><code>d71c74d</code></a> Release 0.1.62</li>
<li><a href="861b6bc57f"><code>861b6bc</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/async-trait/issues/230">#230</a> from dtolnay/definedhere</li>
<li><a href="b4c19da340"><code>b4c19da</code></a> Improve spans of named lifetimes generated from elided lifetimes</li>
<li><a href="8206008ede"><code>8206008</code></a> Add regression test for issue 229</li>
<li>See full diff in <a href="https://github.com/dtolnay/async-trait/compare/0.1.61...0.1.62">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=async-trait&package-manager=cargo&previous-version=0.1.61&new-version=0.1.62)](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>

1284: build(deps): bump reqwest from 0.11.13 to 0.11.14 r=delta1 a=dependabot[bot]

Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.13 to 0.11.14.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/seanmonstar/reqwest/releases">reqwest's releases</a>.</em></p>
<blockquote>
<h2>v0.11.14</h2>
<h2>What's Changed</h2>
<ul>
<li>Adds <code>Proxy::no_proxy(url)</code> that works like the NO_PROXY environment variable.</li>
<li>Adds <code>multipart::Part::headers(headers)</code> method to add custom headers.</li>
<li>(wasm) Add <code>Response::bytes_stream()</code>.</li>
<li>Perf: several internal optimizations reducing copies and memory allocations.</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Austaras"><code>`@​Austaras</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/pull/1699">seanmonstar/reqwest#1699</a></li>
<li><a href="https://github.com/BlackDex"><code>`@​BlackDex</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/pull/1701">seanmonstar/reqwest#1701</a></li>
<li><a href="https://github.com/Khoulaiz"><code>`@​Khoulaiz</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/pull/1694">seanmonstar/reqwest#1694</a></li>
<li><a href="https://github.com/beeb"><code>`@​beeb</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/pull/1687">seanmonstar/reqwest#1687</a></li>
<li><a href="https://github.com/link2xt"><code>`@​link2xt</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/pull/1710">seanmonstar/reqwest#1710</a></li>
<li><a href="https://github.com/dmeijboom"><code>`@​dmeijboom</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/pull/1713">seanmonstar/reqwest#1713</a></li>
<li><a href="https://github.com/lstrojny"><code>`@​lstrojny</code></a>` made their first contribution in <a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/pull/1730">seanmonstar/reqwest#1730</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md">reqwest's changelog</a>.</em></p>
<blockquote>
<h2>v0.11.14</h2>
<ul>
<li>Adds <code>Proxy::no_proxy(url)</code> that works like the NO_PROXY environment variable.</li>
<li>Adds <code>multipart::Part::headers(headers)</code> method to add custom headers.</li>
<li>(wasm) Add <code>Response::bytes_stream()</code>.</li>
<li>Perf: several internal optimizations reducing copies and memory allocations.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="3459b89488"><code>3459b89</code></a> v0.11.14</li>
<li><a href="fac510365d"><code>fac5103</code></a> Use SPDX license identifier (<a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/issues/1730">#1730</a>)</li>
<li><a href="cda9c348bb"><code>cda9c34</code></a> Optimize the <code>NO_PROXY</code> domain matcher (<a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/issues/1728">#1728</a>)</li>
<li><a href="6f714f438a"><code>6f714f4</code></a> Unify basic-auth header generation (<a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/issues/1726">#1726</a>)</li>
<li><a href="6df88587ce"><code>6df8858</code></a> Update <code>base64</code> to 0.21 (<a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/issues/1725">#1725</a>)</li>
<li><a href="1d904968f1"><code>1d90496</code></a> Reduce string allocation during multipart header encoding (<a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/issues/1724">#1724</a>)</li>
<li><a href="4d96adfca5"><code>4d96adf</code></a> Implement bytes_stream() for wasm. (<a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/issues/1713">#1713</a>)</li>
<li><a href="c2a1870a3e"><code>c2a1870</code></a> Documentation fix: it's <code>TCP_NODELAY</code>, not <code>SO_NODELAY</code> (<a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/issues/1710">#1710</a>)</li>
<li><a href="b16ea79e28"><code>b16ea79</code></a> Add public interface to Multipart's Part <code>headers</code> (<a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/issues/1687">#1687</a>)</li>
<li><a href="cdbf84feb1"><code>cdbf84f</code></a> Adds <code>Proxy::no_proxy(url)</code> (<a href="https://github-redirect.dependabot.com/seanmonstar/reqwest/issues/1694">#1694</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/seanmonstar/reqwest/compare/v0.11.13...v0.11.14">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=reqwest&package-manager=cargo&previous-version=0.11.13&new-version=0.11.14)](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>

1285: build(deps): bump toml from 0.5.10 to 0.5.11 r=delta1 a=dependabot[bot]

Bumps [toml](https://github.com/toml-rs/toml) from 0.5.10 to 0.5.11.
<details>
<summary>Commits</summary>
<ul>
<li><a href="0c2004aaa5"><code>0c2004a</code></a> chore: Release</li>
<li><a href="22660a5279"><code>22660a5</code></a> docs: Update changelog</li>
<li><a href="8395fd159b"><code>8395fd1</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/toml-rs/toml/issues/476">#476</a> from epage/deprecated</li>
<li><a href="d8dfb1cffe"><code>d8dfb1c</code></a> fix(toml): Deprecate 'Deserializer::end'</li>
<li><a href="266fa47a2e"><code>266fa47</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/toml-rs/toml/issues/393">#393</a> from epage/compat</li>
<li><a href="8ad0d37d2c"><code>8ad0d37</code></a> fix(toml): Deprecate compat hacks</li>
<li>See full diff in <a href="https://github.com/toml-rs/toml/compare/toml-v0.5.10...toml-v0.5.11">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=toml&package-manager=cargo&previous-version=0.5.10&new-version=0.5.11)](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>
2023-01-20 11:45:04 +00:00
dependabot[bot]
1b52804abc
build(deps): bump toml from 0.5.10 to 0.5.11
Bumps [toml](https://github.com/toml-rs/toml) from 0.5.10 to 0.5.11.
- [Release notes](https://github.com/toml-rs/toml/releases)
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.5.10...toml-v0.5.11)

---
updated-dependencies:
- dependency-name: toml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-20 11:03:20 +00:00
dependabot[bot]
533807aa0b
build(deps): bump reqwest from 0.11.13 to 0.11.14
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.13 to 0.11.14.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.11.13...v0.11.14)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-20 11:03:06 +00:00
dependabot[bot]
27a8e2aee6
build(deps): bump async-trait from 0.1.61 to 0.1.62
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.61 to 0.1.62.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.61...0.1.62)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-20 11:02:35 +00:00
dependabot[bot]
633027dd66
build(deps): bump serial_test from 0.10.0 to 1.0.0
Bumps [serial_test](https://github.com/palfrey/serial_test) from 0.10.0 to 1.0.0.
- [Release notes](https://github.com/palfrey/serial_test/releases)
- [Commits](https://github.com/palfrey/serial_test/compare/v0.10.0...v1.0.0)

---
updated-dependencies:
- dependency-name: serial_test
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-18 11:02:15 +00:00
bors[bot]
095fc6687f
Merge #1281
1281: build(deps): bump dialoguer from 0.10.2 to 0.10.3 r=delta1 a=dependabot[bot]

Bumps [dialoguer](https://github.com/mitsuhiko/dialoguer) from 0.10.2 to 0.10.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/console-rs/dialoguer/blob/master/CHANGELOG.md">dialoguer's changelog</a>.</em></p>
<blockquote>
<h2>0.10.3</h2>
<h3>Enhancements</h3>
<ul>
<li>Fix various issues with fuzzy select</li>
<li>Enable customization of number of rows for fuzzy select</li>
<li>Added post completion text for input</li>
<li>Various cursor movement improvements</li>
<li>Correctly ignore unknown keys.</li>
<li>Reset prompt height in <code>TermThemeRenderer::clear</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="d54c4289ca"><code>d54c428</code></a> 0.10.3</li>
<li><a href="e89804117a"><code>e898041</code></a> Added .vscode config</li>
<li><a href="63bdd0624c"><code>63bdd06</code></a> Update changelog</li>
<li><a href="565d64faad"><code>565d64f</code></a> fix: also reset self.prompt_height in TermThemeRenderer::clear. (<a href="https://github-redirect.dependabot.com/mitsuhiko/dialoguer/issues/191">#191</a>)</li>
<li><a href="8d39d79915"><code>8d39d79</code></a> Update readme</li>
<li><a href="a6659ce042"><code>a6659ce</code></a> Return Err on Confirm's read_key when not a terminal (<a href="https://github-redirect.dependabot.com/mitsuhiko/dialoguer/issues/229">#229</a>)</li>
<li><a href="1a7f1203bf"><code>1a7f120</code></a> Fix long lines in select failing size calcuations (<a href="https://github-redirect.dependabot.com/mitsuhiko/dialoguer/issues/239">#239</a>)</li>
<li><a href="9bc846e08b"><code>9bc846e</code></a> Make clippy happy</li>
<li><a href="7d5488e400"><code>7d5488e</code></a> Fixed CI workflow for macos and added makefile</li>
<li><a href="d35b5dee8b"><code>d35b5de</code></a> Ignore Unknown keys (<a href="https://github-redirect.dependabot.com/mitsuhiko/dialoguer/issues/192">#192</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/mitsuhiko/dialoguer/compare/v0.10.2...0.10.3">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dialoguer&package-manager=cargo&previous-version=0.10.2&new-version=0.10.3)](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>
2023-01-16 12:06:44 +00:00
dependabot[bot]
c5151e1ad4
build(deps): bump dialoguer from 0.10.2 to 0.10.3
Bumps [dialoguer](https://github.com/mitsuhiko/dialoguer) from 0.10.2 to 0.10.3.
- [Release notes](https://github.com/mitsuhiko/dialoguer/releases)
- [Changelog](https://github.com/console-rs/dialoguer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mitsuhiko/dialoguer/compare/v0.10.2...0.10.3)

---
updated-dependencies:
- dependency-name: dialoguer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 11:04:38 +00:00
bors[bot]
7eebfc3c18
Merge #1279
1279: build(deps): bump pem from 1.1.0 to 1.1.1 r=delta1 a=dependabot[bot]

Bumps [pem](https://github.com/jcreekmore/pem-rs) from 1.1.0 to 1.1.1.
<details>
<summary>Commits</summary>
<ul>
<li><a href="a4179f9ee1"><code>a4179f9</code></a> (cargo-release) version 1.1.1</li>
<li><a href="8543e87b50"><code>8543e87</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/jcreekmore/pem-rs/issues/37">#37</a> from jcreekmore/headers</li>
<li><a href="83d911477f"><code>83d9114</code></a> allow parsing of PEM files that contain headers</li>
<li><a href="8a743103ea"><code>8a74310</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/jcreekmore/pem-rs/issues/35">#35</a> from devtomio/patch-1</li>
<li><a href="7260710b06"><code>7260710</code></a> readme: add missing <code>&quot;;</code></li>
<li><a href="9373e99baf"><code>9373e99</code></a> (cargo-release) start next development iteration 1.1.1-alpha.0</li>
<li>See full diff in <a href="https://github.com/jcreekmore/pem-rs/compare/v1.1.0...v1.1.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pem&package-manager=cargo&previous-version=1.1.0&new-version=1.1.1)](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>
2023-01-12 12:14:20 +00:00
dependabot[bot]
ce22531287
build(deps): bump pem from 1.1.0 to 1.1.1
Bumps [pem](https://github.com/jcreekmore/pem-rs) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/jcreekmore/pem-rs/releases)
- [Changelog](https://github.com/jcreekmore/pem-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jcreekmore/pem-rs/compare/v1.1.0...v1.1.1)

---
updated-dependencies:
- dependency-name: pem
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-12 08:36:46 +00:00
bors[bot]
27b0ffa939
Merge #1278
1278: upgrade base64, vergen, bdk r=delta1 a=delta1

Upgrades dependencies, base64 had a breaking change but is only used in a test 

- #1271
- #1266 
- #1264  

Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2023-01-12 08:09:56 +00:00
Byron Hambly
7aa6227cbe
build(deps): bump bdk to 0.26
closes #1264
2023-01-11 19:52:21 +02:00
Byron Hambly
30fbb0cdb2
build(deps): bump vergen to 7.5
closes #1266
2023-01-11 19:52:21 +02:00
Byron Hambly
43f06f0705
build(deps): bump base64 to 0.21
closes #1271
2023-01-11 19:52:14 +02:00
bors[bot]
20a27f1eb0
Merge #1275
1275: ci: update msrv and github actions toolchains r=delta1 a=delta1

The change in github actions to use dtolnay/rust-toolchain action was defaulting to the latest stable and was not overridden by the rust-toolchain.toml file. 

This updates the MSRV and relevant CI.  

Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2023-01-10 13:31:02 +00:00
Byron Hambly
4ca1f8da5e
ci: update msrv and github actions toolchains 2023-01-10 14:57:09 +02:00
bors[bot]
ab5d4a1ed5
Merge #1274
1274: fix: add debug log for opening monero wallet error r=delta1 a=delta1

see issue #1273 

Co-authored-by: Byron Hambly <bhambly@blockstream.com>
2023-01-10 11:50:21 +00:00
Byron Hambly
9346cb7baf
fix: add debug log for opening monero wallet error 2023-01-10 13:49:32 +02:00
110 changed files with 8020 additions and 3494 deletions

View File

@ -1,2 +1,6 @@
[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"
# windows defaults to smaller stack sizes which isn't enough
[target.'cfg(windows)']
rustflags = ["-C", "link-args=/STACK:8388608"]

View File

@ -6,8 +6,9 @@ on:
jobs:
build_binaries:
name: Build swap and asb binaries
name: Build
strategy:
fail-fast: false
matrix:
include:
- bin: swap
@ -20,6 +21,10 @@ jobs:
archive_ext: tar
- bin: swap
target: x86_64-apple-darwin
os: macos-12
archive_ext: tar
- bin: swap
target: aarch64-apple-darwin
os: macos-latest
archive_ext: tar
- bin: swap
@ -36,6 +41,10 @@ jobs:
archive_ext: tar
- bin: asb
target: x86_64-apple-darwin
os: macos-12
archive_ext: tar
- bin: asb
target: aarch64-apple-darwin
os: macos-latest
archive_ext: tar
- bin: asb
@ -45,33 +54,33 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Checkout tagged commit
uses: actions/checkout@v3.3.0
uses: actions/checkout@v4.2.1
with:
ref: ${{ github.event.release.target_commitish }}
token: ${{ secrets.BOTTY_GITHUB_TOKEN }}
- uses: Swatinem/rust-cache@v2.2.0
- uses: Swatinem/rust-cache@v2.7.5
- uses: dtolnay/rust-toolchain@stable
- uses: dtolnay/rust-toolchain@master
with:
targets: armv7-unknown-linux-gnueabihf
toolchain: "1.74"
- name: Cross Build ${{ matrix.target }} ${{ matrix.bin }} binary
if: matrix.target == 'armv7-unknown-linux-gnueabihf'
run: |
curl -L "https://github.com/cross-rs/cross/releases/download/v0.2.5/cross-x86_64-unknown-linux-gnu.tar.gz" | tar xzv
sudo mv cross /usr/bin
sudo mv cross-util /usr/bin
cross build --target=${{ matrix.target }} --release --package swap --bin ${{ matrix.bin }}
- name: Build ${{ matrix.target }} ${{ matrix.bin }} release binary
uses: actions-rs/cargo@v1
with:
command: build
args: --target=${{ matrix.target }} --release --package swap --bin ${{ matrix.bin }}
use-cross: true
if: matrix.target != 'armv7-unknown-linux-gnueabihf'
run: cargo build --target=${{ matrix.target }} --release --package swap --bin ${{ matrix.bin }}
- name: Smoke test the binary
if: matrix.target != 'armv7-unknown-linux-gnueabihf' # armv7-unknown-linux-gnueabihf is only cross-compiled, no smoke test
if: matrix.target != 'armv7-unknown-linux-gnueabihf'
run: target/${{ matrix.target }}/release/${{ matrix.bin }} --help
# Remove once python 3 is the default
- uses: actions/setup-python@v4
with:
python-version: "3.x"
- id: create-archive-name
shell: python # Use python to have a prettier name for the archive on Windows.
run: |
@ -88,7 +97,7 @@ jobs:
print(f'::set-output name=archive::{archive_name}')
- name: Pack macos archive
if: matrix.os == 'macos-latest'
if: startsWith(matrix.os, 'macos')
shell: bash
run: gtar -C ./target/${{ matrix.target }}/release --create --file=${{ steps.create-archive-name.outputs.archive }} ${{ matrix.bin }}

View File

@ -4,8 +4,6 @@ on:
pull_request: # Need to run on pull-requests, otherwise PRs from forks don't run
push:
branches:
- "staging" # Bors uses this branch
- "trying" # Bors uses this branch
- "master" # Always build head of master for the badge in the README
jobs:
@ -13,12 +11,19 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3.3.0
uses: actions/checkout@v4.2.1
- uses: Swatinem/rust-cache@v2.2.0
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.74"
components: clippy,rustfmt
- uses: Swatinem/rust-cache@v2.7.5
- name: Check formatting
uses: dprint/check@v2.1
uses: dprint/check@v2.2
with:
dprint-version: 0.39.1
- name: Run clippy with default features
run: cargo clippy --workspace --all-targets -- -D warnings
@ -30,9 +35,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3.3.0
uses: actions/checkout@v4.2.1
- uses: Swatinem/rust-cache@v2.0.2
- uses: Swatinem/rust-cache@v2.7.5
- name: Build swap
run: cargo build --bin swap
@ -44,12 +49,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3.3.0
uses: actions/checkout@v4.2.1
- uses: Swatinem/rust-cache@v2.0.2
- uses: Swatinem/rust-cache@v2.7.5
- name: Install sqlx-cli
run: cargo install sqlx-cli
run: cargo install --locked --version 0.6.3 sqlx-cli
- name: Run sqlite_dev_setup.sh script
run: |
@ -65,18 +70,21 @@ jobs:
- target: armv7-unknown-linux-gnueabihf
os: ubuntu-latest
- target: x86_64-apple-darwin
os: macos-12
- target: aarch64-apple-darwin
os: macos-latest
- target: x86_64-pc-windows-msvc
os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- name: Checkout sources
uses: actions/checkout@v3.3.0
uses: actions/checkout@v4.2.1
- uses: Swatinem/rust-cache@v2.2.0
- uses: Swatinem/rust-cache@v2.7.5
- uses: dtolnay/rust-toolchain@stable
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.74"
targets: armv7-unknown-linux-gnueabihf
- name: Build binary
@ -92,13 +100,13 @@ jobs:
run: cross build -p swap --target ${{ matrix.target }}
- name: Upload swap binary
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: swap-${{ matrix.target }}
path: target/${{ matrix.target }}/debug/swap
- name: Upload asb binary
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: asb-${{ matrix.target }}
path: target/${{ matrix.target }}/debug/asb
@ -109,10 +117,23 @@ jobs:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout sources
uses: actions/checkout@v3.3.0
- name: (Free disk space on Ubuntu)
if: matrix.os == 'ubuntu-latest'
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be
with:
# removing all of these takes ~10 mins, so just do as needed
android: true
dotnet: true
haskell: true
docker-images: false
large-packages: false
swap-storage: false
tool-cache: false
- uses: Swatinem/rust-cache@v2.2.0
- name: Checkout sources
uses: actions/checkout@v4.2.1
- uses: Swatinem/rust-cache@v2.7.5
- name: Build tests
run: cargo build --tests --workspace --all-features
@ -136,20 +157,47 @@ jobs:
alice_and_bob_refund_using_cancel_and_refund_command,
alice_and_bob_refund_using_cancel_then_refund_command,
alice_and_bob_refund_using_cancel_and_refund_command_timelock_not_expired,
alice_manually_punishes_after_bob_dead_and_bob_cancels,
punish,
alice_punishes_after_restart_bob_dead,
alice_manually_punishes_after_bob_dead,
alice_refunds_after_restart_bob_refunded,
ensure_same_swap_id,
concurrent_bobs_before_xmr_lock_proof_sent,
concurrent_bobs_after_xmr_lock_proof_sent,
alice_manually_redeems_after_enc_sig_learned,
happy_path_bob_offline_while_alice_redeems_btc,
]
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3.3.0
uses: actions/checkout@v4.2.1
- uses: Swatinem/rust-cache@v2.2.0
- uses: Swatinem/rust-cache@v2.7.5
- name: Run test ${{ matrix.test_name }}
run: cargo test --package swap --all-features --test ${{ matrix.test_name }} -- --nocapture
rpc_tests:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4.2.1
- uses: Swatinem/rust-cache@v2.7.5
- name: Run RPC server tests
run: cargo test --package swap --all-features --test rpc -- --nocapture
check_stable:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4.2.1
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2.7.5
- name: Run cargo check on stable rust
run: cargo check --all-targets

View File

@ -11,7 +11,7 @@ jobs:
if: github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'release/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.3.0
- uses: actions/checkout@v4.2.1
- name: Extract version from branch name
id: extract-version

View File

@ -12,7 +12,7 @@ jobs:
name: "Draft a new release"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.3.0
- uses: actions/checkout@v4.2.1
with:
token: ${{ secrets.BOTTY_GITHUB_TOKEN }}
@ -20,7 +20,7 @@ jobs:
run: git checkout -b release/${{ github.event.inputs.version }}
- name: Update changelog
uses: thomaseizinger/keep-a-changelog-new-release@1.3.0
uses: thomaseizinger/keep-a-changelog-new-release@3.1.0
with:
version: ${{ github.event.inputs.version }}
changelogPath: CHANGELOG.md
@ -41,8 +41,12 @@ jobs:
- name: Commit changelog and manifest files
id: make-commit
env:
DPRINT_VERSION: "0.39.1"
RUST_TOOLCHAIN: "1.74"
run: |
curl -fsSL https://dprint.dev/install.sh | sh
rustup component add rustfmt --toolchain "$RUST_TOOLCHAIN-x86_64-unknown-linux-gnu"
curl -fsSL https://dprint.dev/install.sh | sh -s $DPRINT_VERSION
/home/runner/.dprint/bin/dprint fmt
git add CHANGELOG.md Cargo.lock swap/Cargo.toml
@ -54,7 +58,7 @@ jobs:
run: git push origin release/${{ github.event.inputs.version }} --force
- name: Create pull request
uses: thomaseizinger/create-pull-request@1.3.0
uses: thomaseizinger/create-pull-request@1.4.0
with:
GITHUB_TOKEN: ${{ secrets.BOTTY_GITHUB_TOKEN }}
head: release/${{ github.event.inputs.version }}

View File

@ -10,7 +10,7 @@ jobs:
name: Create preview release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.3.0
- uses: actions/checkout@v4.2.1
- name: Delete 'preview' release
uses: larryjoelane/delete-release-action@v1.0.24

View File

@ -7,6 +7,46 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
- ASB + CLI: You can now use the `logs` command to retrieve logs stored in the past, redacting addresses and id's using `logs --redact`.
- ASB: The `--disable-timestamp` flag has been removed
## [0.13.4] - 2024-07-25
- ASB: The `history` command can now be used while the asb is running.
- ASB: Retry locking of Monero if it fails on first attempt
## [0.13.3] - 2024-07-15
- Introduced a cooperative Monero redeem feature for Bob to request from Alice if Bob is punished for not refunding in time. Alice can choose to cooperate but is not obligated to do so. This change is backwards compatible. To attempt recovery, resume a swap in the "Bitcoin punished" state. Success depends on Alice being active and still having a record of the swap. Note that Alice's cooperation is voluntary and recovery is not guaranteed
- CLI: `--change-address` can now be omitted. In that case, any change is refunded to the internal bitcoin wallet.
## [0.13.2] - 2024-07-02
- CLI: Buffer received transfer proofs for later processing if we're currently running a different swap
- CLI: We now display the reason for a failed cancel-refund operation to the user (#683)
## [0.13.1] - 2024-06-10
- Add retry logic to monero-wallet-rpc wallet refresh
## [0.13.0] - 2024-05-29
- Minimum Supported Rust Version (MSRV) bumped to 1.74
- Lowered default Bitcoin confirmation target for Bob to 1 to make sure Bitcoin transactions get confirmed in time
- Added support for starting the CLI (using the `start-daemon` subcommand) as a Daemon that accepts JSON-RPC requests
- Update monero-wallet-rpc version to v0.18.3.1
## [0.12.3] - 2023-09-20
- Swap: If no Monero daemon is manually specified, we will automatically choose one from a list of public daemons by connecting to each and checking their availability.
## [0.12.2] - 2023-08-08
### Changed
- Minimum Supported Rust Version (MSRV) bumped to 1.67
- ASB can now register with multiple rendezvous nodes. The `rendezvous_point` option in `config.toml` can be a string with comma separated addresses, or a toml array of address strings.
## [0.12.1] - 2023-01-09
### Changed
@ -338,7 +378,14 @@ It is possible to migrate critical data from the old db to the sqlite but there
- Fixed an issue where Alice would not verify if Bob's Bitcoin lock transaction is semantically correct, i.e. pays the agreed upon amount to an output owned by both of them.
Fixing this required a **breaking change** on the network layer and hence old versions are not compatible with this version.
[Unreleased]: https://github.com/comit-network/xmr-btc-swap/compare/0.12.1...HEAD
[unreleased]: https://github.com/comit-network/xmr-btc-swap/compare/0.13.4...HEAD
[0.13.4]: https://github.com/comit-network/xmr-btc-swap/compare/0.13.3...0.13.4
[0.13.3]: https://github.com/comit-network/xmr-btc-swap/compare/0.13.2...0.13.3
[0.13.2]: https://github.com/comit-network/xmr-btc-swap/compare/0.13.1...0.13.2
[0.13.1]: https://github.com/comit-network/xmr-btc-swap/compare/0.13.0...0.13.1
[0.13.0]: https://github.com/comit-network/xmr-btc-swap/compare/0.12.3...0.13.0
[0.12.3]: https://github.com/comit-network/xmr-btc-swap/compare/0.12.2...0.12.3
[0.12.2]: https://github.com/comit-network/xmr-btc-swap/compare/0.12.1...0.12.2
[0.12.1]: https://github.com/comit-network/xmr-btc-swap/compare/0.12.0...0.12.1
[0.12.0]: https://github.com/comit-network/xmr-btc-swap/compare/0.11.0...0.12.0
[0.11.0]: https://github.com/comit-network/xmr-btc-swap/compare/0.10.2...0.11.0

2296
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,8 @@
[workspace]
resolver = "2"
members = [ "monero-harness", "monero-rpc", "swap", "monero-wallet" ]
[patch.crates-io]
# patch until new release https://github.com/thomaseizinger/rust-jsonrpc-client/pull/51
jsonrpc_client = { git = "https://github.com/delta1/rust-jsonrpc-client.git", rev = "3b6081697cd616c952acb9c2f02d546357d35506" }
monero = { git = "https://github.com/comit-network/monero-rs", rev = "818f38b" }

22
Dockerfile Normal file
View File

@ -0,0 +1,22 @@
# This Dockerfile builds the asb binary
FROM rust:1.79-slim AS builder
WORKDIR /build
RUN apt-get update
RUN apt-get install -y git clang cmake libsnappy-dev
COPY . .
WORKDIR /build/swap
RUN cargo build --release --bin=asb
FROM debian:bookworm-slim
WORKDIR /data
COPY --from=builder /build/target/release/asb /bin/asb
ENTRYPOINT ["asb"]

View File

@ -9,6 +9,10 @@ Currently, swaps are only offered in one direction with the `swap` CLI on the bu
We are working on implementing a protocol where XMR moves first, but are currently blocked by advances on Monero itself.
You can read [this blogpost](https://comit.network/blog/2021/07/02/transaction-presigning) for more information.
## Maintenance
**This repository is unmaintained**. The original developers (@comit-network) have moved on to other projects. Community volunteers are continuing development at [UnstoppableSwap/core](https://github.com/UnstoppableSwap/core), which includes a graphical user interface. Please note that the fork has introduced network-level breaking changes, making it incompatible with peers running this repository - you will not be able to initiate swaps with them.
## Quick Start
1. Download the [latest `swap` binary release](https://github.com/comit-network/xmr-btc-swap/releases/latest) for your operating system.
@ -44,13 +48,13 @@ It is not recommended to bump fees when swapping because it can have unpredictab
## Contributing
We are encourage community contributions whether it be a bug fix or an improvement to the documentation.
We encourage community contributions whether it be a bug fix or an improvement to the documentation.
Please have a look at the [contribution guidelines](./CONTRIBUTING.md).
## Rust Version Support
Please note that only the latest stable Rust toolchain is supported.
All stable toolchains since 1.62 _should_ work.
All stable toolchains since 1.74 _should_ work.
## Contact

View File

@ -1,25 +0,0 @@
status = [
"static_analysis",
"bdk_test",
"sqlx_test",
"build (x86_64-unknown-linux-gnu, ubuntu-latest)",
"build (armv7-unknown-linux-gnueabihf, ubuntu-latest)",
"build (x86_64-apple-darwin, macos-latest)",
"build (x86_64-pc-windows-msvc, windows-latest)",
"test (ubuntu-latest)",
"test (macos-latest)",
"docker_tests (happy_path)",
"docker_tests (happy_path_restart_bob_after_xmr_locked)",
"docker_tests (happy_path_restart_alice_after_xmr_locked)",
"docker_tests (happy_path_restart_bob_before_xmr_locked)",
"docker_tests (alice_and_bob_refund_using_cancel_and_refund_command)",
"docker_tests (alice_and_bob_refund_using_cancel_then_refund_command)",
"docker_tests (alice_and_bob_refund_using_cancel_and_refund_command_timelock_not_expired)",
"docker_tests (punish)",
"docker_tests (alice_punishes_after_restart_bob_dead)",
"docker_tests (alice_manually_punishes_after_bob_dead)",
"docker_tests (alice_refunds_after_restart_bob_refunded)",
"docker_tests (ensure_same_swap_id)",
"docker_tests (concurrent_bobs_before_xmr_lock_proof_sent)",
"docker_tests (alice_manually_redeems_after_enc_sig_learned)"
]

View File

@ -42,13 +42,16 @@ Since the ASB is a long running task we specify the person running an ASB as ser
The ASB daemon supports the libp2p [rendezvous-protocol](https://github.com/libp2p/specs/tree/master/rendezvous).
Usage of the rendezvous functionality is entirely optional.
You can configure a rendezvous point in the `[network]` section of your config file.
You can configure one or more rendezvous points in the `[network]` section of your config file.
For the registration to be successful, you also need to configure the externally reachable addresses within the `[network]` section.
For example:
```toml
[network]
rendezvous_point = "/dns4/discover.unstoppableswap.net/tcp/8888/p2p/12D3KooWA6cnqJpVnreBVnoro8midDL9Lpzmg8oJPoAGi7YYaamE"
rendezvous_point = [
"/dns4/discover.unstoppableswap.net/tcp/8888/p2p/12D3KooWA6cnqJpVnreBVnoro8midDL9Lpzmg8oJPoAGi7YYaamE",
"/dns4/eratosthen.es/tcp/7798/p2p/12D3KooWAh7EXXa2ZyegzLGdjvj1W4G3EXrTGrf6trraoT1MEobs",
]
external_addresses = ["/dns4/example.com/tcp/9939"]
```
@ -107,7 +110,7 @@ The minimum and maximum amount as well as a spread, that is added on top of the
In order to be able to trade, the ASB must define a price to be able to agree on the amounts to be swapped with a CLI.
The `XMR<>BTC` price is currently determined by the price from the central exchange Kraken.
Upon startup the ASB connects to the Kraken price websocket and listens on the stream for price updates.
You can plug in a different price ticker websocket using the the `price_ticker_ws_url` configuration option.
You can plug in a different price ticker websocket using the `price_ticker_ws_url` configuration option.
You will have to make sure that the format returned is the same as the format used by Kraken.
Currently, we use a spot-price model, i.e. the ASB dictates the price to the CLI.
@ -161,3 +164,38 @@ May 01 01:32:05.018 INFO Tor found. Setting up hidden service.
May 01 01:32:07.475 INFO /onion3/z4findrdwtfbpoq64ayjtmxvr52vvxnsynerlenlfkmm52dqxsl4deyd:9939
May 01 01:32:07.476 INFO /onion3/z4findrdwtfbpoq64ayjtmxvr52vvxnsynerlenlfkmm52dqxsl4deyd:9940
```
### Exporting the Bitcoin wallet descriptor
First use `swap` or `asb` with the `export-bitcoin-wallet` subcommand.
Output example:
```json
{"descriptor":"wpkh(tprv8Zgredacted.../84'/1'/0'/0/*)","blockheight":2415616,"label":"asb-testnet"}
```
The wallet can theoretically be directly imported into
[bdk-cli](https://bitcoindevkit.org/bdk-cli/installation/) but it is easier to
use Sparrow Wallet.
Sparrow wallet import works as follows:
- File -> New wallet -> Give it a name
- Select "New or Imported Software Wallet"
- Click "Enter Private Key" for "Master Private Key (BIP32)"
- Enter the `xprv...` or `tprv...` part of the descriptor (example above is `tprv8Zgredacted...`:
![image](enter-master-private-key.png)
- Click "Import"
- Leave the derivation path as `m/84'/0'/0'` and click "Import Keystore" button
- Click "Apply" and then supply password
![image](import-keystore.png)
- Click Transactions tab
- ???
- Profit!
![image](transactions-tab.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

@ -75,7 +75,7 @@ OPTIONS:
This command has three core options:
- `--change-address`: A Bitcoin address you control. Will be used for refunds of any kind.
- `--change-address`: A Bitcoin address you control. Will be used for refunds of any kind. You can also omit this flag which will refund any change to the internal wallet.
- `--receive-address`: A Monero address you control. This is where you will receive the Monero after the swap.
- `--seller`: The multiaddress of the seller you want to swap with.

View File

@ -3,22 +3,16 @@
"projectType": "openSource",
"incremental": true,
"markdown": {},
"rustfmt": {
"edition": 2021,
"condense_wildcard_suffixes": true,
"format_macro_matchers": true,
"imports_granularity": "Module",
"use_field_init_shorthand": true,
"format_code_in_doc_comments": true,
"normalize_comments": true,
"wrap_comments": true,
"overflow_delimited_expr": true
"exec": {
"associations": "**/*.{rs}",
"rustfmt": "rustfmt --edition 2021",
"rustfmt.associations": "**/*.rs"
},
"includes": ["**/*.{md}", "**/*.{toml}", "**/*.{rs}"],
"excludes": ["target/"],
"plugins": [
"https://plugins.dprint.dev/markdown-0.13.1.wasm",
"https://github.com/thomaseizinger/dprint-plugin-cargo-toml/releases/download/0.1.0/cargo-toml-0.1.0.wasm",
"https://plugins.dprint.dev/rustfmt-0.6.1.exe-plugin@99b89a0599fd3a63e597e03436862157901f3facae2f0c2fbd0b9f656cdbc2a5"
"https://plugins.dprint.dev/exec-0.3.5.json@d687dda57be0fe9a0088ccdaefa5147649ff24127d8b3ea227536c68ee7abeab"
]
}

View File

@ -10,8 +10,7 @@ anyhow = "1"
futures = "0.3"
monero-rpc = { path = "../monero-rpc" }
rand = "0.7"
spectral = "0.6"
testcontainers = "0.12"
testcontainers = "0.15"
tokio = { version = "1", default-features = false, features = [ "rt-multi-thread", "time", "macros" ] }
tracing = "0.1"
tracing-subscriber = { version = "0.2", default-features = false, features = [ "fmt", "ansi", "env-filter", "tracing-log" ] }
tracing-subscriber = { version = "0.3", default-features = false, features = [ "fmt", "ansi", "env-filter", "tracing-log" ] }

View File

@ -1,6 +1,4 @@
use std::collections::HashMap;
use testcontainers::core::{Container, Docker, WaitForMessage};
use testcontainers::Image;
use testcontainers::{core::WaitFor, Image, ImageArgs};
pub const MONEROD_DAEMON_CONTAINER_NAME: &str = "monerod";
pub const MONEROD_DEFAULT_NETWORK: &str = "monero_network";
@ -13,43 +11,22 @@ pub const MONEROD_DEFAULT_NETWORK: &str = "monero_network";
/// this doesn't matter.
pub const RPC_PORT: u16 = 18081;
#[derive(Debug, Default)]
pub struct Monerod {
args: MonerodArgs,
}
#[derive(Clone, Copy, Debug, Default)]
pub struct Monerod;
impl Image for Monerod {
type Args = MonerodArgs;
type EnvVars = HashMap<String, String>;
type Volumes = HashMap<String, String>;
type EntryPoint = str;
fn descriptor(&self) -> String {
"rinocommunity/monero:v0.18.1.2".to_owned()
fn name(&self) -> String {
"rinocommunity/monero".into()
}
fn wait_until_ready<D: Docker>(&self, container: &Container<'_, D, Self>) {
container
.logs()
.stdout
.wait_for_message("RPC server started ok")
.unwrap();
fn tag(&self) -> String {
"v0.18.1.2".into()
}
fn args(&self) -> <Self as Image>::Args {
self.args.clone()
}
fn volumes(&self) -> Self::Volumes {
HashMap::new()
}
fn env_vars(&self) -> Self::EnvVars {
HashMap::new()
}
fn with_args(self, args: <Self as Image>::Args) -> Self {
Self { args }
fn ready_conditions(&self) -> Vec<WaitFor> {
vec![WaitFor::message_on_stdout("RPC server started ok")]
}
fn entrypoint(&self) -> Option<String> {
@ -58,43 +35,22 @@ impl Image for Monerod {
}
}
#[derive(Debug, Default)]
pub struct MoneroWalletRpc {
args: MoneroWalletRpcArgs,
}
#[derive(Clone, Copy, Debug)]
pub struct MoneroWalletRpc;
impl Image for MoneroWalletRpc {
type Args = MoneroWalletRpcArgs;
type EnvVars = HashMap<String, String>;
type Volumes = HashMap<String, String>;
type EntryPoint = str;
fn descriptor(&self) -> String {
"rinocommunity/monero:v0.18.1.2".to_owned()
fn name(&self) -> String {
"rinocommunity/monero".into()
}
fn wait_until_ready<D: Docker>(&self, container: &Container<'_, D, Self>) {
container
.logs()
.stdout
.wait_for_message("Run server thread name: RPC")
.unwrap();
fn tag(&self) -> String {
"v0.18.1.2".into()
}
fn args(&self) -> <Self as Image>::Args {
self.args.clone()
}
fn volumes(&self) -> Self::Volumes {
HashMap::new()
}
fn env_vars(&self) -> Self::EnvVars {
HashMap::new()
}
fn with_args(self, args: <Self as Image>::Args) -> Self {
Self { args }
fn ready_conditions(&self) -> Vec<WaitFor> {
vec![WaitFor::message_on_stdout("Run server thread name: RPC")]
}
fn entrypoint(&self) -> Option<String> {
@ -104,10 +60,9 @@ impl Image for MoneroWalletRpc {
}
impl MoneroWalletRpc {
pub fn new(name: &str, daemon_address: String) -> Self {
Self {
args: MoneroWalletRpcArgs::new(name, daemon_address),
}
pub fn new(name: &str, daemon_address: String) -> (Self, MoneroWalletRpcArgs) {
let args = MoneroWalletRpcArgs::new(name, daemon_address);
(Self, args)
}
}
@ -191,6 +146,12 @@ impl IntoIterator for MonerodArgs {
}
}
impl ImageArgs for MonerodArgs {
fn into_iterator(self) -> Box<dyn Iterator<Item = String>> {
Box::new(self.into_iter())
}
}
#[derive(Debug, Clone)]
pub struct MoneroWalletRpcArgs {
pub disable_rpc_login: bool,
@ -200,12 +161,6 @@ pub struct MoneroWalletRpcArgs {
pub daemon_address: String,
}
impl Default for MoneroWalletRpcArgs {
fn default() -> Self {
unimplemented!("A default instance for `MoneroWalletRpc` doesn't make sense because we always need to connect to a node.")
}
}
impl MoneroWalletRpcArgs {
pub fn new(wallet_name: &str, daemon_address: String) -> Self {
Self {
@ -247,3 +202,9 @@ impl IntoIterator for MoneroWalletRpcArgs {
args.into_iter()
}
}
impl ImageArgs for MoneroWalletRpcArgs {
fn into_iterator(self) -> Box<dyn Iterator<Item = String>> {
Box::new(self.into_iter())
}
}

View File

@ -20,17 +20,20 @@
//! every BLOCK_TIME_SECS seconds.
//!
//! Also provides standalone JSON RPC clients for monerod and monero-wallet-rpc.
pub mod image;
use std::time::Duration;
use crate::image::{MONEROD_DAEMON_CONTAINER_NAME, MONEROD_DEFAULT_NETWORK, RPC_PORT};
use anyhow::{anyhow, bail, Context, Result};
use testcontainers::clients::Cli;
use testcontainers::{Container, RunnableImage};
use tokio::time;
use monero_rpc::monerod;
use monero_rpc::monerod::MonerodRpc as _;
use monero_rpc::wallet::{self, GetAddress, MoneroWalletRpc as _, Refreshed, Transfer};
use std::time::Duration;
use testcontainers::clients::Cli;
use testcontainers::{Container, Docker, RunArgs};
use tokio::time;
use crate::image::{MONEROD_DAEMON_CONTAINER_NAME, MONEROD_DEFAULT_NETWORK, RPC_PORT};
pub mod image;
/// How often we mine a block.
const BLOCK_TIME_SECS: u64 = 1;
@ -56,8 +59,8 @@ impl<'c> Monero {
additional_wallets: Vec<&'static str>,
) -> Result<(
Self,
Container<'c, Cli, image::Monerod>,
Vec<Container<'c, Cli, image::MoneroWalletRpc>>,
Container<'c, image::Monerod>,
Vec<Container<'c, image::MoneroWalletRpc>>,
)> {
let prefix = format!("{}_", random_prefix());
let monerod_name = format!("{}{}", prefix, MONEROD_DAEMON_CONTAINER_NAME);
@ -221,15 +224,14 @@ impl<'c> Monerod {
cli: &'c Cli,
name: String,
network: String,
) -> Result<(Self, Container<'c, Cli, image::Monerod>)> {
let image = image::Monerod::default();
let run_args = RunArgs::default()
.with_name(name.clone())
) -> Result<(Self, Container<'c, image::Monerod>)> {
let image = image::Monerod;
let image: RunnableImage<image::Monerod> = RunnableImage::from(image)
.with_container_name(name.clone())
.with_network(network.clone());
let container = cli.run_with_args(image, run_args);
let monerod_rpc_port = container
.get_host_port(RPC_PORT)
.context("port not exposed")?;
let container = cli.run(image);
let monerod_rpc_port = container.get_host_port_ipv4(RPC_PORT);
Ok((
Self {
@ -249,7 +251,7 @@ impl<'c> Monerod {
/// address
pub async fn start_miner(&self, miner_wallet_address: &str) -> Result<()> {
let monerod = self.client().clone();
let _ = tokio::spawn(mine(monerod, miner_wallet_address.to_string()));
tokio::spawn(mine(monerod, miner_wallet_address.to_string()));
Ok(())
}
}
@ -262,19 +264,15 @@ impl<'c> MoneroWalletRpc {
name: &str,
monerod: &Monerod,
prefix: String,
) -> Result<(Self, Container<'c, Cli, image::MoneroWalletRpc>)> {
) -> Result<(Self, Container<'c, image::MoneroWalletRpc>)> {
let daemon_address = format!("{}:{}", monerod.name, RPC_PORT);
let image = image::MoneroWalletRpc::new(name, daemon_address);
let (image, args) = image::MoneroWalletRpc::new(name, daemon_address);
let image = RunnableImage::from((image, args))
.with_container_name(format!("{}{}", prefix, name))
.with_network(monerod.network.clone());
let network = monerod.network.clone();
let run_args = RunArgs::default()
// prefix the container name so we can run multiple tests
.with_name(format!("{}{}", prefix, name))
.with_network(network.clone());
let container = cli.run_with_args(image, run_args);
let wallet_rpc_port = container
.get_host_port(RPC_PORT)
.context("port not exposed")?;
let container = cli.run(image);
let wallet_rpc_port = container.get_host_port_ipv4(RPC_PORT);
let client = wallet::Client::localhost(wallet_rpc_port)?;

View File

@ -1,6 +1,5 @@
use monero_harness::Monero;
use monero_rpc::monerod::MonerodRpc as _;
use spectral::prelude::*;
use std::time::Duration;
use testcontainers::clients::Cli;
use tokio::time;
@ -21,12 +20,12 @@ async fn init_miner_and_mine_to_miner_address() {
let miner_wallet = monero.wallet("miner").unwrap();
let got_miner_balance = miner_wallet.balance().await.unwrap();
assert_that!(got_miner_balance).is_greater_than(0);
assert!(got_miner_balance > 0);
time::sleep(Duration::from_millis(1010)).await;
// after a bit more than 1 sec another block should have been mined
let block_height = monerod.client().get_block_count().await.unwrap().count;
assert_that(&block_height).is_greater_than(70);
assert!(block_height > 70);
}

View File

@ -1,6 +1,5 @@
use monero_harness::{Monero, MoneroWalletRpc};
use monero_rpc::wallet::MoneroWalletRpc as _;
use spectral::prelude::*;
use std::time::Duration;
use testcontainers::clients::Cli;
use tokio::time::sleep;
@ -29,7 +28,7 @@ async fn fund_transfer_and_check_tx_key() {
// check alice balance
let got_alice_balance = alice_wallet.balance().await.unwrap();
assert_that(&got_alice_balance).is_equal_to(fund_alice);
assert_eq!(got_alice_balance, fund_alice);
// transfer from alice to bob
let bob_address = bob_wallet.address().await.unwrap().address;
@ -41,7 +40,7 @@ async fn fund_transfer_and_check_tx_key() {
wait_for_wallet_to_catch_up(bob_wallet, send_to_bob).await;
let got_bob_balance = bob_wallet.balance().await.unwrap();
assert_that(&got_bob_balance).is_equal_to(send_to_bob);
assert_eq!(got_bob_balance, send_to_bob);
// check if tx was actually seen
let tx_id = transfer.tx_hash;
@ -52,7 +51,7 @@ async fn fund_transfer_and_check_tx_key() {
.await
.expect("failed to check tx by key");
assert_that!(res.received).is_equal_to(send_to_bob);
assert_eq!(res.received, send_to_bob);
}
async fn wait_for_wallet_to_catch_up(wallet: &MoneroWalletRpc, expected_balance: u64) {

View File

@ -12,12 +12,12 @@ jsonrpc_client = { version = "0.7", features = [ "reqwest" ] }
monero = "0.12"
monero-epee-bin-serde = "1"
rand = "0.7"
reqwest = { version = "0.11", default-features = false, features = [ "json" ] }
reqwest = { version = "0.12", default-features = false, features = [ "json" ] }
rust_decimal = { version = "1", features = [ "serde-float" ] }
serde = { version = "1.0", features = [ "derive" ] }
serde_json = "1.0"
tracing = "0.1"
[dev-dependencies]
hex-literal = "0.3"
hex-literal = "0.4"
tokio = { version = "1", features = [ "full" ] }

View File

@ -47,9 +47,10 @@ impl Client {
}
pub async fn get_o_indexes(&self, txid: Hash) -> Result<GetOIndexesResponse> {
self.binary_request(self.get_o_indexes_bin_url.clone(), GetOIndexesPayload {
txid,
})
self.binary_request(
self.get_o_indexes_bin_url.clone(),
GetOIndexesPayload { txid },
)
.await
}
@ -157,7 +158,7 @@ pub struct OutKey {
pub unlocked: bool,
}
#[derive(Clone, Debug, Deserialize, PartialEq)]
#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
pub struct BaseResponse {
pub credits: u64,
pub status: Status,
@ -165,7 +166,7 @@ pub struct BaseResponse {
pub untrusted: bool,
}
#[derive(Clone, Debug, Deserialize, PartialEq)]
#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
pub struct GetOIndexesResponse {
#[serde(flatten)]
pub base: BaseResponse,
@ -173,7 +174,7 @@ pub struct GetOIndexesResponse {
pub o_indexes: Vec<u64>,
}
#[derive(Clone, Copy, Debug, Deserialize, PartialEq)]
#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq)]
pub enum Status {
#[serde(rename = "OK")]
Ok,
@ -194,7 +195,7 @@ mod monero_serde_hex_block {
{
let hex = String::deserialize(deserializer)?;
let bytes = hex::decode(&hex).map_err(D::Error::custom)?;
let bytes = hex::decode(hex).map_err(D::Error::custom)?;
let mut cursor = Cursor::new(bytes);
let block = monero::Block::consensus_decode(&mut cursor).map_err(D::Error::custom)?;

View File

@ -157,11 +157,17 @@ pub struct Transfer {
pub unsigned_txset: String,
}
#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq)]
#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub struct BlockHeight {
pub height: u32,
}
impl fmt::Display for BlockHeight {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.height)
}
}
#[derive(Clone, Copy, Debug, Deserialize)]
#[serde(from = "CheckTxKeyResponse")]
pub struct CheckTxKey {

View File

@ -14,6 +14,6 @@ rand = "0.7"
curve25519-dalek = "3"
monero-harness = { path = "../monero-harness" }
rand = "0.7"
testcontainers = "0.12"
testcontainers = "0.15"
tokio = { version = "1", features = [ "rt-multi-thread", "time", "macros", "sync", "process", "fs" ] }
tracing-subscriber = { version = "0.2", default-features = false, features = [ "fmt", "ansi", "env-filter", "chrono", "tracing-log" ] }

View File

@ -61,13 +61,12 @@ mod tests {
use monero_harness::image::Monerod;
use monero_rpc::monerod::{Client, GetOutputsOut};
use testcontainers::clients::Cli;
use testcontainers::Docker;
#[tokio::test]
async fn get_outs_for_key_offsets() {
let cli = Cli::default();
let container = cli.run(Monerod::default());
let rpc_client = Client::localhost(container.get_host_port(18081).unwrap()).unwrap();
let container = cli.run(Monerod);
let rpc_client = Client::localhost(container.get_host_port_ipv4(18081)).unwrap();
rpc_client.generateblocks(150, "498AVruCDWgP9Az9LjMm89VWjrBrSZ2W2K3HFBiyzzrRjUJWUcCVxvY1iitfuKoek2FdX6MKGAD9Qb1G1P8QgR5jPmmt3Vj".to_owned()).await.unwrap();
let wallet = Wallet {
client: rpc_client.clone(),

View File

@ -1,4 +1,4 @@
[toolchain]
channel = "1.62"
channel = "1.74" # also update this in the readme, changelog, and github actions
components = ["clippy"]
targets = ["armv7-unknown-linux-gnueabihf"]

View File

@ -1,6 +1,6 @@
[package]
name = "swap"
version = "0.12.1"
version = "0.13.4"
authors = [ "The COMIT guys <hello@comit.network>" ]
edition = "2021"
description = "XMR/BTC trustless atomic swaps."
@ -14,32 +14,37 @@ async-compression = { version = "0.3", features = [ "bzip2", "tokio" ] }
async-trait = "0.1"
atty = "0.2"
backoff = { version = "0.4", features = [ "tokio" ] }
base64 = "0.20"
bdk = "0.25"
base64 = "0.22"
bdk = "0.28"
big-bytes = "1"
bitcoin = { version = "0.29", features = [ "rand", "serde" ] }
bmrng = "0.5"
comfy-table = "6.1"
config = { version = "0.13", default-features = false, features = [ "toml" ] }
conquer-once = "0.3"
comfy-table = "7.1"
config = { version = "0.14", default-features = false, features = [ "toml" ] }
conquer-once = "0.4"
curve25519-dalek = { package = "curve25519-dalek-ng", version = "4" }
data-encoding = "2.3"
dialoguer = "0.10"
data-encoding = "2.6"
dialoguer = "0.11"
digest = "0.10.7"
directories-next = "2"
ecdsa_fun = { git = "https://github.com/LLFourn/secp256kfun", default-features = false, features = [ "libsecp_compat", "serde", "adaptor" ] }
ecdsa_fun = { version = "0.10", default-features = false, features = [ "libsecp_compat", "serde", "adaptor" ] }
ed25519-dalek = "1"
futures = { version = "0.3", default-features = false }
hex = "0.4"
itertools = "0.10"
itertools = "0.13"
jsonrpsee = { version = "0.16.2", features = [ "server" ] }
jsonrpsee-core = "0.16.2"
libp2p = { version = "0.42.2", default-features = false, features = [ "tcp-tokio", "yamux", "mplex", "dns-tokio", "noise", "request-response", "websocket", "ping", "rendezvous", "identify" ] }
monero = { version = "0.12", features = [ "serde_support" ] }
monero-rpc = { path = "../monero-rpc" }
pem = "1.1"
once_cell = "1.20"
pem = "3.0"
proptest = "1"
qrcode = "0.12"
qrcode = "0.14"
rand = "0.8"
rand_chacha = "0.3"
reqwest = { version = "0.11", features = [ "rustls-tls", "stream", "socks" ], default-features = false }
regex = "1.11"
reqwest = { version = "0.12", features = [ "http2", "rustls-tls", "stream", "socks" ], default-features = false }
rust_decimal = { version = "1", features = [ "serde-float" ] }
rust_decimal_macros = "1"
serde = { version = "1", features = [ "derive" ] }
@ -47,24 +52,24 @@ serde_cbor = "0.11"
serde_json = "1"
serde_with = { version = "1", features = [ "macros" ] }
sha2 = "0.10"
sigma_fun = { git = "https://github.com/LLFourn/secp256kfun", default-features = false, features = [ "ed25519", "serde", "secp256k1", "alloc" ] }
sqlx = { version = "0.6", features = [ "sqlite", "runtime-tokio-rustls", "offline" ] }
sigma_fun = { version = "0.7", default-features = false, features = [ "ed25519", "serde", "secp256k1", "alloc" ] }
sqlx = { version = "0.6.3", features = [ "sqlite", "runtime-tokio-rustls", "offline" ] }
structopt = "0.3"
strum = { version = "0.24", features = [ "derive" ] }
strum = { version = "0.26", features = [ "derive" ] }
thiserror = "1"
time = "0.3"
tokio = { version = "1", features = [ "rt-multi-thread", "time", "macros", "sync", "process", "fs", "net" ] }
tokio = { version = "1", features = [ "rt-multi-thread", "time", "macros", "sync", "process", "fs", "net", "parking_lot" ] }
tokio-socks = "0.5"
tokio-tungstenite = { version = "0.15", features = [ "rustls-tls" ] }
tokio-util = { version = "0.7", features = [ "io", "codec" ] }
toml = "0.5"
toml = "0.8"
torut = { version = "0.2", default-features = false, features = [ "v3", "control" ] }
tracing = { version = "0.1", features = [ "attributes" ] }
tracing-appender = "0.2"
tracing-futures = { version = "0.2", features = [ "std-future", "futures-03" ] }
tracing-subscriber = { version = "0.3", default-features = false, features = [ "fmt", "ansi", "env-filter", "time", "tracing-log", "json" ] }
url = { version = "2", features = [ "serde" ] }
uuid = { version = "1.2", features = [ "serde", "v4" ] }
uuid = { version = "1.11", features = [ "serde", "v4" ] }
void = "1"
[target.'cfg(not(windows))'.dependencies]
@ -74,18 +79,20 @@ tokio-tar = "0.3"
zip = "0.5"
[dev-dependencies]
bitcoin-harness = "0.2.2"
bitcoin-harness = { git = "https://github.com/delta1/bitcoin-harness-rs.git", rev = "80cc8d05db2610d8531011be505b7bee2b5cdf9f" }
get-port = "3"
hyper = "0.14"
hyper = "1.5"
jsonrpsee = { version = "0.16.2", features = [ "ws-client" ] }
mockito = "1.5"
monero-harness = { path = "../monero-harness" }
port_check = "0.1"
port_check = "0.2"
proptest = "1"
sequential-test = "0.2.4"
serde_cbor = "0.11"
serial_test = "0.10"
spectral = "0.6"
serial_test = "3.1"
tempfile = "3"
testcontainers = "0.12"
testcontainers = "0.15"
[build-dependencies]
anyhow = "1"
vergen = { version = "7", default-features = false, features = [ "git", "build" ] }
vergen = { version = "8.3", default-features = false, features = [ "build", "git", "git2" ] }

View File

@ -1,9 +1,9 @@
use anyhow::Result;
use vergen::{vergen, Config, SemverKind};
use vergen::EmitBuilder;
fn main() -> Result<()> {
let mut config = Config::default();
*config.git_mut().semver_kind_mut() = SemverKind::Lightweight;
vergen(config)
EmitBuilder::builder()
.git_describe(true, true, None)
.emit()?;
Ok(())
}

View File

@ -0,0 +1,135 @@
-- This migration script modifies swap states to be compatible with the new state structure introduced in PR #1676.
-- The following changes are made:
-- 1. Bob: BtcPunished state now has a new attribute 'state' (type: State6), 'tx_lock_id' (type: string) remains the same
-- 2. Bob: State6 has two new attributes: 'v' (monero viewkey) and 'monero_wallet_restore_blockheight' (type: BlockHeight)
-- State6 is used in BtcPunished, CancelTimelockExpired, BtcCancelled, BtcRefunded states
-- 3. Alice: BtcPunished state now has a new attribute 'state3' (type: State3)
-- Alice: Add new attribute 'state3' (type: State3) to the BtcPunished state by copying it from the BtcLocked state
UPDATE swap_states SET
state = json_replace( -- Replaces "{"Alice":{"Done":"BtcPunished"}}" with "{"Alice": {"Done": "BtcPunished": {"state": <state3 object from BtcLocked>} }}"
state,
'$.Alice.Done',
json_object(
'BtcPunished',
(
SELECT json_extract(states.state, '$.Alice.BtcLocked') -- Read state3 object from BtcLocked
FROM swap_states AS states
WHERE
states.swap_id = swap_states.swap_id -- swap_states.swap_id is id of the BtcPunished row
AND json_extract(states.state, '$.Alice.BtcLocked') IS NOT NULL -- Filters out only the BtcLocked state
)
)
)
WHERE json_extract(state, '$.Alice.Done') = 'BtcPunished'; -- Apply update only to BtcPunished state rows
-- Bob: Add new attribute 'state6' (type: State6) to the BtcPunished state by copying it from the BtcCancelled state
-- and add new State6 attributes 'v' and 'monero_wallet_restore_blockheight' from the BtcLocked state
UPDATE swap_states SET
state = json_replace(
state,
'$.Bob', -- Replace '{"Bob":{"Done": {"BtcPunished": {"tx_lock_id":"..."} }}}' with {"Bob":{"BtcPunished":{"state":{<state6 object>}, "tx_lock_id": "..."}}}
json_object(
'BtcPunished', -- {"Bob":{"BtcPunished":{}}
json_object(
'state', -- {"Bob":{"BtcPunished":{"state": {}}}
json_insert(
( -- object that we insert properties into (original state6 from BtcCancelled state)
SELECT json_extract(states.state, '$.Bob.BtcCancelled') -- Get state6 from BtcCancelled state
FROM swap_states AS states
WHERE
states.swap_id = swap_states.swap_id
AND json_extract(states.state, '$.Bob.BtcCancelled') IS NOT NULL -- Filters out only the BtcCancelled state
),
'$.v', -- {"Bob":{"BtcPunished":{"state": {..., "v": "..."}, "tx_lock_id": "..."}}}
( -- Get v property from BtcLocked state
SELECT json_extract(states.state, '$.Bob.BtcLocked.state3.v')
FROM swap_states AS states
WHERE
states.swap_id = swap_states.swap_id -- swap_states.swap_id is id of the BtcPunished row
AND json_extract(states.state, '$.Bob.BtcLocked') IS NOT NULL -- Filters out only the BtcLocked state
),
'$.monero_wallet_restore_blockheight', -- { "Bob": { "BtcPunished":{"state": {..., "monero_wallet_restore_blockheight": {"height":...}} }, "tx_lock_id": "..."} } }
( -- Get monero_wallet_restore_blockheight property from BtcLocked state
SELECT json_extract(states.state, '$.Bob.BtcLocked.monero_wallet_restore_blockheight')
FROM swap_states AS states
WHERE
states.swap_id = swap_states.swap_id -- swap_states.swap_id is id of the BtcPunished row, states.swap_id is id of the row that we are looking for
AND json_extract(states.state, '$.Bob.BtcLocked') IS NOT NULL -- Filters out only the BtcLocked state
)
),
'tx_lock_id', -- Insert tx_lock_id BtcPunished -> {"Bob": {"Done": {"BtcPunished": {"state":{<state object>}, "tx_lock_id": "..."} } }
json_extract(state, '$.Bob.Done.BtcPunished.tx_lock_id') -- Gets tx_lock_id from original state row
)
)
)
WHERE json_extract(state, '$.Bob.Done.BtcPunished') IS NOT NULL; -- Apply update only to BtcPunished state rows
-- Bob: Add new State6 attributes 'v' and 'monero_wallet_restore_blockheight' to the BtcRefunded state
UPDATE swap_states SET
state = json_insert(
state, -- Object that we insert properties into (original state from the row)
'$.Bob.Done.BtcRefunded.v', -- {"Bob":{"BtcRefunded":{..., "v": "..."}}}
(
SELECT json_extract(states.state, '$.Bob.BtcLocked.state3.v')
FROM swap_states AS states
WHERE
states.swap_id = swap_states.swap_id -- swap_states.swap_id is id of the BtcRefunded row, states.swap_id is id of the row that we are looking for
AND json_extract(states.state, '$.Bob.BtcLocked') IS NOT NULL
),
'$.Bob.Done.BtcRefunded.monero_wallet_restore_blockheight', -- {"Bob":{"BtcRefunded":{..., "monero_wallet_restore_blockheight": {"height":...}} }}
(
SELECT json_extract(states.state, '$.Bob.BtcLocked.monero_wallet_restore_blockheight')
FROM swap_states AS states
WHERE
states.swap_id = swap_states.swap_id
AND json_extract(states.state, '$.Bob.BtcLocked') IS NOT NULL
)
)
WHERE json_extract(state, '$.Bob.Done.BtcRefunded') IS NOT NULL; -- Apply update only to BtcRefunded state rows
-- Bob: Add new State6 attributes 'v' and 'monero_wallet_restore_blockheight' to the BtcCancelled state
UPDATE swap_states SET
state = json_insert(
state,
'$.Bob.BtcCancelled.v',
(
SELECT json_extract(states.state, '$.Bob.BtcLocked.state3.v')
FROM swap_states AS states
WHERE
states.swap_id = swap_states.swap_id
AND json_extract(states.state, '$.Bob.BtcLocked') IS NOT NULL
),
'$.Bob.BtcCancelled.monero_wallet_restore_blockheight',
(
SELECT json_extract(states.state, '$.Bob.BtcLocked.monero_wallet_restore_blockheight')
FROM swap_states AS states
WHERE
states.swap_id = swap_states.swap_id
AND json_extract(states.state, '$.Bob.BtcLocked') IS NOT NULL
)
)
WHERE json_extract(state, '$.Bob.BtcCancelled') IS NOT NULL; -- Apply update only to BtcCancelled state rows
-- Bob: Add new State6 attributes 'v' and 'monero_wallet_restore_blockheight' to the CancelTimelockExpired state
UPDATE swap_states SET
state = json_insert(
state,
'$.Bob.CancelTimelockExpired.v',
(
SELECT json_extract(states.state, '$.Bob.BtcLocked.state3.v')
FROM swap_states AS states
WHERE
states.swap_id = swap_states.swap_id
AND json_extract(states.state, '$.Bob.BtcLocked') IS NOT NULL
),
'$.Bob.CancelTimelockExpired.monero_wallet_restore_blockheight',
(
SELECT json_extract(states.state, '$.Bob.BtcLocked.monero_wallet_restore_blockheight')
FROM swap_states AS states
WHERE
states.swap_id = swap_states.swap_id
AND json_extract(states.state, '$.Bob.BtcLocked') IS NOT NULL
)
)
WHERE json_extract(state, '$.Bob.CancelTimelockExpired') IS NOT NULL; -- Apply update only to CancelTimelockExpired state rows

View File

@ -0,0 +1,5 @@
CREATE TABLE if NOT EXISTS buffered_transfer_proofs
(
swap_id TEXT PRIMARY KEY NOT NULL,
proof TEXT NOT NULL
);

View File

@ -1,7 +1,8 @@
#!/bin/bash
# run this script from the swap dir
# make sure you have sqlx-cli installed: cargo install sqlx-cli
# make sure you have sqlx-cli installed: cargo install --version 0.6.3 sqlx-cli
# it's advised for the sqlx-cli to be the same version as specified in cargo.toml
# this script creates a temporary sqlite database
# then runs the migration scripts to create the tables (migrations folder)

View File

@ -28,6 +28,24 @@
},
"query": "\n insert into peer_addresses (\n peer_id,\n address\n ) values (?, ?);\n "
},
"0d465a17ebbb5761421def759c73cad023c30705d5b41a1399ef79d8d2571d7c": {
"describe": {
"columns": [
{
"name": "start_date",
"ordinal": 0,
"type_info": "Text"
}
],
"nullable": [
true
],
"parameters": {
"Right": 1
}
},
"query": "\n SELECT min(entered_at) as start_date\n FROM swap_states\n WHERE swap_id = ?\n "
},
"1ec38c85e7679b2eb42b3df75d9098772ce44fdb8db3012d3c2410d828b74157": {
"describe": {
"columns": [
@ -62,6 +80,30 @@
},
"query": "\n insert into peers (\n swap_id,\n peer_id\n ) values (?, ?);\n "
},
"3f2bfdd2d134586ccad22171cd85a465800fc5c4fdaf191d206974e530240c87": {
"describe": {
"columns": [
{
"name": "swap_id",
"ordinal": 0,
"type_info": "Text"
},
{
"name": "state",
"ordinal": 1,
"type_info": "Text"
}
],
"nullable": [
false,
false
],
"parameters": {
"Right": 0
}
},
"query": "\n SELECT swap_id, state\n FROM swap_states\n "
},
"50a5764546f69c118fa0b64120da50f51073d36257d49768de99ff863e3511e0": {
"describe": {
"columns": [],
@ -90,24 +132,6 @@
},
"query": "\n SELECT state\n FROM swap_states\n WHERE swap_id = ?\n ORDER BY id desc\n LIMIT 1;\n\n "
},
"a0eb85d04ee3842c52291dad4d225941d1141af735922fcbc665868997fce304": {
"describe": {
"columns": [
{
"name": "address",
"ordinal": 0,
"type_info": "Text"
}
],
"nullable": [
false
],
"parameters": {
"Right": 1
}
},
"query": "\n SELECT address\n FROM peer_addresses\n WHERE peer_id = ?\n "
},
"b703032b4ddc627a1124817477e7a8e5014bdc694c36a14053ef3bb2fc0c69b0": {
"describe": {
"columns": [],
@ -135,5 +159,69 @@
}
},
"query": "\n SELECT address\n FROM monero_addresses\n WHERE swap_id = ?\n "
},
"d78acba5eb8563826dd190e0886aa665aae3c6f1e312ee444e65df1c95afe8b2": {
"describe": {
"columns": [
{
"name": "address",
"ordinal": 0,
"type_info": "Text"
}
],
"nullable": [
false
],
"parameters": {
"Right": 1
}
},
"query": "\n SELECT DISTINCT address\n FROM peer_addresses\n WHERE peer_id = ?\n "
},
"e05620f420f8c1022971eeb66a803323a8cf258cbebb2834e3f7cf8f812fa646": {
"describe": {
"columns": [
{
"name": "state",
"ordinal": 0,
"type_info": "Text"
}
],
"nullable": [
false
],
"parameters": {
"Right": 1
}
},
"query": "\n SELECT state\n FROM swap_states\n WHERE swap_id = ?\n "
},
"e36c287aa98ae80ad4b6bb6f7e4b59cced041406a9db71da827b09f0d3bacfd6": {
"describe": {
"columns": [],
"nullable": [],
"parameters": {
"Right": 2
}
},
"query": "\n INSERT INTO buffered_transfer_proofs (\n swap_id,\n proof\n ) VALUES (?, ?);\n "
},
"e9d422daf774d099fcbde6c4cda35821da948bd86cc57798b4d8375baf0b51ae": {
"describe": {
"columns": [
{
"name": "proof",
"ordinal": 0,
"type_info": "Text"
}
],
"nullable": [
false
],
"parameters": {
"Right": 1
}
},
"query": "\n SELECT proof\n FROM buffered_transfer_proofs\n WHERE swap_id = ?\n "
}
}

478
swap/src/api.rs Normal file
View File

@ -0,0 +1,478 @@
pub mod request;
use crate::cli::command::{Bitcoin, Monero, Tor};
use crate::common::tracing_util::Format;
use crate::database::{open_db, AccessMode};
use crate::env::{Config as EnvConfig, GetConfig, Mainnet, Testnet};
use crate::fs::system_data_dir;
use crate::network::rendezvous::XmrBtcNamespace;
use crate::protocol::Database;
use crate::seed::Seed;
use crate::{bitcoin, common, monero};
use anyhow::{bail, Context as AnyContext, Error, Result};
use futures::future::try_join_all;
use std::fmt;
use std::future::Future;
use std::net::SocketAddr;
use std::path::PathBuf;
use std::sync::{Arc, Once};
use tokio::sync::{broadcast, broadcast::Sender, Mutex, RwLock};
use tokio::task::JoinHandle;
use tracing::level_filters::LevelFilter;
use tracing::Level;
use url::Url;
static START: Once = Once::new();
#[derive(Clone, PartialEq, Debug)]
pub struct Config {
tor_socks5_port: u16,
namespace: XmrBtcNamespace,
server_address: Option<SocketAddr>,
pub env_config: EnvConfig,
seed: Option<Seed>,
debug: bool,
json: bool,
data_dir: PathBuf,
is_testnet: bool,
}
use uuid::Uuid;
#[derive(Default)]
pub struct PendingTaskList(Mutex<Vec<JoinHandle<()>>>);
impl PendingTaskList {
pub async fn spawn<F, T>(&self, future: F)
where
F: Future<Output = T> + Send + 'static,
T: Send + 'static,
{
let handle = tokio::spawn(async move {
let _ = future.await;
});
self.0.lock().await.push(handle);
}
pub async fn wait_for_tasks(&self) -> Result<()> {
let tasks = {
// Scope for the lock, to avoid holding it for the entire duration of the async block
let mut guard = self.0.lock().await;
guard.drain(..).collect::<Vec<_>>()
};
try_join_all(tasks).await?;
Ok(())
}
}
pub struct SwapLock {
current_swap: RwLock<Option<Uuid>>,
suspension_trigger: Sender<()>,
}
impl SwapLock {
pub fn new() -> Self {
let (suspension_trigger, _) = broadcast::channel(10);
SwapLock {
current_swap: RwLock::new(None),
suspension_trigger,
}
}
pub async fn listen_for_swap_force_suspension(&self) -> Result<(), Error> {
let mut listener = self.suspension_trigger.subscribe();
let event = listener.recv().await;
match event {
Ok(_) => Ok(()),
Err(e) => {
tracing::error!("Error receiving swap suspension signal: {}", e);
bail!(e)
}
}
}
pub async fn acquire_swap_lock(&self, swap_id: Uuid) -> Result<(), Error> {
let mut current_swap = self.current_swap.write().await;
if current_swap.is_some() {
bail!("There already exists an active swap lock");
}
tracing::debug!(swap_id = %swap_id, "Acquiring swap lock");
*current_swap = Some(swap_id);
Ok(())
}
pub async fn get_current_swap_id(&self) -> Option<Uuid> {
*self.current_swap.read().await
}
/// Sends a signal to suspend all ongoing swap processes.
///
/// This function performs the following steps:
/// 1. Triggers the suspension by sending a unit `()` signal to all listeners via `self.suspension_trigger`.
/// 2. Polls the `current_swap` state every 50 milliseconds to check if it has been set to `None`, indicating that the swap processes have been suspended and the lock released.
/// 3. If the lock is not released within 10 seconds, the function returns an error.
///
/// If we send a suspend signal while no swap is in progress, the function will not fail, but will return immediately.
///
/// # Returns
/// - `Ok(())` if the swap lock is successfully released.
/// - `Err(Error)` if the function times out waiting for the swap lock to be released.
///
/// # Notes
/// The 50ms polling interval is considered negligible overhead compared to the typical time required to suspend ongoing swap processes.
pub async fn send_suspend_signal(&self) -> Result<(), Error> {
const TIMEOUT: u64 = 10_000;
const INTERVAL: u64 = 50;
let _ = self.suspension_trigger.send(())?;
for _ in 0..(TIMEOUT / INTERVAL) {
if self.get_current_swap_id().await.is_none() {
return Ok(());
}
tokio::time::sleep(tokio::time::Duration::from_millis(INTERVAL)).await;
}
bail!("Timed out waiting for swap lock to be released");
}
pub async fn release_swap_lock(&self) -> Result<Uuid, Error> {
let mut current_swap = self.current_swap.write().await;
if let Some(swap_id) = current_swap.as_ref() {
tracing::debug!(swap_id = %swap_id, "Releasing swap lock");
let prev_swap_id = *swap_id;
*current_swap = None;
drop(current_swap);
Ok(prev_swap_id)
} else {
bail!("There is no current swap lock to release");
}
}
}
impl Default for SwapLock {
fn default() -> Self {
Self::new()
}
}
// workaround for warning over monero_rpc_process which we must own but not read
#[allow(dead_code)]
pub struct Context {
pub db: Arc<dyn Database + Send + Sync>,
bitcoin_wallet: Option<Arc<bitcoin::Wallet>>,
monero_wallet: Option<Arc<monero::Wallet>>,
monero_rpc_process: Option<monero::WalletRpcProcess>,
pub swap_lock: Arc<SwapLock>,
pub config: Config,
pub tasks: Arc<PendingTaskList>,
pub is_daemon: bool,
}
#[allow(clippy::too_many_arguments)]
impl Context {
pub async fn build(
bitcoin: Option<Bitcoin>,
monero: Option<Monero>,
tor: Option<Tor>,
data: Option<PathBuf>,
is_testnet: bool,
debug: bool,
json: bool,
server_address: Option<SocketAddr>,
is_daemon: bool,
) -> Result<Context> {
let data_dir = data::data_dir_from(data, is_testnet)?;
let env_config = env_config_from(is_testnet);
let format = if json { Format::Json } else { Format::Raw };
let level_filter = if debug {
LevelFilter::from_level(Level::DEBUG)
} else {
LevelFilter::from_level(Level::INFO)
};
START.call_once(|| {
let _ = common::tracing_util::init(level_filter, format, data_dir.join("logs"));
});
let seed = Seed::from_file_or_generate(data_dir.as_path())
.context("Failed to read seed in file")?;
let bitcoin_wallet = {
if let Some(bitcoin) = bitcoin {
let (bitcoin_electrum_rpc_url, bitcoin_target_block) =
bitcoin.apply_defaults(is_testnet)?;
Some(Arc::new(
init_bitcoin_wallet(
bitcoin_electrum_rpc_url,
&seed,
data_dir.clone(),
env_config,
bitcoin_target_block,
)
.await?,
))
} else {
None
}
};
let (monero_wallet, monero_rpc_process) = {
if let Some(monero) = monero {
let monero_daemon_address = monero.apply_defaults(is_testnet);
let (wlt, prc) =
init_monero_wallet(data_dir.clone(), monero_daemon_address, env_config).await?;
(Some(Arc::new(wlt)), Some(prc))
} else {
(None, None)
}
};
let tor_socks5_port = tor.map_or(9050, |tor| tor.tor_socks5_port);
let context = Context {
db: open_db(data_dir.join("sqlite"), AccessMode::ReadWrite).await?,
bitcoin_wallet,
monero_wallet,
monero_rpc_process,
config: Config {
tor_socks5_port,
namespace: XmrBtcNamespace::from_is_testnet(is_testnet),
env_config,
seed: Some(seed),
server_address,
debug,
json,
is_testnet,
data_dir,
},
swap_lock: Arc::new(SwapLock::new()),
tasks: Arc::new(PendingTaskList::default()),
is_daemon,
};
Ok(context)
}
pub async fn for_harness(
seed: Seed,
env_config: EnvConfig,
db_path: PathBuf,
bob_bitcoin_wallet: Arc<bitcoin::Wallet>,
bob_monero_wallet: Arc<monero::Wallet>,
) -> Self {
let config = Config::for_harness(seed, env_config);
Self {
bitcoin_wallet: Some(bob_bitcoin_wallet),
monero_wallet: Some(bob_monero_wallet),
config,
db: open_db(db_path, AccessMode::ReadWrite)
.await
.expect("Could not open sqlite database"),
monero_rpc_process: None,
swap_lock: Arc::new(SwapLock::new()),
tasks: Arc::new(PendingTaskList::default()),
is_daemon: true,
}
}
pub fn bitcoin_wallet(&self) -> Option<Arc<bitcoin::Wallet>> {
self.bitcoin_wallet.clone()
}
}
impl fmt::Debug for Context {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "")
}
}
async fn init_bitcoin_wallet(
electrum_rpc_url: Url,
seed: &Seed,
data_dir: PathBuf,
env_config: EnvConfig,
bitcoin_target_block: usize,
) -> Result<bitcoin::Wallet> {
let wallet_dir = data_dir.join("wallet");
let wallet = bitcoin::Wallet::new(
electrum_rpc_url.clone(),
&wallet_dir,
seed.derive_extended_private_key(env_config.bitcoin_network)?,
env_config,
bitcoin_target_block,
)
.await
.context("Failed to initialize Bitcoin wallet")?;
wallet.sync().await?;
Ok(wallet)
}
async fn init_monero_wallet(
data_dir: PathBuf,
monero_daemon_address: String,
env_config: EnvConfig,
) -> Result<(monero::Wallet, monero::WalletRpcProcess)> {
let network = env_config.monero_network;
const MONERO_BLOCKCHAIN_MONITORING_WALLET_NAME: &str = "swap-tool-blockchain-monitoring-wallet";
let monero_wallet_rpc = monero::WalletRpc::new(data_dir.join("monero")).await?;
let monero_wallet_rpc_process = monero_wallet_rpc
.run(network, Some(monero_daemon_address))
.await?;
let monero_wallet = monero::Wallet::open_or_create(
monero_wallet_rpc_process.endpoint(),
MONERO_BLOCKCHAIN_MONITORING_WALLET_NAME.to_string(),
env_config,
)
.await?;
Ok((monero_wallet, monero_wallet_rpc_process))
}
mod data {
use super::*;
pub fn data_dir_from(arg_dir: Option<PathBuf>, testnet: bool) -> Result<PathBuf> {
let base_dir = match arg_dir {
Some(custom_base_dir) => custom_base_dir,
None => os_default()?,
};
let sub_directory = if testnet { "testnet" } else { "mainnet" };
Ok(base_dir.join(sub_directory))
}
fn os_default() -> Result<PathBuf> {
Ok(system_data_dir()?.join("cli"))
}
}
fn env_config_from(testnet: bool) -> EnvConfig {
if testnet {
Testnet::get_config()
} else {
Mainnet::get_config()
}
}
impl Config {
pub fn for_harness(seed: Seed, env_config: EnvConfig) -> Self {
let data_dir = data::data_dir_from(None, false).expect("Could not find data directory");
Self {
tor_socks5_port: 9050,
namespace: XmrBtcNamespace::from_is_testnet(false),
server_address: None,
env_config,
seed: Some(seed),
debug: false,
json: false,
is_testnet: false,
data_dir,
}
}
}
#[cfg(test)]
pub mod api_test {
use super::*;
use crate::api::request::{Method, Request};
use libp2p::Multiaddr;
use std::str::FromStr;
use uuid::Uuid;
pub const MULTI_ADDRESS: &str =
"/ip4/127.0.0.1/tcp/9939/p2p/12D3KooWCdMKjesXMJz1SiZ7HgotrxuqhQJbP5sgBm2BwP1cqThi";
pub const MONERO_STAGENET_ADDRESS: &str = "53gEuGZUhP9JMEBZoGaFNzhwEgiG7hwQdMCqFxiyiTeFPmkbt1mAoNybEUvYBKHcnrSgxnVWgZsTvRBaHBNXPa8tHiCU51a";
pub const BITCOIN_TESTNET_ADDRESS: &str = "tb1qr3em6k3gfnyl8r7q0v7t4tlnyxzgxma3lressv";
pub const MONERO_MAINNET_ADDRESS: &str = "44Ato7HveWidJYUAVw5QffEcEtSH1DwzSP3FPPkHxNAS4LX9CqgucphTisH978FLHE34YNEx7FcbBfQLQUU8m3NUC4VqsRa";
pub const BITCOIN_MAINNET_ADDRESS: &str = "bc1qe4epnfklcaa0mun26yz5g8k24em5u9f92hy325";
pub const SWAP_ID: &str = "ea030832-3be9-454f-bb98-5ea9a788406b";
impl Config {
pub fn default(
is_testnet: bool,
data_dir: Option<PathBuf>,
debug: bool,
json: bool,
) -> Self {
let data_dir = data::data_dir_from(data_dir, is_testnet).unwrap();
let seed = Seed::from_file_or_generate(data_dir.as_path()).unwrap();
let env_config = env_config_from(is_testnet);
Self {
tor_socks5_port: 9050,
namespace: XmrBtcNamespace::from_is_testnet(is_testnet),
server_address: None,
env_config,
seed: Some(seed),
debug,
json,
is_testnet,
data_dir,
}
}
}
impl Request {
pub fn buy_xmr(is_testnet: bool) -> Request {
let seller = Multiaddr::from_str(MULTI_ADDRESS).unwrap();
let bitcoin_change_address = {
if is_testnet {
bitcoin::Address::from_str(BITCOIN_TESTNET_ADDRESS).unwrap()
} else {
bitcoin::Address::from_str(BITCOIN_MAINNET_ADDRESS).unwrap()
}
};
let monero_receive_address = {
if is_testnet {
monero::Address::from_str(MONERO_STAGENET_ADDRESS).unwrap()
} else {
monero::Address::from_str(MONERO_MAINNET_ADDRESS).unwrap()
}
};
Request::new(Method::BuyXmr {
seller,
bitcoin_change_address: Some(bitcoin_change_address),
monero_receive_address,
swap_id: Uuid::new_v4(),
})
}
pub fn resume() -> Request {
Request::new(Method::Resume {
swap_id: Uuid::from_str(SWAP_ID).unwrap(),
})
}
pub fn cancel() -> Request {
Request::new(Method::CancelAndRefund {
swap_id: Uuid::from_str(SWAP_ID).unwrap(),
})
}
pub fn refund() -> Request {
Request::new(Method::CancelAndRefund {
swap_id: Uuid::from_str(SWAP_ID).unwrap(),
})
}
}
}

1069
swap/src/api/request.rs Normal file

File diff suppressed because it is too large Load Diff

View File

@ -4,10 +4,10 @@ mod event_loop;
mod network;
mod rate;
mod recovery;
pub mod tracing;
pub use event_loop::{EventLoop, EventLoopHandle, FixedRate, KrakenRate, LatestRate};
pub use network::behaviour::{Behaviour, OutEvent};
pub use network::rendezvous::RendezvousNode;
pub use network::transport;
pub use rate::Rate;
pub use recovery::cancel::cancel;
@ -18,4 +18,4 @@ pub use recovery::safely_abort::safely_abort;
pub use recovery::{cancel, refund};
#[cfg(test)]
pub use network::rendezous;
pub use network::rendezvous;

View File

@ -19,7 +19,6 @@ where
let args = RawArguments::from_clap(&matches);
let json = args.json;
let disable_timestamp = args.disable_timestamp;
let testnet = args.testnet;
let config = args.config;
let command: RawCommand = args.cmd;
@ -28,23 +27,35 @@ where
RawCommand::Start { resume_only } => Arguments {
testnet,
json,
disable_timestamp,
config_path: config_path(config, testnet)?,
env_config: env_config(testnet),
cmd: Command::Start { resume_only },
},
RawCommand::History => Arguments {
RawCommand::History { only_unfinished } => Arguments {
testnet,
json,
disable_timestamp,
config_path: config_path(config, testnet)?,
env_config: env_config(testnet),
cmd: Command::History,
cmd: Command::History { only_unfinished },
},
RawCommand::Logs {
logs_dir: dir_path,
swap_id,
redact,
} => Arguments {
testnet,
json,
config_path: config_path(config, testnet)?,
env_config: env_config(testnet),
cmd: Command::Logs {
logs_dir: dir_path,
swap_id,
redact,
},
},
RawCommand::WithdrawBtc { amount, address } => Arguments {
testnet,
json,
disable_timestamp,
config_path: config_path(config, testnet)?,
env_config: env_config(testnet),
cmd: Command::WithdrawBtc {
@ -55,7 +66,6 @@ where
RawCommand::Balance => Arguments {
testnet,
json,
disable_timestamp,
config_path: config_path(config, testnet)?,
env_config: env_config(testnet),
cmd: Command::Balance,
@ -63,7 +73,6 @@ where
RawCommand::Config => Arguments {
testnet,
json,
disable_timestamp,
config_path: config_path(config, testnet)?,
env_config: env_config(testnet),
cmd: Command::Config,
@ -71,7 +80,6 @@ where
RawCommand::ExportBitcoinWallet => Arguments {
testnet,
json,
disable_timestamp,
config_path: config_path(config, testnet)?,
env_config: env_config(testnet),
cmd: Command::ExportBitcoinWallet,
@ -82,7 +90,6 @@ where
}) => Arguments {
testnet,
json,
disable_timestamp,
config_path: config_path(config, testnet)?,
env_config: env_config(testnet),
cmd: Command::Redeem {
@ -96,7 +103,6 @@ where
}) => Arguments {
testnet,
json,
disable_timestamp,
config_path: config_path(config, testnet)?,
env_config: env_config(testnet),
cmd: Command::Cancel { swap_id },
@ -106,7 +112,6 @@ where
}) => Arguments {
testnet,
json,
disable_timestamp,
config_path: config_path(config, testnet)?,
env_config: env_config(testnet),
cmd: Command::Refund { swap_id },
@ -116,7 +121,6 @@ where
}) => Arguments {
testnet,
json,
disable_timestamp,
config_path: config_path(config, testnet)?,
env_config: env_config(testnet),
cmd: Command::Punish { swap_id },
@ -124,7 +128,6 @@ where
RawCommand::ManualRecovery(ManualRecovery::SafelyAbort { swap_id }) => Arguments {
testnet,
json,
disable_timestamp,
config_path: config_path(config, testnet)?,
env_config: env_config(testnet),
cmd: Command::SafelyAbort { swap_id },
@ -171,7 +174,7 @@ fn env_config(is_testnet: bool) -> env::Config {
}
}
#[derive(thiserror::Error, Debug, Clone, Copy, PartialEq, Serialize)]
#[derive(thiserror::Error, Debug, Clone, Copy, PartialEq, Eq, Serialize)]
#[error("Invalid Bitcoin address provided, expected address on network {expected:?} but address provided is on {actual:?}")]
pub struct BitcoinAddressNetworkMismatch {
#[serde(with = "crate::bitcoin::network")]
@ -180,23 +183,29 @@ pub struct BitcoinAddressNetworkMismatch {
actual: bitcoin::Network,
}
#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Eq)]
pub struct Arguments {
pub testnet: bool,
pub json: bool,
pub disable_timestamp: bool,
pub config_path: PathBuf,
pub env_config: env::Config,
pub cmd: Command,
}
#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Eq)]
pub enum Command {
Start {
resume_only: bool,
},
History,
History {
only_unfinished: bool,
},
Config,
Logs {
logs_dir: Option<PathBuf>,
swap_id: Option<Uuid>,
redact: bool,
},
WithdrawBtc {
amount: Option<Amount>,
address: Address,
@ -226,7 +235,7 @@ pub enum Command {
name = "asb",
about = "Automated Swap Backend for swapping XMR for BTC",
author,
version = env!("VERGEN_GIT_SEMVER_LIGHTWEIGHT")
version = env!("VERGEN_GIT_DESCRIBE")
)]
pub struct RawArguments {
#[structopt(long, help = "Swap on testnet")]
@ -268,8 +277,33 @@ pub enum RawCommand {
)]
resume_only: bool,
},
#[structopt(about = "Prints all logging messages issued in the past.")]
Logs {
#[structopt(
short = "d",
help = "Print the logs from this directory instead of the default one."
)]
logs_dir: Option<PathBuf>,
#[structopt(
help = "Redact swap-ids, Bitcoin and Monero addresses.",
long = "redact"
)]
redact: bool,
#[structopt(
long = "swap-id",
help = "Filter for logs concerning this swap.",
long_help = "This checks whether each logging message contains the swap id. Some messages might be skipped when they don't contain the swap id even though they're relevant."
)]
swap_id: Option<Uuid>,
},
#[structopt(about = "Prints swap-id and the state of each swap ever made.")]
History,
History {
#[structopt(
long = "only-unfinished",
help = "If set, only unfinished swaps will be printed."
)]
only_unfinished: bool,
},
#[structopt(about = "Prints the current config")]
Config,
#[structopt(about = "Allows withdrawing BTC from the internal Bitcoin wallet.")]
@ -366,7 +400,6 @@ mod tests {
let expected_args = Arguments {
testnet: false,
json: false,
disable_timestamp: false,
config_path: default_mainnet_conf_path,
env_config: mainnet_env_config,
cmd: Command::Start { resume_only: false },
@ -384,10 +417,11 @@ mod tests {
let expected_args = Arguments {
testnet: false,
json: false,
disable_timestamp: false,
config_path: default_mainnet_conf_path,
env_config: mainnet_env_config,
cmd: Command::History,
cmd: Command::History {
only_unfinished: false,
},
};
let args = parse_args(raw_ars).unwrap();
assert_eq!(expected_args, args);
@ -402,7 +436,6 @@ mod tests {
let expected_args = Arguments {
testnet: false,
json: false,
disable_timestamp: false,
config_path: default_mainnet_conf_path,
env_config: mainnet_env_config,
cmd: Command::Balance,
@ -424,7 +457,6 @@ mod tests {
let expected_args = Arguments {
testnet: false,
json: false,
disable_timestamp: false,
config_path: default_mainnet_conf_path,
env_config: mainnet_env_config,
cmd: Command::WithdrawBtc {
@ -451,7 +483,6 @@ mod tests {
let expected_args = Arguments {
testnet: false,
json: false,
disable_timestamp: false,
config_path: default_mainnet_conf_path,
env_config: mainnet_env_config,
cmd: Command::Cancel {
@ -477,7 +508,6 @@ mod tests {
let expected_args = Arguments {
testnet: false,
json: false,
disable_timestamp: false,
config_path: default_mainnet_conf_path,
env_config: mainnet_env_config,
cmd: Command::Refund {
@ -503,7 +533,6 @@ mod tests {
let expected_args = Arguments {
testnet: false,
json: false,
disable_timestamp: false,
config_path: default_mainnet_conf_path,
env_config: mainnet_env_config,
cmd: Command::Punish {
@ -529,7 +558,6 @@ mod tests {
let expected_args = Arguments {
testnet: false,
json: false,
disable_timestamp: false,
config_path: default_mainnet_conf_path,
env_config: mainnet_env_config,
cmd: Command::SafelyAbort {
@ -549,7 +577,6 @@ mod tests {
let expected_args = Arguments {
testnet: true,
json: false,
disable_timestamp: false,
config_path: default_testnet_conf_path,
env_config: testnet_env_config,
cmd: Command::Start { resume_only: false },
@ -567,10 +594,11 @@ mod tests {
let expected_args = Arguments {
testnet: true,
json: false,
disable_timestamp: false,
config_path: default_testnet_conf_path,
env_config: testnet_env_config,
cmd: Command::History,
cmd: Command::History {
only_unfinished: false,
},
};
let args = parse_args(raw_ars).unwrap();
assert_eq!(expected_args, args);
@ -585,7 +613,6 @@ mod tests {
let expected_args = Arguments {
testnet: true,
json: false,
disable_timestamp: false,
config_path: default_testnet_conf_path,
env_config: testnet_env_config,
cmd: Command::Balance,
@ -609,7 +636,6 @@ mod tests {
let expected_args = Arguments {
testnet: true,
json: false,
disable_timestamp: false,
config_path: default_testnet_conf_path,
env_config: testnet_env_config,
cmd: Command::WithdrawBtc {
@ -636,7 +662,6 @@ mod tests {
let expected_args = Arguments {
testnet: true,
json: false,
disable_timestamp: false,
config_path: default_testnet_conf_path,
env_config: testnet_env_config,
cmd: Command::Cancel {
@ -663,7 +688,6 @@ mod tests {
let expected_args = Arguments {
testnet: true,
json: false,
disable_timestamp: false,
config_path: default_testnet_conf_path,
env_config: testnet_env_config,
cmd: Command::Refund {
@ -690,7 +714,6 @@ mod tests {
let expected_args = Arguments {
testnet: true,
json: false,
disable_timestamp: false,
config_path: default_testnet_conf_path,
env_config: testnet_env_config,
cmd: Command::Punish {
@ -717,7 +740,6 @@ mod tests {
let expected_args = Arguments {
testnet: true,
json: false,
disable_timestamp: false,
config_path: default_testnet_conf_path,
env_config: testnet_env_config,
cmd: Command::SafelyAbort {
@ -737,7 +759,6 @@ mod tests {
let expected_args = Arguments {
testnet: false,
json: false,
disable_timestamp: true,
config_path: default_mainnet_conf_path,
env_config: mainnet_env_config,
cmd: Command::Start { resume_only: false },

View File

@ -84,7 +84,7 @@ const DEFAULT_MIN_BUY_AMOUNT: f64 = 0.002f64;
const DEFAULT_MAX_BUY_AMOUNT: f64 = 0.02f64;
const DEFAULT_SPREAD: f64 = 0.02f64;
#[derive(Clone, Debug, serde::Serialize, serde::Deserialize, PartialEq)]
#[derive(Clone, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq)]
#[serde(deny_unknown_fields)]
pub struct Config {
pub data: Data,
@ -123,19 +123,19 @@ impl TryFrom<config::Config> for Config {
}
}
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Data {
pub dir: PathBuf,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Network {
#[serde(deserialize_with = "addr_list::deserialize")]
pub listen: Vec<Multiaddr>,
#[serde(default)]
pub rendezvous_point: Option<Multiaddr>,
#[serde(default, deserialize_with = "addr_list::deserialize")]
pub rendezvous_point: Vec<Multiaddr>,
#[serde(default, deserialize_with = "addr_list::deserialize")]
pub external_addresses: Vec<Multiaddr>,
}
@ -156,7 +156,7 @@ mod addr_list {
let list: Result<Vec<_>, _> = s
.split(',')
.filter(|s| !s.is_empty())
.map(|s| s.parse().map_err(de::Error::custom))
.map(|s| s.trim().parse().map_err(de::Error::custom))
.collect();
Ok(list?)
}
@ -165,7 +165,7 @@ mod addr_list {
.iter()
.map(|v| {
if let Value::String(s) = v {
s.parse().map_err(de::Error::custom)
s.trim().parse().map_err(de::Error::custom)
} else {
Err(de::Error::custom("expected a string"))
}
@ -181,7 +181,7 @@ mod addr_list {
}
}
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Bitcoin {
pub electrum_rpc_url: Url,
@ -191,7 +191,7 @@ pub struct Bitcoin {
pub network: bitcoin::Network,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Monero {
pub wallet_rpc_url: Url,
@ -200,14 +200,14 @@ pub struct Monero {
pub network: monero::Network,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct TorConf {
pub control_port: u16,
pub socks5_port: u16,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Maker {
#[serde(with = "::bitcoin::util::amount::serde::as_btc")]
@ -347,10 +347,27 @@ pub fn query_user_for_initial_config(testnet: bool) -> Result<Config> {
}
let ask_spread = Decimal::from_f64(ask_spread).context("Unable to parse spread")?;
let rendezvous_point = Input::<Multiaddr>::with_theme(&ColorfulTheme::default())
.with_prompt("Do you want to advertise your ASB instance with a rendezvous node? Enter an empty string if not.")
.allow_empty(true)
.interact_text()?;
let mut number = 1;
let mut done = false;
let mut rendezvous_points = Vec::new();
println!("ASB can register with multiple rendezvous nodes for discoverability. This can also be edited in the config file later.");
while !done {
let prompt = format!(
"Enter the address for rendezvous node ({number}). Or just hit Enter to continue."
);
let rendezvous_addr = Input::<Multiaddr>::with_theme(&ColorfulTheme::default())
.with_prompt(prompt)
.allow_empty(true)
.interact_text()?;
if rendezvous_addr.is_empty() {
done = true;
} else if rendezvous_points.contains(&rendezvous_addr) {
println!("That rendezvous address is already in the list.");
} else {
rendezvous_points.push(rendezvous_addr);
number += 1;
}
}
println!();
@ -358,11 +375,7 @@ pub fn query_user_for_initial_config(testnet: bool) -> Result<Config> {
data: Data { dir: data_dir },
network: Network {
listen: listen_addresses,
rendezvous_point: if rendezvous_point.is_empty() {
None
} else {
Some(rendezvous_point)
},
rendezvous_point: rendezvous_points, // keeping the singular key name for backcompat
external_addresses: vec![],
},
bitcoin: Bitcoin {
@ -417,7 +430,7 @@ mod tests {
},
network: Network {
listen: vec![defaults.listen_address_tcp, defaults.listen_address_ws],
rendezvous_point: None,
rendezvous_point: vec![],
external_addresses: vec![],
},
monero: Monero {
@ -461,7 +474,7 @@ mod tests {
},
network: Network {
listen: vec![defaults.listen_address_tcp, defaults.listen_address_ws],
rendezvous_point: None,
rendezvous_point: vec![],
external_addresses: vec![],
},
monero: Monero {
@ -515,7 +528,7 @@ mod tests {
},
network: Network {
listen,
rendezvous_point: None,
rendezvous_point: vec![],
external_addresses,
},
monero: Monero {

View File

@ -1,5 +1,7 @@
use crate::asb::{Behaviour, OutEvent, Rate};
use crate::monero::Amount;
use crate::network::cooperative_xmr_redeem_after_punish::CooperativeXmrRedeemRejectReason;
use crate::network::cooperative_xmr_redeem_after_punish::Response::{Fullfilled, Rejected};
use crate::network::quote::BidQuote;
use crate::network::swap_setup::alice::WalletSnapshot;
use crate::network::transfer_proof;
@ -253,8 +255,61 @@ where
channel
}.boxed());
}
SwarmEvent::Behaviour(OutEvent::Rendezvous(libp2p::rendezvous::client::Event::Registered { .. })) => {
tracing::info!("Successfully registered with rendezvous node");
SwarmEvent::Behaviour(OutEvent::CooperativeXmrRedeemRequested { swap_id, channel, peer }) => {
let swap_peer = self.db.get_peer_id(swap_id).await;
let swap_state = self.db.get_state(swap_id).await;
let (swap_peer, swap_state) = match (swap_peer, swap_state) {
(Ok(peer), Ok(state)) => (peer, state),
_ => {
tracing::warn!(
swap_id = %swap_id,
received_from = %peer,
reason = "swap not found",
"Rejecting cooperative XMR redeem request"
);
if self.swarm.behaviour_mut().cooperative_xmr_redeem.send_response(channel, Rejected { swap_id, reason: CooperativeXmrRedeemRejectReason::UnknownSwap }).is_err() {
tracing::error!(swap_id = %swap_id, "Failed to reject cooperative XMR redeem request");
}
continue;
}
};
if swap_peer != peer {
tracing::warn!(
swap_id = %swap_id,
received_from = %peer,
expected_from = %swap_peer,
reason = "unexpected peer",
"Rejecting cooperative XMR redeem request"
);
if self.swarm.behaviour_mut().cooperative_xmr_redeem.send_response(channel, Rejected { swap_id, reason: CooperativeXmrRedeemRejectReason::MaliciousRequest }).is_err() {
tracing::error!(swap_id = %swap_id, "Failed to reject cooperative XMR redeem request");
}
continue;
}
let State::Alice (AliceState::BtcPunished { state3 }) = swap_state else {
tracing::warn!(
swap_id = %swap_id,
reason = "swap is in invalid state",
"Rejecting cooperative XMR redeem request"
);
if self.swarm.behaviour_mut().cooperative_xmr_redeem.send_response(channel, Rejected { swap_id, reason: CooperativeXmrRedeemRejectReason::SwapInvalidState }).is_err() {
tracing::error!(swap_id = %swap_id, "Failed to reject cooperative XMR redeem request");
}
continue;
};
if self.swarm.behaviour_mut().cooperative_xmr_redeem.send_response(channel, Fullfilled { swap_id, s_a: state3.s_a }).is_err() {
tracing::error!(peer = %peer, "Failed to respond to cooperative XMR redeem request");
continue;
}
tracing::info!(swap_id = %swap_id, peer = %peer, "Fullfilled cooperative XMR redeem request");
}
SwarmEvent::Behaviour(OutEvent::Rendezvous(libp2p::rendezvous::client::Event::Registered { rendezvous_node, ttl, namespace })) => {
tracing::info!("Successfully registered with rendezvous node: {} with namespace: {} and TTL: {:?}", rendezvous_node, namespace, ttl);
}
SwarmEvent::Behaviour(OutEvent::Rendezvous(libp2p::rendezvous::client::Event::RegisterFailed(error))) => {
tracing::error!("Registration with rendezvous node failed: {:?}", error);
@ -279,10 +334,10 @@ where
SwarmEvent::IncomingConnectionError { send_back_addr: address, error, .. } => {
tracing::warn!(%address, "Failed to set up connection with peer: {:#}", error);
}
SwarmEvent::ConnectionClosed { peer_id: peer, num_established, endpoint, cause: Some(error) } if num_established == 0 => {
SwarmEvent::ConnectionClosed { peer_id: peer, num_established: 0, endpoint, cause: Some(error) } => {
tracing::debug!(%peer, address = %endpoint.get_remote_address(), "Lost connection to peer: {:#}", error);
}
SwarmEvent::ConnectionClosed { peer_id: peer, num_established, endpoint, cause: None } if num_established == 0 => {
SwarmEvent::ConnectionClosed { peer_id: peer, num_established: 0, endpoint, cause: None } => {
tracing::info!(%peer, address = %endpoint.get_remote_address(), "Successfully closed connection");
}
SwarmEvent::NewListenAddr{address, ..} => {
@ -296,7 +351,7 @@ where
Some(Ok((peer, transfer_proof, responder))) => {
if !self.swarm.behaviour_mut().transfer_proof.is_connected(&peer) {
tracing::warn!(%peer, "No active connection to peer, buffering transfer proof");
self.buffered_transfer_proofs.entry(peer).or_insert_with(Vec::new).push((transfer_proof, responder));
self.buffered_transfer_proofs.entry(peer).or_default().push((transfer_proof, responder));
continue;
}

View File

@ -5,7 +5,9 @@ use crate::network::rendezvous::XmrBtcNamespace;
use crate::network::swap_setup::alice;
use crate::network::swap_setup::alice::WalletSnapshot;
use crate::network::transport::authenticate_and_multiplex;
use crate::network::{encrypted_signature, quote, transfer_proof};
use crate::network::{
cooperative_xmr_redeem_after_punish, encrypted_signature, quote, transfer_proof,
};
use crate::protocol::alice::State3;
use anyhow::{anyhow, Error, Result};
use futures::FutureExt;
@ -44,7 +46,9 @@ pub mod transport {
}
pub mod behaviour {
use super::*;
use libp2p::swarm::behaviour::toggle::Toggle;
use super::{rendezvous::RendezvousNode, *};
#[allow(clippy::large_enum_variant)]
#[derive(Debug)]
@ -74,6 +78,11 @@ pub mod behaviour {
channel: ResponseChannel<()>,
peer: PeerId,
},
CooperativeXmrRedeemRequested {
channel: ResponseChannel<cooperative_xmr_redeem_after_punish::Response>,
swap_id: Uuid,
peer: PeerId,
},
Rendezvous(libp2p::rendezvous::client::Event),
Failure {
peer: PeerId,
@ -108,10 +117,11 @@ pub mod behaviour {
where
LR: LatestRate + Send + 'static,
{
pub rendezvous: libp2p::swarm::behaviour::toggle::Toggle<rendezous::Behaviour>,
pub rendezvous: Toggle<rendezvous::Behaviour>,
pub quote: quote::Behaviour,
pub swap_setup: alice::Behaviour<LR>,
pub transfer_proof: transfer_proof::Behaviour,
pub cooperative_xmr_redeem: cooperative_xmr_redeem_after_punish::Behaviour,
pub encrypted_signature: encrypted_signature::Behaviour,
pub identify: Identify,
@ -132,25 +142,22 @@ pub mod behaviour {
resume_only: bool,
env_config: env::Config,
identify_params: (identity::Keypair, XmrBtcNamespace),
rendezvous_params: Option<(identity::Keypair, PeerId, Multiaddr, XmrBtcNamespace)>,
rendezvous_nodes: Vec<RendezvousNode>,
) -> Self {
let agentVersion = format!("asb/{} ({})", env!("CARGO_PKG_VERSION"), identify_params.1);
let protocolVersion = "/comit/xmr/btc/1.0.0".to_string();
let identifyConfig = IdentifyConfig::new(protocolVersion, identify_params.0.public())
.with_agent_version(agentVersion);
let (identity, namespace) = identify_params;
let agent_version = format!("asb/{} ({})", env!("CARGO_PKG_VERSION"), namespace);
let protocol_version = "/comit/xmr/btc/1.0.0".to_string();
let identifyConfig = IdentifyConfig::new(protocol_version, identity.public())
.with_agent_version(agent_version);
let behaviour = if rendezvous_nodes.is_empty() {
None
} else {
Some(rendezvous::Behaviour::new(identity, rendezvous_nodes))
};
Self {
rendezvous: libp2p::swarm::behaviour::toggle::Toggle::from(rendezvous_params.map(
|(identity, rendezvous_peer_id, rendezvous_address, namespace)| {
rendezous::Behaviour::new(
identity,
rendezvous_peer_id,
rendezvous_address,
namespace,
None, // use default ttl on rendezvous point
)
},
)),
rendezvous: Toggle::from(behaviour),
quote: quote::asb(),
swap_setup: alice::Behaviour::new(
min_buy,
@ -161,6 +168,7 @@ pub mod behaviour {
),
transfer_proof: transfer_proof::alice(),
encrypted_signature: encrypted_signature::alice(),
cooperative_xmr_redeem: cooperative_xmr_redeem_after_punish::alice(),
ping: Ping::new(PingConfig::new().with_keep_alive(true)),
identify: Identify::new(identifyConfig),
}
@ -186,13 +194,14 @@ pub mod behaviour {
}
}
pub mod rendezous {
pub mod rendezvous {
use super::*;
use libp2p::swarm::dial_opts::DialOpts;
use libp2p::swarm::DialError;
use std::collections::VecDeque;
use std::pin::Pin;
#[derive(PartialEq)]
#[derive(Clone, PartialEq)]
enum ConnectionStatus {
Disconnected,
Dialling,
@ -209,39 +218,59 @@ pub mod rendezous {
pub struct Behaviour {
inner: libp2p::rendezvous::client::Behaviour,
rendezvous_point: Multiaddr,
rendezvous_peer_id: PeerId,
namespace: XmrBtcNamespace,
registration_status: RegistrationStatus,
connection_status: ConnectionStatus,
registration_ttl: Option<u64>,
rendezvous_nodes: Vec<RendezvousNode>,
to_dial: VecDeque<PeerId>,
}
impl Behaviour {
pub struct RendezvousNode {
pub address: Multiaddr,
connection_status: ConnectionStatus,
pub peer_id: PeerId,
registration_status: RegistrationStatus,
pub registration_ttl: Option<u64>,
pub namespace: XmrBtcNamespace,
}
impl RendezvousNode {
pub fn new(
identity: identity::Keypair,
rendezvous_peer_id: PeerId,
rendezvous_address: Multiaddr,
address: &Multiaddr,
peer_id: PeerId,
namespace: XmrBtcNamespace,
registration_ttl: Option<u64>,
) -> Self {
Self {
inner: libp2p::rendezvous::client::Behaviour::new(identity),
rendezvous_point: rendezvous_address,
rendezvous_peer_id,
namespace,
registration_status: RegistrationStatus::RegisterOnNextConnection,
address: address.to_owned(),
connection_status: ConnectionStatus::Disconnected,
namespace,
peer_id,
registration_status: RegistrationStatus::RegisterOnNextConnection,
registration_ttl,
}
}
fn register(&mut self) {
self.inner.register(
self.namespace.into(),
self.rendezvous_peer_id,
self.registration_ttl,
);
fn set_connection(&mut self, status: ConnectionStatus) {
self.connection_status = status;
}
fn set_registration(&mut self, status: RegistrationStatus) {
self.registration_status = status;
}
}
impl Behaviour {
pub fn new(identity: identity::Keypair, rendezvous_nodes: Vec<RendezvousNode>) -> Self {
Self {
inner: libp2p::rendezvous::client::Behaviour::new(identity),
rendezvous_nodes,
to_dial: VecDeque::new(),
}
}
/// Calls the rendezvous register method of the node at node_index in the Vec of rendezvous nodes
fn register(&mut self, node_index: usize) {
let node = &self.rendezvous_nodes[node_index];
self.inner
.register(node.namespace.into(), node.peer_id, node.registration_ttl);
}
}
@ -255,31 +284,37 @@ pub mod rendezous {
}
fn addresses_of_peer(&mut self, peer_id: &PeerId) -> Vec<Multiaddr> {
if peer_id == &self.rendezvous_peer_id {
return vec![self.rendezvous_point.clone()];
for node in self.rendezvous_nodes.iter() {
if peer_id == &node.peer_id {
return vec![node.address.clone()];
}
}
vec![]
}
fn inject_connected(&mut self, peer_id: &PeerId) {
if peer_id == &self.rendezvous_peer_id {
self.connection_status = ConnectionStatus::Connected;
match &self.registration_status {
RegistrationStatus::RegisterOnNextConnection => {
self.register();
self.registration_status = RegistrationStatus::Pending;
for i in 0..self.rendezvous_nodes.len() {
if peer_id == &self.rendezvous_nodes[i].peer_id {
self.rendezvous_nodes[i].set_connection(ConnectionStatus::Connected);
match &self.rendezvous_nodes[i].registration_status {
RegistrationStatus::RegisterOnNextConnection => {
self.register(i);
self.rendezvous_nodes[i].set_registration(RegistrationStatus::Pending);
}
RegistrationStatus::Registered { .. } => {}
RegistrationStatus::Pending => {}
}
RegistrationStatus::Registered { .. } => {}
RegistrationStatus::Pending => {}
}
}
}
fn inject_disconnected(&mut self, peer_id: &PeerId) {
if peer_id == &self.rendezvous_peer_id {
self.connection_status = ConnectionStatus::Disconnected;
for i in 0..self.rendezvous_nodes.len() {
let node = &mut self.rendezvous_nodes[i];
if peer_id == &node.peer_id {
node.connection_status = ConnectionStatus::Disconnected;
}
}
}
@ -298,9 +333,12 @@ pub mod rendezous {
_handler: Self::ProtocolsHandler,
_error: &DialError,
) {
if let Some(id) = peer_id {
if id == self.rendezvous_peer_id {
self.connection_status = ConnectionStatus::Disconnected;
for i in 0..self.rendezvous_nodes.len() {
let node = &mut self.rendezvous_nodes[i];
if let Some(id) = peer_id {
if id == node.peer_id {
node.connection_status = ConnectionStatus::Disconnected;
}
}
}
}
@ -311,62 +349,73 @@ pub mod rendezous {
cx: &mut std::task::Context<'_>,
params: &mut impl PollParameters,
) -> Poll<NetworkBehaviourAction<Self::OutEvent, Self::ProtocolsHandler>> {
match &mut self.registration_status {
RegistrationStatus::RegisterOnNextConnection => match self.connection_status {
ConnectionStatus::Disconnected => {
self.connection_status = ConnectionStatus::Dialling;
if let Some(peer_id) = self.to_dial.pop_front() {
return Poll::Ready(NetworkBehaviourAction::Dial {
opts: DialOpts::peer_id(peer_id)
.condition(PeerCondition::Disconnected)
.build(),
return Poll::Ready(NetworkBehaviourAction::Dial {
opts: DialOpts::peer_id(self.rendezvous_peer_id)
.condition(PeerCondition::Disconnected)
.build(),
handler: Self::ProtocolsHandler::new(Duration::from_secs(30)),
});
}
ConnectionStatus::Dialling => {}
ConnectionStatus::Connected => {
self.registration_status = RegistrationStatus::Pending;
self.register();
}
},
RegistrationStatus::Registered { re_register_in } => {
if let Poll::Ready(()) = re_register_in.poll_unpin(cx) {
match self.connection_status {
ConnectionStatus::Connected => {
self.registration_status = RegistrationStatus::Pending;
self.register();
handler: Self::ProtocolsHandler::new(Duration::from_secs(30)),
});
}
// check the status of each rendezvous node
for i in 0..self.rendezvous_nodes.len() {
let connection_status = self.rendezvous_nodes[i].connection_status.clone();
match &mut self.rendezvous_nodes[i].registration_status {
RegistrationStatus::RegisterOnNextConnection => match connection_status {
ConnectionStatus::Disconnected => {
self.rendezvous_nodes[i].set_connection(ConnectionStatus::Dialling);
self.to_dial.push_back(self.rendezvous_nodes[i].peer_id);
}
ConnectionStatus::Dialling => {}
ConnectionStatus::Connected => {
self.rendezvous_nodes[i].set_registration(RegistrationStatus::Pending);
self.register(i);
}
},
RegistrationStatus::Registered { re_register_in } => {
if let Poll::Ready(()) = re_register_in.poll_unpin(cx) {
match connection_status {
ConnectionStatus::Connected => {
self.rendezvous_nodes[i]
.set_registration(RegistrationStatus::Pending);
self.register(i);
}
ConnectionStatus::Disconnected => {
self.rendezvous_nodes[i].set_registration(
RegistrationStatus::RegisterOnNextConnection,
);
self.to_dial.push_back(self.rendezvous_nodes[i].peer_id);
}
ConnectionStatus::Dialling => {}
}
ConnectionStatus::Disconnected => {
self.registration_status =
RegistrationStatus::RegisterOnNextConnection;
return Poll::Ready(NetworkBehaviourAction::Dial {
opts: DialOpts::peer_id(self.rendezvous_peer_id)
.condition(PeerCondition::Disconnected)
.build(),
handler: Self::ProtocolsHandler::new(Duration::from_secs(30)),
});
}
ConnectionStatus::Dialling => {}
}
}
RegistrationStatus::Pending => {}
}
RegistrationStatus::Pending => {}
}
let inner_poll = self.inner.poll(cx, params);
// reset the timer if we successfully registered
// reset the timer for the specific rendezvous node if we successfully registered
if let Poll::Ready(NetworkBehaviourAction::GenerateEvent(
libp2p::rendezvous::client::Event::Registered { ttl, .. },
libp2p::rendezvous::client::Event::Registered {
ttl,
rendezvous_node,
..
},
)) = &inner_poll
{
let half_of_ttl = Duration::from_secs(*ttl) / 2;
self.registration_status = RegistrationStatus::Registered {
re_register_in: Box::pin(tokio::time::sleep(half_of_ttl)),
};
if let Some(i) = self
.rendezvous_nodes
.iter()
.position(|n| &n.peer_id == rendezvous_node)
{
let half_of_ttl = Duration::from_secs(*ttl) / 2;
let re_register_in = Box::pin(tokio::time::sleep(half_of_ttl));
let status = RegistrationStatus::Registered { re_register_in };
self.rendezvous_nodes[i].set_registration(status);
}
}
inner_poll
@ -380,6 +429,7 @@ pub mod rendezous {
use futures::StreamExt;
use libp2p::rendezvous;
use libp2p::swarm::SwarmEvent;
use std::collections::HashMap;
#[tokio::test]
async fn given_no_initial_connection_when_constructed_asb_connects_and_registers_with_rendezvous_node(
@ -387,16 +437,16 @@ pub mod rendezous {
let mut rendezvous_node = new_swarm(|_, _| {
rendezvous::server::Behaviour::new(rendezvous::server::Config::default())
});
let rendezvous_address = rendezvous_node.listen_on_random_memory_address().await;
let address = rendezvous_node.listen_on_random_memory_address().await;
let rendezvous_point = RendezvousNode::new(
&address,
rendezvous_node.local_peer_id().to_owned(),
XmrBtcNamespace::Testnet,
None,
);
let mut asb = new_swarm(|_, identity| {
rendezous::Behaviour::new(
identity,
*rendezvous_node.local_peer_id(),
rendezvous_address,
XmrBtcNamespace::Testnet,
None,
)
super::rendezvous::Behaviour::new(identity, vec![rendezvous_point])
});
asb.listen_on_random_memory_address().await; // this adds an external address
@ -428,16 +478,16 @@ pub mod rendezous {
rendezvous::server::Config::default().with_min_ttl(2),
)
});
let rendezvous_address = rendezvous_node.listen_on_random_memory_address().await;
let address = rendezvous_node.listen_on_random_memory_address().await;
let rendezvous_point = RendezvousNode::new(
&address,
rendezvous_node.local_peer_id().to_owned(),
XmrBtcNamespace::Testnet,
Some(5),
);
let mut asb = new_swarm(|_, identity| {
rendezous::Behaviour::new(
identity,
*rendezvous_node.local_peer_id(),
rendezvous_address,
XmrBtcNamespace::Testnet,
Some(5),
)
super::rendezvous::Behaviour::new(identity, vec![rendezvous_point])
});
asb.listen_on_random_memory_address().await; // this adds an external address
@ -467,5 +517,62 @@ pub mod rendezous {
.unwrap()
.unwrap();
}
#[tokio::test]
async fn asb_registers_multiple() {
let registration_ttl = Some(10);
let mut rendezvous_nodes = Vec::new();
let mut registrations = HashMap::new();
// register with 5 rendezvous nodes
for _ in 0..5 {
let mut rendezvous = new_swarm(|_, _| {
rendezvous::server::Behaviour::new(
rendezvous::server::Config::default().with_min_ttl(2),
)
});
let address = rendezvous.listen_on_random_memory_address().await;
let id = *rendezvous.local_peer_id();
registrations.insert(id, 0);
rendezvous_nodes.push(RendezvousNode::new(
&address,
*rendezvous.local_peer_id(),
XmrBtcNamespace::Testnet,
registration_ttl,
));
tokio::spawn(async move {
loop {
rendezvous.next().await;
}
});
}
let mut asb = new_swarm(|_, identity| {
super::rendezvous::Behaviour::new(identity, rendezvous_nodes)
});
asb.listen_on_random_memory_address().await; // this adds an external address
let handle = tokio::spawn(async move {
loop {
if let SwarmEvent::Behaviour(rendezvous::client::Event::Registered {
rendezvous_node,
..
}) = asb.select_next_some().await
{
registrations
.entry(rendezvous_node)
.and_modify(|counter| *counter += 1);
}
if registrations.iter().all(|(_, &count)| count >= 4) {
break;
}
}
});
tokio::time::timeout(Duration::from_secs(30), handle)
.await
.unwrap()
.unwrap();
}
}
}

View File

@ -5,7 +5,7 @@ use rust_decimal::Decimal;
use std::fmt::{Debug, Display, Formatter};
/// Represents the rate at which we are willing to trade 1 XMR.
#[derive(Debug, Clone, Copy, PartialEq)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Rate {
/// Represents the asking price from the market.
ask: bitcoin::Amount,

View File

@ -38,8 +38,8 @@ pub async fn cancel(
// Alice already in final state
| AliceState::BtcRedeemed
| AliceState::XmrRefunded
| AliceState::BtcPunished
| AliceState::SafelyAborted => bail!("Swap is is in state {} which is not cancelable", state),
| AliceState::BtcPunished { .. }
| AliceState::SafelyAborted => bail!("Swap is in state {} which is not cancelable", state),
};
let txid = match state3.submit_tx_cancel(bitcoin_wallet.as_ref()).await {

View File

@ -38,7 +38,7 @@ pub async fn punish(
// Alice already in final state
| AliceState::BtcRedeemed
| AliceState::XmrRefunded
| AliceState::BtcPunished
| AliceState::BtcPunished { .. }
| AliceState::SafelyAborted => bail!(Error::SwapNotPunishable(state)),
};
@ -46,7 +46,9 @@ pub async fn punish(
let txid = state3.punish_btc(&bitcoin_wallet).await?;
let state = AliceState::BtcPunished;
let state = AliceState::BtcPunished {
state3: state3.clone(),
};
db.insert_latest_state(swap_id, state.clone().into())
.await?;

View File

@ -81,7 +81,7 @@ pub async fn redeem(
| AliceState::BtcPunishable { .. }
| AliceState::BtcRedeemed
| AliceState::XmrRefunded
| AliceState::BtcPunished
| AliceState::BtcPunished { .. }
| AliceState::SafelyAborted => bail!(
"Cannot redeem swap {} because it is in state {} which cannot be manually redeemed",
swap_id,

View File

@ -55,7 +55,7 @@ pub async fn refund(
AliceState::BtcRedeemTransactionPublished { .. }
| AliceState::BtcRedeemed
| AliceState::XmrRefunded
| AliceState::BtcPunished
| AliceState::BtcPunished { .. }
| AliceState::SafelyAborted => bail!(Error::SwapNotRefundable(state)),
};

View File

@ -31,7 +31,7 @@ pub async fn safely_abort(swap_id: Uuid, db: Arc<dyn Database>) -> Result<AliceS
| AliceState::BtcPunishable { .. }
| AliceState::BtcRedeemed
| AliceState::XmrRefunded
| AliceState::BtcPunished
| AliceState::BtcPunished { .. }
| AliceState::SafelyAborted => bail!(
"Cannot safely abort swap {} because it is in state {} which cannot be safely aborted",
swap_id,

View File

@ -1,30 +0,0 @@
use anyhow::Result;
use tracing_subscriber::filter::LevelFilter;
use tracing_subscriber::fmt::time::UtcTime;
use tracing_subscriber::FmtSubscriber;
pub fn init(level: LevelFilter, json_format: bool, timestamp: bool) -> Result<()> {
if level == LevelFilter::OFF {
return Ok(());
}
let is_terminal = atty::is(atty::Stream::Stderr);
let builder = FmtSubscriber::builder()
.with_env_filter(format!("asb={},swap={}", level, level))
.with_writer(std::io::stderr)
.with_ansi(is_terminal)
.with_timer(UtcTime::rfc_3339())
.with_target(false);
match (json_format, timestamp) {
(true, true) => builder.json().init(),
(true, false) => builder.json().without_time().init(),
(false, true) => builder.init(),
(false, false) => builder.without_time().init(),
}
tracing::info!(%level, "Initialized tracing");
Ok(())
}

View File

@ -18,6 +18,8 @@ use libp2p::core::multiaddr::Protocol;
use libp2p::core::Multiaddr;
use libp2p::swarm::AddressScore;
use libp2p::Swarm;
use rust_decimal::prelude::FromPrimitive;
use rust_decimal::Decimal;
use std::convert::TryInto;
use std::env;
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
@ -29,51 +31,50 @@ use swap::asb::config::{
initial_setup, query_user_for_initial_config, read_config, Config, ConfigNotInitialized,
};
use swap::asb::{cancel, punish, redeem, refund, safely_abort, EventLoop, Finality, KrakenRate};
use swap::common::check_latest_version;
use swap::database::open_db;
use swap::common::tracing_util::Format;
use swap::common::{self, check_latest_version, get_logs};
use swap::database::{open_db, AccessMode};
use swap::network::rendezvous::XmrBtcNamespace;
use swap::network::swarm;
use swap::protocol::alice::swap::is_complete;
use swap::protocol::alice::{run, AliceState};
use swap::protocol::State;
use swap::seed::Seed;
use swap::tor::AuthenticatedClient;
use swap::{asb, bitcoin, kraken, monero, tor};
use swap::{bitcoin, kraken, monero, tor};
use tracing_subscriber::filter::LevelFilter;
const DEFAULT_WALLET_NAME: &str = "asb-wallet";
#[tokio::main]
async fn main() -> Result<()> {
// parse cli arguments
let Arguments {
testnet,
json,
disable_timestamp,
config_path,
env_config,
cmd,
} = match parse_args(env::args_os()) {
Ok(args) => args,
Err(e) => {
// make sure to display the clap error message it exists
if let Some(clap_err) = e.downcast_ref::<clap::Error>() {
match clap_err.kind {
ErrorKind::HelpDisplayed | ErrorKind::VersionDisplayed => {
println!("{}", clap_err.message);
std::process::exit(0);
}
_ => {
bail!(e);
}
if let ErrorKind::HelpDisplayed | ErrorKind::VersionDisplayed = clap_err.kind {
println!("{}", clap_err.message);
std::process::exit(0);
}
}
bail!(e);
}
};
// warn if we're not on the latest version
if let Err(e) = check_latest_version(env!("CARGO_PKG_VERSION")).await {
eprintln!("{}", e);
}
asb::tracing::init(LevelFilter::DEBUG, json, !disable_timestamp).expect("initialize tracing");
// read config from the specified path
let config = match read_config(config_path.clone())? {
Ok(config) => config,
Err(ConfigNotInitialized {}) => {
@ -82,6 +83,12 @@ async fn main() -> Result<()> {
}
};
// initialize tracing
let format = if json { Format::Json } else { Format::Raw };
let log_dir = config.data.dir.join("logs");
common::tracing_util::init(LevelFilter::DEBUG, format, log_dir).expect("initialize tracing");
// check for conflicting env / config values
if config.monero.network != env_config.monero_network {
bail!(format!(
"Expected monero network in config file to be {:?} but was {:?}",
@ -95,16 +102,33 @@ async fn main() -> Result<()> {
));
}
let db = open_db(config.data.dir.join("sqlite")).await?;
let seed =
Seed::from_file_or_generate(&config.data.dir).expect("Could not retrieve/initialize seed");
match cmd {
Command::Start { resume_only } => {
let db = open_db(config.data.dir.join("sqlite"), AccessMode::ReadWrite).await?;
// check and warn for duplicate rendezvous points
let mut rendezvous_addrs = config.network.rendezvous_point.clone();
let prev_len = rendezvous_addrs.len();
rendezvous_addrs.sort();
rendezvous_addrs.dedup();
let new_len = rendezvous_addrs.len();
if new_len < prev_len {
tracing::warn!(
"`rendezvous_point` config has {} duplicate entries, they are being ignored.",
prev_len - new_len
);
}
// initialize monero wallet
let monero_wallet = init_monero_wallet(&config, env_config).await?;
let monero_address = monero_wallet.get_main_address();
tracing::info!(%monero_address, "Monero wallet address");
// check monero balance
let monero = monero_wallet.get_balance().await?;
match (monero.balance, monero.unlocked_balance) {
(0, _) => {
@ -127,6 +151,7 @@ async fn main() -> Result<()> {
}
}
// init bitcoin wallet
let bitcoin_wallet = init_bitcoin_wallet(&config, &seed, env_config).await?;
let bitcoin_balance = bitcoin_wallet.balance().await?;
tracing::info!(%bitcoin_balance, "Bitcoin wallet balance");
@ -161,7 +186,7 @@ async fn main() -> Result<()> {
resume_only,
env_config,
namespace,
config.network.rendezvous_point,
&rendezvous_addrs,
)?;
for listen in config.network.listen.clone() {
@ -211,22 +236,105 @@ async fn main() -> Result<()> {
event_loop.run().await;
}
Command::History => {
let mut table = Table::new();
Command::History { only_unfinished } => {
let db = open_db(config.data.dir.join("sqlite"), AccessMode::ReadOnly).await?;
let mut table: Table = Table::new();
table.set_header(vec!["SWAP ID", "STATE"]);
table.set_header(vec![
"Swap ID",
"Start Date",
"State",
"BTC Amount",
"XMR Amount",
"Exchange Rate",
"Trading Partner Peer ID",
"Completed",
]);
for (swap_id, state) in db.all().await? {
let state: AliceState = state.try_into()?;
table.add_row(vec![swap_id.to_string(), state.to_string()]);
let all_swaps = db.all().await?;
for (swap_id, state) in all_swaps {
if let Err(e) = async {
let latest_state: AliceState = state.try_into()?;
let is_completed = is_complete(&latest_state);
if only_unfinished && is_completed {
return Ok::<_, anyhow::Error>(());
}
let all_states = db.get_states(swap_id).await?;
let state3 = all_states
.iter()
.find_map(|s| match s {
State::Alice(AliceState::BtcLockTransactionSeen { state3 }) => {
Some(state3)
}
_ => None,
})
.context("Failed to get \"BtcLockTransactionSeen\" state")?;
let swap_start_date = db.get_swap_start_date(swap_id).await?;
let peer_id = db.get_peer_id(swap_id).await?;
let exchange_rate = Decimal::from_f64(state3.btc.to_btc())
.ok_or_else(|| anyhow::anyhow!("Failed to convert BTC amount to Decimal"))?
.checked_div(state3.xmr.as_xmr())
.ok_or_else(|| anyhow::anyhow!("Division by zero or overflow"))?;
let exchange_rate = format!("{} XMR/BTC", exchange_rate.round_dp(8));
if json {
tracing::info!(
swap_id = %swap_id,
swap_start_date = %swap_start_date,
latest_state = %latest_state,
btc_amount = %state3.btc,
xmr_amount = %state3.xmr,
exchange_rate = %exchange_rate,
trading_partner_peer_id = %peer_id,
completed = is_completed,
"Found swap in database"
);
} else {
table.add_row(vec![
swap_id.to_string(),
swap_start_date.to_string(),
latest_state.to_string(),
state3.btc.to_string(),
state3.xmr.to_string(),
exchange_rate,
peer_id.to_string(),
is_completed.to_string(),
]);
}
Ok::<_, anyhow::Error>(())
}
.await
{
tracing::error!(swap_id = %swap_id, error = %e, "Failed to get swap details");
}
}
println!("{}", table);
if !json {
println!("{}", table);
}
}
Command::Config => {
let config_json = serde_json::to_string_pretty(&config)?;
println!("{}", config_json);
}
Command::Logs {
logs_dir,
swap_id,
redact,
} => {
let dir = logs_dir.unwrap_or(config.data.dir.join("logs"));
let log_messages = get_logs(dir, swap_id, redact).await?;
for msg in log_messages {
println!("{msg}");
}
}
Command::WithdrawBtc { amount, address } => {
let bitcoin_wallet = init_bitcoin_wallet(&config, &seed, env_config).await?;
@ -257,6 +365,8 @@ async fn main() -> Result<()> {
tracing::info!(%bitcoin_balance, %monero_balance, "Current balance");
}
Command::Cancel { swap_id } => {
let db = open_db(config.data.dir.join("sqlite"), AccessMode::ReadWrite).await?;
let bitcoin_wallet = init_bitcoin_wallet(&config, &seed, env_config).await?;
let (txid, _) = cancel(swap_id, Arc::new(bitcoin_wallet), db).await?;
@ -264,6 +374,8 @@ async fn main() -> Result<()> {
tracing::info!("Cancel transaction successfully published with id {}", txid);
}
Command::Refund { swap_id } => {
let db = open_db(config.data.dir.join("sqlite"), AccessMode::ReadWrite).await?;
let bitcoin_wallet = init_bitcoin_wallet(&config, &seed, env_config).await?;
let monero_wallet = init_monero_wallet(&config, env_config).await?;
@ -278,6 +390,8 @@ async fn main() -> Result<()> {
tracing::info!("Monero successfully refunded");
}
Command::Punish { swap_id } => {
let db = open_db(config.data.dir.join("sqlite"), AccessMode::ReadWrite).await?;
let bitcoin_wallet = init_bitcoin_wallet(&config, &seed, env_config).await?;
let (txid, _) = punish(swap_id, Arc::new(bitcoin_wallet), db).await?;
@ -285,6 +399,8 @@ async fn main() -> Result<()> {
tracing::info!("Punish transaction successfully published with id {}", txid);
}
Command::SafelyAbort { swap_id } => {
let db = open_db(config.data.dir.join("sqlite"), AccessMode::ReadWrite).await?;
safely_abort(swap_id, db).await?;
tracing::info!("Swap safely aborted");
@ -293,6 +409,8 @@ async fn main() -> Result<()> {
swap_id,
do_not_await_finality,
} => {
let db = open_db(config.data.dir.join("sqlite"), AccessMode::ReadWrite).await?;
let bitcoin_wallet = init_bitcoin_wallet(&config, &seed, env_config).await?;
let (txid, _) = redeem(

View File

@ -12,43 +12,15 @@
#![forbid(unsafe_code)]
#![allow(non_snake_case)]
use anyhow::{bail, Context, Result};
use comfy_table::Table;
use qrcode::render::unicode;
use qrcode::QrCode;
use std::cmp::min;
use std::convert::TryInto;
use anyhow::Result;
use std::env;
use std::future::Future;
use std::path::PathBuf;
use std::sync::Arc;
use std::time::Duration;
use swap::bitcoin::TxLock;
use swap::cli::command::{parse_args_and_apply_defaults, Arguments, Command, ParseResult};
use swap::cli::{list_sellers, EventLoop, SellerStatus};
use swap::cli::command::{parse_args_and_apply_defaults, ParseResult};
use swap::common::check_latest_version;
use swap::database::open_db;
use swap::env::Config;
use swap::libp2p_ext::MultiAddrExt;
use swap::network::quote::{BidQuote, ZeroQuoteReceived};
use swap::network::swarm;
use swap::protocol::bob;
use swap::protocol::bob::{BobState, Swap};
use swap::seed::Seed;
use swap::{bitcoin, cli, monero};
use url::Url;
use uuid::Uuid;
#[tokio::main]
async fn main() -> Result<()> {
let Arguments {
env_config,
data_dir,
debug,
json,
cmd,
} = match parse_args_and_apply_defaults(env::args_os())? {
ParseResult::Arguments(args) => *args,
let (context, request) = match parse_args_and_apply_defaults(env::args_os()).await? {
ParseResult::Context(context, request) => (context, request),
ParseResult::PrintAndExitZero { message } => {
println!("{}", message);
std::process::exit(0);
@ -58,601 +30,19 @@ async fn main() -> Result<()> {
if let Err(e) = check_latest_version(env!("CARGO_PKG_VERSION")).await {
eprintln!("{}", e);
}
match cmd {
Command::BuyXmr {
seller,
bitcoin_electrum_rpc_url,
bitcoin_target_block,
bitcoin_change_address,
monero_receive_address,
monero_daemon_address,
tor_socks5_port,
namespace,
} => {
let swap_id = Uuid::new_v4();
cli::tracing::init(debug, json, data_dir.join("logs"), Some(swap_id))?;
let db = open_db(data_dir.join("sqlite")).await?;
let seed = Seed::from_file_or_generate(data_dir.as_path())
.context("Failed to read in seed file")?;
let bitcoin_wallet = init_bitcoin_wallet(
bitcoin_electrum_rpc_url,
&seed,
data_dir.clone(),
env_config,
bitcoin_target_block,
)
.await?;
let (monero_wallet, _process) =
init_monero_wallet(data_dir, monero_daemon_address, env_config).await?;
let bitcoin_wallet = Arc::new(bitcoin_wallet);
let seller_peer_id = seller
.extract_peer_id()
.context("Seller address must contain peer ID")?;
db.insert_address(seller_peer_id, seller.clone()).await?;
let behaviour = cli::Behaviour::new(
seller_peer_id,
env_config,
bitcoin_wallet.clone(),
(seed.derive_libp2p_identity(), namespace),
);
let mut swarm =
swarm::cli(seed.derive_libp2p_identity(), tor_socks5_port, behaviour).await?;
swarm.behaviour_mut().add_address(seller_peer_id, seller);
tracing::debug!(peer_id = %swarm.local_peer_id(), "Network layer initialized");
let (event_loop, mut event_loop_handle) =
EventLoop::new(swap_id, swarm, seller_peer_id)?;
let event_loop = tokio::spawn(event_loop.run());
let max_givable = || bitcoin_wallet.max_giveable(TxLock::script_size());
let estimate_fee = |amount| bitcoin_wallet.estimate_fee(TxLock::weight(), amount);
let (amount, fees) = match determine_btc_to_swap(
json,
event_loop_handle.request_quote(),
bitcoin_wallet.new_address(),
|| bitcoin_wallet.balance(),
max_givable,
|| bitcoin_wallet.sync(),
estimate_fee,
)
.await
{
Ok(val) => val,
Err(error) => match error.downcast::<ZeroQuoteReceived>() {
Ok(_) => {
bail!("Seller's XMR balance is currently too low to initiate a swap, please try again later")
}
Err(other) => bail!(other),
},
};
tracing::info!(%amount, %fees, "Determined swap amount");
db.insert_peer_id(swap_id, seller_peer_id).await?;
db.insert_monero_address(swap_id, monero_receive_address)
.await?;
let swap = Swap::new(
db,
swap_id,
bitcoin_wallet,
Arc::new(monero_wallet),
env_config,
event_loop_handle,
monero_receive_address,
bitcoin_change_address,
amount,
);
tokio::select! {
result = event_loop => {
result
.context("EventLoop panicked")?;
},
result = bob::run(swap) => {
result.context("Failed to complete swap")?;
}
}
}
Command::History => {
cli::tracing::init(debug, json, data_dir.join("logs"), None)?;
let db = open_db(data_dir.join("sqlite")).await?;
let swaps = db.all().await?;
if json {
for (swap_id, state) in swaps {
let state: BobState = state.try_into()?;
tracing::info!(swap_id=%swap_id.to_string(), state=%state.to_string(), "Read swap state from database");
}
} else {
let mut table = Table::new();
table.set_header(vec!["SWAP ID", "STATE"]);
for (swap_id, state) in swaps {
let state: BobState = state.try_into()?;
table.add_row(vec![swap_id.to_string(), state.to_string()]);
}
println!("{}", table);
}
}
Command::Config => {
cli::tracing::init(debug, json, data_dir.join("logs"), None)?;
tracing::info!(path=%data_dir.display(), "Data directory");
tracing::info!(path=%format!("{}/logs", data_dir.display()), "Log files directory");
tracing::info!(path=%format!("{}/sqlite", data_dir.display()), "Sqlite file location");
tracing::info!(path=%format!("{}/seed.pem", data_dir.display()), "Seed file location");
tracing::info!(path=%format!("{}/monero", data_dir.display()), "Monero-wallet-rpc directory");
tracing::info!(path=%format!("{}/wallet", data_dir.display()), "Internal bitcoin wallet directory");
}
Command::WithdrawBtc {
bitcoin_electrum_rpc_url,
bitcoin_target_block,
amount,
address,
} => {
cli::tracing::init(debug, json, data_dir.join("logs"), None)?;
let seed = Seed::from_file_or_generate(data_dir.as_path())
.context("Failed to read in seed file")?;
let bitcoin_wallet = init_bitcoin_wallet(
bitcoin_electrum_rpc_url,
&seed,
data_dir.clone(),
env_config,
bitcoin_target_block,
)
.await?;
let amount = match amount {
Some(amount) => amount,
None => {
bitcoin_wallet
.max_giveable(address.script_pubkey().len())
.await?
}
};
let psbt = bitcoin_wallet
.send_to_address(address, amount, None)
.await?;
let signed_tx = bitcoin_wallet.sign_and_finalize(psbt).await?;
bitcoin_wallet.broadcast(signed_tx, "withdraw").await?;
}
Command::Balance {
bitcoin_electrum_rpc_url,
bitcoin_target_block,
} => {
cli::tracing::init(debug, json, data_dir.join("logs"), None)?;
let seed = Seed::from_file_or_generate(data_dir.as_path())
.context("Failed to read in seed file")?;
let bitcoin_wallet = init_bitcoin_wallet(
bitcoin_electrum_rpc_url,
&seed,
data_dir.clone(),
env_config,
bitcoin_target_block,
)
.await?;
let bitcoin_balance = bitcoin_wallet.balance().await?;
tracing::info!(
balance = %bitcoin_balance,
"Checked Bitcoin balance",
);
}
Command::Resume {
swap_id,
bitcoin_electrum_rpc_url,
bitcoin_target_block,
monero_daemon_address,
tor_socks5_port,
namespace,
} => {
cli::tracing::init(debug, json, data_dir.join("logs"), Some(swap_id))?;
let db = open_db(data_dir.join("sqlite")).await?;
let seed = Seed::from_file_or_generate(data_dir.as_path())
.context("Failed to read in seed file")?;
let bitcoin_wallet = init_bitcoin_wallet(
bitcoin_electrum_rpc_url,
&seed,
data_dir.clone(),
env_config,
bitcoin_target_block,
)
.await?;
let (monero_wallet, _process) =
init_monero_wallet(data_dir, monero_daemon_address, env_config).await?;
let bitcoin_wallet = Arc::new(bitcoin_wallet);
let seller_peer_id = db.get_peer_id(swap_id).await?;
let seller_addresses = db.get_addresses(seller_peer_id).await?;
let behaviour = cli::Behaviour::new(
seller_peer_id,
env_config,
bitcoin_wallet.clone(),
(seed.derive_libp2p_identity(), namespace),
);
let mut swarm =
swarm::cli(seed.derive_libp2p_identity(), tor_socks5_port, behaviour).await?;
let our_peer_id = swarm.local_peer_id();
tracing::debug!(peer_id = %our_peer_id, "Network layer initialized");
for seller_address in seller_addresses {
swarm
.behaviour_mut()
.add_address(seller_peer_id, seller_address);
}
let (event_loop, event_loop_handle) = EventLoop::new(swap_id, swarm, seller_peer_id)?;
let handle = tokio::spawn(event_loop.run());
let monero_receive_address = db.get_monero_address(swap_id).await?;
let swap = Swap::from_db(
db,
swap_id,
bitcoin_wallet,
Arc::new(monero_wallet),
env_config,
event_loop_handle,
monero_receive_address,
)
.await?;
tokio::select! {
event_loop_result = handle => {
event_loop_result?;
},
swap_result = bob::run(swap) => {
swap_result?;
}
}
}
Command::CancelAndRefund {
swap_id,
bitcoin_electrum_rpc_url,
bitcoin_target_block,
} => {
cli::tracing::init(debug, json, data_dir.join("logs"), Some(swap_id))?;
let db = open_db(data_dir.join("sqlite")).await?;
let seed = Seed::from_file_or_generate(data_dir.as_path())
.context("Failed to read in seed file")?;
let bitcoin_wallet = init_bitcoin_wallet(
bitcoin_electrum_rpc_url,
&seed,
data_dir,
env_config,
bitcoin_target_block,
)
.await?;
cli::cancel_and_refund(swap_id, Arc::new(bitcoin_wallet), db).await?;
}
Command::ListSellers {
rendezvous_point,
namespace,
tor_socks5_port,
} => {
let rendezvous_node_peer_id = rendezvous_point
.extract_peer_id()
.context("Rendezvous node address must contain peer ID")?;
cli::tracing::init(debug, json, data_dir.join("logs"), None)?;
let seed = Seed::from_file_or_generate(data_dir.as_path())
.context("Failed to read in seed file")?;
let identity = seed.derive_libp2p_identity();
let sellers = list_sellers(
rendezvous_node_peer_id,
rendezvous_point,
namespace,
tor_socks5_port,
identity,
)
.await?;
if json {
for seller in sellers {
match seller.status {
SellerStatus::Online(quote) => {
tracing::info!(
price = %quote.price.to_string(),
min_quantity = %quote.min_quantity.to_string(),
max_quantity = %quote.max_quantity.to_string(),
status = "Online",
address = %seller.multiaddr.to_string(),
"Fetched peer status"
);
}
SellerStatus::Unreachable => {
tracing::info!(
status = "Unreachable",
address = %seller.multiaddr.to_string(),
"Fetched peer status"
);
}
}
}
} else {
let mut table = Table::new();
table.set_header(vec![
"PRICE",
"MIN_QUANTITY",
"MAX_QUANTITY",
"STATUS",
"ADDRESS",
]);
for seller in sellers {
let row = match seller.status {
SellerStatus::Online(quote) => {
vec![
quote.price.to_string(),
quote.min_quantity.to_string(),
quote.max_quantity.to_string(),
"Online".to_owned(),
seller.multiaddr.to_string(),
]
}
SellerStatus::Unreachable => {
vec![
"???".to_owned(),
"???".to_owned(),
"???".to_owned(),
"Unreachable".to_owned(),
seller.multiaddr.to_string(),
]
}
};
table.add_row(row);
}
println!("{}", table);
}
}
Command::ExportBitcoinWallet {
bitcoin_electrum_rpc_url,
bitcoin_target_block,
} => {
cli::tracing::init(debug, json, data_dir.join("logs"), None)?;
let seed = Seed::from_file_or_generate(data_dir.as_path())
.context("Failed to read in seed file")?;
let bitcoin_wallet = init_bitcoin_wallet(
bitcoin_electrum_rpc_url,
&seed,
data_dir.clone(),
env_config,
bitcoin_target_block,
)
.await?;
let wallet_export = bitcoin_wallet.wallet_export("cli").await?;
tracing::info!(descriptor=%wallet_export.to_string(), "Exported bitcoin wallet");
}
Command::MoneroRecovery { swap_id } => {
cli::tracing::init(debug, json, data_dir.join("logs"), Some(swap_id))?;
let db = open_db(data_dir.join("sqlite")).await?;
let swap_state: BobState = db.get_state(swap_id).await?.try_into()?;
match swap_state {
BobState::Started { .. }
| BobState::SwapSetupCompleted(_)
| BobState::BtcLocked { .. }
| BobState::XmrLockProofReceived { .. }
| BobState::XmrLocked(_)
| BobState::EncSigSent(_)
| BobState::CancelTimelockExpired(_)
| BobState::BtcCancelled(_)
| BobState::BtcRefunded(_)
| BobState::BtcPunished { .. }
| BobState::SafelyAborted
| BobState::XmrRedeemed { .. } => {
bail!("Cannot print monero recovery information in state {}, only possible for BtcRedeemed", swap_state)
}
BobState::BtcRedeemed(state5) => {
let (spend_key, view_key) = state5.xmr_keys();
let address = monero::Address::standard(
env_config.monero_network,
monero::PublicKey::from_private_key(&spend_key),
monero::PublicKey::from(view_key.public()),
);
tracing::info!("Wallet address: {}", address.to_string());
let view_key = serde_json::to_string(&view_key)?;
println!("View key: {}", view_key);
println!("Spend key: {}", spend_key);
}
}
}
};
request.call(context.clone()).await?;
context.tasks.wait_for_tasks().await?;
Ok(())
}
async fn init_bitcoin_wallet(
electrum_rpc_url: Url,
seed: &Seed,
data_dir: PathBuf,
env_config: Config,
bitcoin_target_block: usize,
) -> Result<bitcoin::Wallet> {
tracing::debug!("Initializing bitcoin wallet");
let xprivkey = seed.derive_extended_private_key(env_config.bitcoin_network)?;
let wallet = bitcoin::Wallet::new(
electrum_rpc_url.clone(),
data_dir,
xprivkey,
env_config,
bitcoin_target_block,
)
.await
.context("Failed to initialize Bitcoin wallet")?;
tracing::debug!("Syncing bitcoin wallet");
wallet.sync().await?;
Ok(wallet)
}
async fn init_monero_wallet(
data_dir: PathBuf,
monero_daemon_address: String,
env_config: Config,
) -> Result<(monero::Wallet, monero::WalletRpcProcess)> {
let network = env_config.monero_network;
const MONERO_BLOCKCHAIN_MONITORING_WALLET_NAME: &str = "swap-tool-blockchain-monitoring-wallet";
let monero_wallet_rpc = monero::WalletRpc::new(data_dir.join("monero")).await?;
let monero_wallet_rpc_process = monero_wallet_rpc
.run(network, monero_daemon_address.as_str())
.await?;
let monero_wallet = monero::Wallet::open_or_create(
monero_wallet_rpc_process.endpoint(),
MONERO_BLOCKCHAIN_MONITORING_WALLET_NAME.to_string(),
env_config,
)
.await?;
Ok((monero_wallet, monero_wallet_rpc_process))
}
fn qr_code(value: &impl ToString) -> Result<String> {
let code = QrCode::new(value.to_string())?;
let qr_code = code
.render::<unicode::Dense1x2>()
.dark_color(unicode::Dense1x2::Light)
.light_color(unicode::Dense1x2::Dark)
.build();
Ok(qr_code)
}
async fn determine_btc_to_swap<FB, TB, FMG, TMG, FS, TS, FFE, TFE>(
json: bool,
bid_quote: impl Future<Output = Result<BidQuote>>,
get_new_address: impl Future<Output = Result<bitcoin::Address>>,
balance: FB,
max_giveable_fn: FMG,
sync: FS,
estimate_fee: FFE,
) -> Result<(bitcoin::Amount, bitcoin::Amount)>
where
TB: Future<Output = Result<bitcoin::Amount>>,
FB: Fn() -> TB,
TMG: Future<Output = Result<bitcoin::Amount>>,
FMG: Fn() -> TMG,
TS: Future<Output = Result<()>>,
FS: Fn() -> TS,
FFE: Fn(bitcoin::Amount) -> TFE,
TFE: Future<Output = Result<bitcoin::Amount>>,
{
tracing::debug!("Requesting quote");
let bid_quote = bid_quote.await?;
if bid_quote.max_quantity == bitcoin::Amount::ZERO {
bail!(ZeroQuoteReceived)
}
tracing::info!(
price = %bid_quote.price,
minimum_amount = %bid_quote.min_quantity,
maximum_amount = %bid_quote.max_quantity,
"Received quote",
);
let mut max_giveable = max_giveable_fn().await?;
if max_giveable == bitcoin::Amount::ZERO || max_giveable < bid_quote.min_quantity {
let deposit_address = get_new_address.await?;
let minimum_amount = bid_quote.min_quantity;
let maximum_amount = bid_quote.max_quantity;
if !json {
eprintln!("{}", qr_code(&deposit_address)?);
}
loop {
let min_outstanding = bid_quote.min_quantity - max_giveable;
let min_fee = estimate_fee(min_outstanding).await?;
let min_deposit = min_outstanding + min_fee;
tracing::info!(
"Deposit at least {} to cover the min quantity with fee!",
min_deposit
);
tracing::info!(
%deposit_address,
%min_deposit,
%max_giveable,
%minimum_amount,
%maximum_amount,
"Waiting for Bitcoin deposit",
);
max_giveable = loop {
sync().await?;
let new_max_givable = max_giveable_fn().await?;
if new_max_givable > max_giveable {
break new_max_givable;
}
tokio::time::sleep(Duration::from_secs(1)).await;
};
let new_balance = balance().await?;
tracing::info!(%new_balance, %max_giveable, "Received Bitcoin");
if max_giveable < bid_quote.min_quantity {
tracing::info!("Deposited amount is less than `min_quantity`");
continue;
}
break;
}
};
let balance = balance().await?;
let fees = balance - max_giveable;
let max_accepted = bid_quote.max_quantity;
let btc_swap_amount = min(max_giveable, max_accepted);
Ok((btc_swap_amount, fees))
}
#[cfg(test)]
mod tests {
use super::*;
use crate::determine_btc_to_swap;
use ::bitcoin::Amount;
use std::sync::Mutex;
use std::sync::{Arc, Mutex};
use std::time::Duration;
use swap::api::request::determine_btc_to_swap;
use swap::network::quote::BidQuote;
use swap::tracing_ext::capture_logs;
use tracing::level_filters::LevelFilter;
@ -666,7 +56,7 @@ mod tests {
let (amount, fees) = determine_btc_to_swap(
true,
async { Ok(quote_with_max(0.01)) },
quote_with_max(0.01),
get_dummy_address(),
|| async { Ok(Amount::from_btc(0.001)?) },
|| async {
@ -685,10 +75,10 @@ mod tests {
assert_eq!((amount, fees), (expected_amount, expected_fees));
assert_eq!(
writer.captured(),
r" INFO swap: Received quote price=0.00100000 BTC minimum_amount=0.00000000 BTC maximum_amount=0.01000000 BTC
INFO swap: Deposit at least 0.00001000 BTC to cover the min quantity with fee!
INFO swap: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.00001000 BTC max_giveable=0.00000000 BTC minimum_amount=0.00000000 BTC maximum_amount=0.01000000 BTC
INFO swap: Received Bitcoin new_balance=0.00100000 BTC max_giveable=0.00090000 BTC
r" INFO swap::api::request: Received quote price=0.001 BTC minimum_amount=0 BTC maximum_amount=0.01 BTC
INFO swap::api::request: Deposit at least 0.00001 BTC to cover the min quantity with fee!
INFO swap::api::request: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.00001 BTC max_giveable=0 BTC minimum_amount=0 BTC maximum_amount=0.01 BTC
INFO swap::api::request: Received Bitcoin new_balance=0.001 BTC max_giveable=0.0009 BTC
"
);
}
@ -703,7 +93,7 @@ mod tests {
let (amount, fees) = determine_btc_to_swap(
true,
async { Ok(quote_with_max(0.01)) },
quote_with_max(0.01),
get_dummy_address(),
|| async { Ok(Amount::from_btc(0.1001)?) },
|| async {
@ -722,10 +112,10 @@ mod tests {
assert_eq!((amount, fees), (expected_amount, expected_fees));
assert_eq!(
writer.captured(),
r" INFO swap: Received quote price=0.00100000 BTC minimum_amount=0.00000000 BTC maximum_amount=0.01000000 BTC
INFO swap: Deposit at least 0.00001000 BTC to cover the min quantity with fee!
INFO swap: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.00001000 BTC max_giveable=0.00000000 BTC minimum_amount=0.00000000 BTC maximum_amount=0.01000000 BTC
INFO swap: Received Bitcoin new_balance=0.10010000 BTC max_giveable=0.10000000 BTC
r" INFO swap::api::request: Received quote price=0.001 BTC minimum_amount=0 BTC maximum_amount=0.01 BTC
INFO swap::api::request: Deposit at least 0.00001 BTC to cover the min quantity with fee!
INFO swap::api::request: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.00001 BTC max_giveable=0 BTC minimum_amount=0 BTC maximum_amount=0.01 BTC
INFO swap::api::request: Received Bitcoin new_balance=0.1001 BTC max_giveable=0.1 BTC
"
);
}
@ -740,7 +130,7 @@ mod tests {
let (amount, fees) = determine_btc_to_swap(
true,
async { Ok(quote_with_max(0.01)) },
quote_with_max(0.01),
async { panic!("should not request new address when initial balance is > 0") },
|| async { Ok(Amount::from_btc(0.005)?) },
|| async {
@ -759,7 +149,7 @@ mod tests {
assert_eq!((amount, fees), (expected_amount, expected_fees));
assert_eq!(
writer.captured(),
" INFO swap: Received quote price=0.00100000 BTC minimum_amount=0.00000000 BTC maximum_amount=0.01000000 BTC\n"
" INFO swap::api::request: Received quote price=0.001 BTC minimum_amount=0 BTC maximum_amount=0.01 BTC\n"
);
}
@ -773,7 +163,7 @@ mod tests {
let (amount, fees) = determine_btc_to_swap(
true,
async { Ok(quote_with_max(0.01)) },
quote_with_max(0.01),
async { panic!("should not request new address when initial balance is > 0") },
|| async { Ok(Amount::from_btc(0.1001)?) },
|| async {
@ -792,7 +182,7 @@ mod tests {
assert_eq!((amount, fees), (expected_amount, expected_fees));
assert_eq!(
writer.captured(),
" INFO swap: Received quote price=0.00100000 BTC minimum_amount=0.00000000 BTC maximum_amount=0.01000000 BTC\n"
" INFO swap::api::request: Received quote price=0.001 BTC minimum_amount=0 BTC maximum_amount=0.01 BTC\n"
);
}
@ -806,7 +196,7 @@ mod tests {
let (amount, fees) = determine_btc_to_swap(
true,
async { Ok(quote_with_min(0.01)) },
quote_with_min(0.01),
get_dummy_address(),
|| async { Ok(Amount::from_btc(0.0101)?) },
|| async {
@ -825,10 +215,10 @@ mod tests {
assert_eq!((amount, fees), (expected_amount, expected_fees));
assert_eq!(
writer.captured(),
r" INFO swap: Received quote price=0.00100000 BTC minimum_amount=0.01000000 BTC maximum_amount=184467440737.09551615 BTC
INFO swap: Deposit at least 0.01001000 BTC to cover the min quantity with fee!
INFO swap: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.01001000 BTC max_giveable=0.00000000 BTC minimum_amount=0.01000000 BTC maximum_amount=184467440737.09551615 BTC
INFO swap: Received Bitcoin new_balance=0.01010000 BTC max_giveable=0.01000000 BTC
r" INFO swap::api::request: Received quote price=0.001 BTC minimum_amount=0.01 BTC maximum_amount=184467440737.09551615 BTC
INFO swap::api::request: Deposit at least 0.01001 BTC to cover the min quantity with fee!
INFO swap::api::request: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.01001 BTC max_giveable=0 BTC minimum_amount=0.01 BTC maximum_amount=184467440737.09551615 BTC
INFO swap::api::request: Received Bitcoin new_balance=0.0101 BTC max_giveable=0.01 BTC
"
);
}
@ -843,7 +233,7 @@ mod tests {
let (amount, fees) = determine_btc_to_swap(
true,
async { Ok(quote_with_min(0.01)) },
quote_with_min(0.01),
get_dummy_address(),
|| async { Ok(Amount::from_btc(0.0101)?) },
|| async {
@ -862,10 +252,10 @@ mod tests {
assert_eq!((amount, fees), (expected_amount, expected_fees));
assert_eq!(
writer.captured(),
r" INFO swap: Received quote price=0.00100000 BTC minimum_amount=0.01000000 BTC maximum_amount=184467440737.09551615 BTC
INFO swap: Deposit at least 0.00991000 BTC to cover the min quantity with fee!
INFO swap: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.00991000 BTC max_giveable=0.00010000 BTC minimum_amount=0.01000000 BTC maximum_amount=184467440737.09551615 BTC
INFO swap: Received Bitcoin new_balance=0.01010000 BTC max_giveable=0.01000000 BTC
r" INFO swap::api::request: Received quote price=0.001 BTC minimum_amount=0.01 BTC maximum_amount=184467440737.09551615 BTC
INFO swap::api::request: Deposit at least 0.00991 BTC to cover the min quantity with fee!
INFO swap::api::request: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.00991 BTC max_giveable=0.0001 BTC minimum_amount=0.01 BTC maximum_amount=184467440737.09551615 BTC
INFO swap::api::request: Received Bitcoin new_balance=0.0101 BTC max_giveable=0.01 BTC
"
);
}
@ -885,7 +275,7 @@ mod tests {
Duration::from_secs(1),
determine_btc_to_swap(
true,
async { Ok(quote_with_min(0.1)) },
quote_with_min(0.1),
get_dummy_address(),
|| async { Ok(Amount::from_btc(0.0101)?) },
|| async {
@ -902,13 +292,13 @@ mod tests {
assert!(matches!(error, tokio::time::error::Elapsed { .. }));
assert_eq!(
writer.captured(),
r" INFO swap: Received quote price=0.00100000 BTC minimum_amount=0.10000000 BTC maximum_amount=184467440737.09551615 BTC
INFO swap: Deposit at least 0.10001000 BTC to cover the min quantity with fee!
INFO swap: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.10001000 BTC max_giveable=0.00000000 BTC minimum_amount=0.10000000 BTC maximum_amount=184467440737.09551615 BTC
INFO swap: Received Bitcoin new_balance=0.01010000 BTC max_giveable=0.01000000 BTC
INFO swap: Deposited amount is less than `min_quantity`
INFO swap: Deposit at least 0.09001000 BTC to cover the min quantity with fee!
INFO swap: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.09001000 BTC max_giveable=0.01000000 BTC minimum_amount=0.10000000 BTC maximum_amount=184467440737.09551615 BTC
r" INFO swap::api::request: Received quote price=0.001 BTC minimum_amount=0.1 BTC maximum_amount=184467440737.09551615 BTC
INFO swap::api::request: Deposit at least 0.10001 BTC to cover the min quantity with fee!
INFO swap::api::request: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.10001 BTC max_giveable=0 BTC minimum_amount=0.1 BTC maximum_amount=184467440737.09551615 BTC
INFO swap::api::request: Received Bitcoin new_balance=0.0101 BTC max_giveable=0.01 BTC
INFO swap::api::request: Deposited amount is less than `min_quantity`
INFO swap::api::request: Deposit at least 0.09001 BTC to cover the min quantity with fee!
INFO swap::api::request: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.09001 BTC max_giveable=0.01 BTC minimum_amount=0.1 BTC maximum_amount=184467440737.09551615 BTC
"
);
}
@ -933,7 +323,7 @@ mod tests {
Duration::from_secs(10),
determine_btc_to_swap(
true,
async { Ok(quote_with_min(0.1)) },
quote_with_min(0.1),
get_dummy_address(),
|| async { Ok(Amount::from_btc(0.21)?) },
|| async {
@ -951,10 +341,10 @@ mod tests {
assert_eq!(
writer.captured(),
r" INFO swap: Received quote price=0.00100000 BTC minimum_amount=0.10000000 BTC maximum_amount=184467440737.09551615 BTC
INFO swap: Deposit at least 0.10001000 BTC to cover the min quantity with fee!
INFO swap: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.10001000 BTC max_giveable=0.00000000 BTC minimum_amount=0.10000000 BTC maximum_amount=184467440737.09551615 BTC
INFO swap: Received Bitcoin new_balance=0.21000000 BTC max_giveable=0.20000000 BTC
r" INFO swap::api::request: Received quote price=0.001 BTC minimum_amount=0.1 BTC maximum_amount=184467440737.09551615 BTC
INFO swap::api::request: Deposit at least 0.10001 BTC to cover the min quantity with fee!
INFO swap::api::request: Waiting for Bitcoin deposit deposit_address=1PdfytjS7C8wwd9Lq5o4x9aXA2YRqaCpH6 min_deposit=0.10001 BTC max_giveable=0 BTC minimum_amount=0.1 BTC maximum_amount=184467440737.09551615 BTC
INFO swap::api::request: Received Bitcoin new_balance=0.21 BTC max_giveable=0.2 BTC
"
);
}
@ -968,7 +358,7 @@ mod tests {
let determination_error = determine_btc_to_swap(
true,
async { Ok(quote_with_max(0.00)) },
quote_with_max(0.00),
get_dummy_address(),
|| async { Ok(Amount::from_btc(0.0101)?) },
|| async {

View File

@ -15,7 +15,8 @@ pub use crate::bitcoin::refund::TxRefund;
pub use crate::bitcoin::timelocks::{BlockHeight, ExpiredTimelocks};
pub use ::bitcoin::util::amount::Amount;
pub use ::bitcoin::util::psbt::PartiallySignedTransaction;
pub use ::bitcoin::{Address, Network, Transaction, Txid};
pub use ::bitcoin::{Address, AddressType, Network, Transaction, Txid};
use bitcoin::secp256k1::ecdsa;
pub use ecdsa_fun::adaptor::EncryptedSignature;
pub use ecdsa_fun::fun::Scalar;
pub use ecdsa_fun::Signature;
@ -25,9 +26,8 @@ pub use wallet::Wallet;
pub use wallet::WalletBuilder;
use crate::bitcoin::wallet::ScriptStatus;
use ::bitcoin::hashes::hex::ToHex;
use ::bitcoin::hashes::Hash;
use ::bitcoin::{secp256k1, Sighash};
use ::bitcoin::Sighash;
use anyhow::{bail, Context, Result};
use bdk::miniscript::descriptor::Wsh;
use bdk::miniscript::{Descriptor, Segwitv0};
@ -108,7 +108,7 @@ impl SecretKey {
}
}
#[derive(Debug, Copy, Clone, Serialize, Deserialize, PartialEq)]
#[derive(Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct PublicKey(Point);
impl PublicKey {
@ -206,20 +206,21 @@ pub fn verify_encsig(
#[error("encrypted signature is invalid")]
pub struct InvalidEncryptedSignature;
pub fn build_shared_output_descriptor(A: Point, B: Point) -> Descriptor<bitcoin::PublicKey> {
pub fn build_shared_output_descriptor(
A: Point,
B: Point,
) -> Result<Descriptor<bitcoin::PublicKey>> {
const MINISCRIPT_TEMPLATE: &str = "c:and_v(v:pk(A),pk_k(B))";
// NOTE: This shouldn't be a source of error, but maybe it is
let A = ToHex::to_hex(&secp256k1::PublicKey::from(A));
let B = ToHex::to_hex(&secp256k1::PublicKey::from(B));
let miniscript = MINISCRIPT_TEMPLATE.replace('A', &A).replace('B', &B);
let miniscript = MINISCRIPT_TEMPLATE
.replace('A', &A.to_string())
.replace('B', &B.to_string());
let miniscript =
bdk::miniscript::Miniscript::<bitcoin::PublicKey, Segwitv0>::from_str(&miniscript)
.expect("a valid miniscript");
Descriptor::Wsh(Wsh::new(miniscript).expect("a valid descriptor"))
Ok(Descriptor::Wsh(Wsh::new(miniscript)?))
}
pub fn recover(S: PublicKey, sig: Signature, encsig: EncryptedSignature) -> Result<SecretKey> {
@ -244,10 +245,72 @@ pub fn current_epoch(
}
if tx_lock_status.is_confirmed_with(cancel_timelock) {
return ExpiredTimelocks::Cancel;
return ExpiredTimelocks::Cancel {
blocks_left: tx_cancel_status.blocks_left_until(punish_timelock),
};
}
ExpiredTimelocks::None
ExpiredTimelocks::None {
blocks_left: tx_lock_status.blocks_left_until(cancel_timelock),
}
}
pub mod bitcoin_address {
use anyhow::{bail, Result};
use serde::Serialize;
use std::str::FromStr;
#[derive(thiserror::Error, Debug, Clone, Copy, PartialEq, Serialize)]
#[error("Invalid Bitcoin address provided, expected address on network {expected:?} but address provided is on {actual:?}")]
pub struct BitcoinAddressNetworkMismatch {
#[serde(with = "crate::bitcoin::network")]
expected: bitcoin::Network,
#[serde(with = "crate::bitcoin::network")]
actual: bitcoin::Network,
}
pub fn parse(addr_str: &str) -> Result<bitcoin::Address> {
let address = bitcoin::Address::from_str(addr_str)?;
if address.address_type() != Some(bitcoin::AddressType::P2wpkh) {
anyhow::bail!("Invalid Bitcoin address provided, only bech32 format is supported!")
}
Ok(address)
}
pub fn validate(
address: bitcoin::Address,
expected_network: bitcoin::Network,
) -> Result<bitcoin::Address> {
if address.network != expected_network {
bail!(BitcoinAddressNetworkMismatch {
expected: expected_network,
actual: address.network
});
}
Ok(address)
}
pub fn validate_is_testnet(
address: bitcoin::Address,
is_testnet: bool,
) -> Result<bitcoin::Address> {
let expected_network = if is_testnet {
bitcoin::Network::Testnet
} else {
bitcoin::Network::Bitcoin
};
validate(address, expected_network)
}
}
// Transform the ecdsa der signature bytes into a secp256kfun ecdsa signature type.
pub fn extract_ecdsa_sig(sig: &[u8]) -> Result<Signature> {
let data = &sig[..sig.len() - 1];
let sig = ecdsa::Signature::from_der(data)?.serialize_compact();
Signature::from_bytes(sig).ok_or(anyhow::anyhow!("invalid signature"))
}
/// Bitcoin error codes: https://github.com/bitcoin/bitcoin/blob/97d3500601c1d28642347d014a6de1e38f53ae4e/src/rpc/protocol.h#L23
@ -323,7 +386,10 @@ mod tests {
use super::*;
use crate::env::{GetConfig, Regtest};
use crate::protocol::{alice, bob};
use bitcoin::secp256k1;
use ecdsa_fun::fun::marker::{NonZero, Public};
use rand::rngs::OsRng;
use std::matches;
use uuid::Uuid;
#[test]
@ -338,7 +404,7 @@ mod tests {
tx_cancel_status,
);
assert_eq!(expired_timelock, ExpiredTimelocks::None)
assert!(matches!(expired_timelock, ExpiredTimelocks::None { .. }));
}
#[test]
@ -353,7 +419,7 @@ mod tests {
tx_cancel_status,
);
assert_eq!(expired_timelock, ExpiredTimelocks::Cancel)
assert!(matches!(expired_timelock, ExpiredTimelocks::Cancel { .. }));
}
#[test]
@ -468,4 +534,16 @@ mod tests {
transaction
)
}
#[test]
fn compare_point_hex() {
// secp256kfun Point and secp256k1 PublicKey should have the same bytes and hex representation
let secp = secp256k1::Secp256k1::default();
let keypair = secp256k1::KeyPair::new(&secp, &mut OsRng);
let pubkey = keypair.public_key();
let point: Point<_, Public, NonZero> = Point::from_bytes(pubkey.serialize()).unwrap();
assert_eq!(pubkey.to_string(), point.to_string());
}
}

View File

@ -5,7 +5,8 @@ use crate::bitcoin::{
};
use ::bitcoin::util::sighash::SighashCache;
use ::bitcoin::{
EcdsaSighashType, OutPoint, PackedLockTime, Script, Sequence, Sighash, TxIn, TxOut, Txid,
secp256k1, EcdsaSighashType, OutPoint, PackedLockTime, Script, Sequence, Sighash, TxIn, TxOut,
Txid,
};
use anyhow::Result;
use bdk::miniscript::Descriptor;
@ -24,6 +25,12 @@ use std::ops::Add;
#[serde(transparent)]
pub struct CancelTimelock(u32);
impl From<CancelTimelock> for u32 {
fn from(cancel_timelock: CancelTimelock) -> Self {
cancel_timelock.0
}
}
impl CancelTimelock {
pub const fn new(number_of_blocks: u32) -> Self {
Self(number_of_blocks)
@ -64,6 +71,12 @@ impl fmt::Display for CancelTimelock {
#[serde(transparent)]
pub struct PunishTimelock(u32);
impl From<PunishTimelock> for u32 {
fn from(punish_timelock: PunishTimelock) -> Self {
punish_timelock.0
}
}
impl PunishTimelock {
pub const fn new(number_of_blocks: u32) -> Self {
Self(number_of_blocks)
@ -105,8 +118,8 @@ impl TxCancel {
A: PublicKey,
B: PublicKey,
spending_fee: Amount,
) -> Self {
let cancel_output_descriptor = build_shared_output_descriptor(A.0, B.0);
) -> Result<Self> {
let cancel_output_descriptor = build_shared_output_descriptor(A.0, B.0)?;
let tx_in = TxIn {
previous_output: tx_lock.as_outpoint(),
@ -136,12 +149,12 @@ impl TxCancel {
)
.expect("sighash");
Self {
Ok(Self {
inner: transaction,
digest,
output_descriptor: cancel_output_descriptor,
lock_output_descriptor: tx_lock.output_descriptor.clone(),
}
})
}
pub fn txid(&self) -> Txid {
@ -202,22 +215,30 @@ impl TxCancel {
let A = ::bitcoin::PublicKey {
compressed: true,
inner: A.0.into(),
inner: secp256k1::PublicKey::from_slice(&A.0.to_bytes())?,
};
let B = ::bitcoin::PublicKey {
compressed: true,
inner: B.0.into(),
inner: secp256k1::PublicKey::from_slice(&B.0.to_bytes())?,
};
// The order in which these are inserted doesn't matter
satisfier.insert(A, ::bitcoin::EcdsaSig {
sig: sig_a.into(),
hash_ty: EcdsaSighashType::All,
});
satisfier.insert(B, ::bitcoin::EcdsaSig {
sig: sig_b.into(),
hash_ty: EcdsaSighashType::All,
});
let sig_a = secp256k1::ecdsa::Signature::from_compact(&sig_a.to_bytes())?;
let sig_b = secp256k1::ecdsa::Signature::from_compact(&sig_b.to_bytes())?;
satisfier.insert(
A,
::bitcoin::EcdsaSig {
sig: sig_a,
hash_ty: EcdsaSighashType::All,
},
);
satisfier.insert(
B,
::bitcoin::EcdsaSig {
sig: sig_b,
hash_ty: EcdsaSighashType::All,
},
);
satisfier
};

View File

@ -4,16 +4,17 @@ use crate::bitcoin::{
};
use ::bitcoin::util::psbt::PartiallySignedTransaction;
use ::bitcoin::{OutPoint, TxIn, TxOut, Txid};
use anyhow::{bail, Result};
use anyhow::{bail, Context, Result};
use bdk::database::BatchDatabase;
use bdk::miniscript::Descriptor;
use bdk::psbt::PsbtUtils;
use bitcoin::{PackedLockTime, Script, Sequence};
use serde::{Deserialize, Serialize};
const SCRIPT_SIZE: usize = 34;
const TX_LOCK_WEIGHT: usize = 485;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct TxLock {
inner: PartiallySignedTransaction,
pub(in crate::bitcoin) output_descriptor: Descriptor<::bitcoin::PublicKey>,
@ -31,7 +32,7 @@ impl TxLock {
C: EstimateFeeRate,
D: BatchDatabase,
{
let lock_output_descriptor = build_shared_output_descriptor(A.0, B.0);
let lock_output_descriptor = build_shared_output_descriptor(A.0, B.0)?;
let address = lock_output_descriptor
.address(wallet.get_network())
.expect("can derive address from descriptor");
@ -83,7 +84,7 @@ impl TxLock {
}
};
let descriptor = build_shared_output_descriptor(A.0, B.0);
let descriptor = build_shared_output_descriptor(A.0, B.0)?;
let legit_shared_output_script = descriptor.script_pubkey();
if shared_output_candidate.script_pubkey != legit_shared_output_script {
@ -100,6 +101,15 @@ impl TxLock {
Amount::from_sat(self.inner.clone().extract_tx().output[self.lock_output_vout()].value)
}
pub fn fee(&self) -> Result<Amount> {
Ok(Amount::from_sat(
self.inner
.clone()
.fee_amount()
.context("The PSBT is missing a TxOut for an input")?,
))
}
pub fn txid(&self) -> Txid {
self.inner.clone().extract_tx().txid()
}
@ -253,7 +263,7 @@ mod tests {
fn estimated_tx_lock_script_size_never_changes(a in crate::proptest::ecdsa_fun::point(), b in crate::proptest::ecdsa_fun::point()) {
proptest::prop_assume!(a != b);
let computed_size = build_shared_output_descriptor(a, b).script_pubkey().len();
let computed_size = build_shared_output_descriptor(a, b).unwrap().script_pubkey().len();
assert_eq!(computed_size, SCRIPT_SIZE);
}

View File

@ -1,7 +1,7 @@
use crate::bitcoin::wallet::Watchable;
use crate::bitcoin::{self, Address, Amount, PunishTimelock, Transaction, TxCancel, Txid};
use ::bitcoin::util::sighash::SighashCache;
use ::bitcoin::{EcdsaSighashType, Sighash};
use ::bitcoin::{secp256k1, EcdsaSighashType, Sighash};
use anyhow::{Context, Result};
use bdk::bitcoin::Script;
use bdk::miniscript::Descriptor;
@ -64,15 +64,23 @@ impl TxPunish {
let A = a.public().try_into()?;
let B = B.try_into()?;
let sig_a = secp256k1::ecdsa::Signature::from_compact(&sig_a.to_bytes())?;
let sig_b = secp256k1::ecdsa::Signature::from_compact(&sig_b.to_bytes())?;
// The order in which these are inserted doesn't matter
satisfier.insert(A, ::bitcoin::EcdsaSig {
sig: sig_a.into(),
hash_ty: EcdsaSighashType::All,
});
satisfier.insert(B, ::bitcoin::EcdsaSig {
sig: sig_b.into(),
hash_ty: EcdsaSighashType::All,
});
satisfier.insert(
A,
::bitcoin::EcdsaSig {
sig: sig_a,
hash_ty: EcdsaSighashType::All,
},
);
satisfier.insert(
B,
::bitcoin::EcdsaSig {
sig: sig_b,
hash_ty: EcdsaSighashType::All,
},
);
satisfier
};

View File

@ -6,7 +6,7 @@ use crate::bitcoin::{
use ::bitcoin::{Sighash, Txid};
use anyhow::{bail, Context, Result};
use bdk::miniscript::Descriptor;
use bitcoin::secp256k1::ecdsa;
use bitcoin::secp256k1;
use bitcoin::util::sighash::SighashCache;
use bitcoin::{EcdsaSighashType, Script};
use ecdsa_fun::adaptor::{Adaptor, HashTranscript};
@ -16,6 +16,8 @@ use ecdsa_fun::Signature;
use sha2::Sha256;
use std::collections::HashMap;
use super::extract_ecdsa_sig;
#[derive(Clone, Debug)]
pub struct TxRedeem {
inner: Transaction,
@ -64,7 +66,7 @@ impl TxRedeem {
) -> Result<Transaction> {
verify_encsig(
B,
PublicKey::from(s_a.clone()),
PublicKey::from(s_a),
&self.digest(),
&encrypted_signature,
)
@ -79,22 +81,30 @@ impl TxRedeem {
let A = ::bitcoin::PublicKey {
compressed: true,
inner: a.public.into(),
inner: secp256k1::PublicKey::from_slice(&a.public.to_bytes())?,
};
let B = ::bitcoin::PublicKey {
compressed: true,
inner: B.0.into(),
inner: secp256k1::PublicKey::from_slice(&B.0.to_bytes())?,
};
let sig_a = secp256k1::ecdsa::Signature::from_compact(&sig_a.to_bytes())?;
let sig_b = secp256k1::ecdsa::Signature::from_compact(&sig_b.to_bytes())?;
// The order in which these are inserted doesn't matter
satisfier.insert(A, ::bitcoin::EcdsaSig {
sig: sig_a.into(),
hash_ty: EcdsaSighashType::All,
});
satisfier.insert(B, ::bitcoin::EcdsaSig {
sig: sig_b.into(),
hash_ty: EcdsaSighashType::All,
});
satisfier.insert(
A,
::bitcoin::EcdsaSig {
sig: sig_a,
hash_ty: EcdsaSighashType::All,
},
);
satisfier.insert(
B,
::bitcoin::EcdsaSig {
sig: sig_b,
hash_ty: EcdsaSighashType::All,
},
);
satisfier
};
@ -114,16 +124,16 @@ impl TxRedeem {
let input = match candidate_transaction.input.as_slice() {
[input] => input,
[] => bail!(NoInputs),
[inputs @ ..] => bail!(TooManyInputs(inputs.len())),
inputs => bail!(TooManyInputs(inputs.len())),
};
let sigs = match input.witness.iter().collect::<Vec<_>>().as_slice() {
let sigs = match input.witness.to_vec().as_slice() {
[sig_1, sig_2, _script] => [sig_1, sig_2]
.iter()
.map(|sig| ecdsa::Signature::from_der(&sig[..sig.len() - 1]).map(Signature::from))
.collect::<std::result::Result<Vec<_>, _>>(),
.into_iter()
.map(|sig| extract_ecdsa_sig(sig))
.collect::<Result<Vec<_>, _>>(),
[] => bail!(EmptyWitnessStack),
[witnesses @ ..] => bail!(NotThreeWitnesses(witnesses.len())),
witnesses => bail!(NotThreeWitnesses(witnesses.len())),
}?;
let sig = sigs

View File

@ -4,7 +4,7 @@ use crate::bitcoin::{
TooManyInputs, Transaction, TxCancel,
};
use crate::{bitcoin, monero};
use ::bitcoin::secp256k1::ecdsa;
use ::bitcoin::secp256k1;
use ::bitcoin::util::sighash::SighashCache;
use ::bitcoin::{EcdsaSighashType, Script, Sighash, Txid};
use anyhow::{bail, Context, Result};
@ -12,6 +12,8 @@ use bdk::miniscript::Descriptor;
use ecdsa_fun::Signature;
use std::collections::HashMap;
use super::extract_ecdsa_sig;
#[derive(Debug)]
pub struct TxRefund {
inner: Transaction,
@ -62,22 +64,30 @@ impl TxRefund {
let A = ::bitcoin::PublicKey {
compressed: true,
inner: A.0.into(),
inner: secp256k1::PublicKey::from_slice(&A.0.to_bytes())?,
};
let B = ::bitcoin::PublicKey {
compressed: true,
inner: B.0.into(),
inner: secp256k1::PublicKey::from_slice(&B.0.to_bytes())?,
};
let sig_a = secp256k1::ecdsa::Signature::from_compact(&sig_a.to_bytes())?;
let sig_b = secp256k1::ecdsa::Signature::from_compact(&sig_b.to_bytes())?;
// The order in which these are inserted doesn't matter
satisfier.insert(A, ::bitcoin::EcdsaSig {
sig: sig_a.into(),
hash_ty: EcdsaSighashType::All,
});
satisfier.insert(B, ::bitcoin::EcdsaSig {
sig: sig_b.into(),
hash_ty: EcdsaSighashType::All,
});
satisfier.insert(
A,
::bitcoin::EcdsaSig {
sig: sig_a,
hash_ty: EcdsaSighashType::All,
},
);
satisfier.insert(
B,
::bitcoin::EcdsaSig {
sig: sig_b,
hash_ty: EcdsaSighashType::All,
},
);
satisfier
};
@ -121,16 +131,16 @@ impl TxRefund {
let input = match candidate_transaction.input.as_slice() {
[input] => input,
[] => bail!(NoInputs),
[inputs @ ..] => bail!(TooManyInputs(inputs.len())),
inputs => bail!(TooManyInputs(inputs.len())),
};
let sigs = match input.witness.iter().collect::<Vec<_>>().as_slice() {
let sigs = match input.witness.to_vec().as_slice() {
[sig_1, sig_2, _script] => [sig_1, sig_2]
.iter()
.map(|sig| ecdsa::Signature::from_der(&sig[..sig.len() - 1]).map(Signature::from))
.collect::<std::result::Result<Vec<_>, _>>(),
.into_iter()
.map(|sig| extract_ecdsa_sig(sig))
.collect::<Result<Vec<_>, _>>(),
[] => bail!(EmptyWitnessStack),
[witnesses @ ..] => bail!(NotThreeWitnesses(witnesses.len())),
witnesses => bail!(NotThreeWitnesses(witnesses.len())),
}?;
let sig = sigs

View File

@ -37,9 +37,9 @@ impl Add<u32> for BlockHeight {
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
#[derive(Serialize, Debug, Clone, Copy, PartialEq, Eq)]
pub enum ExpiredTimelocks {
None,
Cancel,
None { blocks_left: u32 },
Cancel { blocks_left: u32 },
Punish,
}

View File

@ -24,6 +24,7 @@ use std::path::Path;
use std::sync::Arc;
use std::time::{Duration, Instant};
use tokio::sync::{watch, Mutex};
use tracing::{debug_span, Instrument};
const SLED_TREE_NAME: &str = "default_tree";
@ -54,7 +55,7 @@ impl Wallet {
) -> Result<Self> {
let data_dir = data_dir.as_ref();
let wallet_dir = data_dir.join(WALLET);
let database = bdk::sled::open(&wallet_dir)?.open_tree(SLED_TREE_NAME)?;
let database = bdk::sled::open(wallet_dir)?.open_tree(SLED_TREE_NAME)?;
let network = env_config.bitcoin_network;
let wallet = match bdk::Wallet::new(
@ -64,9 +65,7 @@ impl Wallet {
database,
) {
Ok(w) => w,
Err(e) if matches!(e, bdk::Error::ChecksumMismatch) => {
Self::migrate(data_dir, xprivkey, network)?
}
Err(bdk::Error::ChecksumMismatch) => Self::migrate(data_dir, xprivkey, network)?,
err => err?,
};
@ -97,7 +96,7 @@ impl Wallet {
std::fs::rename(from, to)?;
let wallet_dir = data_dir.join(WALLET);
let database = bdk::sled::open(&wallet_dir)?.open_tree(SLED_TREE_NAME)?;
let database = bdk::sled::open(wallet_dir)?.open_tree(SLED_TREE_NAME)?;
let wallet = bdk::Wallet::new(
bdk::template::Bip84(xprivkey, KeychainKind::External),
@ -192,7 +191,7 @@ impl Wallet {
tokio::time::sleep(Duration::from_secs(5)).await;
}
});
}.instrument(debug_span!("BitcoinWalletSubscription")));
Subscription {
receiver,
@ -274,7 +273,7 @@ impl Subscription {
pub async fn wait_until_confirmed_with<T>(&self, target: T) -> Result<()>
where
u32: PartialOrd<T>,
T: Into<u32>,
T: Copy,
{
self.wait_until(|status| status.is_confirmed_with(target))
@ -469,6 +468,7 @@ where
) -> Result<bitcoin::Amount> {
let client = self.client.lock().await;
let fee_rate = client.estimate_feerate(self.target_block)?;
let min_relay_fee = client.min_relay_fee()?;
estimate_fee(weight, transfer_amount, fee_rate, min_relay_fee)
@ -738,12 +738,15 @@ impl Client {
let client = bdk::electrum_client::Client::new(electrum_rpc_url.as_str())
.context("Failed to initialize Electrum RPC client")?;
let blockchain = ElectrumBlockchain::from(client);
let last_sync = Instant::now()
.checked_sub(interval)
.expect("no underflow since block time is only 600 secs");
Ok(Self {
electrum,
blockchain,
latest_block_height: BlockHeight::try_from(latest_block)?,
last_sync: Instant::now() - interval,
last_sync,
sync_interval: interval,
script_history: Default::default(),
subscriptions: Default::default(),
@ -758,9 +761,10 @@ impl Client {
self.blockchain.get_tx(txid)
}
fn update_state(&mut self) -> Result<()> {
fn update_state(&mut self, force_sync: bool) -> Result<()> {
let now = Instant::now();
if now < self.last_sync + self.sync_interval {
if !force_sync && now < self.last_sync + self.sync_interval {
return Ok(());
}
@ -780,9 +784,14 @@ impl Client {
if !self.script_history.contains_key(&script) {
self.script_history.insert(script.clone(), vec![]);
}
self.update_state()?;
// When we first subscribe to a script we want to immediately fetch its status
// Otherwise we would have to wait for the next sync interval, which can take a minute
// This would result in potentially inaccurate status updates until that next sync interval is hit
self.update_state(true)?;
} else {
self.update_state(false)?;
}
let history = self.script_history.entry(script).or_default();
@ -863,6 +872,11 @@ impl EstimateFeeRate for Client {
// https://github.com/romanz/electrs/blob/f9cf5386d1b5de6769ee271df5eef324aa9491bc/src/rpc.rs#L213
// Returned estimated fees are per BTC/kb.
let fee_per_byte = self.electrum.estimate_fee(target_block)?;
if fee_per_byte < 0.0 {
bail!("Fee per byte returned by electrum server is negative: {}. This may indicate that fee estimation is not supported by this server", fee_per_byte);
}
// we do not expect fees being that high.
#[allow(clippy::cast_possible_truncation)]
Ok(FeeRate::from_btc_per_kvb(fee_per_byte as f32))
@ -876,7 +890,7 @@ impl EstimateFeeRate for Client {
}
}
#[derive(Debug, Copy, Clone, PartialEq)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum ScriptStatus {
Unseen,
InMempool,
@ -893,7 +907,7 @@ impl ScriptStatus {
}
}
#[derive(Debug, Copy, Clone, PartialEq)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub struct Confirmed {
/// The depth of this transaction within the blockchain.
///
@ -924,9 +938,20 @@ impl Confirmed {
pub fn meets_target<T>(&self, target: T) -> bool
where
u32: PartialOrd<T>,
T: Into<u32>,
{
self.confirmations() >= target
self.confirmations() >= target.into()
}
pub fn blocks_left_until<T>(&self, target: T) -> u32
where
T: Into<u32> + Copy,
{
if self.meets_target(target) {
0
} else {
target.into() - self.confirmations()
}
}
}
@ -939,7 +964,7 @@ impl ScriptStatus {
/// Check if the script has met the given confirmation target.
pub fn is_confirmed_with<T>(&self, target: T) -> bool
where
u32: PartialOrd<T>,
T: Into<u32>,
{
match self {
ScriptStatus::Confirmed(inner) => inner.meets_target(target),
@ -947,6 +972,17 @@ impl ScriptStatus {
}
}
// Calculate the number of blocks left until the target is met.
pub fn blocks_left_until<T>(&self, target: T) -> u32
where
T: Into<u32> + Copy,
{
match self {
ScriptStatus::Confirmed(inner) => inner.blocks_left_until(target),
_ => target.into(),
}
}
pub fn has_been_seen(&self) -> bool {
matches!(self, ScriptStatus::InMempool | ScriptStatus::Confirmed(_))
}
@ -978,7 +1014,7 @@ mod tests {
fn given_depth_0_should_meet_confirmation_target_one() {
let script = ScriptStatus::Confirmed(Confirmed { depth: 0 });
let confirmed = script.is_confirmed_with(1);
let confirmed = script.is_confirmed_with(1_u32);
assert!(confirmed)
}
@ -987,7 +1023,7 @@ mod tests {
fn given_confirmations_1_should_meet_confirmation_target_one() {
let script = ScriptStatus::from_confirmations(1);
let confirmed = script.is_confirmed_with(1);
let confirmed = script.is_confirmed_with(1_u32);
assert!(confirmed)
}
@ -1002,6 +1038,33 @@ mod tests {
assert_eq!(confirmed.depth, 0)
}
#[test]
fn given_depth_0_should_return_0_blocks_left_until_1() {
let script = ScriptStatus::Confirmed(Confirmed { depth: 0 });
let blocks_left = script.blocks_left_until(1_u32);
assert_eq!(blocks_left, 0)
}
#[test]
fn given_depth_1_should_return_0_blocks_left_until_1() {
let script = ScriptStatus::Confirmed(Confirmed { depth: 1 });
let blocks_left = script.blocks_left_until(1_u32);
assert_eq!(blocks_left, 0)
}
#[test]
fn given_depth_0_should_return_1_blocks_left_until_2() {
let script = ScriptStatus::Confirmed(Confirmed { depth: 0 });
let blocks_left = script.blocks_left_until(2_u32);
assert_eq!(blocks_left, 1)
}
#[test]
fn given_one_BTC_and_100k_sats_per_vb_fees_should_not_hit_max() {
// 400 weight = 100 vbyte

View File

@ -3,7 +3,6 @@ pub mod cancel_and_refund;
pub mod command;
mod event_loop;
mod list_sellers;
pub mod tracing;
pub mod transport;
pub use behaviour::{Behaviour, OutEvent};
@ -15,6 +14,7 @@ pub use list_sellers::{list_sellers, Seller, Status as SellerStatus};
mod tests {
use super::*;
use crate::asb;
use crate::asb::rendezvous::RendezvousNode;
use crate::cli::list_sellers::{Seller, Status};
use crate::network::quote;
use crate::network::quote::BidQuote;
@ -33,10 +33,8 @@ mod tests {
async fn list_sellers_should_report_all_registered_asbs_with_a_quote() {
let namespace = XmrBtcNamespace::Mainnet;
let (rendezvous_address, rendezvous_peer_id) = setup_rendezvous_point().await;
let expected_seller_1 =
setup_asb(rendezvous_peer_id, rendezvous_address.clone(), namespace).await;
let expected_seller_2 =
setup_asb(rendezvous_peer_id, rendezvous_address.clone(), namespace).await;
let expected_seller_1 = setup_asb(rendezvous_peer_id, &rendezvous_address, namespace).await;
let expected_seller_2 = setup_asb(rendezvous_peer_id, &rendezvous_address, namespace).await;
let list_sellers = list_sellers(
rendezvous_peer_id,
@ -72,7 +70,7 @@ mod tests {
async fn setup_asb(
rendezvous_peer_id: PeerId,
rendezvous_address: Multiaddr,
rendezvous_address: &Multiaddr,
namespace: XmrBtcNamespace,
) -> Seller {
let static_quote = BidQuote {
@ -81,18 +79,18 @@ mod tests {
max_quantity: bitcoin::Amount::from_sat(9001),
};
let mut asb = new_swarm(|_, identity| StaticQuoteAsbBehaviour {
rendezvous: asb::rendezous::Behaviour::new(
identity,
rendezvous_peer_id,
rendezvous_address,
namespace,
None,
),
ping: Default::default(),
quote: quote::asb(),
static_quote,
registered: false,
let mut asb = new_swarm(|_, identity| {
let rendezvous_node =
RendezvousNode::new(rendezvous_address, rendezvous_peer_id, namespace, None);
let rendezvous = asb::rendezvous::Behaviour::new(identity, vec![rendezvous_node]);
StaticQuoteAsbBehaviour {
rendezvous,
ping: Default::default(),
quote: quote::asb(),
static_quote,
registered: false,
}
});
let asb_address = asb.listen_on_tcp_localhost().await;
@ -121,7 +119,7 @@ mod tests {
#[derive(libp2p::NetworkBehaviour)]
#[behaviour(event_process = true)]
struct StaticQuoteAsbBehaviour {
rendezvous: asb::rendezous::Behaviour,
rendezvous: asb::rendezvous::Behaviour,
// Support `Ping` as a workaround until https://github.com/libp2p/rust-libp2p/issues/2109 is fixed.
ping: libp2p::ping::Ping,
quote: quote::Behaviour,

View File

@ -1,7 +1,11 @@
use crate::monero::Scalar;
use crate::network::cooperative_xmr_redeem_after_punish::CooperativeXmrRedeemRejectReason;
use crate::network::quote::BidQuote;
use crate::network::rendezvous::XmrBtcNamespace;
use crate::network::swap_setup::bob;
use crate::network::{encrypted_signature, quote, redial, transfer_proof};
use crate::network::{
cooperative_xmr_redeem_after_punish, encrypted_signature, quote, redial, transfer_proof,
};
use crate::protocol::bob::State2;
use crate::{bitcoin, env};
use anyhow::{anyhow, Error, Result};
@ -28,6 +32,16 @@ pub enum OutEvent {
EncryptedSignatureAcknowledged {
id: RequestId,
},
CooperativeXmrRedeemFulfilled {
id: RequestId,
s_a: Scalar,
swap_id: uuid::Uuid,
},
CooperativeXmrRedeemRejected {
id: RequestId,
reason: CooperativeXmrRedeemRejectReason,
swap_id: uuid::Uuid,
},
AllRedialAttemptsExhausted {
peer: PeerId,
},
@ -64,6 +78,7 @@ pub struct Behaviour {
pub quote: quote::Behaviour,
pub swap_setup: bob::Behaviour,
pub transfer_proof: transfer_proof::Behaviour,
pub cooperative_xmr_redeem: cooperative_xmr_redeem_after_punish::Behaviour,
pub encrypted_signature: encrypted_signature::Behaviour,
pub redial: redial::Behaviour,
pub identify: Identify,
@ -91,6 +106,7 @@ impl Behaviour {
swap_setup: bob::Behaviour::new(env_config, bitcoin_wallet),
transfer_proof: transfer_proof::bob(),
encrypted_signature: encrypted_signature::bob(),
cooperative_xmr_redeem: cooperative_xmr_redeem_after_punish::bob(),
redial: redial::Behaviour::new(alice, Duration::from_secs(2)),
ping: Ping::new(PingConfig::new().with_keep_alive(true)),
identify: Identify::new(identifyConfig),

View File

@ -1,5 +1,4 @@
use crate::bitcoin::wallet::Subscription;
use crate::bitcoin::{parse_rpc_error_code, RpcErrorCode, Wallet};
use crate::bitcoin::{ExpiredTimelocks, Wallet};
use crate::protocol::bob::BobState;
use crate::protocol::Database;
use anyhow::{bail, Result};
@ -10,10 +9,10 @@ use uuid::Uuid;
pub async fn cancel_and_refund(
swap_id: Uuid,
bitcoin_wallet: Arc<Wallet>,
db: Arc<dyn Database>,
db: Arc<dyn Database + Send + Sync>,
) -> Result<BobState> {
if let Err(err) = cancel(swap_id, bitcoin_wallet.clone(), db.clone()).await {
tracing::info!(%err, "Could not submit cancel transaction");
tracing::warn!(%err, "Could not cancel swap. Attempting to refund anyway");
};
let state = match refund(swap_id, bitcoin_wallet, db).await {
@ -21,20 +20,27 @@ pub async fn cancel_and_refund(
Err(e) => bail!(e),
};
tracing::info!("Refund transaction submitted");
Ok(state)
}
pub async fn cancel(
swap_id: Uuid,
bitcoin_wallet: Arc<Wallet>,
db: Arc<dyn Database>,
) -> Result<(Txid, Subscription, BobState)> {
db: Arc<dyn Database + Send + Sync>,
) -> Result<(Txid, BobState)> {
let state = db.get_state(swap_id).await?.try_into()?;
let state6 = match state {
BobState::BtcLocked { state3, .. } => state3.cancel(),
BobState::XmrLockProofReceived { state, .. } => state.cancel(),
BobState::BtcLocked {
state3,
monero_wallet_restore_blockheight,
..
} => state3.cancel(monero_wallet_restore_blockheight),
BobState::XmrLockProofReceived {
state,
monero_wallet_restore_blockheight,
..
} => state.cancel(monero_wallet_restore_blockheight),
BobState::XmrLocked(state4) => state4.cancel(),
BobState::EncSigSent(state4) => state4.cancel(),
BobState::CancelTimelockExpired(state6) => state6,
@ -47,46 +53,89 @@ pub async fn cancel(
| BobState::XmrRedeemed { .. }
| BobState::BtcPunished { .. }
| BobState::SafelyAborted => bail!(
"Cannot cancel swap {} because it is in state {} which is not refundable.",
"Cannot cancel swap {} because it is in state {} which is not cancellable.",
swap_id,
state
),
};
tracing::info!(%swap_id, "Manually cancelling swap");
tracing::info!(%swap_id, "Attempting to manually cancel swap");
let (txid, subscription) = match state6.submit_tx_cancel(bitcoin_wallet.as_ref()).await {
Ok(txid) => txid,
// Attempt to just publish the cancel transaction
match state6.submit_tx_cancel(bitcoin_wallet.as_ref()).await {
Ok((txid, _)) => {
let state = BobState::BtcCancelled(state6);
db.insert_latest_state(swap_id, state.clone().into())
.await?;
Ok((txid, state))
}
// If we fail to submit the cancel transaction it can have one of two reasons:
// 1. The cancel timelock hasn't expired yet
// 2. The cancel transaction has already been published by Alice
Err(err) => {
if let Ok(error_code) = parse_rpc_error_code(&err) {
tracing::debug!(%error_code, "parse rpc error");
if error_code == i64::from(RpcErrorCode::RpcVerifyAlreadyInChain) {
tracing::info!("Cancel transaction has already been confirmed on chain");
} else if error_code == i64::from(RpcErrorCode::RpcVerifyError) {
tracing::info!("General error trying to submit cancel transaction");
// Check if Alice has already published the cancel transaction while we were absent
if let Ok(tx) = state6.check_for_tx_cancel(bitcoin_wallet.as_ref()).await {
let state = BobState::BtcCancelled(state6);
db.insert_latest_state(swap_id, state.clone().into())
.await?;
tracing::info!("Alice has already cancelled the swap");
return Ok((tx.txid(), state));
}
// The cancel transaction has not been published yet and we failed to publish it ourselves
// Here we try to figure out why
match state6.expired_timelock(bitcoin_wallet.as_ref()).await {
// We cannot cancel because Alice has already cancelled and punished afterwards
Ok(ExpiredTimelocks::Punish { .. }) => {
let state = BobState::BtcPunished {
state: state6.clone(),
tx_lock_id: state6.tx_lock_id(),
};
db.insert_latest_state(swap_id, state.clone().into())
.await?;
tracing::info!("You have been punished for not refunding in time");
bail!(err.context("Cannot cancel swap because we have already been punished"));
}
// We cannot cancel because the cancel timelock has not expired yet
Ok(ExpiredTimelocks::None { blocks_left }) => {
bail!(err.context(
format!(
"Cannot cancel swap because the cancel timelock has not expired yet. Blocks left: {}",
blocks_left
)
));
}
Ok(ExpiredTimelocks::Cancel { .. }) => {
bail!(err.context("Failed to cancel swap even though cancel timelock has expired. This is unexpected."));
}
Err(timelock_err) => {
bail!(err
.context(timelock_err)
.context("Failed to cancel swap and could not check timelock status"));
}
}
bail!(err);
}
};
let state = BobState::BtcCancelled(state6);
db.insert_latest_state(swap_id, state.clone().into())
.await?;
Ok((txid, subscription, state))
}
}
pub async fn refund(
swap_id: Uuid,
bitcoin_wallet: Arc<Wallet>,
db: Arc<dyn Database>,
db: Arc<dyn Database + Send + Sync>,
) -> Result<BobState> {
let state = db.get_state(swap_id).await?.try_into()?;
let state6 = match state {
BobState::BtcLocked { state3, .. } => state3.cancel(),
BobState::XmrLockProofReceived { state, .. } => state.cancel(),
BobState::BtcLocked {
state3,
monero_wallet_restore_blockheight,
} => state3.cancel(monero_wallet_restore_blockheight),
BobState::XmrLockProofReceived {
state,
monero_wallet_restore_blockheight,
..
} => state.cancel(monero_wallet_restore_blockheight),
BobState::XmrLocked(state4) => state4.cancel(),
BobState::EncSigSent(state4) => state4.cancel(),
BobState::CancelTimelockExpired(state6) => state6,
@ -104,12 +153,52 @@ pub async fn refund(
),
};
tracing::info!(%swap_id, "Manually refunding swap");
state6.publish_refund_btc(bitcoin_wallet.as_ref()).await?;
tracing::info!(%swap_id, "Attempting to manually refund swap");
let state = BobState::BtcRefunded(state6);
db.insert_latest_state(swap_id, state.clone().into())
.await?;
// Attempt to just publish the refund transaction
match state6.publish_refund_btc(bitcoin_wallet.as_ref()).await {
Ok(_) => {
let state = BobState::BtcRefunded(state6);
db.insert_latest_state(swap_id, state.clone().into())
.await?;
Ok(state)
Ok(state)
}
// If we fail to submit the refund transaction it can have one of two reasons:
// 1. The cancel transaction has not been published yet
// 2. The refund timelock has already expired and we have been punished
Err(bitcoin_publication_err) => {
match state6.expired_timelock(bitcoin_wallet.as_ref()).await {
// We have been punished
Ok(ExpiredTimelocks::Punish { .. }) => {
let state = BobState::BtcPunished {
state: state6.clone(),
tx_lock_id: state6.tx_lock_id(),
};
db.insert_latest_state(swap_id, state.clone().into())
.await?;
tracing::info!("You have been punished for not refunding in time");
bail!(bitcoin_publication_err
.context("Cannot refund swap because we have already been punished"));
}
Ok(ExpiredTimelocks::None { blocks_left }) => {
bail!(
bitcoin_publication_err.context(format!(
"Cannot refund swap because the cancel timelock has not expired yet. Blocks left: {}",
blocks_left
))
);
}
Ok(ExpiredTimelocks::Cancel { .. }) => {
bail!(bitcoin_publication_err.context("Failed to refund swap even though cancel timelock has expired. This is unexpected."));
}
Err(e) => {
bail!(bitcoin_publication_err
.context(e)
.context("Failed to refund swap and could not check timelock status"));
}
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,12 @@
use crate::bitcoin::EncryptedSignature;
use crate::cli::behaviour::{Behaviour, OutEvent};
use crate::monero;
use crate::network::cooperative_xmr_redeem_after_punish::{Request, Response};
use crate::network::encrypted_signature;
use crate::network::quote::BidQuote;
use crate::network::swap_setup::bob::NewSwap;
use crate::protocol::bob::State2;
use crate::protocol::Database;
use anyhow::{Context, Result};
use futures::future::{BoxFuture, OptionFuture};
use futures::{FutureExt, StreamExt};
@ -13,6 +15,7 @@ use libp2p::swarm::dial_opts::DialOpts;
use libp2p::swarm::SwarmEvent;
use libp2p::{PeerId, Swarm};
use std::collections::HashMap;
use std::sync::Arc;
use std::time::Duration;
use uuid::Uuid;
@ -21,9 +24,11 @@ pub struct EventLoop {
swap_id: Uuid,
swarm: libp2p::Swarm<Behaviour>,
alice_peer_id: PeerId,
db: Arc<dyn Database + Send + Sync>,
// these streams represents outgoing requests that we have to make
quote_requests: bmrng::RequestReceiverStream<(), BidQuote>,
cooperative_xmr_redeem_requests: bmrng::RequestReceiverStream<Uuid, Response>,
encrypted_signatures: bmrng::RequestReceiverStream<EncryptedSignature, ()>,
swap_setup_requests: bmrng::RequestReceiverStream<NewSwap, Result<State2>>,
@ -33,7 +38,7 @@ pub struct EventLoop {
inflight_quote_requests: HashMap<RequestId, bmrng::Responder<BidQuote>>,
inflight_encrypted_signature_requests: HashMap<RequestId, bmrng::Responder<()>>,
inflight_swap_setup: Option<bmrng::Responder<Result<State2>>>,
inflight_cooperative_xmr_redeem_requests: HashMap<RequestId, bmrng::Responder<Response>>,
/// The sender we will use to relay incoming transfer proofs.
transfer_proof: bmrng::RequestSender<monero::TransferProof, ()>,
/// The future representing the successful handling of an incoming transfer
@ -51,12 +56,13 @@ impl EventLoop {
swap_id: Uuid,
swarm: Swarm<Behaviour>,
alice_peer_id: PeerId,
db: Arc<dyn Database + Send + Sync>,
) -> Result<(Self, EventLoopHandle)> {
let execution_setup = bmrng::channel_with_timeout(1, Duration::from_secs(60));
let transfer_proof = bmrng::channel_with_timeout(1, Duration::from_secs(60));
let encrypted_signature = bmrng::channel(1);
let quote = bmrng::channel_with_timeout(1, Duration::from_secs(60));
let cooperative_xmr_redeem = bmrng::channel_with_timeout(1, Duration::from_secs(60));
let event_loop = EventLoop {
swap_id,
swarm,
@ -64,17 +70,21 @@ impl EventLoop {
swap_setup_requests: execution_setup.1.into(),
transfer_proof: transfer_proof.0,
encrypted_signatures: encrypted_signature.1.into(),
cooperative_xmr_redeem_requests: cooperative_xmr_redeem.1.into(),
quote_requests: quote.1.into(),
inflight_quote_requests: HashMap::default(),
inflight_swap_setup: None,
inflight_encrypted_signature_requests: HashMap::default(),
inflight_cooperative_xmr_redeem_requests: HashMap::default(),
pending_transfer_proof: OptionFuture::from(None),
db,
};
let handle = EventLoopHandle {
swap_setup: execution_setup.0,
transfer_proof: transfer_proof.1,
encrypted_signature: encrypted_signature.0,
cooperative_xmr_redeem: cooperative_xmr_redeem.0,
quote: quote.0,
};
@ -108,71 +118,106 @@ impl EventLoop {
SwarmEvent::Behaviour(OutEvent::TransferProofReceived { msg, channel, peer }) => {
let swap_id = msg.swap_id;
if peer != self.alice_peer_id {
tracing::warn!(
%swap_id,
"Ignoring malicious transfer proof from {}, expected to receive it from {}",
peer,
self.alice_peer_id);
continue;
}
if swap_id != self.swap_id {
// TODO: Save unexpected transfer proofs in the database and check for messages in the database when handling swaps
tracing::warn!("Received unexpected transfer proof for swap {} while running swap {}. This transfer proof will be ignored", swap_id, self.swap_id);
// When receiving a transfer proof that is unexpected we still have to acknowledge that it was received
let _ = self.swarm.behaviour_mut().transfer_proof.send_response(channel, ());
continue;
}
let mut responder = match self.transfer_proof.send(msg.tx_lock_proof).await {
Ok(responder) => responder,
Err(e) => {
tracing::warn!("Failed to pass on transfer proof: {:#}", e);
continue;
if swap_id == self.swap_id {
if peer != self.alice_peer_id {
tracing::warn!(
%swap_id,
"Ignoring malicious transfer proof from {}, expected to receive it from {}",
peer,
self.alice_peer_id);
continue;
}
};
self.pending_transfer_proof = OptionFuture::from(Some(async move {
let _ = responder.recv().await;
let mut responder = match self.transfer_proof.send(msg.tx_lock_proof).await {
Ok(responder) => responder,
Err(e) => {
tracing::warn!("Failed to pass on transfer proof: {:#}", e);
continue;
}
};
channel
}.boxed()));
self.pending_transfer_proof = OptionFuture::from(Some(async move {
let _ = responder.recv().await;
channel
}.boxed()));
}else {
// Check if the transfer proof is sent from the correct peer and if we have a record of the swap
match self.db.get_peer_id(swap_id).await {
// We have a record of the swap
Ok(buffer_swap_alice_peer_id) => {
if buffer_swap_alice_peer_id == self.alice_peer_id {
// Save transfer proof in the database such that we can process it later when we resume the swap
match self.db.insert_buffered_transfer_proof(swap_id, msg.tx_lock_proof).await {
Ok(_) => {
tracing::info!("Received transfer proof for swap {} while running swap {}. Buffering this transfer proof in the database for later retrieval", swap_id, self.swap_id);
let _ = self.swarm.behaviour_mut().transfer_proof.send_response(channel, ());
}
Err(e) => {
tracing::error!("Failed to buffer transfer proof for swap {}: {:#}", swap_id, e);
}
};
}else {
tracing::warn!(
%swap_id,
"Ignoring malicious transfer proof from {}, expected to receive it from {}",
self.swap_id,
buffer_swap_alice_peer_id);
}
},
// We do not have a record of the swap or an error occurred while retrieving the peer id of Alice
Err(e) => {
if let Some(sqlx::Error::RowNotFound) = e.downcast_ref::<sqlx::Error>() {
tracing::warn!("Ignoring transfer proof for swap {} while running swap {}. We do not have a record of this swap", swap_id, self.swap_id);
} else {
tracing::error!("Ignoring transfer proof for swap {} while running swap {}. Failed to retrieve the peer id of Alice for the corresponding swap: {:#}", swap_id, self.swap_id, e);
}
}
}
}
}
SwarmEvent::Behaviour(OutEvent::EncryptedSignatureAcknowledged { id }) => {
if let Some(responder) = self.inflight_encrypted_signature_requests.remove(&id) {
let _ = responder.respond(());
}
}
SwarmEvent::Behaviour(OutEvent::CooperativeXmrRedeemFulfilled { id, swap_id, s_a }) => {
if let Some(responder) = self.inflight_cooperative_xmr_redeem_requests.remove(&id) {
let _ = responder.respond(Response::Fullfilled { s_a, swap_id });
}
}
SwarmEvent::Behaviour(OutEvent::CooperativeXmrRedeemRejected { id, swap_id, reason }) => {
if let Some(responder) = self.inflight_cooperative_xmr_redeem_requests.remove(&id) {
let _ = responder.respond(Response::Rejected { reason, swap_id });
}
}
SwarmEvent::Behaviour(OutEvent::AllRedialAttemptsExhausted { peer }) if peer == self.alice_peer_id => {
tracing::error!("Exhausted all re-dial attempts to Alice");
return;
}
SwarmEvent::Behaviour(OutEvent::Failure { peer, error }) => {
tracing::warn!(%peer, "Communication error: {:#}", error);
tracing::warn!(%peer, err = %error, "Communication error");
return;
}
SwarmEvent::ConnectionEstablished { peer_id, endpoint, .. } if peer_id == self.alice_peer_id => {
tracing::info!("Connected to Alice at {}", endpoint.get_remote_address());
tracing::info!(peer_id = %endpoint.get_remote_address(), "Connected to Alice");
}
SwarmEvent::Dialing(peer_id) if peer_id == self.alice_peer_id => {
tracing::debug!("Dialling Alice at {}", peer_id);
tracing::debug!(%peer_id, "Dialling Alice");
}
SwarmEvent::ConnectionClosed { peer_id, endpoint, num_established, cause: Some(error) } if peer_id == self.alice_peer_id && num_established == 0 => {
tracing::warn!("Lost connection to Alice at {}, cause: {}", endpoint.get_remote_address(), error);
tracing::warn!(peer_id = %endpoint.get_remote_address(), cause = %error, "Lost connection to Alice");
}
SwarmEvent::ConnectionClosed { peer_id, num_established, cause: None, .. } if peer_id == self.alice_peer_id && num_established == 0 => {
// no error means the disconnection was requested
tracing::info!("Successfully closed connection to Alice");
return;
}
SwarmEvent::OutgoingConnectionError { peer_id, error } if matches!(peer_id, Some(alice_peer_id) if alice_peer_id == self.alice_peer_id) => {
tracing::warn!( "Failed to dial Alice: {}", error);
SwarmEvent::OutgoingConnectionError { peer_id: Some(alice_peer_id), error } if alice_peer_id == self.alice_peer_id => {
tracing::warn!(%error, "Failed to dial Alice");
if let Some(duration) = self.swarm.behaviour_mut().redial.until_next_redial() {
tracing::info!("Next redial attempt in {}s", duration.as_secs());
tracing::info!(seconds_until_next_redial = %duration.as_secs(), "Waiting for next redial attempt");
}
}
@ -204,7 +249,14 @@ impl EventLoop {
let _ = self.swarm.behaviour_mut().transfer_proof.send_response(response_channel, ());
self.pending_transfer_proof = OptionFuture::from(None);
}
},
Some((swap_id, responder)) = self.cooperative_xmr_redeem_requests.next().fuse(), if self.is_connected_to_alice() => {
let id = self.swarm.behaviour_mut().cooperative_xmr_redeem.send_request(&self.alice_peer_id, Request {
swap_id
});
self.inflight_cooperative_xmr_redeem_requests.insert(id, responder);
},
}
}
}
@ -220,6 +272,7 @@ pub struct EventLoopHandle {
transfer_proof: bmrng::RequestReceiver<monero::TransferProof, ()>,
encrypted_signature: bmrng::RequestSender<EncryptedSignature, ()>,
quote: bmrng::RequestSender<(), BidQuote>,
cooperative_xmr_redeem: bmrng::RequestSender<Uuid, Response>,
}
impl EventLoopHandle {
@ -241,8 +294,12 @@ impl EventLoopHandle {
}
pub async fn request_quote(&mut self) -> Result<BidQuote> {
tracing::debug!("Requesting quote");
Ok(self.quote.send_receive(()).await?)
}
pub async fn request_cooperative_xmr_redeem(&mut self, swap_id: Uuid) -> Result<Response> {
Ok(self.cooperative_xmr_redeem.send_receive(swap_id).await?)
}
pub async fn send_encrypted_signature(
&mut self,

View File

@ -350,23 +350,26 @@ mod tests {
list.sort();
assert_eq!(list, vec![
Seller {
multiaddr: "/ip4/127.0.0.1/tcp/5678".parse().unwrap(),
status: Status::Online(BidQuote {
price: Default::default(),
min_quantity: Default::default(),
max_quantity: Default::default(),
})
},
Seller {
multiaddr: Multiaddr::empty(),
status: Status::Unreachable
},
Seller {
multiaddr: "/ip4/127.0.0.1/tcp/1234".parse().unwrap(),
status: Status::Unreachable
},
])
assert_eq!(
list,
vec![
Seller {
multiaddr: "/ip4/127.0.0.1/tcp/5678".parse().unwrap(),
status: Status::Online(BidQuote {
price: Default::default(),
min_quantity: Default::default(),
max_quantity: Default::default(),
})
},
Seller {
multiaddr: Multiaddr::empty(),
status: Status::Unreachable
},
Seller {
multiaddr: "/ip4/127.0.0.1/tcp/1234".parse().unwrap(),
status: Status::Unreachable
},
]
)
}
}

View File

@ -1,145 +0,0 @@
use anyhow::Result;
use std::option::Option::Some;
use std::path::Path;
use time::format_description::well_known::Rfc3339;
use tracing::subscriber::set_global_default;
use tracing::{Event, Level, Subscriber};
use tracing_subscriber::fmt::format::{DefaultFields, Format, JsonFields};
use tracing_subscriber::fmt::time::UtcTime;
use tracing_subscriber::layer::{Context, SubscriberExt};
use tracing_subscriber::{fmt, EnvFilter, FmtSubscriber, Layer, Registry};
use uuid::Uuid;
pub fn init(debug: bool, json: bool, dir: impl AsRef<Path>, swap_id: Option<Uuid>) -> Result<()> {
if let Some(swap_id) = swap_id {
let level_filter = EnvFilter::try_new("swap=debug")?;
let registry = Registry::default().with(level_filter);
let appender =
tracing_appender::rolling::never(dir.as_ref(), format!("swap-{}.log", swap_id));
let (appender, guard) = tracing_appender::non_blocking(appender);
std::mem::forget(guard);
let file_logger = registry.with(
fmt::layer()
.with_ansi(false)
.with_target(false)
.json()
.with_writer(appender),
);
if json && debug {
set_global_default(file_logger.with(debug_json_terminal_printer()))?;
} else if json && !debug {
set_global_default(file_logger.with(info_json_terminal_printer()))?;
} else if !json && debug {
set_global_default(file_logger.with(debug_terminal_printer()))?;
} else {
set_global_default(file_logger.with(info_terminal_printer()))?;
}
} else {
let level = if debug { Level::DEBUG } else { Level::INFO };
let is_terminal = atty::is(atty::Stream::Stderr);
let builder = FmtSubscriber::builder()
.with_env_filter(format!("swap={}", level))
.with_writer(std::io::stderr)
.with_ansi(is_terminal)
.with_timer(UtcTime::rfc_3339())
.with_target(false);
if json {
builder.json().init();
} else {
builder.init();
}
};
tracing::info!("Logging initialized to {}", dir.as_ref().display());
Ok(())
}
pub struct StdErrPrinter<L> {
inner: L,
level: Level,
}
type StdErrLayer<S, T> = tracing_subscriber::fmt::Layer<
S,
DefaultFields,
Format<tracing_subscriber::fmt::format::Full, T>,
fn() -> std::io::Stderr,
>;
type StdErrJsonLayer<S, T> = tracing_subscriber::fmt::Layer<
S,
JsonFields,
Format<tracing_subscriber::fmt::format::Json, T>,
fn() -> std::io::Stderr,
>;
fn debug_terminal_printer<S>() -> StdErrPrinter<StdErrLayer<S, UtcTime<Rfc3339>>> {
let is_terminal = atty::is(atty::Stream::Stderr);
StdErrPrinter {
inner: fmt::layer()
.with_ansi(is_terminal)
.with_target(false)
.with_timer(UtcTime::rfc_3339())
.with_writer(std::io::stderr),
level: Level::DEBUG,
}
}
fn debug_json_terminal_printer<S>() -> StdErrPrinter<StdErrJsonLayer<S, UtcTime<Rfc3339>>> {
let is_terminal = atty::is(atty::Stream::Stderr);
StdErrPrinter {
inner: fmt::layer()
.with_ansi(is_terminal)
.with_target(false)
.with_timer(UtcTime::rfc_3339())
.json()
.with_writer(std::io::stderr),
level: Level::DEBUG,
}
}
fn info_terminal_printer<S>() -> StdErrPrinter<StdErrLayer<S, ()>> {
let is_terminal = atty::is(atty::Stream::Stderr);
StdErrPrinter {
inner: fmt::layer()
.with_ansi(is_terminal)
.with_target(false)
.with_level(false)
.without_time()
.with_writer(std::io::stderr),
level: Level::INFO,
}
}
fn info_json_terminal_printer<S>() -> StdErrPrinter<StdErrJsonLayer<S, ()>> {
let is_terminal = atty::is(atty::Stream::Stderr);
StdErrPrinter {
inner: fmt::layer()
.with_ansi(is_terminal)
.with_target(false)
.with_level(false)
.without_time()
.json()
.with_writer(std::io::stderr),
level: Level::INFO,
}
}
impl<L, S> Layer<S> for StdErrPrinter<L>
where
L: 'static + Layer<S>,
S: Subscriber + for<'a> tracing_subscriber::registry::LookupSpan<'a>,
{
fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>) {
if self.level.ge(event.metadata().level()) {
self.inner.on_event(event, ctx);
}
}
}

View File

@ -1,56 +0,0 @@
use anyhow::anyhow;
const LATEST_RELEASE_URL: &str = "https://github.com/comit-network/xmr-btc-swap/releases/latest";
#[derive(Clone, Debug, PartialEq)]
pub enum Version {
Current,
Available,
}
/// Check the latest release from GitHub API.
pub async fn check_latest_version(current_version: &str) -> anyhow::Result<Version> {
let response = reqwest::get(LATEST_RELEASE_URL).await?;
let e = "Failed to get latest release.";
let download_url = response.url();
let segments = download_url.path_segments().ok_or_else(|| anyhow!(e))?;
let latest_version = segments.last().ok_or_else(|| anyhow!(e))?;
let result = if is_latest_version(current_version, latest_version) {
Version::Current
} else {
tracing::warn!(%current_version, %latest_version, %download_url,
"You are not on the latest version",
);
Version::Available
};
Ok(result)
}
// todo: naive implementation can be improved using semver
fn is_latest_version(current: &str, latest: &str) -> bool {
current == latest
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn it_compares_versions() {
assert!(is_latest_version("0.10.2", "0.10.2"));
assert!(!is_latest_version("0.10.2", "0.10.3"));
assert!(!is_latest_version("0.10.2", "0.11.0"));
}
#[tokio::test]
#[ignore = "For local testing, makes http requests to github."]
async fn it_compares_with_github() {
let result = check_latest_version("0.11.0").await.unwrap();
assert_eq!(result, Version::Available);
let result = check_latest_version("0.11.1").await.unwrap();
assert_eq!(result, Version::Current);
}
}

221
swap/src/common/mod.rs Normal file
View File

@ -0,0 +1,221 @@
pub mod tracing_util;
use std::{collections::HashMap, path::PathBuf};
use anyhow::anyhow;
use tokio::{
fs::{read_dir, File},
io::{AsyncBufReadExt, BufReader},
};
use uuid::Uuid;
const LATEST_RELEASE_URL: &str = "https://github.com/comit-network/xmr-btc-swap/releases/latest";
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum Version {
Current,
Available,
}
/// Check the latest release from GitHub API.
pub async fn check_latest_version(current_version: &str) -> anyhow::Result<Version> {
let response = reqwest::get(LATEST_RELEASE_URL).await?;
let e = "Failed to get latest release.";
let download_url = response.url();
let segments = download_url.path_segments().ok_or_else(|| anyhow!(e))?;
let latest_version = segments.last().ok_or_else(|| anyhow!(e))?;
let result = if is_latest_version(current_version, latest_version) {
Version::Current
} else {
tracing::warn!(%current_version, %latest_version, %download_url,
"You are not on the latest version",
);
Version::Available
};
Ok(result)
}
// todo: naive implementation can be improved using semver
fn is_latest_version(current: &str, latest: &str) -> bool {
current == latest
}
/// helper macro for [`redact`]... eldrich sorcery
/// the macro does in essence the following:
/// 1. create a static regex automaton for the pattern
/// 2. find all matching patterns using regex
/// 3. create a placeholder for each distinct matching pattern
/// 4. add the placeholder to the hashmap
macro_rules! regex_find_placeholders {
($pattern:expr, $create_placeholder:expr, $replacements:expr, $input:expr) => {{
// compile the regex pattern
static REGEX: once_cell::sync::Lazy<regex::Regex> = once_cell::sync::Lazy::new(|| {
tracing::debug!("initializing regex");
regex::Regex::new($pattern).expect("invalid regex pattern")
});
// keep count of count patterns to generate distinct placeholders
let mut counter: usize = 0;
// for every matched address check whether we already found it
// and if we didn't, generate a placeholder for it
for address in REGEX.find_iter($input) {
if !$replacements.contains_key(address.as_str()) {
#[allow(clippy::redundant_closure_call)]
$replacements.insert(address.as_str().to_owned(), $create_placeholder(counter));
counter += 1;
}
}
}};
}
/// Print the logs from the specified logs or from the default location
/// to the specified path or the terminal.
///
/// If specified, filter by swap id or redact addresses.
pub async fn get_logs(
logs_dir: PathBuf,
swap_id: Option<Uuid>,
redact_addresses: bool,
) -> anyhow::Result<Vec<String>> {
tracing::debug!("reading logfiles from {}", logs_dir.display());
// get all files in the directory
let mut log_files = read_dir(&logs_dir).await?;
let mut log_messages = Vec::new();
// when we redact we need to store the placeholder
let mut placeholders = HashMap::new();
// print all lines from every log file. TODO: sort files by date?
while let Some(entry) = log_files.next_entry().await? {
// get the file path
let file_path = entry.path();
// filter for .log files
let file_name = file_path
.file_name()
.and_then(|name| name.to_str())
.unwrap_or("");
if !file_name.ends_with(".log") {
continue;
}
// use BufReader to stay easy on memory and then read line by line
let buf_reader = BufReader::new(File::open(&file_path).await?);
let mut lines = buf_reader.lines();
// print each line, redacted if the flag is set
while let Some(line) = lines.next_line().await? {
// if we should filter by swap id, check if the line contains it
if let Some(swap_id) = swap_id {
// we only want lines which contain the swap id
if !line.contains(&swap_id.to_string()) {
continue;
}
}
// redact if necessary
let line = if redact_addresses {
redact_with(&line, &mut placeholders)
} else {
line
};
// save redacted message
log_messages.push(line);
}
}
Ok(log_messages)
}
/// Redact logs, etc. by replacing Bitcoin and Monero addresses
/// with generic placeholders.
///
/// # Example
/// ```rust
/// use swap::common::redact;
///
/// let redacted = redact("a9165a1e-d26d-4b56-bf6d-ca9658825c44");
/// assert_eq!(redacted, "<swap_id_0>");
/// ```
pub fn redact(input: &str) -> String {
let mut replacements = HashMap::new();
redact_with(input, &mut replacements)
}
/// Same as [`redact`] but retrieves palceholders from and stores them
/// in a specified hashmap.
pub fn redact_with(input: &str, replacements: &mut HashMap<String, String>) -> String {
// TODO: verify regex patterns
const MONERO_ADDR_REGEX: &str = r#"[48][1-9A-HJ-NP-Za-km-z]{94}"#;
const BITCOIN_ADDR_REGEX: &str = r#"\b[13][a-km-zA-HJ-NP-Z1-9]{25,34}\b"#;
// Both XMR and BTC transactions have
// a 64 bit hex id so they aren't distinguishible
const TX_ID_REGEX: &str = r#"\b[a-fA-F0-9]{64}\b"#;
const SWAP_ID_REGEX: &str =
r#"\b[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}\b"#;
// use the macro to find all addresses and generate placeholders
// has to be a macro in order to create the regex automata only once.
regex_find_placeholders!(
MONERO_ADDR_REGEX,
|count| format!("<monero_address_{count}>"),
replacements,
input
);
regex_find_placeholders!(
BITCOIN_ADDR_REGEX,
|count| format!("<bitcoin_address_{count}>"),
replacements,
input
);
regex_find_placeholders!(
TX_ID_REGEX,
|count| format!("<tx_id_{count}>"),
replacements,
input
);
regex_find_placeholders!(
SWAP_ID_REGEX,
|count| format!("<swap_id_{count}>"),
replacements,
input
);
// allocate string variable to operate on
let mut redacted = input.to_owned();
// Finally we go through the input string and replace each occurance of an
// address we want to redact with the corresponding placeholder
for (address, placeholder) in replacements.iter() {
redacted = redacted.replace(address, placeholder);
}
redacted
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn it_compares_versions() {
assert!(is_latest_version("0.10.2", "0.10.2"));
assert!(!is_latest_version("0.10.2", "0.10.3"));
assert!(!is_latest_version("0.10.2", "0.11.0"));
}
#[tokio::test]
#[ignore = "For local testing, makes http requests to github."]
async fn it_compares_with_github() {
let result = check_latest_version("0.11.0").await.unwrap();
assert_eq!(result, Version::Available);
let result = check_latest_version("0.11.1").await.unwrap();
assert_eq!(result, Version::Current);
}
}

View File

@ -0,0 +1,64 @@
use std::path::Path;
use std::str::FromStr;
use anyhow::Result;
use tracing_subscriber::filter::{Directive, LevelFilter};
use tracing_subscriber::fmt::time::UtcTime;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
use tracing_subscriber::{fmt, EnvFilter, Layer};
/// Output formats for logging messages.
pub enum Format {
/// Standard, human readable format.
Raw,
/// JSON, machine readable format.
Json,
}
/// Initialize tracing and enable logging messages according to these options.
/// Besides printing to `stdout`, this will append to a log file.
/// Said file will contain JSON-formatted logs of all levels,
/// disregarding the arguments to this function.
pub fn init(level_filter: LevelFilter, format: Format, dir: impl AsRef<Path>) -> Result<()> {
let env_filter = EnvFilter::from_default_env()
.add_directive(Directive::from_str(&format!("asb={}", &level_filter))?)
.add_directive(Directive::from_str(&format!("swap={}", &level_filter))?);
// file logger will always write in JSON format and with timestamps
let file_appender = tracing_appender::rolling::never(&dir, "swap-all.log");
let file_layer = fmt::layer()
.with_writer(file_appender)
.with_ansi(false)
.with_timer(UtcTime::rfc_3339())
.with_target(false)
.json()
.with_filter(env_filter);
// terminal logger
let is_terminal = atty::is(atty::Stream::Stderr);
let terminal_layer = fmt::layer()
.with_writer(std::io::stdout)
.with_ansi(is_terminal)
.with_timer(UtcTime::rfc_3339())
.with_target(false);
// combine the layers and start logging, format with json if specified
if let Format::Json = format {
tracing_subscriber::registry()
.with(file_layer)
.with(terminal_layer.json().with_filter(level_filter))
.init();
} else {
tracing_subscriber::registry()
.with(file_layer)
.with(terminal_layer.with_filter(level_filter))
.init();
}
// now we can use the tracing macros to log messages
tracing::info!(%level_filter, logs_dir=%dir.as_ref().display(), "Initialized tracing");
Ok(())
}

View File

@ -83,16 +83,25 @@ impl Swap {
}
}
pub async fn open_db(sqlite_path: impl AsRef<Path>) -> Result<Arc<dyn Database + Send + Sync>> {
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Hash, PartialEq)]
pub enum AccessMode {
ReadWrite,
ReadOnly,
}
pub async fn open_db(
sqlite_path: impl AsRef<Path>,
access_mode: AccessMode,
) -> Result<Arc<dyn Database + Send + Sync>> {
if sqlite_path.as_ref().exists() {
tracing::debug!("Using existing sqlite database.");
let sqlite = SqliteDatabase::open(sqlite_path).await?;
let sqlite = SqliteDatabase::open(sqlite_path, access_mode).await?;
Ok(Arc::new(sqlite))
} else {
tracing::debug!("Creating and using new sqlite database.");
ensure_directory_exists(sqlite_path.as_ref())?;
tokio::fs::File::create(&sqlite_path).await?;
let sqlite = SqliteDatabase::open(sqlite_path).await?;
let sqlite = SqliteDatabase::open(sqlite_path, access_mode).await?;
Ok(Arc::new(sqlite))
}
}

View File

@ -70,12 +70,12 @@ pub enum Alice {
Done(AliceEndState),
}
#[derive(Copy, Clone, strum::Display, Debug, Deserialize, Serialize, PartialEq)]
#[derive(Clone, strum::Display, Debug, Deserialize, Serialize, PartialEq)]
pub enum AliceEndState {
SafelyAborted,
BtcRedeemed,
XmrRefunded,
BtcPunished,
BtcPunished { state3: alice::State3 },
}
impl From<AliceState> for Alice {
@ -173,7 +173,9 @@ impl From<AliceState> for Alice {
transfer_proof,
state3: state3.as_ref().clone(),
},
AliceState::BtcPunished => Alice::Done(AliceEndState::BtcPunished),
AliceState::BtcPunished { state3 } => Alice::Done(AliceEndState::BtcPunished {
state3: state3.as_ref().clone(),
}),
AliceState::SafelyAborted => Alice::Done(AliceEndState::SafelyAborted),
}
}
@ -277,7 +279,9 @@ impl From<Alice> for AliceState {
AliceEndState::SafelyAborted => AliceState::SafelyAborted,
AliceEndState::BtcRedeemed => AliceState::BtcRedeemed,
AliceEndState::XmrRefunded => AliceState::XmrRefunded,
AliceEndState::BtcPunished => AliceState::BtcPunished,
AliceEndState::BtcPunished { state3 } => AliceState::BtcPunished {
state3: Box::new(state3),
},
},
}
}

View File

@ -33,6 +33,10 @@ pub enum Bob {
EncSigSent {
state4: bob::State4,
},
BtcPunished {
state: bob::State6,
tx_lock_id: bitcoin::Txid,
},
BtcRedeemed(bob::State5),
CancelTimelockExpired(bob::State6),
BtcCancelled(bob::State6),
@ -44,7 +48,6 @@ pub enum BobEndState {
SafelyAborted,
XmrRedeemed { tx_lock_id: bitcoin::Txid },
BtcRefunded(Box<bob::State6>),
BtcPunished { tx_lock_id: bitcoin::Txid },
}
impl From<BobState> for Bob {
@ -79,13 +82,11 @@ impl From<BobState> for Bob {
BobState::BtcRedeemed(state5) => Bob::BtcRedeemed(state5),
BobState::CancelTimelockExpired(state6) => Bob::CancelTimelockExpired(state6),
BobState::BtcCancelled(state6) => Bob::BtcCancelled(state6),
BobState::BtcPunished { state, tx_lock_id } => Bob::BtcPunished { state, tx_lock_id },
BobState::BtcRefunded(state6) => Bob::Done(BobEndState::BtcRefunded(Box::new(state6))),
BobState::XmrRedeemed { tx_lock_id } => {
Bob::Done(BobEndState::XmrRedeemed { tx_lock_id })
}
BobState::BtcPunished { tx_lock_id } => {
Bob::Done(BobEndState::BtcPunished { tx_lock_id })
}
BobState::SafelyAborted => Bob::Done(BobEndState::SafelyAborted),
}
}
@ -123,11 +124,11 @@ impl From<Bob> for BobState {
Bob::BtcRedeemed(state5) => BobState::BtcRedeemed(state5),
Bob::CancelTimelockExpired(state6) => BobState::CancelTimelockExpired(state6),
Bob::BtcCancelled(state6) => BobState::BtcCancelled(state6),
Bob::BtcPunished { state, tx_lock_id } => BobState::BtcPunished { state, tx_lock_id },
Bob::Done(end_state) => match end_state {
BobEndState::SafelyAborted => BobState::SafelyAborted,
BobEndState::XmrRedeemed { tx_lock_id } => BobState::XmrRedeemed { tx_lock_id },
BobEndState::BtcRefunded(state6) => BobState::BtcRefunded(*state6),
BobEndState::BtcPunished { tx_lock_id } => BobState::BtcPunished { tx_lock_id },
},
}
}
@ -148,6 +149,7 @@ impl fmt::Display for Bob {
Bob::BtcRedeemed(_) => f.write_str("Monero redeemable"),
Bob::Done(end_state) => write!(f, "Done: {}", end_state),
Bob::EncSigSent { .. } => f.write_str("Encrypted signature sent"),
Bob::BtcPunished { .. } => f.write_str("Bitcoin punished"),
}
}
}

View File

@ -1,29 +1,41 @@
use crate::database::Swap;
use crate::monero::Address;
use crate::monero::{Address, TransferProof};
use crate::protocol::{Database, State};
use anyhow::{Context, Result};
use anyhow::{anyhow, Context, Result};
use async_trait::async_trait;
use libp2p::{Multiaddr, PeerId};
use sqlx::sqlite::Sqlite;
use sqlx::{Pool, SqlitePool};
use sqlx::sqlite::{Sqlite, SqliteConnectOptions};
use sqlx::{ConnectOptions, Pool, SqlitePool};
use std::collections::HashMap;
use std::path::Path;
use std::str::FromStr;
use time::OffsetDateTime;
use uuid::Uuid;
use super::AccessMode;
pub struct SqliteDatabase {
pool: Pool<Sqlite>,
}
impl SqliteDatabase {
pub async fn open(path: impl AsRef<Path>) -> Result<Self>
pub async fn open(path: impl AsRef<Path>, access_mode: AccessMode) -> Result<Self>
where
Self: std::marker::Sized,
{
let read_only = matches!(access_mode, AccessMode::ReadOnly);
let path_str = format!("sqlite:{}", path.as_ref().display());
let pool = SqlitePool::connect(&path_str).await?;
let mut options = SqliteConnectOptions::from_str(&path_str)?.read_only(read_only);
options.disable_statement_logging();
let pool = SqlitePool::connect_with(options).await?;
let mut sqlite = Self { pool };
sqlite.run_migrations().await?;
if !read_only {
sqlite.run_migrations().await?;
}
Ok(sqlite)
}
@ -149,7 +161,7 @@ impl Database for SqliteDatabase {
let rows = sqlx::query!(
r#"
SELECT address
SELECT DISTINCT address
FROM peer_addresses
WHERE peer_id = ?
"#,
@ -169,6 +181,25 @@ impl Database for SqliteDatabase {
addresses
}
async fn get_swap_start_date(&self, swap_id: Uuid) -> Result<String> {
let mut conn = self.pool.acquire().await?;
let swap_id = swap_id.to_string();
let row = sqlx::query!(
r#"
SELECT min(entered_at) as start_date
FROM swap_states
WHERE swap_id = ?
"#,
swap_id
)
.fetch_one(&mut conn)
.await?;
row.start_date
.ok_or_else(|| anyhow!("Could not get swap start date"))
}
async fn insert_latest_state(&self, swap_id: Uuid, state: State) -> Result<()> {
let mut conn = self.pool.acquire().await?;
let entered_at = OffsetDateTime::now_utc();
@ -249,6 +280,119 @@ impl Database for SqliteDatabase {
result
}
async fn get_states(&self, swap_id: Uuid) -> Result<Vec<State>> {
let mut conn = self.pool.acquire().await?;
let swap_id = swap_id.to_string();
// TODO: We should use query! instead of query here to allow for at-compile-time validation
// I didn't manage to generate the mappings for the query! macro because of problems with sqlx-cli
let rows = sqlx::query!(
r#"
SELECT state
FROM swap_states
WHERE swap_id = ?
"#,
swap_id
)
.fetch_all(&mut conn)
.await?;
let result = rows
.iter()
.map(|row| {
let state_str: &str = &row.state;
let state = match serde_json::from_str::<Swap>(state_str) {
Ok(a) => Ok(State::from(a)),
Err(e) => Err(e),
}?;
Ok(state)
})
.collect::<Result<Vec<State>>>();
result
}
async fn insert_buffered_transfer_proof(
&self,
swap_id: Uuid,
proof: TransferProof,
) -> Result<()> {
let mut conn = self.pool.acquire().await?;
let swap_id = swap_id.to_string();
let proof = serde_json::to_string(&proof)?;
sqlx::query!(
r#"
INSERT INTO buffered_transfer_proofs (
swap_id,
proof
) VALUES (?, ?);
"#,
swap_id,
proof
)
.execute(&mut conn)
.await?;
Ok(())
}
async fn get_buffered_transfer_proof(&self, swap_id: Uuid) -> Result<Option<TransferProof>> {
let mut conn = self.pool.acquire().await?;
let swap_id = swap_id.to_string();
let row = sqlx::query!(
r#"
SELECT proof
FROM buffered_transfer_proofs
WHERE swap_id = ?
"#,
swap_id
)
.fetch_all(&mut conn)
.await?;
if row.is_empty() {
return Ok(None);
}
let proof_str = &row[0].proof;
let proof = serde_json::from_str(proof_str)?;
Ok(Some(proof))
}
async fn raw_all(&self) -> Result<HashMap<Uuid, Vec<serde_json::Value>>> {
let mut conn = self.pool.acquire().await?;
let rows = sqlx::query!(
r#"
SELECT swap_id, state
FROM swap_states
"#
)
.fetch_all(&mut conn)
.await?;
let mut swaps: HashMap<Uuid, Vec<serde_json::Value>> = HashMap::new();
for row in &rows {
let swap_id = Uuid::from_str(&row.swap_id)?;
let state = serde_json::from_str(&row.state)?;
if let std::collections::hash_map::Entry::Vacant(e) = swaps.entry(swap_id) {
e.insert(vec![state]);
} else {
swaps
.get_mut(&swap_id)
.ok_or_else(|| anyhow!("Error while retrieving the swap"))?
.push(state);
}
}
Ok(swaps)
}
}
#[cfg(test)]
@ -284,9 +428,8 @@ mod tests {
let db = setup_test_db().await.unwrap();
let state_1 = State::Alice(AliceState::BtcRedeemed);
let state_2 = State::Alice(AliceState::BtcPunished);
let state_3 = State::Alice(AliceState::SafelyAborted);
let state_4 = State::Bob(BobState::SafelyAborted);
let state_2 = State::Alice(AliceState::SafelyAborted);
let state_3 = State::Bob(BobState::SafelyAborted);
let swap_id_1 = Uuid::new_v4();
let swap_id_2 = Uuid::new_v4();
@ -296,10 +439,7 @@ mod tests {
db.insert_latest_state(swap_id_1, state_2.clone())
.await
.unwrap();
db.insert_latest_state(swap_id_1, state_3.clone())
.await
.unwrap();
db.insert_latest_state(swap_id_2, state_4.clone())
db.insert_latest_state(swap_id_2, state_3.clone())
.await
.unwrap();
@ -307,11 +447,10 @@ mod tests {
assert_eq!(latest_loaded.len(), 2);
assert!(latest_loaded.contains(&(swap_id_1, state_3)));
assert!(latest_loaded.contains(&(swap_id_2, state_4)));
assert!(latest_loaded.contains(&(swap_id_1, state_2)));
assert!(latest_loaded.contains(&(swap_id_2, state_3)));
assert!(!latest_loaded.contains(&(swap_id_1, state_1)));
assert!(!latest_loaded.contains(&(swap_id_1, state_2)));
}
#[tokio::test]
@ -376,7 +515,7 @@ mod tests {
// file has to exist in order to connect with sqlite
File::create(temp_db.clone()).unwrap();
let db = SqliteDatabase::open(temp_db).await?;
let db = SqliteDatabase::open(temp_db, AccessMode::ReadWrite).await?;
Ok(db)
}

View File

@ -5,7 +5,7 @@ use std::cmp::max;
use std::time::Duration;
use time::ext::NumericalStdDuration;
#[derive(Debug, Copy, Clone, PartialEq, Serialize)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize)]
pub struct Config {
pub bitcoin_lock_mempool_timeout: Duration,
pub bitcoin_lock_confirmed_timeout: Duration,
@ -46,7 +46,7 @@ pub struct Regtest;
impl GetConfig for Mainnet {
fn get_config() -> Config {
Config {
bitcoin_lock_mempool_timeout: 3.std_minutes(),
bitcoin_lock_mempool_timeout: 10.std_minutes(),
bitcoin_lock_confirmed_timeout: 2.std_hours(),
bitcoin_finality_confirmations: 1,
bitcoin_avg_block_time: 10.std_minutes(),
@ -63,7 +63,7 @@ impl GetConfig for Mainnet {
impl GetConfig for Testnet {
fn get_config() -> Config {
Config {
bitcoin_lock_mempool_timeout: 3.std_minutes(),
bitcoin_lock_mempool_timeout: 10.std_minutes(),
bitcoin_lock_confirmed_timeout: 1.std_hours(),
bitcoin_finality_confirmations: 1,
bitcoin_avg_block_time: 10.std_minutes(),

View File

@ -230,7 +230,7 @@ mod wire {
use bitcoin::util::amount::ParseAmountError;
use serde_json::Value;
#[derive(Debug, Deserialize, PartialEq)]
#[derive(Debug, Deserialize, PartialEq, Eq)]
#[serde(tag = "event")]
pub enum Event {
#[serde(rename = "systemStatus")]

View File

@ -16,6 +16,7 @@
missing_copy_implementations
)]
pub mod api;
pub mod asb;
pub mod bitcoin;
pub mod cli;
@ -28,6 +29,7 @@ pub mod libp2p_ext;
pub mod monero;
pub mod network;
pub mod protocol;
pub mod rpc;
pub mod seed;
pub mod tor;
pub mod tracing_ext;

View File

@ -39,9 +39,16 @@ pub fn private_key_from_secp256k1_scalar(scalar: bitcoin::Scalar) -> PrivateKey
PrivateKey::from_scalar(Scalar::from_bytes_mod_order(bytes))
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq)]
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct PrivateViewKey(#[serde(with = "monero_private_key")] PrivateKey);
impl fmt::Display for PrivateViewKey {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
// Delegate to the Display implementation of PrivateKey
write!(f, "{}", self.0)
}
}
impl PrivateViewKey {
pub fn new_random<R: RngCore + CryptoRng>(rng: &mut R) -> Self {
let scalar = Scalar::random(rng);
@ -78,7 +85,7 @@ impl From<PublicViewKey> for PublicKey {
#[derive(Clone, Copy, Debug)]
pub struct PublicViewKey(PublicKey);
#[derive(Debug, Copy, Clone, Deserialize, Serialize, PartialEq, PartialOrd)]
#[derive(Debug, Copy, Clone, Deserialize, Serialize, PartialEq, Eq, PartialOrd)]
pub struct Amount(u64);
// Median tx fees on Monero as found here: https://www.monero.how/monero-transaction-fees, XMR 0.000_008 * 2 (to be on the safe side)
@ -135,6 +142,14 @@ impl Amount {
Decimal::from(self.as_piconero())
}
pub fn as_xmr(&self) -> Decimal {
let mut decimal = Decimal::from(self.0);
decimal
.set_scale(12)
.expect("12 is smaller than max precision of 28");
decimal
}
fn from_decimal(amount: Decimal) -> Result<Self> {
let piconeros_dec =
amount.mul(Decimal::from_u64(PICONERO_OFFSET).expect("constant to fit into u64"));
@ -177,15 +192,12 @@ impl From<Amount> for u64 {
impl fmt::Display for Amount {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut decimal = Decimal::from(self.0);
decimal
.set_scale(12)
.expect("12 is smaller than max precision of 28");
write!(f, "{} XMR", decimal)
let xmr_value = self.as_xmr();
write!(f, "{} XMR", xmr_value)
}
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct TransferProof {
tx_hash: TxHash,
#[serde(with = "monero_private_key")]
@ -205,7 +217,7 @@ impl TransferProof {
}
// TODO: add constructor/ change String to fixed length byte array
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct TxHash(pub String);
impl From<TxHash> for String {
@ -227,7 +239,7 @@ pub struct InsufficientFunds {
pub actual: Amount,
}
#[derive(thiserror::Error, Debug, Clone, PartialEq)]
#[derive(thiserror::Error, Debug, Clone, PartialEq, Eq)]
#[error("Overflow, cannot convert {0} to u64")]
pub struct OverflowError(pub String);
@ -320,6 +332,52 @@ pub mod monero_amount {
}
}
pub mod monero_address {
use anyhow::{bail, Context, Result};
use std::str::FromStr;
#[derive(thiserror::Error, Debug, Clone, Copy, PartialEq)]
#[error("Invalid monero address provided, expected address on network {expected:?} but address provided is on {actual:?}")]
pub struct MoneroAddressNetworkMismatch {
pub expected: monero::Network,
pub actual: monero::Network,
}
pub fn parse(s: &str) -> Result<monero::Address> {
monero::Address::from_str(s).with_context(|| {
format!(
"Failed to parse {} as a monero address, please make sure it is a valid address",
s
)
})
}
pub fn validate(
address: monero::Address,
expected_network: monero::Network,
) -> Result<monero::Address> {
if address.network != expected_network {
bail!(MoneroAddressNetworkMismatch {
expected: expected_network,
actual: address.network,
});
}
Ok(address)
}
pub fn validate_is_testnet(
address: monero::Address,
is_testnet: bool,
) -> Result<monero::Address> {
let expected_network = if is_testnet {
monero::Network::Stagenet
} else {
monero::Network::Mainnet
};
validate(address, expected_network)
}
}
#[cfg(test)]
mod tests {
use super::*;
@ -470,10 +528,10 @@ mod tests {
use rand::rngs::OsRng;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct MoneroPrivateKey(#[serde(with = "monero_private_key")] crate::monero::PrivateKey);
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct MoneroAmount(#[serde(with = "monero_amount")] crate::monero::Amount);
#[test]

View File

@ -6,6 +6,7 @@ use ::monero::{Address, Network, PrivateKey, PublicKey};
use anyhow::{Context, Result};
use monero_rpc::wallet::{BlockHeight, MoneroWalletRpc as _, Refreshed};
use monero_rpc::{jsonrpc, wallet};
use std::ops::Div;
use std::str::FromStr;
use std::time::Duration;
use tokio::sync::Mutex;
@ -26,15 +27,16 @@ impl Wallet {
pub async fn open_or_create(url: Url, name: String, env_config: Config) -> Result<Self> {
let client = wallet::Client::new(url)?;
let open_wallet_response = client.open_wallet(name.clone()).await;
if open_wallet_response.is_err() {
client.create_wallet(name.clone(), "English".to_owned()).await.context(
"Unable to create Monero wallet, please ensure that the monero-wallet-rpc is available",
)?;
match client.open_wallet(name.clone()).await {
Err(error) => {
tracing::debug!(%error, "Open wallet response error");
client.create_wallet(name.clone(), "English".to_owned()).await.context(
"Unable to create Monero wallet, please ensure that the monero-wallet-rpc is available",
)?;
tracing::debug!(monero_wallet_name = %name, "Created Monero wallet");
} else {
tracing::debug!(monero_wallet_name = %name, "Opened Monero wallet");
tracing::debug!(monero_wallet_name = %name, "Created Monero wallet");
}
Ok(_) => tracing::debug!(monero_wallet_name = %name, "Opened Monero wallet"),
}
Self::connect(client, name, env_config).await
@ -44,6 +46,7 @@ impl Wallet {
pub async fn connect(client: wallet::Client, name: String, env_config: Config) -> Result<Self> {
let main_address =
monero::Address::from_str(client.get_address(0).await?.address.as_str())?;
Ok(Self {
inner: Mutex::new(client),
network: env_config.monero_network,
@ -124,13 +127,14 @@ impl Wallet {
let temp_wallet_address =
Address::standard(self.network, public_spend_key, public_view_key);
let wallet = self.inner.lock().await;
// Close the default wallet before generating the other wallet to ensure that
// it saves its state correctly
let _ = wallet.close_wallet().await?;
let _ = self.inner.lock().await.close_wallet().await?;
let _ = wallet
let _ = self
.inner
.lock()
.await
.generate_from_keys(
file_name,
temp_wallet_address.to_string(),
@ -143,8 +147,14 @@ impl Wallet {
.await?;
// Try to send all the funds from the generated wallet to the default wallet
match wallet.refresh().await {
Ok(_) => match wallet.sweep_all(self.main_address.to_string()).await {
match self.refresh(3).await {
Ok(_) => match self
.inner
.lock()
.await
.sweep_all(self.main_address.to_string())
.await
{
Ok(sweep_all) => {
for tx in sweep_all.tx_hash_list {
tracing::info!(
@ -165,7 +175,12 @@ impl Wallet {
}
}
let _ = wallet.open_wallet(self.name.clone()).await?;
let _ = self
.inner
.lock()
.await
.open_wallet(self.name.clone())
.await?;
Ok(())
}
@ -173,11 +188,6 @@ impl Wallet {
pub async fn transfer(&self, request: TransferRequest) -> Result<TransferProof> {
let inner = self.inner.lock().await;
inner
.open_wallet(self.name.clone())
.await
.with_context(|| format!("Failed to open wallet {}", self.name))?;
let TransferRequest {
public_spend_key,
public_view_key,
@ -224,7 +234,7 @@ impl Wallet {
let address = Address::standard(self.network, public_spend_key, public_view_key.into());
let check_interval = tokio::time::interval(self.sync_interval);
let check_interval = tokio::time::interval(self.sync_interval.div(10));
wait_for_confirmations(
&self.inner,
@ -265,8 +275,44 @@ impl Wallet {
self.main_address
}
pub async fn refresh(&self) -> Result<Refreshed> {
Ok(self.inner.lock().await.refresh().await?)
pub async fn refresh(&self, max_attempts: usize) -> Result<Refreshed> {
const RETRY_INTERVAL: Duration = Duration::from_secs(1);
for i in 1..=max_attempts {
tracing::info!(name = %self.name, attempt=i, "Syncing Monero wallet");
let result = self.inner.lock().await.refresh().await;
match result {
Ok(refreshed) => {
tracing::info!(name = %self.name, "Monero wallet synced");
return Ok(refreshed);
}
Err(error) => {
let attempts_left = max_attempts - i;
// We would not want to fail here if the height is not available
// as it is not critical for the operation of the wallet.
// We can just log a warning and continue.
let height = match self.inner.lock().await.get_height().await {
Ok(height) => height.to_string(),
Err(_) => {
tracing::warn!(name = %self.name, "Failed to fetch Monero wallet height during sync");
"unknown".to_string()
}
};
tracing::warn!(attempt=i, %height, %attempts_left, name = %self.name, %error, "Failed to sync Monero wallet");
if attempts_left == 0 {
return Err(error.into());
}
}
}
tokio::time::sleep(RETRY_INTERVAL).await;
}
unreachable!("Loop should have returned by now");
}
}

View File

@ -1,37 +1,75 @@
use ::monero::Network;
use anyhow::{Context, Result};
use anyhow::{bail, Context, Error, Result};
use big_bytes::BigByte;
use data_encoding::HEXLOWER;
use futures::{StreamExt, TryStreamExt};
use monero_rpc::wallet::{Client, MoneroWalletRpc as _};
use reqwest::header::CONTENT_LENGTH;
use reqwest::Url;
use serde::Deserialize;
use sha2::{Digest, Sha256};
use std::fmt;
use std::fmt::{Debug, Display, Formatter};
use std::io::ErrorKind;
use std::path::{Path, PathBuf};
use std::process::Stdio;
use std::time::Duration;
use tokio::fs::{remove_file, OpenOptions};
use tokio::io::{AsyncBufReadExt, AsyncWriteExt, BufReader};
use tokio::process::{Child, Command};
use tokio_util::codec::{BytesCodec, FramedRead};
use tokio_util::io::StreamReader;
// See: https://www.moneroworld.com/#nodes, https://monero.fail
// We don't need any testnet nodes because we don't support testnet at all
const MONERO_DAEMONS: [MoneroDaemon; 17] = [
MoneroDaemon::new("xmr-node.cakewallet.com", 18081, Network::Mainnet),
MoneroDaemon::new("nodex.monerujo.io", 18081, Network::Mainnet),
MoneroDaemon::new("node.moneroworld.com", 18089, Network::Mainnet),
MoneroDaemon::new("nodes.hashvault.pro", 18081, Network::Mainnet),
MoneroDaemon::new("p2pmd.xmrvsbeast.com", 18081, Network::Mainnet),
MoneroDaemon::new("node.monerodevs.org", 18089, Network::Mainnet),
MoneroDaemon::new("xmr-node-usa-east.cakewallet.com", 18081, Network::Mainnet),
MoneroDaemon::new("xmr-node-uk.cakewallet.com", 18081, Network::Mainnet),
MoneroDaemon::new("node.community.rino.io", 18081, Network::Mainnet),
MoneroDaemon::new("testingjohnross.com", 20031, Network::Mainnet),
MoneroDaemon::new("xmr.litepay.ch", 18081, Network::Mainnet),
MoneroDaemon::new("node.trocador.app", 18089, Network::Mainnet),
MoneroDaemon::new("stagenet.xmr-tw.org", 38081, Network::Stagenet),
MoneroDaemon::new("node.monerodevs.org", 38089, Network::Stagenet),
MoneroDaemon::new("singapore.node.xmr.pm", 38081, Network::Stagenet),
MoneroDaemon::new("xmr-lux.boldsuck.org", 38081, Network::Stagenet),
MoneroDaemon::new("stagenet.community.rino.io", 38081, Network::Stagenet),
];
#[cfg(not(any(target_os = "macos", target_os = "linux", target_os = "windows")))]
compile_error!("unsupported operating system");
#[cfg(all(target_os = "macos", target_arch = "x86_64"))]
const DOWNLOAD_URL: &str = "https://downloads.getmonero.org/cli/monero-mac-x64-v0.18.1.2.tar.bz2";
const DOWNLOAD_URL: &str = "https://downloads.getmonero.org/cli/monero-mac-x64-v0.18.3.1.tar.bz2";
#[cfg(all(target_os = "macos", target_arch = "x86_64"))]
const DOWNLOAD_HASH: &str = "7f8bd9364ef16482b418aa802a65be0e4cc660c794bb5d77b2d17bc84427883a";
#[cfg(all(target_os = "macos", target_arch = "aarch64"))]
const DOWNLOAD_URL: &str = "https://downloads.getmonero.org/cli/monero-mac-armv8-v0.18.0.0.tar.bz2";
const DOWNLOAD_URL: &str = "https://downloads.getmonero.org/cli/monero-mac-armv8-v0.18.3.1.tar.bz2";
#[cfg(all(target_os = "macos", target_arch = "aarch64"))]
const DOWNLOAD_HASH: &str = "915288b023cb5811e626e10052adc6ac5323dd283c5a25b91059b0fb86a21fb6";
#[cfg(all(target_os = "linux", target_arch = "x86_64"))]
const DOWNLOAD_URL: &str = "https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.1.2.tar.bz2";
const DOWNLOAD_URL: &str = "https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.3.1.tar.bz2";
#[cfg(all(target_os = "linux", target_arch = "x86_64"))]
const DOWNLOAD_HASH: &str = "23af572fdfe3459b9ab97e2e9aa7e3c11021c955d6064b801a27d7e8c21ae09d";
#[cfg(all(target_os = "linux", target_arch = "arm"))]
const DOWNLOAD_URL: &str =
"https://downloads.getmonero.org/cli/monero-linux-armv7-v0.18.1.2.tar.bz2";
"https://downloads.getmonero.org/cli/monero-linux-armv7-v0.18.3.1.tar.bz2";
#[cfg(all(target_os = "linux", target_arch = "arm"))]
const DOWNLOAD_HASH: &str = "2ea2c8898cbab88f49423f4f6c15f2a94046cb4bbe827493dd061edc0fd5f1ca";
#[cfg(target_os = "windows")]
const DOWNLOAD_URL: &str = "https://downloads.getmonero.org/cli/monero-win-x64-v0.18.1.2.zip";
const DOWNLOAD_URL: &str = "https://downloads.getmonero.org/cli/monero-win-x64-v0.18.3.1.zip";
#[cfg(target_os = "windows")]
const DOWNLOAD_HASH: &str = "35dcc4bee4caad3442659d37837e0119e4649a77f2e3b5e80dd6d9b8fc4fb6ad";
#[cfg(any(target_os = "macos", target_os = "linux"))]
const PACKED_FILE: &str = "monero-wallet-rpc";
@ -39,7 +77,7 @@ const PACKED_FILE: &str = "monero-wallet-rpc";
#[cfg(target_os = "windows")]
const PACKED_FILE: &str = "monero-wallet-rpc.exe";
const WALLET_RPC_VERSION: &str = "v0.18.1.2";
const WALLET_RPC_VERSION: &str = "v0.18.3.1";
#[derive(Debug, Clone, Copy, thiserror::Error)]
#[error("monero wallet rpc executable not found in downloaded archive")]
@ -50,6 +88,91 @@ pub struct WalletRpcProcess {
port: u16,
}
struct MoneroDaemon {
address: &'static str,
port: u16,
network: Network,
}
impl MoneroDaemon {
const fn new(address: &'static str, port: u16, network: Network) -> Self {
Self {
address,
port,
network,
}
}
/// Checks if the Monero daemon is available by sending a request to its `get_info` endpoint.
async fn is_available(&self, client: &reqwest::Client) -> Result<bool, Error> {
let url = format!("http://{}:{}/get_info", self.address, self.port);
let res = client
.get(url)
.send()
.await
.context("Failed to send request to get_info endpoint")?;
let json: MoneroDaemonGetInfoResponse = res
.json()
.await
.context("Failed to deserialize daemon get_info response")?;
let is_status_ok = json.status == "OK";
let is_synchronized = json.synchronized;
let is_correct_network = match self.network {
Network::Mainnet => json.mainnet,
Network::Stagenet => json.stagenet,
Network::Testnet => json.testnet,
};
Ok(is_status_ok && is_synchronized && is_correct_network)
}
}
impl Display for MoneroDaemon {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
write!(f, "{}:{}", self.address, self.port)
}
}
#[derive(Deserialize)]
struct MoneroDaemonGetInfoResponse {
status: String,
synchronized: bool,
mainnet: bool,
stagenet: bool,
testnet: bool,
}
/// Chooses an available Monero daemon based on the specified network.
async fn choose_monero_daemon(network: Network) -> Result<&'static MoneroDaemon, Error> {
let client = reqwest::Client::builder()
.timeout(Duration::from_secs(30))
.https_only(false)
.build()?;
// We only want to check for daemons that match the specified network
let network_matching_daemons = MONERO_DAEMONS
.iter()
.filter(|daemon| daemon.network == network);
for daemon in network_matching_daemons {
match daemon.is_available(&client).await {
Ok(true) => {
tracing::debug!(%daemon, "Found available Monero daemon");
return Ok(daemon);
}
Err(err) => {
tracing::debug!(%err, %daemon, "Failed to connect to Monero daemon");
continue;
}
Ok(false) => continue,
}
}
bail!("No Monero daemon could be found. Please specify one manually or try again later.")
}
impl WalletRpcProcess {
pub fn endpoint(&self) -> Url {
Url::parse(&format!("http://127.0.0.1:{}/json_rpc", self.port))
@ -110,13 +233,20 @@ impl WalletRpc {
.parse::<u64>()?;
tracing::info!(
"Downloading monero-wallet-rpc ({}) from {}",
content_length.big_byte(2),
DOWNLOAD_URL
progress="0%",
size=%content_length.big_byte(2),
download_url=DOWNLOAD_URL,
"Downloading monero-wallet-rpc",
);
let mut hasher = Sha256::new();
let byte_stream = response
.bytes_stream()
.map_ok(|bytes| {
hasher.update(&bytes);
bytes
})
.map_err(|err| std::io::Error::new(ErrorKind::Other, err));
#[cfg(not(target_os = "windows"))]
@ -139,12 +269,36 @@ impl WalletRpc {
let total = 3 * content_length;
let percent = 100 * received as u64 / total;
if percent != notified && percent % 10 == 0 {
tracing::debug!("{}%", percent);
tracing::info!(
progress=format!("{}%", percent),
size=%content_length.big_byte(2),
download_url=DOWNLOAD_URL,
"Downloading monero-wallet-rpc",
);
notified = percent;
}
file.write_all(&bytes).await?;
}
tracing::info!(
progress="100%",
size=%content_length.big_byte(2),
download_url=DOWNLOAD_URL,
"Downloading monero-wallet-rpc",
);
let result = hasher.finalize();
let result_hash = HEXLOWER.encode(result.as_ref());
if result_hash != DOWNLOAD_HASH {
bail!(
"SHA256 of download ({}) does not match expected ({})!",
result_hash,
DOWNLOAD_HASH
);
} else {
tracing::debug!("Hashes match");
}
file.flush().await?;
tracing::debug!("Extracting archive");
@ -153,13 +307,23 @@ impl WalletRpc {
Ok(monero_wallet_rpc)
}
pub async fn run(&self, network: Network, daemon_address: &str) -> Result<WalletRpcProcess> {
pub async fn run(
&self,
network: Network,
daemon_address: Option<String>,
) -> Result<WalletRpcProcess> {
let port = tokio::net::TcpListener::bind("127.0.0.1:0")
.await?
.local_addr()?
.port();
let daemon_address = match daemon_address {
Some(daemon_address) => daemon_address,
None => choose_monero_daemon(network).await?.to_string(),
};
tracing::debug!(
%daemon_address,
%port,
"Starting monero-wallet-rpc"
);
@ -188,6 +352,7 @@ impl WalletRpc {
.arg("--disable-rpc-login")
.arg("--wallet-dir")
.arg(self.working_dir.join("monero-data"))
.arg("--no-initial-sync")
.spawn()?;
let stdout = child
@ -205,7 +370,7 @@ impl WalletRpc {
}
// If we do not hear from the monero_wallet_rpc process for 3 seconds we assume
// it is is ready
// it is ready
#[cfg(target_os = "windows")]
while let Ok(line) =
tokio::time::timeout(std::time::Duration::from_secs(3), reader.next_line()).await
@ -232,7 +397,6 @@ impl WalletRpc {
#[cfg(not(target_os = "windows"))]
async fn extract_archive(monero_wallet_rpc: &Self) -> Result<()> {
use anyhow::bail;
use tokio_tar::Archive;
let mut options = OpenOptions::new();
@ -297,3 +461,123 @@ impl WalletRpc {
Ok(())
}
}
#[cfg(test)]
mod tests {
use super::*;
fn extract_host_and_port(address: String) -> (&'static str, u16) {
let parts: Vec<&str> = address.split(':').collect();
if parts.len() == 2 {
let host = parts[0].to_string();
let port = parts[1].parse::<u16>().unwrap();
let static_str_host: &'static str = Box::leak(host.into_boxed_str());
return (static_str_host, port);
}
panic!("Could not extract host and port from address: {}", address)
}
#[tokio::test]
async fn test_is_daemon_available_success() {
let mut server = mockito::Server::new_async().await;
let _ = server
.mock("GET", "/get_info")
.with_status(200)
.with_body(
r#"
{
"status": "OK",
"synchronized": true,
"mainnet": true,
"stagenet": false,
"testnet": false
}
"#,
)
.create();
let (host, port) = extract_host_and_port(server.host_with_port());
let client = reqwest::Client::new();
let result = MoneroDaemon::new(host, port, Network::Mainnet)
.is_available(&client)
.await;
assert!(result.is_ok());
assert!(result.unwrap());
}
#[tokio::test]
async fn test_is_daemon_available_wrong_network_failure() {
let mut server = mockito::Server::new_async().await;
let _ = server
.mock("GET", "/get_info")
.with_status(200)
.with_body(
r#"
{
"status": "OK",
"synchronized": true,
"mainnet": true,
"stagenet": false,
"testnet": false
}
"#,
)
.create();
let (host, port) = extract_host_and_port(server.host_with_port());
let client = reqwest::Client::new();
let result = MoneroDaemon::new(host, port, Network::Stagenet)
.is_available(&client)
.await;
assert!(result.is_ok());
assert!(!result.unwrap());
}
#[tokio::test]
async fn test_is_daemon_available_not_synced_failure() {
let mut server = mockito::Server::new_async().await;
let _ = server
.mock("GET", "/get_info")
.with_status(200)
.with_body(
r#"
{
"status": "OK",
"synchronized": false,
"mainnet": true,
"stagenet": false,
"testnet": false
}
"#,
)
.create();
let (host, port) = extract_host_and_port(server.host_with_port());
let client = reqwest::Client::new();
let result = MoneroDaemon::new(host, port, Network::Mainnet)
.is_available(&client)
.await;
assert!(result.is_ok());
assert!(!result.unwrap());
}
#[tokio::test]
async fn test_is_daemon_available_network_error_failure() {
let client = reqwest::Client::new();
let result = MoneroDaemon::new("does.not.exist.com", 18081, Network::Mainnet)
.is_available(&client)
.await;
assert!(result.is_err());
}
}

View File

@ -1,6 +1,7 @@
mod impl_from_rr_event;
pub mod cbor_request_response;
pub mod cooperative_xmr_redeem_after_punish;
pub mod encrypted_signature;
pub mod json_pull_codec;
pub mod quote;

View File

@ -19,7 +19,7 @@ pub struct CborCodec<P, Req, Res> {
impl<P, Req, Res> Default for CborCodec<P, Req, Res> {
fn default() -> Self {
Self {
phantom: PhantomData::default(),
phantom: PhantomData,
}
}
}

View File

@ -0,0 +1,113 @@
use crate::monero::Scalar;
use crate::network::cbor_request_response::CborCodec;
use crate::{asb, cli};
use libp2p::core::ProtocolName;
use libp2p::request_response::{
ProtocolSupport, RequestResponse, RequestResponseConfig, RequestResponseEvent,
RequestResponseMessage,
};
use libp2p::PeerId;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
const PROTOCOL: &str = "/comit/xmr/btc/cooperative_xmr_redeem_after_punish/1.0.0";
type OutEvent = RequestResponseEvent<Request, Response>;
type Message = RequestResponseMessage<Request, Response>;
pub type Behaviour = RequestResponse<CborCodec<CooperativeXmrRedeemProtocol, Request, Response>>;
#[derive(Debug, Clone, Copy, Default)]
pub struct CooperativeXmrRedeemProtocol;
impl ProtocolName for CooperativeXmrRedeemProtocol {
fn protocol_name(&self) -> &[u8] {
PROTOCOL.as_bytes()
}
}
#[derive(Debug, thiserror::Error, Clone, Serialize, Deserialize)]
pub enum CooperativeXmrRedeemRejectReason {
#[error("Alice does not have a record of the swap")]
UnknownSwap,
#[error("Alice rejected the request because it deemed it malicious")]
MaliciousRequest,
#[error("Alice is in a state where a cooperative redeem is not possible")]
SwapInvalidState,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Request {
pub swap_id: Uuid,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum Response {
Fullfilled {
swap_id: Uuid,
s_a: Scalar,
},
Rejected {
swap_id: Uuid,
reason: CooperativeXmrRedeemRejectReason,
},
}
pub fn alice() -> Behaviour {
Behaviour::new(
CborCodec::default(),
vec![(CooperativeXmrRedeemProtocol, ProtocolSupport::Inbound)],
RequestResponseConfig::default(),
)
}
pub fn bob() -> Behaviour {
Behaviour::new(
CborCodec::default(),
vec![(CooperativeXmrRedeemProtocol, ProtocolSupport::Outbound)],
RequestResponseConfig::default(),
)
}
impl From<(PeerId, Message)> for asb::OutEvent {
fn from((peer, message): (PeerId, Message)) -> Self {
match message {
Message::Request {
request, channel, ..
} => Self::CooperativeXmrRedeemRequested {
swap_id: request.swap_id,
channel,
peer,
},
Message::Response { .. } => Self::unexpected_response(peer),
}
}
}
crate::impl_from_rr_event!(OutEvent, asb::OutEvent, PROTOCOL);
impl From<(PeerId, Message)> for cli::OutEvent {
fn from((peer, message): (PeerId, Message)) -> Self {
match message {
Message::Request { .. } => Self::unexpected_request(peer),
Message::Response {
response,
request_id,
} => match response {
Response::Fullfilled { swap_id, s_a } => Self::CooperativeXmrRedeemFulfilled {
id: request_id,
swap_id,
s_a,
},
Response::Rejected {
swap_id,
reason: error,
} => Self::CooperativeXmrRedeemRejected {
id: request_id,
swap_id,
reason: error,
},
},
}
}
}
crate::impl_from_rr_event!(OutEvent, cli::OutEvent, PROTOCOL);

View File

@ -25,7 +25,7 @@ pub struct JsonPullCodec<P, Res> {
impl<P, Res> Default for JsonPullCodec<P, Res> {
fn default() -> Self {
Self {
phantom: PhantomData::default(),
phantom: PhantomData,
}
}
}

View File

@ -1,7 +1,7 @@
use libp2p::rendezvous::Namespace;
use std::fmt;
#[derive(Debug, PartialEq, Clone, Copy)]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum XmrBtcNamespace {
Mainnet,
Testnet,

View File

@ -37,7 +37,7 @@ pub mod protocol {
>;
}
#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq)]
#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
pub struct BlockchainNetwork {
#[serde(with = "crate::bitcoin::network")]
pub bitcoin: bitcoin::Network,

View File

@ -155,13 +155,16 @@ impl ProtocolsHandler for Handler {
let env_config = self.env_config;
let protocol = tokio::time::timeout(self.timeout, async move {
write_cbor_message(&mut substream, SpotPriceRequest {
btc: info.btc,
blockchain_network: BlockchainNetwork {
bitcoin: env_config.bitcoin_network,
monero: env_config.monero_network,
write_cbor_message(
&mut substream,
SpotPriceRequest {
btc: info.btc,
blockchain_network: BlockchainNetwork {
bitcoin: env_config.bitcoin_network,
monero: env_config.monero_network,
},
},
})
)
.await?;
let xmr = Result::from(read_cbor_message::<SpotPriceResponse>(&mut substream).await?)?;
@ -258,7 +261,7 @@ impl From<SpotPriceResponse> for Result<monero::Amount, Error> {
}
}
#[derive(Clone, Debug, thiserror::Error, PartialEq)]
#[derive(Clone, Debug, thiserror::Error, PartialEq, Eq)]
pub enum Error {
#[error("Seller currently does not accept incoming swap requests, please try again later")]
NoSwapsAccepted,

View File

@ -1,9 +1,9 @@
use crate::asb::LatestRate;
use crate::asb::{LatestRate, RendezvousNode};
use crate::libp2p_ext::MultiAddrExt;
use crate::network::rendezvous::XmrBtcNamespace;
use crate::seed::Seed;
use crate::{asb, bitcoin, cli, env, tor};
use anyhow::{Context, Result};
use anyhow::Result;
use libp2p::swarm::{NetworkBehaviour, SwarmBuilder};
use libp2p::{identity, Multiaddr, Swarm};
use std::fmt::Debug;
@ -17,22 +17,23 @@ pub fn asb<LR>(
resume_only: bool,
env_config: env::Config,
namespace: XmrBtcNamespace,
rendezvous_point: Option<Multiaddr>,
rendezvous_addrs: &[Multiaddr],
) -> Result<Swarm<asb::Behaviour<LR>>>
where
LR: LatestRate + Send + 'static + Debug + Clone,
{
let identity = seed.derive_libp2p_identity();
let rendezvous_params = if let Some(address) = rendezvous_point {
let peer_id = address
.extract_peer_id()
.context("Rendezvous node address must contain peer ID")?;
let rendezvous_nodes = rendezvous_addrs
.iter()
.map(|addr| {
let peer_id = addr
.extract_peer_id()
.expect("Rendezvous node address must contain peer ID");
Some((identity.clone(), peer_id, address, namespace))
} else {
None
};
RendezvousNode::new(addr, peer_id, namespace, None)
})
.collect();
let behaviour = asb::Behaviour::new(
min_buy,
@ -41,7 +42,7 @@ where
resume_only,
env_config,
(identity.clone(), namespace),
rendezvous_params,
rendezvous_nodes,
);
let transport = asb::transport::new(&identity)?;

View File

@ -1,6 +1,6 @@
use async_trait::async_trait;
use futures::stream::FusedStream;
use futures::{future, Future, Stream, StreamExt};
use futures::{future, Future, StreamExt};
use libp2p::core::muxing::StreamMuxerBox;
use libp2p::core::transport::upgrade::Version;
use libp2p::core::transport::MemoryTransport;
@ -21,7 +21,7 @@ struct GlobalSpawnTokioExecutor;
impl Executor for GlobalSpawnTokioExecutor {
fn exec(&self, future: Pin<Box<dyn Future<Output = ()> + Send>>) {
let _ = tokio::spawn(future);
tokio::spawn(future);
}
}
@ -40,7 +40,7 @@ where
.expect("failed to create dh_keys");
let noise = NoiseConfig::xx(dh_keys).into_authenticated();
let transport = MemoryTransport::default()
let transport = MemoryTransport
.or_transport(TokioTcpConfig::new())
.upgrade(Version::V1)
.authenticate(noise)
@ -75,8 +75,8 @@ async fn get_local_tcp_address() -> Multiaddr {
}
pub async fn await_events_or_timeout<A, B, E1, E2>(
swarm_1: &mut (impl Stream<Item = SwarmEvent<A, E1>> + FusedStream + Unpin),
swarm_2: &mut (impl Stream<Item = SwarmEvent<B, E2>> + FusedStream + Unpin),
swarm_1: &mut (impl FusedStream<Item = SwarmEvent<A, E1>> + FusedStream + Unpin),
swarm_2: &mut (impl FusedStream<Item = SwarmEvent<B, E2>> + FusedStream + Unpin),
) -> (SwarmEvent<A, E1>, SwarmEvent<B, E2>)
where
SwarmEvent<A, E1>: Debug,

View File

@ -11,6 +11,7 @@ use serde::{Deserialize, Serialize};
use sha2::Sha256;
use sigma_fun::ext::dl_secp256k1_ed25519_eq::{CrossCurveDLEQ, CrossCurveDLEQProof};
use sigma_fun::HashTranscript;
use std::collections::HashMap;
use std::convert::TryInto;
use uuid::Uuid;
@ -101,11 +102,11 @@ impl From<BobState> for State {
}
}
#[derive(thiserror::Error, Debug, Clone, Copy, PartialEq)]
#[derive(thiserror::Error, Debug, Clone, Copy, PartialEq, Eq)]
#[error("Not in the role of Alice")]
pub struct NotAlice;
#[derive(thiserror::Error, Debug, Clone, Copy, PartialEq)]
#[derive(thiserror::Error, Debug, Clone, Copy, PartialEq, Eq)]
#[error("Not in the role of Bob")]
pub struct NotBob;
@ -139,7 +140,19 @@ pub trait Database {
async fn get_monero_address(&self, swap_id: Uuid) -> Result<monero::Address>;
async fn insert_address(&self, peer_id: PeerId, address: Multiaddr) -> Result<()>;
async fn get_addresses(&self, peer_id: PeerId) -> Result<Vec<Multiaddr>>;
async fn get_swap_start_date(&self, swap_id: Uuid) -> Result<String>;
async fn insert_latest_state(&self, swap_id: Uuid, state: State) -> Result<()>;
async fn get_state(&self, swap_id: Uuid) -> Result<State>;
async fn get_states(&self, swap_id: Uuid) -> Result<Vec<State>>;
async fn all(&self) -> Result<Vec<(Uuid, State)>>;
async fn raw_all(&self) -> Result<HashMap<Uuid, Vec<serde_json::Value>>>;
async fn insert_buffered_transfer_proof(
&self,
swap_id: Uuid,
proof: monero::TransferProof,
) -> Result<()>;
async fn get_buffered_transfer_proof(
&self,
swap_id: Uuid,
) -> Result<Option<monero::TransferProof>>;
}

View File

@ -74,7 +74,9 @@ pub enum AliceState {
transfer_proof: TransferProof,
state3: Box<State3>,
},
BtcPunished,
BtcPunished {
state3: Box<State3>,
},
SafelyAborted,
}
@ -98,7 +100,7 @@ impl fmt::Display for AliceState {
AliceState::BtcRedeemed => write!(f, "btc is redeemed"),
AliceState::BtcCancelled { .. } => write!(f, "btc is cancelled"),
AliceState::BtcRefunded { .. } => write!(f, "btc is refunded"),
AliceState::BtcPunished => write!(f, "btc is punished"),
AliceState::BtcPunished { .. } => write!(f, "btc is punished"),
AliceState::SafelyAborted => write!(f, "safely aborted"),
AliceState::BtcPunishable { .. } => write!(f, "btc is punishable"),
AliceState::XmrRefunded => write!(f, "xmr is refunded"),
@ -184,29 +186,32 @@ impl State0 {
let v = self.v_a + msg.v_b;
Ok((msg.swap_id, State1 {
a: self.a,
B: msg.B,
s_a: self.s_a,
S_a_monero: self.S_a_monero,
S_a_bitcoin: self.S_a_bitcoin,
S_b_monero: msg.S_b_monero,
S_b_bitcoin: msg.S_b_bitcoin,
v,
v_a: self.v_a,
dleq_proof_s_a: self.dleq_proof_s_a,
btc: self.btc,
xmr: self.xmr,
cancel_timelock: self.cancel_timelock,
punish_timelock: self.punish_timelock,
refund_address: msg.refund_address,
redeem_address: self.redeem_address,
punish_address: self.punish_address,
tx_redeem_fee: self.tx_redeem_fee,
tx_punish_fee: self.tx_punish_fee,
tx_refund_fee: msg.tx_refund_fee,
tx_cancel_fee: msg.tx_cancel_fee,
}))
Ok((
msg.swap_id,
State1 {
a: self.a,
B: msg.B,
s_a: self.s_a,
S_a_monero: self.S_a_monero,
S_a_bitcoin: self.S_a_bitcoin,
S_b_monero: msg.S_b_monero,
S_b_bitcoin: msg.S_b_bitcoin,
v,
v_a: self.v_a,
dleq_proof_s_a: self.dleq_proof_s_a,
btc: self.btc,
xmr: self.xmr,
cancel_timelock: self.cancel_timelock,
punish_timelock: self.punish_timelock,
refund_address: msg.refund_address,
redeem_address: self.redeem_address,
punish_address: self.punish_address,
tx_redeem_fee: self.tx_redeem_fee,
tx_punish_fee: self.tx_punish_fee,
tx_refund_fee: msg.tx_refund_fee,
tx_cancel_fee: msg.tx_cancel_fee,
},
))
}
}
@ -307,7 +312,8 @@ impl State2 {
self.a.public(),
self.B,
self.tx_cancel_fee,
);
)
.expect("valid cancel tx");
let tx_refund =
bitcoin::TxRefund::new(&tx_cancel, &self.refund_address, self.tx_refund_fee);
@ -332,7 +338,7 @@ impl State2 {
self.a.public(),
self.B,
self.tx_cancel_fee,
);
)?;
bitcoin::verify_sig(&self.B, &tx_cancel.digest(), &msg.tx_cancel_sig)
.context("Failed to verify cancel transaction")?;
let tx_punish = bitcoin::TxPunish::new(
@ -373,13 +379,13 @@ impl State2 {
pub struct State3 {
a: bitcoin::SecretKey,
B: bitcoin::PublicKey,
s_a: monero::Scalar,
pub s_a: monero::Scalar,
S_b_monero: monero::PublicKey,
S_b_bitcoin: bitcoin::PublicKey,
pub v: monero::PrivateViewKey,
#[serde(with = "::bitcoin::util::amount::serde::as_sat")]
btc: bitcoin::Amount,
xmr: monero::Amount,
pub btc: bitcoin::Amount,
pub xmr: monero::Amount,
pub cancel_timelock: CancelTimelock,
pub punish_timelock: PunishTimelock,
refund_address: bitcoin::Address,
@ -455,6 +461,7 @@ impl State3 {
self.B,
self.tx_cancel_fee,
)
.expect("valid cancel tx")
}
pub fn tx_refund(&self) -> TxRefund {

View File

@ -1,11 +1,14 @@
//! Run an XMR/BTC swap in the role of Alice.
//! Alice holds XMR and wishes receive BTC.
use std::time::Duration;
use crate::asb::{EventLoopHandle, LatestRate};
use crate::bitcoin::ExpiredTimelocks;
use crate::env::Config;
use crate::protocol::alice::{AliceState, Swap};
use crate::{bitcoin, monero};
use anyhow::{bail, Context, Result};
use backoff::ExponentialBackoffBuilder;
use tokio::select;
use tokio::time::timeout;
use uuid::Uuid;
@ -111,23 +114,63 @@ where
}
}
AliceState::BtcLocked { state3 } => {
match state3.expired_timelocks(bitcoin_wallet).await? {
ExpiredTimelocks::None => {
// Record the current monero wallet block height so we don't have to scan from
// block 0 for scenarios where we create a refund wallet.
let monero_wallet_restore_blockheight = monero_wallet.block_height().await?;
// We retry to lock the Monero wallet until we succeed or until the cancel timelock expires.
//
// This is necessary because the monero-wallet-rpc can sometimes error out due to various reasons, such as
// - no connection to the daemon
// - "failed to get output distribution"
// See https://github.com/comit-network/xmr-btc-swap/issues/1726
let backoff = ExponentialBackoffBuilder::new()
.with_initial_interval(Duration::from_secs(5))
.with_max_interval(Duration::from_secs(60 * 3))
.with_max_elapsed_time(None)
.build();
let transfer_proof = monero_wallet
.transfer(state3.lock_xmr_transfer_request())
.await?;
let result = backoff::future::retry_notify(
backoff,
|| async {
match state3.expired_timelocks(bitcoin_wallet).await {
Ok(ExpiredTimelocks::None { .. }) => {
// Record the current monero wallet block height so we don't have to scan from
// block 0 for scenarios where we create a refund wallet.
let monero_wallet_restore_blockheight = monero_wallet
.block_height()
.await
.map_err(backoff::Error::transient)?;
let transfer_proof = monero_wallet
.transfer(state3.lock_xmr_transfer_request())
.await
.map_err(backoff::Error::transient)?;
Ok(Some((monero_wallet_restore_blockheight, transfer_proof)))
}
Ok(_) => Ok(None),
Err(e) => Err(backoff::Error::transient(e)),
}
},
|err, delay: Duration| {
tracing::warn!(
%err,
delay_secs = delay.as_secs(),
"Failed to lock XMR. We will retry after a delay"
);
},
)
.await;
match result {
Ok(Some((monero_wallet_restore_blockheight, transfer_proof))) => {
AliceState::XmrLockTransactionSent {
monero_wallet_restore_blockheight,
transfer_proof,
state3,
}
}
_ => AliceState::SafelyAborted,
Ok(None) => AliceState::SafelyAborted,
Err(e) => {
unreachable!("We should retry forever until the cancel timelock expires. But we got an error: {:#}", e);
}
}
}
AliceState::XmrLockTransactionSent {
@ -135,7 +178,7 @@ where
transfer_proof,
state3,
} => match state3.expired_timelocks(bitcoin_wallet).await? {
ExpiredTimelocks::None => {
ExpiredTimelocks::None { .. } => {
monero_wallet
.watch_for_transfer(state3.lock_xmr_watch_request(transfer_proof.clone(), 1))
.await
@ -221,7 +264,7 @@ where
encrypted_signature,
state3,
} => match state3.expired_timelocks(bitcoin_wallet).await? {
ExpiredTimelocks::None => {
ExpiredTimelocks::None { .. } => {
let tx_lock_status = bitcoin_wallet.subscribe_to(state3.tx_lock.clone()).await;
match state3.signed_redeem_transaction(*encrypted_signature) {
Ok(tx) => match bitcoin_wallet.broadcast(tx, "redeem").await {
@ -362,7 +405,7 @@ where
let punish = state3.punish_btc(bitcoin_wallet).await;
match punish {
Ok(_) => AliceState::BtcPunished,
Ok(_) => AliceState::BtcPunished { state3 },
Err(error) => {
tracing::warn!("Failed to publish punish transaction: {:#}", error);
@ -392,17 +435,17 @@ where
}
AliceState::XmrRefunded => AliceState::XmrRefunded,
AliceState::BtcRedeemed => AliceState::BtcRedeemed,
AliceState::BtcPunished => AliceState::BtcPunished,
AliceState::BtcPunished { state3 } => AliceState::BtcPunished { state3 },
AliceState::SafelyAborted => AliceState::SafelyAborted,
})
}
pub(crate) fn is_complete(state: &AliceState) -> bool {
pub fn is_complete(state: &AliceState) -> bool {
matches!(
state,
AliceState::XmrRefunded
| AliceState::BtcRedeemed
| AliceState::BtcPunished
| AliceState::BtcPunished { .. }
| AliceState::SafelyAborted
)
}

View File

@ -21,9 +21,10 @@ use sigma_fun::ext::dl_secp256k1_ed25519_eq::CrossCurveDLEQProof;
use std::fmt;
use uuid::Uuid;
#[derive(Debug, Clone, PartialEq)]
#[derive(Debug, Clone, PartialEq, Serialize)]
pub enum BobState {
Started {
#[serde(with = "::bitcoin::util::amount::serde::as_sat")]
btc_amount: bitcoin::Amount,
change_address: bitcoin::Address,
},
@ -47,6 +48,7 @@ pub enum BobState {
tx_lock_id: bitcoin::Txid,
},
BtcPunished {
state: State6,
tx_lock_id: bitcoin::Txid,
},
SafelyAborted,
@ -242,7 +244,7 @@ impl State1 {
self.A,
self.b.public(),
self.tx_cancel_fee,
);
)?;
let tx_refund =
bitcoin::TxRefund::new(&tx_cancel, &self.refund_address, self.tx_refund_fee);
@ -287,13 +289,13 @@ pub struct State2 {
S_a_monero: monero::PublicKey,
S_a_bitcoin: bitcoin::PublicKey,
v: monero::PrivateViewKey,
xmr: monero::Amount,
cancel_timelock: CancelTimelock,
punish_timelock: PunishTimelock,
refund_address: bitcoin::Address,
pub xmr: monero::Amount,
pub cancel_timelock: CancelTimelock,
pub punish_timelock: PunishTimelock,
pub refund_address: bitcoin::Address,
redeem_address: bitcoin::Address,
punish_address: bitcoin::Address,
tx_lock: bitcoin::TxLock,
pub tx_lock: bitcoin::TxLock,
tx_cancel_sig_a: Signature,
tx_refund_encsig: bitcoin::EncryptedSignature,
min_monero_confirmations: u64,
@ -302,9 +304,9 @@ pub struct State2 {
#[serde(with = "::bitcoin::util::amount::serde::as_sat")]
tx_punish_fee: bitcoin::Amount,
#[serde(with = "::bitcoin::util::amount::serde::as_sat")]
tx_refund_fee: bitcoin::Amount,
pub tx_refund_fee: bitcoin::Amount,
#[serde(with = "::bitcoin::util::amount::serde::as_sat")]
tx_cancel_fee: bitcoin::Amount,
pub tx_cancel_fee: bitcoin::Amount,
}
impl State2 {
@ -315,7 +317,8 @@ impl State2 {
self.A,
self.b.public(),
self.tx_cancel_fee,
);
)
.expect("valid cancel tx");
let tx_cancel_sig = self.b.sign(tx_cancel.digest());
let tx_punish = bitcoin::TxPunish::new(
&tx_cancel,
@ -366,7 +369,7 @@ pub struct State3 {
S_a_monero: monero::PublicKey,
S_a_bitcoin: bitcoin::PublicKey,
v: monero::PrivateViewKey,
xmr: monero::Amount,
pub xmr: monero::Amount,
pub cancel_timelock: CancelTimelock,
punish_timelock: PunishTimelock,
refund_address: bitcoin::Address,
@ -419,11 +422,13 @@ impl State3 {
}
}
pub fn cancel(&self) -> State6 {
pub fn cancel(&self, monero_wallet_restore_blockheight: BlockHeight) -> State6 {
State6 {
A: self.A,
b: self.b.clone(),
s_b: self.s_b,
v: self.v,
monero_wallet_restore_blockheight,
cancel_timelock: self.cancel_timelock,
punish_timelock: self.punish_timelock,
refund_address: self.refund_address.clone(),
@ -439,7 +444,7 @@ impl State3 {
self.tx_lock.txid()
}
pub async fn current_epoch(
pub async fn expired_timelock(
&self,
bitcoin_wallet: &bitcoin::Wallet,
) -> Result<ExpiredTimelocks> {
@ -449,7 +454,7 @@ impl State3 {
self.A,
self.b.public(),
self.tx_cancel_fee,
);
)?;
let tx_lock_status = bitcoin_wallet.status_of_script(&self.tx_lock).await?;
let tx_cancel_status = bitcoin_wallet.status_of_script(&tx_cancel).await?;
@ -461,6 +466,19 @@ impl State3 {
tx_cancel_status,
))
}
pub fn attempt_cooperative_redeem(
&self,
s_a: monero::PrivateKey,
monero_wallet_restore_blockheight: BlockHeight,
) -> State5 {
State5 {
s_a,
s_b: self.s_b,
v: self.v,
tx_lock: self.tx_lock.clone(),
monero_wallet_restore_blockheight,
}
}
}
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
@ -487,6 +505,27 @@ pub struct State4 {
}
impl State4 {
pub async fn check_for_tx_redeem(&self, bitcoin_wallet: &bitcoin::Wallet) -> Result<State5> {
let tx_redeem =
bitcoin::TxRedeem::new(&self.tx_lock, &self.redeem_address, self.tx_redeem_fee);
let tx_redeem_encsig = self.b.encsign(self.S_a_bitcoin, tx_redeem.digest());
let tx_redeem_candidate = bitcoin_wallet.get_raw_transaction(tx_redeem.txid()).await?;
let tx_redeem_sig =
tx_redeem.extract_signature_by_key(tx_redeem_candidate, self.b.public())?;
let s_a = bitcoin::recover(self.S_a_bitcoin, tx_redeem_sig, tx_redeem_encsig)?;
let s_a = monero::private_key_from_secp256k1_scalar(s_a.into());
Ok(State5 {
s_a,
s_b: self.s_b,
v: self.v,
tx_lock: self.tx_lock.clone(),
monero_wallet_restore_blockheight: self.monero_wallet_restore_blockheight,
})
}
pub fn tx_redeem_encsig(&self) -> bitcoin::EncryptedSignature {
let tx_redeem =
bitcoin::TxRedeem::new(&self.tx_lock, &self.redeem_address, self.tx_redeem_fee);
@ -530,7 +569,7 @@ impl State4 {
self.A,
self.b.public(),
self.tx_cancel_fee,
);
)?;
let tx_lock_status = bitcoin_wallet.status_of_script(&self.tx_lock).await?;
let tx_cancel_status = bitcoin_wallet.status_of_script(&tx_cancel).await?;
@ -548,6 +587,8 @@ impl State4 {
A: self.A,
b: self.b,
s_b: self.s_b,
v: self.v,
monero_wallet_restore_blockheight: self.monero_wallet_restore_blockheight,
cancel_timelock: self.cancel_timelock,
punish_timelock: self.punish_timelock,
refund_address: self.refund_address,
@ -560,7 +601,7 @@ impl State4 {
}
}
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
pub struct State5 {
#[serde(with = "monero_private_key")]
s_a: monero::PrivateKey,
@ -581,6 +622,43 @@ impl State5 {
pub fn tx_lock_id(&self) -> bitcoin::Txid {
self.tx_lock.txid()
}
pub async fn redeem_xmr(
&self,
monero_wallet: &monero::Wallet,
wallet_file_name: std::string::String,
monero_receive_address: monero::Address,
) -> Result<()> {
let (spend_key, view_key) = self.xmr_keys();
tracing::info!(%wallet_file_name, "Generating and opening Monero wallet from the extracted keys to redeem the Monero");
if let Err(e) = monero_wallet
.create_from_and_load(
wallet_file_name.clone(),
spend_key,
view_key,
self.monero_wallet_restore_blockheight,
)
.await
{
// In case we failed to refresh/sweep, when resuming the wallet might already
// exist! This is a very unlikely scenario, but if we don't take care of it we
// might not be able to ever transfer the Monero.
tracing::warn!("Failed to generate monero wallet from keys: {:#}", e);
tracing::info!(%wallet_file_name,
"Falling back to trying to open the wallet if it already exists",
);
monero_wallet.open(wallet_file_name).await?;
}
// Ensure that the generated wallet is synced so we have a proper balance
monero_wallet.refresh(20).await?;
// Sweep (transfer all funds) to the given address
let tx_hashes = monero_wallet.sweep_all(monero_receive_address).await?;
for tx_hash in tx_hashes {
tracing::info!(%monero_receive_address, txid=%tx_hash.0, "Successfully transferred XMR to wallet");
}
Ok(())
}
}
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
@ -588,6 +666,8 @@ pub struct State6 {
A: bitcoin::PublicKey,
b: bitcoin::SecretKey,
s_b: monero::Scalar,
v: monero::PrivateViewKey,
pub monero_wallet_restore_blockheight: BlockHeight,
cancel_timelock: CancelTimelock,
punish_timelock: PunishTimelock,
refund_address: bitcoin::Address,
@ -611,7 +691,7 @@ impl State6 {
self.A,
self.b.public(),
self.tx_cancel_fee,
);
)?;
let tx_lock_status = bitcoin_wallet.status_of_script(&self.tx_lock).await?;
let tx_cancel_status = bitcoin_wallet.status_of_script(&tx_cancel).await?;
@ -623,18 +703,20 @@ impl State6 {
tx_cancel_status,
))
}
pub async fn check_for_tx_cancel(
&self,
bitcoin_wallet: &bitcoin::Wallet,
) -> Result<Transaction> {
let tx_cancel = bitcoin::TxCancel::new(
pub fn construct_tx_cancel(&self) -> Result<bitcoin::TxCancel> {
bitcoin::TxCancel::new(
&self.tx_lock,
self.cancel_timelock,
self.A,
self.b.public(),
self.tx_cancel_fee,
);
)
}
pub async fn check_for_tx_cancel(
&self,
bitcoin_wallet: &bitcoin::Wallet,
) -> Result<Transaction> {
let tx_cancel = self.construct_tx_cancel()?;
let tx = bitcoin_wallet.get_raw_transaction(tx_cancel.txid()).await?;
@ -645,15 +727,10 @@ impl State6 {
&self,
bitcoin_wallet: &bitcoin::Wallet,
) -> Result<(Txid, Subscription)> {
let transaction = bitcoin::TxCancel::new(
&self.tx_lock,
self.cancel_timelock,
self.A,
self.b.public(),
self.tx_cancel_fee,
)
.complete_as_bob(self.A, self.b.clone(), self.tx_cancel_sig_a.clone())
.context("Failed to complete Bitcoin cancel transaction")?;
let transaction = self
.construct_tx_cancel()?
.complete_as_bob(self.A, self.b.clone(), self.tx_cancel_sig_a.clone())
.context("Failed to complete Bitcoin cancel transaction")?;
let (tx_id, subscription) = bitcoin_wallet.broadcast(transaction, "cancel").await?;
@ -668,13 +745,7 @@ impl State6 {
}
pub fn signed_refund_transaction(&self) -> Result<Transaction> {
let tx_cancel = bitcoin::TxCancel::new(
&self.tx_lock,
self.cancel_timelock,
self.A,
self.b.public(),
self.tx_cancel_fee,
);
let tx_cancel = self.construct_tx_cancel()?;
let tx_refund =
bitcoin::TxRefund::new(&tx_cancel, &self.refund_address, self.tx_refund_fee);
@ -692,4 +763,13 @@ impl State6 {
pub fn tx_lock_id(&self) -> bitcoin::Txid {
self.tx_lock.txid()
}
pub fn attempt_cooperative_redeem(&self, s_a: monero::PrivateKey) -> State5 {
State5 {
s_a,
s_b: self.s_b,
v: self.v,
tx_lock: self.tx_lock.clone(),
monero_wallet_restore_blockheight: self.monero_wallet_restore_blockheight,
}
}
}

View File

@ -1,23 +1,33 @@
use crate::bitcoin::{ExpiredTimelocks, TxCancel, TxRefund};
use crate::cli::EventLoopHandle;
use crate::network::cooperative_xmr_redeem_after_punish::Response::{Fullfilled, Rejected};
use crate::network::swap_setup::bob::NewSwap;
use crate::protocol::bob;
use crate::protocol::bob::state::*;
use crate::protocol::{bob, Database};
use crate::{bitcoin, monero};
use anyhow::{bail, Context, Result};
use std::sync::Arc;
use tokio::select;
use uuid::Uuid;
pub fn is_complete(state: &BobState) -> bool {
matches!(
state,
BobState::BtcRefunded(..)
| BobState::XmrRedeemed { .. }
| BobState::BtcPunished { .. }
| BobState::SafelyAborted
BobState::BtcRefunded(..) | BobState::XmrRedeemed { .. } | BobState::SafelyAborted
)
}
// Identifies states that should be run at most once before exiting.
// This is used to prevent infinite retry loops while still allowing manual resumption.
//
// Currently, this applies to the BtcPunished state:
// - We want to attempt recovery via cooperative XMR redeem once.
// - If unsuccessful, we exit to avoid an infinite retry loop.
// - The swap can still be manually resumed later and retried if desired.
pub fn is_run_at_most_once(state: &BobState) -> bool {
matches!(state, BobState::BtcPunished { .. })
}
#[allow(clippy::too_many_arguments)]
pub async fn run(swap: bob::Swap) -> Result<BobState> {
run_until(swap, is_complete).await
@ -27,13 +37,14 @@ pub async fn run_until(
mut swap: bob::Swap,
is_target_state: fn(&BobState) -> bool,
) -> Result<BobState> {
let mut current_state = swap.state;
let mut current_state = swap.state.clone();
while !is_target_state(&current_state) {
current_state = next_state(
let next_state = next_state(
swap.id,
current_state.clone(),
&mut swap.event_loop_handle,
swap.db.clone(),
swap.bitcoin_wallet.as_ref(),
swap.monero_wallet.as_ref(),
swap.monero_receive_address,
@ -41,8 +52,14 @@ pub async fn run_until(
.await?;
swap.db
.insert_latest_state(swap.id, current_state.clone().into())
.insert_latest_state(swap.id, next_state.clone().into())
.await?;
if is_run_at_most_once(&current_state) && next_state == current_state {
break;
}
current_state = next_state;
}
Ok(current_state)
@ -52,6 +69,7 @@ async fn next_state(
swap_id: Uuid,
state: BobState,
event_loop_handle: &mut EventLoopHandle,
db: Arc<dyn Database + Send + Sync>,
bitcoin_wallet: &bitcoin::Wallet,
monero_wallet: &monero::Wallet,
monero_receive_address: monero::Address,
@ -117,13 +135,29 @@ async fn next_state(
} => {
let tx_lock_status = bitcoin_wallet.subscribe_to(state3.tx_lock.clone()).await;
if let ExpiredTimelocks::None = state3.current_epoch(bitcoin_wallet).await? {
if let ExpiredTimelocks::None { .. } = state3.expired_timelock(bitcoin_wallet).await? {
tracing::info!("Waiting for Alice to lock Monero");
let buffered_transfer_proof = db
.get_buffered_transfer_proof(swap_id)
.await
.context("Failed to get buffered transfer proof")?;
if let Some(transfer_proof) = buffered_transfer_proof {
tracing::debug!(txid = %transfer_proof.tx_hash(), "Found buffered transfer proof");
tracing::info!(txid = %transfer_proof.tx_hash(), "Alice locked Monero");
return Ok(BobState::XmrLockProofReceived {
state: state3,
lock_transfer_proof: transfer_proof,
monero_wallet_restore_blockheight,
});
}
let transfer_proof_watcher = event_loop_handle.recv_transfer_proof();
let cancel_timelock_expires =
tx_lock_status.wait_until_confirmed_with(state3.cancel_timelock);
tracing::info!("Waiting for Alice to lock Monero");
select! {
transfer_proof = transfer_proof_watcher => {
let transfer_proof = transfer_proof?;
@ -140,12 +174,12 @@ async fn next_state(
result?;
tracing::info!("Alice took too long to lock Monero, cancelling the swap");
let state4 = state3.cancel();
let state4 = state3.cancel(monero_wallet_restore_blockheight);
BobState::CancelTimelockExpired(state4)
},
}
} else {
let state4 = state3.cancel();
let state4 = state3.cancel(monero_wallet_restore_blockheight);
BobState::CancelTimelockExpired(state4)
}
}
@ -156,7 +190,7 @@ async fn next_state(
} => {
let tx_lock_status = bitcoin_wallet.subscribe_to(state.tx_lock.clone()).await;
if let ExpiredTimelocks::None = state.current_epoch(bitcoin_wallet).await? {
if let ExpiredTimelocks::None { .. } = state.expired_timelock(bitcoin_wallet).await? {
let watch_request = state.lock_xmr_watch_request(lock_transfer_proof);
select! {
@ -169,23 +203,30 @@ async fn next_state(
tx_lock_status.wait_until_confirmed_with(state.cancel_timelock).await?;
BobState::CancelTimelockExpired(state.cancel())
BobState::CancelTimelockExpired(state.cancel(monero_wallet_restore_blockheight))
},
}
}
result = tx_lock_status.wait_until_confirmed_with(state.cancel_timelock) => {
result?;
BobState::CancelTimelockExpired(state.cancel())
BobState::CancelTimelockExpired(state.cancel(monero_wallet_restore_blockheight))
}
}
} else {
BobState::CancelTimelockExpired(state.cancel())
BobState::CancelTimelockExpired(state.cancel(monero_wallet_restore_blockheight))
}
}
BobState::XmrLocked(state) => {
// In case we send the encrypted signature to Alice, but she doesn't give us a confirmation
// We need to check if she still published the Bitcoin redeem transaction
// Otherwise we risk staying stuck in "XmrLocked"
if let Ok(state5) = state.check_for_tx_redeem(bitcoin_wallet).await {
return Ok(BobState::BtcRedeemed(state5));
}
let tx_lock_status = bitcoin_wallet.subscribe_to(state.tx_lock.clone()).await;
if let ExpiredTimelocks::None = state.expired_timelock(bitcoin_wallet).await? {
if let ExpiredTimelocks::None { .. } = state.expired_timelock(bitcoin_wallet).await? {
// Alice has locked Xmr
// Bob sends Alice his key
@ -207,9 +248,16 @@ async fn next_state(
}
}
BobState::EncSigSent(state) => {
// We need to make sure that Alice did not publish the redeem transaction while we were offline
// Even if the cancel timelock expired, if Alice published the redeem transaction while we were away we cannot miss it
// If we do we cannot refund and will never be able to leave the "CancelTimelockExpired" state
if let Ok(state5) = state.check_for_tx_redeem(bitcoin_wallet).await {
return Ok(BobState::BtcRedeemed(state5));
}
let tx_lock_status = bitcoin_wallet.subscribe_to(state.tx_lock.clone()).await;
if let ExpiredTimelocks::None = state.expired_timelock(bitcoin_wallet).await? {
if let ExpiredTimelocks::None { .. } = state.expired_timelock(bitcoin_wallet).await? {
select! {
state5 = state.watch_for_redeem_btc(bitcoin_wallet) => {
BobState::BtcRedeemed(state5?)
@ -224,36 +272,9 @@ async fn next_state(
}
}
BobState::BtcRedeemed(state) => {
let (spend_key, view_key) = state.xmr_keys();
let wallet_file_name = swap_id.to_string();
if let Err(e) = monero_wallet
.create_from_and_load(
wallet_file_name.clone(),
spend_key,
view_key,
state.monero_wallet_restore_blockheight,
)
.await
{
// In case we failed to refresh/sweep, when resuming the wallet might already
// exist! This is a very unlikely scenario, but if we don't take care of it we
// might not be able to ever transfer the Monero.
tracing::warn!("Failed to generate monero wallet from keys: {:#}", e);
tracing::info!(%wallet_file_name,
"Falling back to trying to open the the wallet if it already exists",
);
monero_wallet.open(wallet_file_name).await?;
}
// Ensure that the generated wallet is synced so we have a proper balance
monero_wallet.refresh().await?;
// Sweep (transfer all funds) to the given address
let tx_hashes = monero_wallet.sweep_all(monero_receive_address).await?;
for tx_hash in tx_hashes {
tracing::info!(%monero_receive_address, txid=%tx_hash.0, "Successfully transferred XMR to wallet");
}
state
.redeem_xmr(monero_wallet, swap_id.to_string(), monero_receive_address)
.await?;
BobState::XmrRedeemed {
tx_lock_id: state.tx_lock_id(),
@ -269,12 +290,12 @@ async fn next_state(
BobState::BtcCancelled(state) => {
// Bob has cancelled the swap
match state.expired_timelock(bitcoin_wallet).await? {
ExpiredTimelocks::None => {
ExpiredTimelocks::None { .. } => {
bail!(
"Internal error: canceled state reached before cancel timelock was expired"
);
}
ExpiredTimelocks::Cancel => {
ExpiredTimelocks::Cancel { .. } => {
state.publish_refund_btc(bitcoin_wallet).await?;
BobState::BtcRefunded(state)
}
@ -282,12 +303,58 @@ async fn next_state(
tracing::info!("You have been punished for not refunding in time");
BobState::BtcPunished {
tx_lock_id: state.tx_lock_id(),
state,
}
}
}
}
BobState::BtcRefunded(state4) => BobState::BtcRefunded(state4),
BobState::BtcPunished { tx_lock_id } => BobState::BtcPunished { tx_lock_id },
BobState::BtcPunished { state, tx_lock_id } => {
tracing::info!("Attempting to cooperatively redeem XMR after being punished");
let response = event_loop_handle
.request_cooperative_xmr_redeem(swap_id)
.await;
match response {
Ok(Fullfilled { s_a, .. }) => {
tracing::info!(
"Alice has accepted our request to cooperatively redeem the XMR"
);
let s_a = monero::PrivateKey { scalar: s_a };
let state5 = state.attempt_cooperative_redeem(s_a);
match state5
.redeem_xmr(monero_wallet, swap_id.to_string(), monero_receive_address)
.await
{
Ok(_) => {
return Ok(BobState::XmrRedeemed { tx_lock_id });
}
Err(error) => {
return Err(error)
.context("Failed to redeem XMR with revealed XMR key");
}
}
}
Ok(Rejected { reason, .. }) => {
tracing::error!(
%reason,
"Alice rejected our request for cooperative XMR redeem"
);
return Err(reason)
.context("Alice rejected our request for cooperative XMR redeem");
}
Err(error) => {
tracing::error!(
%error,
"Failed to request cooperative XMR redeem from Alice"
);
return Err(error)
.context("Failed to request cooperative XMR redeem from Alice");
}
};
}
BobState::SafelyAborted => BobState::SafelyAborted,
BobState::XmrRedeemed { tx_lock_id } => BobState::XmrRedeemed { tx_lock_id },
})

31
swap/src/rpc.rs Normal file
View File

@ -0,0 +1,31 @@
use crate::api::Context;
use jsonrpsee::server::{RpcModule, ServerBuilder, ServerHandle};
use std::net::SocketAddr;
use std::sync::Arc;
use thiserror::Error;
pub mod methods;
#[derive(Debug, Error)]
pub enum Error {
#[error("Could not parse key value from params")]
ParseError,
}
pub async fn run_server(
server_address: SocketAddr,
context: Arc<Context>,
) -> anyhow::Result<(SocketAddr, ServerHandle)> {
let server = ServerBuilder::default().build(server_address).await?;
let mut modules = RpcModule::new(());
{
modules
.merge(methods::register_modules(Arc::clone(&context))?)
.expect("Could not register RPC modules")
}
let addr = server.local_addr()?;
let server_handle = server.start(modules)?;
Ok((addr, server_handle))
}

269
swap/src/rpc/methods.rs Normal file
View File

@ -0,0 +1,269 @@
use crate::api::request::{Method, Request};
use crate::api::Context;
use crate::bitcoin::bitcoin_address;
use crate::monero::monero_address;
use crate::{bitcoin, monero};
use anyhow::Result;
use jsonrpsee::server::RpcModule;
use jsonrpsee::types::Params;
use libp2p::core::Multiaddr;
use serde::Deserialize;
use std::collections::HashMap;
use std::path::PathBuf;
use std::str::FromStr;
use std::sync::Arc;
use uuid::Uuid;
pub fn register_modules(context: Arc<Context>) -> Result<RpcModule<Arc<Context>>> {
let mut module = RpcModule::new(context);
module.register_async_method("suspend_current_swap", |params, context| async move {
execute_request(params, Method::SuspendCurrentSwap, &context).await
})?;
module.register_async_method("get_swap_info", |params_raw, context| async move {
let params: HashMap<String, serde_json::Value> = params_raw.parse()?;
let swap_id = params
.get("swap_id")
.ok_or_else(|| jsonrpsee_core::Error::Custom("Does not contain swap_id".to_string()))?;
let swap_id = as_uuid(swap_id)
.ok_or_else(|| jsonrpsee_core::Error::Custom("Could not parse swap_id".to_string()))?;
execute_request(params_raw, Method::GetSwapInfo { swap_id }, &context).await
})?;
module.register_async_method("get_bitcoin_balance", |params_raw, context| async move {
let params: HashMap<String, serde_json::Value> = params_raw.parse()?;
let force_refresh = params
.get("force_refresh")
.ok_or_else(|| {
jsonrpsee_core::Error::Custom("Does not contain force_refresh".to_string())
})?
.as_bool()
.ok_or_else(|| {
jsonrpsee_core::Error::Custom("force_refesh is not a boolean".to_string())
})?;
execute_request(params_raw, Method::Balance { force_refresh }, &context).await
})?;
module.register_async_method("get_history", |params_raw, context| async move {
execute_request(params_raw, Method::History, &context).await
})?;
module.register_async_method("get_logs", |params_raw, context| async move {
#[derive(Debug, Clone, Deserialize)]
struct Params {
swap_id: Option<Uuid>,
logs_dir: Option<PathBuf>,
redact: bool,
}
let params: Params = params_raw.parse()?;
execute_request(
params_raw,
Method::Logs {
swap_id: params.swap_id,
logs_dir: params.logs_dir,
redact: params.redact,
},
&context,
)
.await
})?;
module.register_async_method("get_raw_states", |params, context| async move {
execute_request(params, Method::GetRawStates, &context).await
})?;
module.register_async_method("resume_swap", |params_raw, context| async move {
let params: HashMap<String, serde_json::Value> = params_raw.parse()?;
let swap_id = params
.get("swap_id")
.ok_or_else(|| jsonrpsee_core::Error::Custom("Does not contain swap_id".to_string()))?;
let swap_id = as_uuid(swap_id)
.ok_or_else(|| jsonrpsee_core::Error::Custom("Could not parse swap_id".to_string()))?;
execute_request(params_raw, Method::Resume { swap_id }, &context).await
})?;
module.register_async_method("cancel_refund_swap", |params_raw, context| async move {
let params: HashMap<String, serde_json::Value> = params_raw.parse()?;
let swap_id = params
.get("swap_id")
.ok_or_else(|| jsonrpsee_core::Error::Custom("Does not contain swap_id".to_string()))?;
let swap_id = as_uuid(swap_id)
.ok_or_else(|| jsonrpsee_core::Error::Custom("Could not parse swap_id".to_string()))?;
execute_request(params_raw, Method::CancelAndRefund { swap_id }, &context).await
})?;
module.register_async_method(
"get_monero_recovery_info",
|params_raw, context| async move {
let params: HashMap<String, serde_json::Value> = params_raw.parse()?;
let swap_id = params.get("swap_id").ok_or_else(|| {
jsonrpsee_core::Error::Custom("Does not contain swap_id".to_string())
})?;
let swap_id = as_uuid(swap_id).ok_or_else(|| {
jsonrpsee_core::Error::Custom("Could not parse swap_id".to_string())
})?;
execute_request(params_raw, Method::MoneroRecovery { swap_id }, &context).await
},
)?;
module.register_async_method("withdraw_btc", |params_raw, context| async move {
let params: HashMap<String, String> = params_raw.parse()?;
let amount = if let Some(amount_str) = params.get("amount") {
Some(
::bitcoin::Amount::from_str_in(amount_str, ::bitcoin::Denomination::Bitcoin)
.map_err(|_| {
jsonrpsee_core::Error::Custom("Unable to parse amount".to_string())
})?,
)
} else {
None
};
let withdraw_address =
bitcoin::Address::from_str(params.get("address").ok_or_else(|| {
jsonrpsee_core::Error::Custom("Does not contain address".to_string())
})?)
.map_err(|err| jsonrpsee_core::Error::Custom(err.to_string()))?;
let withdraw_address =
bitcoin_address::validate(withdraw_address, context.config.env_config.bitcoin_network)?;
execute_request(
params_raw,
Method::WithdrawBtc {
amount,
address: withdraw_address,
},
&context,
)
.await
})?;
module.register_async_method("buy_xmr", |params_raw, context| async move {
let params: HashMap<String, String> = params_raw.parse()?;
let bitcoin_change_address = params
.get("bitcoin_change_address")
.map(|addr_str| {
bitcoin::Address::from_str(addr_str)
.map_err(|err| {
jsonrpsee_core::Error::Custom(format!(
"Could not parse bitcoin address: {}",
err
))
})
.and_then(|address| {
bitcoin_address::validate(
address,
context.config.env_config.bitcoin_network,
)
.map_err(|err| jsonrpsee_core::Error::Custom(err.to_string()))
})
})
.transpose()?;
let monero_receive_address =
monero::Address::from_str(params.get("monero_receive_address").ok_or_else(|| {
jsonrpsee_core::Error::Custom("Does not contain monero_receiveaddress".to_string())
})?)
.map_err(|err| jsonrpsee_core::Error::Custom(err.to_string()))?;
let monero_receive_address = monero_address::validate(
monero_receive_address,
context.config.env_config.monero_network,
)?;
let seller =
Multiaddr::from_str(params.get("seller").ok_or_else(|| {
jsonrpsee_core::Error::Custom("Does not contain seller".to_string())
})?)
.map_err(|err| jsonrpsee_core::Error::Custom(err.to_string()))?;
execute_request(
params_raw,
Method::BuyXmr {
bitcoin_change_address,
monero_receive_address,
seller,
swap_id: Uuid::new_v4(),
},
&context,
)
.await
})?;
module.register_async_method("list_sellers", |params_raw, context| async move {
let params: HashMap<String, serde_json::Value> = params_raw.parse()?;
let rendezvous_point = params.get("rendezvous_point").ok_or_else(|| {
jsonrpsee_core::Error::Custom("Does not contain rendezvous_point".to_string())
})?;
let rendezvous_point = rendezvous_point
.as_str()
.and_then(|addr_str| Multiaddr::from_str(addr_str).ok())
.ok_or_else(|| {
jsonrpsee_core::Error::Custom("Could not parse valid multiaddr".to_string())
})?;
execute_request(
params_raw,
Method::ListSellers {
rendezvous_point: rendezvous_point.clone(),
},
&context,
)
.await
})?;
module.register_async_method("get_current_swap", |params, context| async move {
execute_request(params, Method::GetCurrentSwap, &context).await
})?;
Ok(module)
}
fn as_uuid(json_value: &serde_json::Value) -> Option<Uuid> {
if let Some(uuid_str) = json_value.as_str() {
Uuid::parse_str(uuid_str).ok()
} else {
None
}
}
async fn execute_request(
params: Params<'static>,
cmd: Method,
context: &Arc<Context>,
) -> Result<serde_json::Value, jsonrpsee_core::Error> {
// If we fail to parse the params as a String HashMap, it's most likely because its an empty object
// In that case, we want to make sure not to fail the request, so we set the log_reference_id to None
// and swallow the error
let reference_id = params
.parse::<HashMap<String, serde_json::Value>>()
.ok()
.and_then(|params_parsed| params_parsed.get("log_reference_id").cloned());
let request = Request::with_id(cmd, reference_id.map(|log_ref| log_ref.to_string()));
request
.call(Arc::clone(context))
.await
.map_err(|err| jsonrpsee_core::Error::Custom(format!("{:#}", err)))
}

View File

@ -1,9 +1,9 @@
use crate::fs::ensure_directory_exists;
use ::bitcoin::secp256k1::constants::SECRET_KEY_SIZE;
use ::bitcoin::secp256k1::{self, SecretKey};
use anyhow::{Context, Result};
use bdk::bitcoin::util::bip32::ExtendedPrivKey;
use bitcoin::hashes::{sha256, Hash, HashEngine};
use bitcoin::secp256k1::constants::SECRET_KEY_SIZE;
use bitcoin::secp256k1::{self, SecretKey};
use libp2p::identity;
use pem::{encode, Pem};
use rand::prelude::*;
@ -16,7 +16,7 @@ use torut::onion::TorSecretKeyV3;
pub const SEED_LENGTH: usize = 32;
#[derive(Eq, PartialEq)]
#[derive(Clone, Eq, PartialEq)]
pub struct Seed([u8; SEED_LENGTH]);
impl Seed {
@ -61,7 +61,7 @@ impl Seed {
let file_path = Path::new(&file_path_buf);
if file_path.exists() {
return Self::from_file(&file_path);
return Self::from_file(file_path);
}
tracing::debug!("No seed file found, creating at {}", file_path.display());
@ -106,11 +106,12 @@ impl Seed {
}
fn from_pem(pem: pem::Pem) -> Result<Self, Error> {
if pem.contents.len() != SEED_LENGTH {
Err(Error::IncorrectLength(pem.contents.len()))
let contents = pem.contents();
if contents.len() != SEED_LENGTH {
Err(Error::IncorrectLength(contents.len()))
} else {
let mut array = [0; SEED_LENGTH];
for (i, b) in pem.contents.iter().enumerate() {
for (i, b) in contents.iter().enumerate() {
array[i] = *b;
}
@ -122,10 +123,7 @@ impl Seed {
ensure_directory_exists(&seed_file)?;
let data = self.bytes();
let pem = Pem {
tag: String::from("SEED"),
contents: data.to_vec(),
};
let pem = Pem::new("SEED", data);
let pem_string = encode(&pem);
@ -187,6 +185,9 @@ mod tests {
#[test]
fn seed_from_pem_works() {
use base64::engine::general_purpose;
use base64::Engine;
let payload: &str = "syl9wSYaruvgxg9P5Q1qkZaq5YkM6GvXkxe+VYrL/XM=";
// 32 bytes base64 encoded.
@ -195,7 +196,7 @@ syl9wSYaruvgxg9P5Q1qkZaq5YkM6GvXkxe+VYrL/XM=
-----END SEED-----
";
let want = base64::decode(payload).unwrap();
let want = general_purpose::STANDARD.decode(payload).unwrap();
let pem = pem::parse(pem_string).unwrap();
let got = Seed::from_pem(pem).unwrap();
@ -221,19 +222,20 @@ VnZUNFZ4dlY=
}
#[test]
#[should_panic]
fn seed_from_pem_fails_for_long_seed() {
let long = "-----BEGIN SEED-----
mbKANv2qKGmNVg1qtquj6Hx1pFPelpqOfE2JaJJAMEg1FlFhNRNlFlE=
mbKANv2qKGmNVg1qtquj6Hx1pFPelpqOfE2JaJJAMEg1FlFhNRNlFlE=
MIIBPQIBAAJBAOsfi5AGYhdRs/x6q5H7kScxA0Kzzqe6WI6gf6+tc6IvKQJo5rQc
dWWSQ0nRGt2hOPDO+35NKhQEjBQxPh/v7n0CAwEAAQJBAOGaBAyuw0ICyENy5NsO
-----END SEED-----
";
let pem = pem::parse(long).unwrap();
assert_eq!(pem.contents().len(), 96);
match Seed::from_pem(pem) {
Ok(_) => panic!("should fail for long payload"),
Err(e) => {
match e {
Error::IncorrectLength(_) => {} // pass
Error::IncorrectLength(len) => assert_eq!(len, 96), // pass
_ => panic!("should fail with IncorrectLength error"),
}
}

View File

@ -50,7 +50,7 @@ async fn given_alice_and_bob_manually_refund_after_funds_locked_both_refund() {
// Bob manually cancels
bob_join_handle.abort();
let (_, _, state) = cli::cancel(bob_swap.id, bob_swap.bitcoin_wallet, bob_swap.db).await?;
let (_, state) = cli::cancel(bob_swap.id, bob_swap.bitcoin_wallet, bob_swap.db).await?;
assert!(matches!(state, BobState::BtcCancelled { .. }));
let (bob_swap, bob_join_handle) = ctx

View File

@ -42,10 +42,10 @@ async fn given_alice_and_bob_manually_cancel_when_timelock_not_expired_errors()
let error = cli::cancel(bob_swap.id, bob_swap.bitcoin_wallet, bob_swap.db)
.await
.unwrap_err();
assert_eq!(
parse_rpc_error_code(&error).unwrap(),
i64::from(RpcErrorCode::RpcVerifyRejected)
);
assert!(error
.to_string()
.contains("Cannot cancel swap because the cancel timelock has not expired yet"));
ctx.restart_alice().await;
let alice_swap = ctx.alice_next_swap().await;
@ -72,10 +72,9 @@ async fn given_alice_and_bob_manually_cancel_when_timelock_not_expired_errors()
let error = cli::refund(bob_swap.id, bob_swap.bitcoin_wallet, bob_swap.db)
.await
.unwrap_err();
assert_eq!(
parse_rpc_error_code(&error).unwrap(),
i64::from(RpcErrorCode::RpcVerifyError)
);
assert!(error
.to_string()
.contains("Cannot refund swap because the cancel timelock has not expired yet"));
let (bob_swap, _) = ctx
.stop_and_resume_bob_from_db(bob_join_handle, swap_id)

View File

@ -11,7 +11,7 @@ use swap::protocol::{alice, bob};
/// Bob locks Btc and Alice locks Xmr. Bob does not act; he fails to send Alice
/// the encsig and fail to refund or redeem. Alice punishes using the cancel and
/// punish command.
/// punish command. Bob then cooperates with Alice and redeems XMR with her key.
#[tokio::test]
async fn alice_manually_punishes_after_bob_dead() {
harness::setup_test(FastPunishConfig, |mut ctx| async move {
@ -78,9 +78,7 @@ async fn alice_manually_punishes_after_bob_dead() {
assert!(matches!(bob_swap.state, BobState::BtcLocked { .. }));
let bob_state = bob::run(bob_swap).await?;
ctx.assert_bob_punished(bob_state).await;
ctx.assert_bob_redeemed(bob_state).await;
Ok(())
})
.await;

View File

@ -0,0 +1,98 @@
pub mod harness;
use harness::alice_run_until::is_xmr_lock_transaction_sent;
use harness::bob_run_until::is_btc_locked;
use harness::FastPunishConfig;
use swap::asb;
use swap::asb::FixedRate;
use swap::cli;
use swap::protocol::alice::AliceState;
use swap::protocol::bob::BobState;
use swap::protocol::{alice, bob};
/// Bob locks Btc and Alice locks Xmr. Bob does not act; he fails to send Alice
/// the encsig and fail to refund or redeem. Alice punishes using the cancel and
/// punish command. Then Bob tries to refund.
#[tokio::test]
async fn alice_manually_punishes_after_bob_dead_and_bob_cancels() {
harness::setup_test(FastPunishConfig, |mut ctx| async move {
let (bob_swap, bob_join_handle) = ctx.bob_swap().await;
let bob_swap_id = bob_swap.id;
let bob_swap = tokio::spawn(bob::run_until(bob_swap, is_btc_locked));
let alice_swap = ctx.alice_next_swap().await;
let alice_bitcoin_wallet = alice_swap.bitcoin_wallet.clone();
let alice_swap = tokio::spawn(alice::run_until(
alice_swap,
is_xmr_lock_transaction_sent,
FixedRate::default(),
));
let bob_state = bob_swap.await??;
assert!(matches!(bob_state, BobState::BtcLocked { .. }));
let alice_state = alice_swap.await??;
// Ensure cancel timelock is expired
if let AliceState::XmrLockTransactionSent { state3, .. } = alice_state {
alice_bitcoin_wallet
.subscribe_to(state3.tx_lock)
.await
.wait_until_confirmed_with(state3.cancel_timelock)
.await?;
} else {
panic!("Alice in unexpected state {}", alice_state);
}
// manual cancel (required to be able to punish)
ctx.restart_alice().await;
let alice_swap = ctx.alice_next_swap().await;
let (_, alice_state) =
asb::cancel(alice_swap.swap_id, alice_swap.bitcoin_wallet, alice_swap.db).await?;
// Ensure punish timelock is expired
if let AliceState::BtcCancelled { state3, .. } = alice_state {
alice_bitcoin_wallet
.subscribe_to(state3.tx_cancel())
.await
.wait_until_confirmed_with(state3.punish_timelock)
.await?;
} else {
panic!("Alice in unexpected state {}", alice_state);
}
// manual punish
ctx.restart_alice().await;
let alice_swap = ctx.alice_next_swap().await;
let (_, alice_state) =
asb::punish(alice_swap.swap_id, alice_swap.bitcoin_wallet, alice_swap.db).await?;
ctx.assert_alice_punished(alice_state).await;
// Bob is in wrong state.
let (bob_swap, bob_join_handle) = ctx
.stop_and_resume_bob_from_db(bob_join_handle, bob_swap_id)
.await;
assert!(matches!(bob_swap.state, BobState::BtcLocked { .. }));
bob_join_handle.abort();
let (_, state) = cli::cancel(bob_swap_id, bob_swap.bitcoin_wallet, bob_swap.db).await?;
// Bob should be in BtcCancelled state now.
assert!(matches!(state, BobState::BtcCancelled { .. }));
let (bob_swap, _) = ctx
.stop_and_resume_bob_from_db(bob_join_handle, bob_swap_id)
.await;
assert!(matches!(bob_swap.state, BobState::BtcCancelled { .. }));
// Alice punished Bob, so he should be in the BtcPunished state.
let error = cli::refund(bob_swap_id, bob_swap.bitcoin_wallet, bob_swap.db)
.await
.unwrap_err();
assert_eq!(
error.to_string(),
"Cannot refund swap because we have already been punished"
);
Ok(())
})
.await;
}

Some files were not shown because too many files have changed in this diff Show More