BDK v1.0.0-alpha3: LocalChain Hard-wired Genesis Block & More

The BDK libraries aims to provide well engineered and reviewed components for Bitcoin based applications. The Bitcoin Dev Kit developers are in the process of releasing a v1.0 which is a fundamental re-write of how the library works.

BDK v1.0.0-alpha3: LocalChain Hard-wired Genesis Block & More
  • "BDK 1.0.0-alpha3 is out!"
  • "This release changes LocalChain to have a hard-wired genesis block, adds context specific Wallet TxBuilder errors, and bumps the projects MSRV to 1.63."
  • "It also includes other API and docs improvements and bug fixes, see the changelog for all the details."

What's new


  • Further improve unconfirmed tx conflict resolution. #1109
  • Stuck Electrum chain sync issue. #1145
  • Bug related to taproot signing with internal keys. We would previously sign with the first private key we had, without checking if it was the correct internal key or not. #1200
  • Coinbase transactions cannot exist in the mempool and be unconfirmed. TxGraph::try_get_chain_position should always return None for coinbase transactions not anchored in best chain. #1202
  • Esplora incorrect gap limit check in blocking client. #1225
  • Loading a wallet from persistence now restores keychain indices. #1246


  • Rename ConfirmationTimeAnchor to ConfirmationTimeHeightAnchor. #1206
  • New LocalChain now have a hardwired genesis block: #1178
    • Changed ChainOracle::get_chain_tip method to return a BlockId instead of an Option of a BlockId.
    • Refactored LocalChain so that the genesis BlockId is hardwired. This way, the ChainOracle::get_chain_tip implementation can always return a tip.
    • Add is_empty method to PersistBackend. This returns true when there is no data in the persistence.
    • Changed Wallet::new to initialize a fresh wallet only.
    • Added Wallet::load to restore an instance of a wallet.
    • Replaced Store::new with separate methods to create/open the database file.
  • Updated the bdk module to use new context specific error types: #1028
    • wallet: MiniscriptPsbtError, CreateTxError, BuildFeeBumpError error enums.
    • coin_selection: module Error enum.
  • Renamed fallible Wallet address functions to try_get_address() and try_get_internal_address(). #1028
  • Rename LocalUtxo to LocalOutput. #1190
  • MSRV is now 1.63.0 for bdk, chain, and bitcoind_rpc crates. #1183
  • Use a universal lookahead value for KeychainTxOutIndex and have a reasonable default. #1229
  • Return NonEmptyDatabase error when constructing a wallet with Wallet::new if the file already contains data (in which case, the caller should use load or new_or_load). #1256
  • In electrum_ext rename functions scan_without_keychain to sync and scan to full_scan. #1235
  • In esplora_ext rename functions scan_txs to sync and scan_txs_with_keychains to full_scan. #1235
  • Increase rust-bip39 dependency version to 2.0 #1259


  • Removed catch-all top level bdk::Error enum. #1028
  • Removed impl_error macro. #1028


  • Add infallible Wallet get_address and get_internal_address functions. #1028
  • Add Wallet::list_output method. #1190
  • New async-https-rustls feature flag for the bdk_esplora crate, allowing to compile rust-esplora-client using rustls-tls instead of the default native-tls. #1179

New Contributors

Full Changelogv1.0.0-alpha.2...v1.0.0-alpha.3

Announcement / Archive
GitHub Repo