Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge #1763: Change coin_selection and DescriptorExt::dust_value to u…
…se Amount type 2a9eeed ci: pin msrv dep version for rustls (Steve Myers) 20789ec refactor(chain)!: use Amount for DescriptorExt::dust_value() (Steve Myers) 58a8435 refactor(coin_selection)!: use Amount and SignedAmount for API and internally (Steve Myers) Pull request description: ### Description refactor(coin_selection)!: use Amount and SignedAmount for API and internally refactor(chain)!: use Amount for DescriptorExt::dust_value() Using named types make the API and internal code easier to read and reason about since it makes it clear that the values are bitcoin amounts. Also to create these types the units (ie .from_sat()) must be specified. ### Notes to the reviewers For coin_selection using Amount and SignedAmount makes internal code safer against overflow errors. In particular because these types will panic if an amount overflow occurs. Using u64/i64 on the other hand can silently rollover. See: https://doc.rust-lang.org/book/ch03-02-data-types.html#integer-overflow This is a continuation of the work done in #1595. Since this is an API breaking change I would like to include it in the 1.0.0-beta milestone if possible. ### Changelog notice - Change coin_selection to use Amount instead of u64 for all bitcoin amounts. - Change DescriptorExt::dust_value() to return an Amount instead of u64. ### Checklists #### All Submissions: * [x] I've signed all my commits * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md) * [x] I ran `cargo fmt` and `cargo clippy` before committing #### Bugfixes: * [x] This pull request breaks the existing API * [ ] I've added tests to reproduce the issue which are now passing * [ ] I'm linking the issue being fixed by this PR ACKs for top commit: ValuedMammal: ACK 2a9eeed Tree-SHA512: 9dd1b31d0f8d3d8c383c7aae7ec0fffb55bfcfe49c804e273faa740d30efde7efb7c9504e87cceb56798ea14a3e34fc8a7b65a8ad5e52ea38b8523150c9b6bc2