From: Steve Myers Date: Sun, 23 Jun 2024 02:21:58 +0000 (-0500) Subject: Merge bitcoindevkit/bdk#1395: Remove `rand` dependency from `bdk` X-Git-Tag: v1.0.0-beta.1~14 X-Git-Url: http://internal-gitweb-vhost/script/%22https:/database/scripts/tx_builder/struct.CreateTx.html?a=commitdiff_plain;h=6dab68d35b60713448c17a9784adaf660057c53f;p=bdk Merge bitcoindevkit/bdk#1395: Remove `rand` dependency from `bdk` 4bddb0de6262fb4014d51baf8c9453eb45a3d0ef feat(wallet): add back TxBuilder finish() and sort_tx() with thread_rng() (Steve Myers) 45c0cae0a461232bf746375083e2005c5df5f913 fix(bdk): remove rand dependency (rustaceanrob) Pull request description: ### Description WIP towards removing `rand` fixes #871 The `rand` dependency was imported explicitly, but `rand` is also implicitly used through the `rand-std` feature flag on `bitcoin`. ### Notes to he reviewers **Updated:** `rand` was used primarily in two parts of `bdk`. Particularly in signing and in building a transaction. Signing: - Used implicitly in [`sign_schnorr`](https://docs.rs/bitcoin/latest/bitcoin/key/struct.Secp256k1.html#method.sign_schnorr), but nowhere else within `signer`. Transaction ordering: - Used to shuffle the inputs and outputs of a transaction, the default - Used in the single random draw __as a fallback__ to branch and bound during coin selection. Branch and bound is the default coin selection option. See conversation for proposed solutions. ### Changelog notice - Remove the `rand` dependency from `bdk` ### 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 #### New Features: * [x] I've added tests for the new feature * [x] I've added docs for the new feature #### Bugfixes: * [x] This pull request breaks the existing API * [x] I've added tests to reproduce the issue which are now passing * [x] I'm linking the issue being fixed by this PR ACKs for top commit: ValuedMammal: ACK 4bddb0de6262fb4014d51baf8c9453eb45a3d0ef notmandatory: ACK 4bddb0de6262fb4014d51baf8c9453eb45a3d0ef Tree-SHA512: 662d9bcb1e02f8195d73df16789b8c2aba8ccd7b37ba713ebb0bfd19c66163acbcb6f266b64f88347cbb1f96b88c8a150581012cbf818d1dc8b4437b3e53fc62 --- 6dab68d35b60713448c17a9784adaf660057c53f diff --cc crates/wallet/src/wallet/mod.rs index 2588e7d5,3a8361ca..400ecde1 --- a/crates/wallet/src/wallet/mod.rs +++ b/crates/wallet/src/wallet/mod.rs @@@ -40,8 -40,9 +40,10 @@@ use bitcoin:: use bitcoin::{consensus::encode::serialize, transaction, BlockHash, Psbt}; use bitcoin::{constants::genesis_block, Amount}; use core::fmt; +use core::mem; use core::ops::Deref; + use rand_core::RngCore; + use descriptor::error::Error as DescriptorError; use miniscript::psbt::{PsbtExt, PsbtInputExt, PsbtInputSatisfier};