Releases: bitcoindevkit/bdk
Release 1.0.0-alpha.4
Summary
This release improves the KeychainTxOutIndex
API and contains a few bug fixes and performance improvements.
Changelog
Fixed
- Avoid using
BTreeMap::append
due to performance issues (refer to rust-lang/rust#34666 (comment)). #1274
Changed
- The old
hardwaresigner
module has been moved out ofbdk
and inside a newbdk_hwi
crate. #1161 - Wallet's peek-address logic is optimized by making use of
<SpkIterator as Iterator>::nth
. #1269 KeychainTxOutIndex
API is refactored to better differentiate between methods that return unbounded vs stored spks. #1269KeychainTxOutIndex
no longer directly exposesSpkTxOutIndex
methods viaDeRef
. This was problematic becauseSpkTxOutIndex
also contains lookahead spks which we want to hide. #1269
Added
- LocalChain::disconnect_from method to evict a chain of blocks starting from a given BlockId. #1276
SpkIterator::descriptor
method which gets a reference to the internal descriptor. #1269
What's Changed
- ref(hwi): Move hwi out of bdk by @danielabrozzoni in #1161
- Bump bdk_esplora and bdk_file_store versions for 1.0.0-alpha.3 release by @notmandatory in #1263
- Refactor
reveal_to_target
andnext_store_index
by @danielabrozzoni in #1261 - fix(example_electrum): init LocalChain from genesis by @ValuedMammal in #1264
- Avoid using
BTreeMap::append
by @evanlinjin in #1274 - Add
LocalChain::disconnect_from
method by @evanlinjin in #1276 - Revamp
KeychainTxOutIndex
API to be safer by @evanlinjin in #1269 - doc, example(bdk): fix derivation path in mnemonic_to_descriptors by @ValuedMammal in #1286
- Bump version to 1.0.0-alpha.4 by @notmandatory in #1282
New Contributors
- @ValuedMammal made their first contribution in #1264
Full Changelog: v1.0.0-alpha.3...v1.0.0-alpha.4
Release 1.0.0-alpha.3
Summary
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.
Changelog
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
What's Changed
- chore: add meta data to bitcoind_rpc crate by @notmandatory in #1174
- chore: fix MSRV for flate2 by @evanlinjin in #1182
- Further improve unconfirmed tx conflict resolution by @LagginTimes in #1109
- fix(electrum): fixed chain sync issue by @LagginTimes in #1145
- fix(bdk): Check if we're using the correct internal key before signing by @danielabrozzoni in #1200
- ci: Pin jobserver after cc by @danielabrozzoni in #1207
- chore: rename
ConfirmationTimeAnchor
toConfirmationTimeHeightAnchor
by @LagginTimes in #1206 - fix(chain): filter coinbase tx not in best chain by @LagginTimes in #1202
- feat: add dependabot by @realeinherjar in #1121
LocalChain
with hardwired genesis block by @evanlinjin in #1178- chore: fix typos by @realeinherjar in #1220
- Add CreateTxError and use as error type for TxBuilder::finish() by @notmandatory in #1028
- chore: remove bdk dependency on log and dev dependency on env_logger by @notmandatory in #1204
- Add
Wallet::list_output
method by @evanlinjin in #1190 - esplora: fix incorrect gap limit check in blocking client by @darosior in #1225
- build(esplora): Add async-https-rustls flag to esplora client by @thunderbiscuit in #1179
- doc(bdk): Clarify the absolute_fee docs by @danielabrozzoni in #1158
- Bump MSRV to 1.63.0 by @notmandatory in #1183
- doc: Improve TxGraph & co docs by @danielabrozzoni in #1188
- ci: pin home dependency to 0.5.5 and check_clippy to rust stable version by @notmandatory in #1247
- Fix: apply loaded changeset to indexed_graph when loading a wallet from persistence by @thunderbiscuit in #1246
- Use a universal lookahead value for
KeychainTxOutIndex
and have a reasonable default by @darosior in #1229 - Refactor/rename electrum_ext and esplora_ext to have sync and full_scan functions by @notmandatory in #1235
- cherry-pick feat(wallet)!: add
NonEmptyDatabase
variant toNewError
by @notmandatory in #1256 - fix(typos): existant -> existent by @storopoli in #1258
- Bump
bip39
dependency to v2.0 by @tnull in #1259 - Bump bdk version to 1.0.0-alpha.3 by @notmandatory in #1255
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
Release 1.0.0-alpha.2
Summary
Notable changes include a new bitcoind RPC based blockchain client module for quick syncing to bitcoind, a new linked-list LocalChain, and an upgrade to rust-bitcoin 0.30.
Changelog
Fixed
- wallet_esplora: missing_heights uses the graph update #1152
- bump electrum version to 0.18 #1132
- Correct the coin type in the derivation path for wallet examples #1089
Added
- Add bitcoind_rpc chain-source module. #1041
- Add example_bitcoind_rpc example module. #1041
- Add AnchorFromBlockPosition trait which are for anchors that can be constructed from a given block, height and position in block. #1041
- Add helper methods to IndexedTxGraph and TxGraph for batch operations and applying blocks directly. #1041
- Add helper methods to CheckPoint for easier construction from a block Header. #1041
- Add cli-example for esplora. #1040
- Introduced tx_template module. #1064
- Introduced TxGraph::TxAncestors iterator. #1064
- Added walk_ancestors to TxGraph. #1064
- Implement Anchor for BlockId. #1069
Changed
- Move WalletUpdate to the wallet module. #1084
- Remove ForEachTxout trait completely. #1084
- Refactor ElectrumExt to not use WalletUpdate. #1084
- Rename indexed_tx_graph::IndexedAdditions to indexed_tx_graph::ChangeSet. #1065
- Rename indexed_tx_graph::IndexedAdditions::graph_additions to indexed_tx_graph::ChangeSet::graph. #1065
- Rename indexed_tx_graph::IndexedAdditions::index_additions to indexed_tx_graph::ChangeSet::indexer. #1065
- Rename tx_graph::Additions to tx_graph::ChangeSet. #1065
- Rename keychain::DerivationAdditions to keychain::ChangeSet. #1065
- Rename CanonicalTx::node to CanonicalTx::tx_node. #1065
- Rename CanonicalTx::observed_as to CanonicalTx::chain_position. #1065
- Rename LocalChangeSet to WalletChangeSet. #1065
- Rename LocalChangeSet::chain_changeset to WalletChangeSet::chain. #1065
- Rename LocalChangeSet::indexed_additions to WalletChangeSet::indexed_tx_graph. #1065
- Rename LocalUpdate to WalletUpdate. #1065
- Make TxGraph::determine_changeset pub(crate). #1065
- Add TxGraph::initial_changeset. #1065
- Add IndexedTxGraph::initial_changeset. #1065
- Remove TxGraph::insert_txout_preview. #1065
- Remove TxGraph::insert_tx_preview. #1065
- Remove insert_anchor_preview. #1065
- Remove insert_seen_at_preview. #1065
- Refactored TxGraph::walk_conflicts to use TxGraph::TxAncestors. #1064
- Update to rust-bitcoin 0.30.0 and miniscript 10.0.0. #1023
- Use apply_update instead of determine_changeset + apply_changeset around the code. #1092
- Rename TxGraph::direct_conflicts_of_tx to TxGraph::direct_conflicts. #1164
- Rename methods of esplora ext. #1070
What's Changed
- remove duplicate
is_empty
by @vladimirfomene in #1031 - Avoid pinning dependencies, use --precise in ci by @danielabrozzoni in #1046
- docs: add required style for commit messages by @notmandatory in #1039
- Implement linked-list
LocalChain
and update chain-src crates/examples by @evanlinjin in #1034 - Update rust bitcoin by @danielabrozzoni in #1023
- fix: msrv issues by @vladimirfomene in #1077
- refactor!(chain): Unify ChangeSet nomenclature by @danielabrozzoni in #1065
- ci: fix msrv dependency versions for reqest and h2 by @notmandatory in #1087
- docs: add License and Contributing sections to repo top-level README by @notmandatory in #1082
- ci: Pin rustls-webpki to 0.100.1 by @danielabrozzoni in #1091
- docs: Update README.md by @danielabrozzoni in #1085
- Use
apply_update
instead ofdetermine_changeset
+apply_changeset
around the code by @LagginTimes in #1092 - fix: Correct the coin type in the derivation path for wallet examples by @casey-bowman in #1089
- Implement Anchor for BlockId by @vladimirfomene in #1069
- Remove TransactionDetails from Wallet API by @notmandatory in #1048
- Add cli esplora example by @evanlinjin in #1040
- fix: spks_of_all_keychains() shouldn't return an infinite iterator for non-wildcard descriptors by @danielabrozzoni in #1093
- Rename methods of esplora ext by @vladimirfomene in #1070
- Enhance bdk chain structures by @vladimirfomene in #1084
- docs: fix spelling errors by @notmandatory in #1086
- Update documentation for fee_rate and fee_absolute methods in tx_builder.rs by @jonmarrs in #969
- fix(esplora): use saturating_add in update_tx_graph() by @notmandatory in #1110
- ci: Pin time, cc in order to keep MSRV by @danielabrozzoni in #1135
- fix: bump electrum version to 0.18 by @sjeohp in #1132
- fix: Add the pinning of time/cc in README by @danielabrozzoni in #1137
- fix: Remove dependency on unnecessary bdk_chain features by @LLFourn in #1146
- Better tests for transaction conflict handling by @LagginTimes in #1064
- refactor: use set_lookahead in set_lookahead_for_all by @vladimirfomene in #1104
- chore: pin
byteorder
andwebpki
to fix MSRV by @evanlinjin in #1157 - fix(wallet_esplora): missing_heights uses the graph update by @danielabrozzoni in #1152
- Add
bitcoind_rpc
chain source module. by @evanlinjin in #1041 - ref(chain): Rename direct_conflicts_of_tx to direct_conflitcs by @danielabrozzoni in #1164
- Bump bdk version to 1.0.0-alpha.2 by @notmandatory in #1169
New Contributors
- @casey-bowman made their first contribution in #1089
- @sjeohp made their first contribution in #1132
Full Changelog: v1.0.0-alpha.1...v1.0.0-alpha.2
Release 0.29.0
Summary
This maintenance release updates our rust-bitcoin
dependency to 0.30.x and fixes a wallet balance bug when a wallet has more than one coinbase transaction.
Changed Log
Changed
- Update rust-bitcoin to 0.30 #1071
Fixed
- Fix a bug when syncing coinbase utxos on electrum #1090
What's Changed
- Update rust bitcoin (BDK 0.28) by @danielabrozzoni in #1071
- fix(electrum): Don't ignore multiple coinbase txs by @danielabrozzoni in #1090
- Bump version to 0.29.0 by @notmandatory in #1150
Full Changelog: v0.28.2...v0.29.0
Release 0.28.2
Summary
Reverts the 0.28.1 esplora-client version update from 0.5.0 back to 0.4.0.
Changelog
Changes
- Reverts the 0.28.1 esplora-client version update from 0.5.0 back to 0.4.0.
What's Changed
- release: bump version to 0.28.2, downgrade esplora-client to 0.4 by @notmandatory in #1074
Full Changelog: v0.28.1...v0.28.2
Release 0.28.1
Summary
This patch release backports (from the BDK 1.0 dev branch) a fix for a bug in the policy condition calculation and adds a new taproot single key descriptor template (BIP-86). The policy condition calculation bug can cause issues when a policy subtree fails due to missing info even if it's not selected when creating a new transaction, errors on unused policy paths are now ignored.
Changelog
Fixed
Added
What's Changed
- Fix release/0.28 branch 1.57 MSRV errors by @notmandatory in #991
- Backporting "Fix policy condition calculation" onto release/0.28 by @junderw in #1008
- Ignore rocksdb audit error RUSTSEC-2022-0046 by @notmandatory in #1007
- Backport new taproot descriptor template (BIP86) by @notmandatory in #1033
- ci: pin dependencies with Cargo update instead of in Cargo.toml by @notmandatory in #1054
- release: bump version to 0.28.1 by @notmandatory in #1057
New Contributors
Full Changelog: v0.28.0...v0.28.1
Release 1.0.0-alpha.1
Summary
The BDK 1.0.0-alpha release should be used for experimentation only, APIs are still unstable and the code is not fully tested. This alpha.1 release introduces the new ChainOracle
struct for more efficient chain syncing. A new std
default feature was added for bdk
, bdk_chain
and bdk_esplora
crates; when disabled these crates can be used in no-std
projects. BDK 1.0.0-alpha.x docs are now published to docs.rs.
Changelog
Fixed
- Fixed a bug in the policy condition calculation. #932
- Pin base64 to 0.21.0 #990
- Fix docsrs publishing for bdk crate. #1011
Changed
- Refactor
bdk_chain
to use newChainOracle
structure. #926 #963 #965 #975 #976 - Better no std support. #894
- Set
default-features = false
forrust-bitcoin
andrust-miniscript
. - Introduce
std
default feature forbdk
,bdk_chain
andbdk_esplora
.
- Set
Added
- Add a simple conversion tool for going to kilo weight units. #953
- Add Custom spk iterator. #927
- Add taproot descriptor template (BIP-86). #840
What's Changed
- Add fixes for publishing to crates.io by @notmandatory in #914
- Fix policy condition calculation by @afilini in #932
- Introduce redesigned
bdk_chain
structures by @evanlinjin in #926 - Add sat_per_kwu to FeeRate by @benthecarman in #953
- Cleanup IndexedTxGraph test. by @rajarshimaitra in #959
- Reenable code coverage upload to Coveralls by @notmandatory in #960
- Custom spk iterator by @LagginTimes in #927
- Various tweaks to redesigned structures by @evanlinjin in #963
- Implement persistence with the new structures by @evanlinjin in #965
- Improve
txout
listing and balance APIs for redesigned structures by @evanlinjin in #975 - Fixed typos in CONTRIBUTING.md by @jonmarrs in #981
- Pin base64 to 0.21.0 to keep the MSRV to 1.57.0 by @danielabrozzoni in #990
- Unpin base64 by @danielabrozzoni in #993
- Documentation regarding absolute_fee and fee_rate updated by @roy9495 in #957
- Rename "keychanins" to keychains by @danielabrozzoni in #1001
- Reimplement
Wallet
,ElectrumExt
andEsplora{Async}Ext
with redesigned structures. by @evanlinjin in #976 - Pin log dependency to 0.4.18 to keep the MSRV to 1.57.0 by @danielabrozzoni in #1009
- create taproot descriptor template by @vladimirfomene in #840
- Better no-std support by @evanlinjin in #894
- Fix cargo features by @evanlinjin in #1017
- [ci] fix docsrs error for bdk crate by @notmandatory in #1011
- Bump version to 1.0.0-alpha.1 by @notmandatory in #1026
New Contributors
- @LagginTimes made their first contribution in #927
- @jonmarrs made their first contribution in #981
- @roy9495 made their first contribution in #957
Full Changelog: v1.0.0-alpha.0...v1.0.0-alpha.1
Release 0.28.0
Summary
This is a maintenance release and includes changes from yanked version 0.27.2 including to disable default-features for rust-bitcoin and rust-miniscript dependencies, and for rust-esplora-client optional dependency. New default std feature must now be enabled unless building for wasm.
Changelog
- Bump bip39 crate to v2.0.0 #875
- Set default-features = false for rust-bitcoin and rust-miniscript #882
- Update esplora client dependency to version 0.4 #884
- Added new std feature as part of default features #930
What's Changed
- Set dev-dependency base64ct version to <1.6.0 by @notmandatory in #877
- Set
default-features = false
for rust-bitcoin and rust-miniscript by @benthecarman in #882 - Update esplora client dependency to version 0.4 by @notmandatory in #884
- Bump version to 0.27.2 by @notmandatory in #892
- Bump bip39 crate to v2.0.0 by @tnull in #875
- Add default
std
feature, prep for 0.28.0 release by @notmandatory in #930
Full Changelog: v0.27.1...v0.28.0
Release 1.0.0-alpha.0
Summary
The first "alpha" release of the new BDK 1.0 refactoring work. This is still a WIP and only meant to be used for testing and experimentation with downstream projects.
Also bumping below workspace crate versions:
bdk_chain to 0.4.0
bdk_electrum to 0.2.0
bdk_esplora to 0.2.0
bdk_file_store to 0.1.0
Changelog
Not updating the CHANGELOG file for alpha releases, just putting here for the record.
Release 0.27.2
RELEASE YANKED FROM CRATES.IO
See: #897
Summary
Disable default-features for rust-bitcoin and rust-miniscript dependencies, and for rust-esplora-client optional dependency.
Changelog
Changed
- Set default-features = false for rust-bitcoin and rust-miniscript #882
- Update esplora client dependency to version 0.4 #884
What's Changed
- Set dev-dependency base64ct version to <1.6.0 by @notmandatory in #877
- Set
default-features = false
for rust-bitcoin and rust-miniscript by @benthecarman in #882 - Update esplora client dependency to version 0.4 by @notmandatory in #884
- Bump version to 0.27.2 by @notmandatory in #892
Full Changelog: v0.27.1...v0.27.2