Skip to content

Releases: bitcoindevkit/bdk

Release 0.30.0

23 Nov 01:56
v0.30.0
8081006
Compare
Choose a tag to compare
Release 0.30.0 Pre-release
Pre-release

Summary

This release bumps the MSRV to 1.63.0 and updates the rusqlite dependency version to 0.31 to be aligned with the upcoming 1.0.0 release. These changes will prepare projects for migrating wallet data to the 1.0.0 version of BDK, see #1648.

What's Changed

Full Changelog: v0.29.0...v0.30.0

Release 1.0.0-beta.5

02 Oct 16:44
v1.0.0-beta.5
ec7342d
Compare
Choose a tag to compare
Release 1.0.0-beta.5 Pre-release
Pre-release

Summary

This release changes bdk_wallet transaction creation to enable RBF by default, it also updates the bdk_esplora client to retry server requests that fail due to rate limiting. The bdk_electrum crate now also offers a use-openssl feature.

What's Changed

New Contributors

Full Changelog: v1.0.0-beta.4...v1.0.0-beta.5

Release 1.0.0-beta.4

13 Sep 21:17
v1.0.0-beta.4
88423f3
Compare
Choose a tag to compare
Release 1.0.0-beta.4 Pre-release
Pre-release

Summary

BDK Wallet 1.0.0-beta.4 replaces 1.0.0-beta.3 and fixes a versioning mistake with two of our dependency crates. The bdk-wallet 1.0.0-beta.3 version and related dependency patch releases have been yanked from crates.io.

Changelog

See https://github.com/bitcoindevkit/bdk/releases/tag/v1.0.0-beta.3

What's Changed

Full Changelog: v1.0.0-beta.3...v1.0.0-beta.4

Release 1.0.0-beta.3

13 Sep 16:14
v1.0.0-beta.3
98e1c9d
Compare
Choose a tag to compare
Release 1.0.0-beta.3 Pre-release
Pre-release

Version Yanked and Replaced by 1.0.0-beta.4

Summary

BDK Wallet 1.0.0-beta.3 is out! 🚀 Fixed transaction creation to not skip unused addresses, added function for sorting wallet transactions and option to change default BNB fallback coin selection. We moved the bdk_hwi crate functionality to the rust-hwi repo.

NOTE: The bdk_wallet BETA releases are meant for early user testing to find bugs, get feedback on APIs and identify any missing functionality. A final bdk_wallet 1.0.0 release will be available once known bugs are fixed, and tutorial docs and language bindings projects are updated.

What's Changed

Full Changelog: v1.0.0-beta.2...v1.0.0-beta.3

Release 1.0.0-beta.2

25 Aug 18:22
v1.0.0-beta.2
775e4ae
Compare
Choose a tag to compare
Release 1.0.0-beta.2 Pre-release
Pre-release

Summmary

The primary user facing changes are re-enabling single descriptor wallets and renaming LoadParams methods to be more explict. Wallet persistence was also simplified and blockchain clients no longer depend on bdk_chain.

What's Changed

New Contributors

Full Changelog: v1.0.0-beta.1...v1.0.0-beta.2

Release 1.0.0-beta.1

22 Jul 15:29
v1.0.0-beta.1
17a9850
Compare
Choose a tag to compare
Release 1.0.0-beta.1 Pre-release
Pre-release

Summary

This release includes the first beta version of bdk_wallet with a stable 1.0.0 API. The changes in this version include reworked wallet persistence, changeset, and construction, optional user provided RNG, custom tx sorting, and use of merkle proofs in bdk_electrum.

