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 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
Fixed
- 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
Changed
- 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
Added
- 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
- @realeinherjar made their first contribution in #1121
- @darosior made their first contribution in #1225
- @storopoli made their first contribution in #1258
Full Changelog: v1.0.0-alpha.2...v1.0.0-alpha.3