]> Untitled Git - bdk/commitdiff
Merge bitcoindevkit/bdk#1395: Remove `rand` dependency from `bdk`
authorSteve Myers <steve@notmandatory.org>
Sun, 23 Jun 2024 02:21:58 +0000 (21:21 -0500)
committerSteve Myers <steve@notmandatory.org>
Sun, 23 Jun 2024 02:28:37 +0000 (21:28 -0500)
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

1  2 
crates/wallet/src/wallet/mod.rs
crates/wallet/src/wallet/signer.rs
crates/wallet/tests/wallet.rs

index 2588e7d507dee81327824f683deb43462d0a5625,3a8361ca58553012ca7ac9d459ac1e4817d22414..400ecde1d00733a0633309ec516e142cddb5f4c7
@@@ -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};
  
Simple merge
Simple merge