Releases: bitcoindevkit/bdk
Release 0.25.0
Summary
This release fixes slow sync time and big script_pubkeys table with SQLite, the wallet rescan height for the FullyNodedExport and setting the network for keys in the KeyMap when using descriptor templates. Also added are new blockchain and mnemonic examples.
Changelog
Fixed
- Slow sync time and big script_pubkeys table with SQLite.
- Wallet rescan height for the FullyNodedExport.
- Setting the network for keys in the KeyMap when using descriptor templates.
Added
- Examples for connecting to Esplora, Electrum Server, Neutrino and Bitcoin Core.
- Example for using a mnemonic in a descriptors.
What's Changed
- Fix wallet export rescan height by @LLFourn in #785
- Add code example for each supported backend by @w0xlt in #526
- fix: ensure the key network is updated in the KeyMap as well by @afilini in #800
- Add mnemonic_to_descriptors example by @vladimirfomene in #746
- Bump version to 0.25.0 by @notmandatory in #803
- Ensure there are no duplicated script_pubkeys in sqlite by @afilini in #806
Full Changelog: v0.24.0...v0.25.0
Release 0.24.0
Summary
This release contains important dependency updates for rust-bitcoin
to 0.29
and rust-miniscript
to 8.0
, plus related crates that also depend on the latest version of rust-bitcoin
. The release also includes a breaking change to the BDK signer which now produces low-R signatures by default, saving one byte. A bug was found in the get_checksum
and get_checksum_bytes
functions, which are now deprecated in favor of fixed versions called calc_checksum
and calc_checksum_bytes
. And finally a new hardware-signer
features was added that re-exports the hwi
crate, along with a new hardware_signers.rs
example file.
Changelog
Changed
- Updated dependency versions for
rust-bitcoin
to0.29
andrust-miniscript
to8.0
, plus all related crates. @afilini #770 - BDK Signer now produces low-R signatures by default, saving one byte. If you want to preserve the original behavior, set allow_grinding in the SignOptions to false. @vladimirfomene #779
- Deprecated
get_checksum
andget_checksum_bytes
due to bug where they calculates the checksum of a descriptor that already has a checksum. Usecalc_checksum
andcalc_checksum_bytes
instead. @evanlinjin #765 - Remove deprecated "address validators". @afilini #770
Added
- New
calc_checksum
andcalc_checksum_bytes
, replace deprecatedget_checksum
andget_checksum_bytes
. @evanlinjin #765 - Re-export the hwi crate when the feature hardware-signer is on. @danielabrozzoni #758
- New examples/hardware_signer.rs. @danielabrozzoni #758
- Make psbt module public to expose PsbtUtils trait to downstream projects. @notmandatory #782
What's Changed
- Bump version to 0.23.0 by @afilini in #768
- Add enhancement request github issue template by @notmandatory in #772
- Update psbt_signer example to use descriptor! macro by @notmandatory in #780
- Add signature grinding for ECDSA signatures by @vladimirfomene in #779
- Make psbt mod public and add required docs by @notmandatory in #782
- Add HWI example in docs by @danielabrozzoni in #758
- Upgrade to rust-bitcoin 0.29 by @afilini in #770
- Fix how descriptor checksums are calculated by @evanlinjin in #765
- Bump version to 0.24.0 by @notmandatory in #788
Full Changelog: v0.23.0...v0.24.0
v0.23.0
What's Changed
- Update electrum-client to 0.11.0 by @afilini in #737
- Change configs for source-base code coverage by @wszdexdrf in #708
- Run code coverage on every PR by @danielabrozzoni in #747
- Add psbt_signer.rs example by @notmandatory in #744
- Add fee_amount() and fee_rate() functions to PsbtUtils trait by @notmandatory in #728
- Improve docs regarding PSBT finalization by @tnull in #753
- Add tests to improve coverage by @vladimirfomene in #745
- Enable signing taproot transactions with only
non_witness_utxos
by @afilini in #757 - Add datatype for is_spent sqlite column by @vladimirfomene in #713
- Update compiler example to a Policy example by @rajarshimaitra in #730
- Remove redundant duplicated keys check by @afilini in #761
- Fix the release process by @afilini in #754
- Remove genesis_block lazy initialization by @shobitb in #756
- Add vscode filter to gitignore by @evanlinjin in #762
- Fix
Wallet::descriptor_checksum
to actually return the checksum by @evanlinjin in #763 - Use the esplora client crate by @afilini in #764
New Contributors
Full Changelog: v0.22.0...v0.23.0
v0.22.0
Summary
This release brings support for hardware signers on desktop through the HWI library.
It also includes fixes and improvements which are part of our ongoing effort of integrating BDK and LDK together.
Changelog
Added
- Functions to create FeeRate from sats/kvbytes and sats/kwu. #678
- Custom hardware wallet signer HwiSigner in wallet::hardwaresigner module. #682
- Function allow_dust on TxBuilder. #689
- Implementation of Deref<Target=UrlClient> for EsploraBlockchain. #722
- Implementation of Deref<Target=Client> for ElectrumBlockchain #705
- Implementation of Deref<Target=Client> for RpcBlockchain. #731
Changed
- FeeRate function name as_sat_vb to as_sat_per_vb. #678
- Verify signatures after signing. #718
- Dependency electrum-client to 0.11.0. #737
All Changes
- Fix
rpc::CoreTxIter
logic. by @evanlinjin in #704 - Fix minor typos in docs by @thunderbiscuit in #703
- Release/0.21.0 by @afilini in #711
- Fix P2WPKH_SATISFACTION_SIZE in CS tests by @danielabrozzoni in #723
- Implement Deref<Target=Client> for RpcBlockchain by @rajarshimaitra in #731
- Implement
Deref<Target=Client>
forElectrumBlockchain
by @afilini in #705 - Implement Deref<Target=UrlClient> for EsploraBlockchain by @vladimirfomene in #722
- Verify signatures after signing by @quad in #718
- Implement conversion for Lightning fee rate by @vladimirfomene in #678
- [bug-fix] Set the db sync height by @rajarshimaitra in #726
- Add a custom signer for hardware wallets by @wszdexdrf in #682
- Add allow_dust method to TxBuilder by @terror in #689
- Update DEVELOPMENT_CYCLE.md to work with [patch.crates-io] by @notmandatory in #544
- Fix docs.rs features by @afilini in #738
- Bump master version to 0.22.0 by @afilini in #743
New Contributors
Full Changelog: v0.21.0...v0.22.0
Release 0.21.0
Highlights of this released are the new Wallet::get_balance()
which returns a detailed breakdown of how much funds are trusted, untrusted or immature and a completely rewritten RpcBlockchain
which removes some of the limitations of the previous implementation. This release also contains many bug fixes and general improvements related to the coin selection and more broadly the transaction creation logic. A big thanks to our past and latest new contributors. See below for all the details.
What's Changed
- Release 0.20.0 by @notmandatory in #657
- Introduce
get_checksum_bytes
method and improvements by @evanlinjin in #671 - Fix: Run README.md examples on the CI by @meryacine in #659
- Test: No address reuse for single descriptor by @evanlinjin in #661
- Fix wallet sync not finding coins of addresses which are not cached by @evanlinjin in #672
- Move change logic to coin_select by @csralvall in #630
- Use T: AsRef as param to SqliteDatabase::new by @vladimirfomene in #675
- Add assertions in the FeeRate constructor by @afilini in #694
- Allow signing only specific leaf hashes by @danielabrozzoni in #645
- Various fixes to the
fee_amount
calculation increate_tx
by @danielabrozzoni in #666 - Add
electrsd/bitcoind_22_0
toexample\rpcwallet
target by @w0xlt in #681 - Consolidate
fee_amount
andamount_needed
by @csralvall in #662 - doc: Document that list_transactions() might return unsorted txs by @w0xlt in #686
- Fix the early InsufficientFunds error in the branch and bound by @afilini in #693
- Fix wallet sync for
RpcBlockchain
by @evanlinjin in #683 - Get balance in categories by @wszdexdrf in #640
New Contributors
- @meryacine made their first contribution in #659
- @csralvall made their first contribution in #630
- @w0xlt made their first contribution in #681
- @wszdexdrf made their first contribution in #640
Full Changelog: v0.20.0...v0.21.0
Release 0.20.0
Highlights for this release include bug fixes for the ElectrumBlockchain
and descriptor templates, new transactions building feature to discourage fee sniping, and new transaction signing options. Also with this release MSRV is now 1.56.1 and AddressValidator
is deprecated. A big thanks to our past and latest new contributors. See below for all the details.
What's Changed
- Bump versions by @bonomat in #623
- Release version to 0.19.0 by @notmandatory in #629
- fix typo by @bucko13 in #622
- Fix CI, bump MSRV to 1.56.1 by @danielabrozzoni in #638
- Fix README.md link to rust 1.56.1 blog post by @notmandatory in #643
- Additional comments for
TransactionDetails
. by @evanlinjin in #633 - Discourage fee sniping with nLockTime by @danielabrozzoni in #611
- Restrict
drain_to
usage by @danielabrozzoni in #625 - Remove database flush by @bruteforcecat in #575
- Fix: Hang when
ElectrumBlockchainConfig::stop_gap == 0
by @evanlinjin in #652 - Avoid using immature coinbase inputs by @danielabrozzoni in #614
- set coin type based on network by @jbesraa in #585
- test: BDK won't add unconf inputs when fee bumping by @danielabrozzoni in #648
- Get block hash by its height by @vladimirfomene in #634
- Add remove_partial_sigs and try_finalize to SignOptions by @bruteforcecat in #621
- Deprecate
AddressValidator
by @evanlinjin in #664 - Fix: Wallet sync may decrement address index by @evanlinjin in #653
- Rename
set_current_height
tocurrent_height
by @afilini in #667
New Contributors
- @bucko13 made their first contribution in #622
- @jbesraa made their first contribution in #585
- @vladimirfomene made their first contribution in #634
Full Changelog: v0.19.0...v0.20.0
Release 0.19.0
This release brings experimental taproot support including tr()
descriptors, taproot PSBTs, signing key and script spend taproot PSBTs, and tr()
in descriptor!
macros. The release also bring a new coin selection algorithm OldestFirstCoinSelection
, a sqlite-db
fix, and major dependency updates. See below for the changes.
What's Changed
- Release 0.18.0 by @notmandatory in #584
- Expose bip39::Error by @evanlinjin in #582
- add OldestFirstCoinSelection by @bruteforcecat in #557
- Bump MSRV to 1.56 by @afilini in #596
- Fix typo in docs for TxBuilder allow_shrinking method by @thunderbiscuit in #599
- Change wallet::get_funded_wallet to return Wallet by @notmandatory in #600
- wrong Network path fixed by @waterst0ne in #602
- [blockchain] Add traits to reuse
Blockchain
s across multiple wallets by @afilini in #569 - Upgrade to rust-bitcoin 0.28 by @afilini in #606
- unpinning dependency tokio to just 1 by @ulrichard in #604
- Populate the redeemScript for
sh(wsh(sortedmulti()))
by @afilini in #610 - Fix sqlite database set_utxo to insert or update utxos by @notmandatory in #605
- Add support for Taproot and
tr()
descriptors by @afilini in #593 - Fix index out of bound error by @bonomat in #619
- rpc: use
importdescriptors
with Core >= 0.21 by @afilini in #628
New Contributors
- @evanlinjin made their first contribution in #582
- @bruteforcecat made their first contribution in #557
- @waterst0ne made their first contribution in #602
Full Changelog: v0.18.0...v0.19.0
Release 0.18.0
This release includes an important security fix, see the "Security Advisory: Miniscript MINIMALIF Bug" blog post for more details.
Other changes in this release include improvements to the key generation traits, new wallet functions to get signers, descriptor checksum and address validators, and a new sqlite-bundled
feature for mobile users. The Database::flush()
function was deprecated and the WalletExport
struct was renamed to FullyNodedExport
.
What's Changed
- Never delete spent utxos from the database by @danielabrozzoni in #515
- Fix pre-segwit inputs with esplora by @LLFourn in #571
- Update
electrsd
to v0.15 by @afilini in #545 - Release 0.17.0 by @notmandatory in #564
- Add wallet creation example using RPC by @rajarshimaitra in #519
- Add sqlite-bundled feature by @notmandatory in #566
- Fix hierarchy of headers on docs landing page by @thunderbiscuit in #554
- update AddressInfo struct by @Eunoia1729 in #563
- Expose more getters in Wallet and other useful descriptor traits by @afilini in #562
- Faster sync by collecting esplora ureq thread handles by @nickfarrow in #579
- Deprecate Database::flush() function by @notmandatory in #577
- Improve keys traits, simplify
rpcwallet
example by @afilini in #583 - export: Rename
WalletExport
toFullyNodedExport
by @afilini in #589
New Contributors
- @Eunoia1729 made their first contribution in #563
- @nickfarrow made their first contribution in #579
Full Changelog: v0.17.0...v0.18.0
Release 0.17.0
This release brings a change to the wallet sync API to decouple the Wallet from the Blockchain, see the CHANGELOG for all the details. Also in this release is a change to the wallet sync verification logic which is now enabled via a build time feature. Two new wallet functions were added to get an internal address and to let offline wallets load and cache addresses. See below for the complete list of improvements and fixed bugs.
What's Changed
- Release/0.16.0 by @notmandatory in #532
- [ci] Pin nightly docs workflow rust version to nightly-2022-01-25 by @notmandatory in #539
- Implement XKeyUtils on InnerXKey by @acerbisgianluca in #542
- Pin tokio version to ~1.14 by @notmandatory in #550
- Fix sent calculation in the RPC backend by @danielabrozzoni in #551
- Refactor verification logic by @rajarshimaitra in #502
- Release/0.16.1 by @notmandatory in #552
- Add API for internal addresses by @LLFourn in #522
- refactor wallet address caching into its own public method by @a5an0 in #537
- Remove blockchain from wallet by @LLFourn in #535
New Contributors
- @acerbisgianluca made their first contribution in #542
- @a5an0 made their first contribution in #537
Full Changelog: v0.16.1...v0.17.0
Release 0.16.1
This release includes changes to fix CI and an issue caused by our tokio
dependency changing their MSRV to 1.49.0
.
What's Changed
- [ci] Pin nightly docs workflow rust version to nightly-2022-01-25 by @notmandatory in #539
- Pin tokio version to ~1.14 by @notmandatory in #550
Full Changelog: v0.16.0...v0.16.1