Skip to content

Releases: bitcoindevkit/bdk

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

Release 1.0.0-alpha.9

15 Apr 20:48
v1.0.0-alpha.9
ee21ffe
Compare
Choose a tag to compare
Release 1.0.0-alpha.9 Pre-release
Pre-release

Summary

This regular bi-weekly alpha release updates dependencies rust-bitcoin to v0.31.0 and rust-miniscript to v11.0.0 plus replaces the deprecated rust-miniscript function max_satisfaction_weight with max_weight_to_satisfy. It also adds chain module improvements needed to simplify syncing with electrum and esplora blockchain clients.

Changelog

Fixed

  • Replace the deprecated max_satisfaction_weight from rust-miniscript to max_weight_to_satisfy. #1345

Changed

  • Update dependencies: rust-bitcoin to v0.31.0 and rust-miniscript to v11.0.0. #1177
  • Changed TxGraph to store transactions as Arc. This allows chain-sources to cheaply keep a copy of already-fetched transactions. #1373
  • Add get and range methods to CheckPoint #1369
    • Added get and range methods to CheckPoint (and in turn, LocalChain). This simulates an API where we have implemented a skip list of checkpoints (to implement in the future). This is a better API because we can query for any height or height range with just a checkpoint tip instead of relying on a separate checkpoint index (which needs to live in LocalChain).
    • Changed LocalChain to have a faster Eq implementation. We now maintain an xor value of all checkpoint block hashes. We compare this xor value to determine whether two chains are equal.
    • Added PartialEq implementation for CheckPoint and local_chain::Update.
  • Methods into_tx_graph and into_confirmation_time_tx_graph for RelevantTxids are changed to no longer accept a seen_at parameter. #1385
    • Added method update_last_seen_unconfirmed for TxGraph.
  • Added proptest for CheckPoint::range. #1397

What's Changed

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