What's Changed

  • fix(wallet)!: Simplify SignOptions and improve finalization logic by @ValuedMammal in #1476
  • feat(wallet): Allow user provided RNG, make rand an optional dependency by @rustaceanrob in #1395
  • refactor(wallet): Use Psbt::sighash_ecdsa for computing sighashes by @ValuedMammal in #1424
  • refactor(wallet)!: Use Weight type instead of usize by @oleonardolima in #1468
  • refactor(wallet): Remove usage of blockdata:: from bitcoin paths by @tcharding in #1490
  • refactor(chain): calculate DescriptorId as the sha256 hash of spk at index 0 by @notmandatory in #1486
  • refactor(chain)!: Change tx_last_seen to Option<u64> by @ValuedMammal in #1416
  • refactor(wallet)!: Add support for custom sorting and deprecate BIP69 by @nymius in #1487
  • refactor(chain)!: Create module indexer by @ValuedMammal in #1493
  • chore(chain)!: Rename Append to Merge by @LagginTimes in #1502
  • refactor(wallet)!: Simplify public_descriptor(), remove redundant function by @gnapoli23 in #1503
  • ci: pin cc dependency version to build with rust 1.63 by @LagginTimes in #1505
  • feat(electrum)!: Update bdk_electrum to use merkle proofs by @LagginTimes in #1489
  • refactor(wallet)!: rework persistence, changeset, and construction by @evanlinjin in #1514
  • refactor(chain)!: Update KeychainTxOutIndex methods to use owned K and ScriptBuf by @rustaceanrob in #1506
  • Bump bdk version to 1.0.0-beta.1 by @notmandatory in #1522

New Contributors

Full Changelog: v1.0.0-alpha.13...v1.0.0-beta.1

Release 1.0.0-alpha.13

15 Jun 03:05
v1.0.0-alpha.13
0543801
Compare
Choose a tag to compare
Pre-release

Summary

This release includes major changes required to finalize the bdk_wallet 1.0.0 APIs, including: upgrading to rust-bitcoin 0.32 and rust-miniscript 0.12.0, constructing a Wallet now requires two descriptors (external and internal), the db field was removed from Wallet, staged changes can be persisted via a blocking or async data store.

Changelog

Fixed

  • Fix KeychainTxOutIndex range-based methods. #1463

Changed

  • Upgrade rust bitcoin to 0.32.0, miniscript to 0.12.0. #1448
    • Use compute_txid() instead of deprecated txid().
    • Use minimal_non_dust() instead of dust_value().
    • Use signature and sighash_type fields, instead of previous sig and hash_type.
    • Use sighash::P2wpkhError, and sighash::TaprootError instead of older sighash::Error.
    • Converts from Network to NetworkKind, where expected.
    • Converts from Weight type to current used usize.
    • Use .into() to convert from AbsLockTime and RelLockTime to absolute::LockTime and relative::LockTime.
    • Remove use of deprecated ThirtyTwoByteHash trait, use Message::from_digest().
    • Update the miniscript policy and dsl macros to proper expect and handle new Threshold type, instead of the previous two parameters.
  • Add further bitcoin::Amount usage on public APIs. #1426
    • Updated CreateTxError::FeeTooLow to use bitcoin::Amount.
    • Updated Wallet::calculate_fee(). to use bitcoin::Amount
    • Updated TxBuilder::fee_absolute(). to use bitcoin::Amount.
    • Updated CalculateFeeError::NegativeFee to use bitcoin::SignedAmount.
    • Updated TxGraph::calculate_fee(). to use bitcoin::Amount.
    • Updated PsbUtils::fee_amount() to use bitcoin::Amount.
  • Wallet::get_balance() renamed to Wallet::balance(). #1455
  • Constructing a Wallet now requires two distinct descriptors. #1390
  • Removed duplicated InsufficientFunds error member. #1441
  • Refactor wallet and persist mods, remove bdk_persist crate. #1454 and #1473
    • Removed db from Wallet, users are now responsible for persisting changes, see docs and examples.
    • Removed the bdk_persist crate.
    • Remove persist submodule from bdk_chain.
    • Change Wallet to outsource it's persistence logic by introducing Wallet::take_staged.
    • Add take convenience method to Append trait.

What's Changed

New Contributors

Full Changelog: v1.0.0-alpha.12...v1.0.0-alpha.13

Release 1.0.0-alpha.12

23 May 23:00
v1.0.0-alpha.12
4a8452f
Compare
Choose a tag to compare
Pre-release

Summary

This bi-weekly release fixes an electrum syncing bug when calculating fees and adds the bdk_sqlite crate for storing wallet data in a SQLite tables. The Wallet::allow_shrinking function was also remove because it was too easy to misuse. Also the bdk crate was renamed to bdk_wallet. See the changelog for all the details.

Changelog

Fixed

  • Fixed calculate_fee result when syncing with electrum. #1443

Changed

  • Removed TxBuilder::allow_shrinking() function. #1386
  • Renamed bdk crate to bdk_wallet. #1326
  • Update Wallet to use CombinedChangeSet for persistence. #1128

Added

  • Add CombinedChangeSet in bdk_persist crate. #1128
  • Add bdk_sqlite crate implementing SQLite based wallet data storage. #1128
  • Update bdk_wallet export feature to support taproot descriptors. #1393

What's Changed

Full Changelog: v1.0.0-alpha.11...v1.0.0-alpha.12

Release 1.0.0-alpha.11

10 May 22:31
v1.0.0-alpha.11
7876c8f
Compare
Choose a tag to compare
Pre-release

Summary

This incremental bi-weekly release includes three big improvements. New electrum full_scan and sync APIs were added for more efficiently querying blockchain data. And the keychain::Changeset now includes public key descriptors and keychain::Balance uses bitcoin::Amount instead of u32 sats amounts. See the changelog for all the details.

Changelog

Changed

  • Include the descriptor in keychain::Changeset #1203
  • Update bdk_electrum crate to use sync/full-scan structs #1403
  • Update keychain::Balance to use bitcoin::Amount #1411
  • Change bdk_testenv to re-export internally used crates. #1414
  • Updated documentation for full_scan and sync in bdk_esplora. #1427

What's Changed

New Contributors

Full Changelog: v1.0.0-alpha.10...v1.0.0-alpha.11

Release 1.0.0-alpha.10

02 May 19:11
v1.0.0-alpha.10
fbe1782
Compare
Choose a tag to compare
Pre-release

Summary

This incremental bi-weekly release improves the address API, simplifies the Esplora API, and introduced new structures for spk-based scanning that will enable easier syncing with electrum/esplora. It also introduces a new bdk-persist crate, removes the generic T from the Wallet, and makes KeychainTxOutIndex more range based.

Changelog

Fixed

  • Enable blocking-https-rustls feature on esplora client #1408

Changed

  • KeychainTxOutIndex methods modified to take ranges of keychains instead. #1324
  • Remove the generic from wallet #1387
    • Changed PersistenceBackend errors to depend on the anyhow crate
    • Remove the generic T from Wallet
  • Improve address API #1402
    • Added Wallet methods:
      • peek_address
      • reveal_next_address
      • next_unused_address
      • reveal_addresses_to
      • list_unused_addresses
      • mark_used
      • unmark_used
    • Removed Wallet methods:
      • get_address
      • get_internal_address
      • try_get_address
      • try_get_internal_address
  • Simplified EsploraExt API #1380
    • Changed EsploraExt API so that sync only requires one round of fetching data. The local_chain_update method is removed and the local_tip parameter is added to the full_scan and sync methods.
    • Removed TxGraph::missing_heights and tx_graph::ChangeSet::missing_heights_from methods.
    • Introduced CheckPoint::insert which allows convenient checkpoint-insertion. This is intended for use by chain-sources when crafting an update.
    • Refactored merge_chains to also return the resultant CheckPoint tip.
    • Optimized the update LocalChain logic - use the update CheckPoint as the new CheckPoint tip when possible.
  • Introduce bdk-persist crate #1412
  • Introduce universal sync/full-scan structures for spk-based syncing #1413
    • Add universal structures for initiating/receiving sync/full-scan requests/results for spk-based syncing.
    • Updated bdk_esplora chain-source to make use of new universal sync/full-scan structures.

What's Changed

New Contributors

Full Changelog: v1.0.0-alpha.9...v1.0.0-alpha.10