Releases: bitcoindevkit/bdk
Release chain-0.23.1
Summary
This release of bdk_chain v0.23.1 fixes a bug in bdk_bitcoind_rpc
mempool transaction detection and emission, adds TxGraph::get_last_evicted
for better transaction eviction tracking, and optimizes bdk-electrum
sync/full_scan performance by batching and caching merkle-proof, script history, and header requests. It also improves reliability by updating KeychainTxOutIndex::apply_changeset
to restore spk_cache
before last_revealed
, and adding validation to disallow unconfirmed coinbase transactions. Additionally, bdk-esplora
returns an error if no point of agreement is found in chain_update
, instead of panicking. Additionally, it now includes comprehensive clippy fixes and updated test coverage.
Also released:
- bdk_core
v0.6.1
- bdk_testenv
v0.13.1
- bdk_filestore
v0.21.1
- bitcoind_rpc
v0.21.0
- bdk_electrum
v0.23.1
- bdk_esplora
v0.22.1
What's Changed
- ci: pin
tracing-core
to0.1.33
for msrv by @LagginTimes in #1972 - ci: automated update to rustc 1.87.0 by @create-pr-actions[bot] in #1978
- feat(electrum): optimize merkle proof validation with batching by @LagginTimes in #1957
- test for excluded bounds in outputs_in_range by @aagbotemi in #1897
- bench: Add
reindex_tx_graph
benchmark by @ValuedMammal in #1968 - esplora:
chain_update
errors if no point of connection by @ValuedMammal in #1971 - feat: add
justfile
by @luisschwab in #1979 - How can we be happy if clippy is not? by @evanlinjin in #1990
- Disallow unconfirmed coinbase by @evanlinjin in #1976
- keychain_txout:
apply_changeset
restores spk cache before last revealed by @ValuedMammal in #1993 - refactor(electrum): remove
unwrap()
s andexpect()
s by @LagginTimes in #1981 - Add
TxGraph::get_last_evicted
by @evanlinjin in #1977 - ci: pin
webpki-roots
for MSRV compatibility by @LagginTimes in #1996 - fix(ci): pin
[email protected]
to0.5.10
on MSRV by @oleonardolima in #1999 - Detect new mempool txs by @evanlinjin in #1988
- ci: fix
socket2
pin by @LagginTimes in #2001 - ci: replace grcov by cargo-llvm-cov by @nymius in #1986
- ci: automated update to rustc 1.88.0 by @create-pr-actions[bot] in #1994
- chore(bdk-electrum): use new
batch_transaction_get_merkle
API by @oleonardolima in #1989 - chore(release): bump bdk-chain to
0.23.1
and updateCHANGELOG
s by @oleonardolima in #2004
New Contributors
- @aagbotemi made their first contribution in #1897
Full Changelog: chain-0.23.0...chain-0.23.1
Release chain-0.23.0
Summary
This release of bdk_chain v.0.23.0 introduces a new option to cache and persist derived script pubkeys, improving performance on KeychainTxOutIndex
startup, the tx_graph
module now tracks and persists the first_seen
timestamp for transactions which is useful for transaction ordering. The bdk_core
crate added convenient is_empty
methods to types TxUpdate
, {Sync,Scan}Response
, making it easier to check for no-op updates.
Also released:
- bdk_core v0.6.0
- bdk_bitcoind_rpc v0.20.0
- bdk_electrum v0.23.0
- bdk_esplora v0.22.0
- bdk_file_store v0.21.0
- bdk_testenv v0.13.0
What's Changed
- feat!(chain): implement
first_seen
tracking by @uvuvuwu in #1950 - fix(docs):
merge_chains
outdated documentation by @oleonardolima in #1806 - chore: Update rust-version to 1.86.0 by @ValuedMammal in #1955
- Add zizmor github actions security analysis workflow by @notmandatory in #1813
- chore: create and apply rustfmt.toml by @luisschwab in #1946
- Add
is_empty
methods toTxUpdate
and{}_Response
types by @evanlinjin in #1961 - fix(chain): persist
first_seen
by @LagginTimes in #1966 - Persist spks derived from
KeychainTxOutIndex
by @evanlinjin in #1963
Persistence
This release includes two SQLite migrations:
- A new
first_seen
column added to theTxGraph
change set. If you rely on transaction ordering or unconfirmed tx handling, be aware of the newfirst_seen
logic. - A new
bdk_descriptor_derived_spks
table for persisting previously derived script pubkeys.
Full Changelog: chain-0.22.0...chain-0.23.0
Release chain-0.22.0
Summary
This release of bdk_chain
v0.22.0 includes a better syncing experience for electrum and esplora, relevant transactions that are missing can now be evicted with the help of SyncRequestBuilder
. CanonicalizationParams
can be used to modify the behavior of CanonicalIter
for a given query. Updated dependency on miniscript
to 12.3.1 along with various fixes and improvements.
Other notable releases:
bdk_core
0.5.0bdk_electrum
0.22.0bdk_esplora
0.21.0bdk_bitcoind_rpc
0.19.0bdk_file_store
0.20.0bdk_testenv
0.12.0
Note
The blockchain client crates all depend on the latest version of bdk_core
. If your project uses a version of bdk_core
earlier than v0.5.0, you should not attempt to upgrade to the latest chain source crates until you've upgraded to the latest version of bdk_core
.
What's Changed
- test(core): add unit tests for
merge
trait by @pluveto in #1738 bdk_electrum
: Handle negative heights properly by @evanlinjin in #1837- Make full-scan/sync flow easier to reason about. by @evanlinjin in #1838
- docs: update CONTRIBUTING.md with section for new contributors by @notmandatory in #1871
- doc: remove 1.0 roadmap stuff and fix broken links from README by @luisschwab in #1882
- doc: remove persist crate from README by @luisschwab in #1884
- Introduce
evicted-at
/last-evicted
timestamps by @evanlinjin in #1839 - example_cli: add feerate option to psbt new cmd by @ValuedMammal in #1840
- deps: bump
miniscript
to12.3.1
by @LagginTimes in #1924 - chore: remove bdk_wallet and update readme and ci workflow by @notmandatory in #1928
- feat(chain): Add method for constructing TxGraph from a ChangeSet by @uvuvuwu in #1930
- fix: Canonicalization should handle transactions that spend from two conflicting transactions by @evanlinjin in #1917
- Introduce canonicalization parameters by @evanlinjin in #1808
- feat(rpc)!: Update Emitter::mempool to support evicted_at by @LagginTimes in #1857
New Contributors
- @pluveto made their first contribution in #1738
- @Musab1258 made their first contribution in #1895
- @uvuvuwu made their first contribution in #1930
Full Changelog: chain-0.21.1...chain-0.22.0
Release wallet-1.2.0
Summary
In this release of bdk_wallet 1.2.0 The TxBuilder add_recipient
function now accepts anything that implements Into<ScriptBuf>
. The wallet considers a coinbase output eligible for selection if it will mature in the next block. Wallets persisted with a rusqlite::Connection
are checked to be thread-safe. The bdk_chain
dependency is updated to version 0.21.1, plus a number of internal cleanups.
What's Changed
- Fix off-by-one error checking coinbase maturity in optional UTxOs by @nymius in #1830
- wallet: Bump bitcoin dependency to v0.32.4 by @stevenroose in #1853
bdk_wallet
: Pinbdk_chain
version to latest release by @evanlinjin in #1860- Refactor/use iterators to preselect utxos by @nymius in #1798
- Refactor file store by @nymius in #1684
- docs: update CONTRIBUTING.md with section for new contributors by @notmandatory in #1871
- fix(examples): make regtest default on wallet_example_rpc by @luisschwab in #1872
- chore(examples): make change descriptor optional on example_wallet_rpc by @luisschwab in #1865
- Generalize
add_recipient
to acceptAddress
by @rustaceanrob in #1841 - doc: remove 1.0 roadmap stuff and fix broken links from README by @luisschwab in #1882
- doc: remove persist crate from README by @luisschwab in #1884
- fix(wallet): allow PersistedWallet to be Send + Sync by @notmandatory in #1874
- example_cli: add feerate option to psbt new cmd by @ValuedMammal in #1840
- chore: bump
miniscript
to12.3.1
by @LagginTimes in #1924 - chore: bump bdk_wallet to 1.2.0 by @ValuedMammal in #1925
New Contributors
- @Musab1258 made their first contribution in #1895
Full Changelog: wallet-1.1.0...wallet-1.2.0
Release bdk 0.30.2
This is a patch release to fix a crash that can occur when syncing wallets that have many (10k+) UTXOs.
!! DEPRECATED !!
The bdk library is now deprecated and replaced by bdk_wallet. All projects should migrate to bdk_wallet 1.0.0 or newer as soon as possible. For migration instructions see the "Book of BDK" chapter on "Migrating from 0.x".
The BDK team will continue to publish bdk
0.30.x
bug fix releases as needed, but only for a limited time.
What's Changed
- Fix out of memory issue caused by many txs. by @jguinta in #1831
- Fix SQLite panic when syncing many UTXOs by enabling WAL journal mode by @notmandatory in #1836
New Contributors
Full Changelog: v0.30.1...v0.30.2
Release wallet-1.1.0
Summary
In this release of bdk_wallet v1.1.0 the tx builder is updated to use transaction version 2 by default, and support for wallets using testnet4 is now live. This release also includes important updates to bdk_electrum which has a new MSRV of 1.75.0 to stay current with the latest security fixes, bdk_bitcoind_rpc introduces a new compact block filter module, as well as various bug fixes and improvements.
What's Changed
- test(wallet): small cleanups to test_wallet_transactions_relevant by @notmandatory in #1785
- refactor(wallet): cleanup and remove unused code in create_tx by @notmandatory in #1768
- docs: add architectural decision records (ADR) by @ValuedMammal in #1592
- fix(wallet): improve safety on finalize psbt by @f3r10 in #1790
- feat(wallet): change default tx to version 2 by @benalleng in #1789
- test(wallet): create tx locktime cltv for a specific time by @f3r10 in #1682
- feat(wallet): support Testnet4 in valid networks by @ValuedMammal in #1805
- fix(wallet): use
map_keychain
inWallet::build_fee_bump
by @ValuedMammal in #1812 - ci: add secondary MSRV job of 1.75.0 by @oleonardolima in #1803
- ci: apply zizmor security audit by @oleonardolima in #1778
New Contributors
- @f3r10 made their first contribution in #1790
- @benalleng made their first contribution in #1789
- @pluveto made their first contribution in #1738
Full Changelog: wallet-1.0.0...wallet-1.1.0
Release bdk 0.30.1
!! DEPRECATED !!
The bdk library is now deprecated and replaced by bdk_wallet. All projects should migrate to bdk_wallet 1.0.0 or newer as soon as possible. For migration instructions see the "Book of BDK" chapter on "Migrating from 0.x".
The BDK team will continue to publish bdk
0.30.x
bug fix releases as needed, but only for a limited time.
What's Changed
- fix electrum conftime_req filter for needs_block_height by @zoedberg in #1782
- Update bdk 0.30.x README docs to deprecate the bdk library by @notmandatory in #1791
New Contributors
Full Changelog: v0.30.0...v0.30.1
Release wallet-1.0.0
Summary
This is the final bdk_wallet 1.0.0 release. It contains small improvements to the wallet transactions
function and
next_unused_address
API docs. Please thank all the contributors who made this first major release possible and
who's continued effort make the BDK project so awesome!
Changelog
Changed
Wallet::transactions
should only return relevant transactions. #1779- Minor updates to fix new rustc 1.83.0 clippy warnings. #1776
Documentation
- Reword the
next_unused_address
API docs. #1680
What's Changed
- docs(wallet): reword the
next_unused_address
doc by @oleonardolima in #1680 - chore[chain,wallet]: fix build warnings by @notmandatory in #1774
- ci: automated update to rustc 1.83.0 by @create-pr-actions in #1776
transactions
method should only return relevant transactions by @evanlinjin in #1779- Bump bdk_wallet version to 1.0.0 by @notmandatory in #1784
Full Changelog: v1.0.0-beta.6...wallet-1.0.0
Release 1.0.0-beta.6
Summary
This is the final "beta" test release before a final bdk_wallet
1.0.0 version. Changes include small bug fixes and API improvements plus an improved algorithm for determining which transactions are in the current best "canonical" block chain. The new canonicalization algorithm processes the transaction graph in linear time versus the prior quadratic time algorithm.
Changelog
- Move transaction testing utilities from
crates/chain/tests/common
totestenv
crate #1612 - Remove bdk_chain::ConfirmationTime. Use ChainPosition in its place. #1643
- Fix building change signers in
load_with_params
#1662 - Remove bdk_chain method KeychainTxOutIndex::inner #1652
- Document bdk_file_store is a development/testing database #1661
- Fix incorrect links in docs to wallet examples #1668
- Add bdk_wallet "test-utils" feature flag that exposes common helpers for testing and development #1658
- Removed methods Wallet::insert_tx, Wallet::insert_checkpoint, Wallet::unbroadcast_transactions #1658
- Fix type constraint on list canonical tx #1724
- Fix testenv docs.rs docs #1722
- Use
bitcoin::constants::COINBASE_MATURITY
#1727 - Rename bdk_core::spk_client's SyncResult to SyncResponse #1732
- Fix core checkpoint Drop stack overflow #1731
- Change Utxo::Foreign::sequence type to not be optional #1681
- Check time when persisting in
rusqlite
impl #1730 - Bump hashbrown dependency version to v0.14.5 #1721
- Add usage of debug_assert!() to LocalChain::apply_update #1734
- Allow Sqlite to persist anchor without tx #1736
- Change ChainPosition to represent transitive anchors and unconfirmed-without-last-seen values #1733
- Updated electrum-client dependency to 0.22.0 #1751
- Change TxBuilder to be Send safe and not implement the Clone trait #1737
- Update esplora-client dependency to 0.11.0 #1746
- Fix fetch_prev_txout to no longer queries coinbase transactions #1756
- Remove serde json dependency from chain crate #1752
- Introduce
O(n)
canonicalization algorithm #1670 - Add chain O(n) canonicalization algorithm see: /crates/chain/src/canonical_iter.rs #1670
- Add chain indexing fields in TxGraph; txs_by_anchor_height and txs_by_last_seen #1670
- Removed chain TxGraph methods: try_get_chain_position and get_chain_position #1670
- Change coin_selection and DescriptorExt::dust_value to use Amount type #1763
What's Changed
- Refactor: Move transaction testing utilities from
crates/chain/tests/common
totestenv
crate by @tvpeter in #1612 - chore(deps): bump actions/checkout from 1 to 4 by @dependabot in #1211
- ci: update audit.yml workflow to use actions-rust-lang/audit by @notmandatory in #1646
- feat(chain,wallet)!: rm
ConfirmationTime
by @evanlinjin in #1643 - fix(wallet): fix building change signers in
load_with_params
by @ValuedMammal in #1662 - chore(deps): bump tibdex/github-app-token from 1 to 2 by @dependabot in #1657
- refactor(chain)!: remove
inner
method from KeychainTxOutIndex by @ValuedMammal in #1652 - chore(file_store): Document that it's a dev database by @LLFourn in #1661
- chore(deps): bump Swatinem/rust-cache from 2.2.1 to 2.7.5 by @dependabot in #1645
- docs: fix incorrect links to wallet examples by @torkelrogstad in #1668
- ci: pin deps for MSRV by @ValuedMammal in #1674
- chore(deps): bump peter-evans/create-pull-request from 6 to 7 by @dependabot in #1672
- chore(deps): bump crazy-max/ghaction-import-gpg from 5 to 6 by @dependabot in #1673
- fix(wallet)!: Improve test utilities by @ValuedMammal in #1658
- ci: automated update to rustc 1.82.0 by @create-pr-actions in #1719
- Type constraint on list canonical tx by @rustaceanrob in #1724
- fix(testenv): disable downloads (bitcoind and electrsd) for docs.rs b… by @riverKanies in #1722
- Use
bitcoin::constants::COINBASE_MATURITY
by @rustaceanrob in #1727 - chore(core)!: rename
SyncResult
toSyncResponse
by @oleonardolima in #1732 - fix(core): Fix checkpoint Drop stack overflow by @LLFourn in #1731
- types: Make Utxo::Foreign::sequence not optional by @stevenroose in #1681
- Check time when persisting in
rusqlite
impl by @rustaceanrob in #1730 - chore(deps): bump hashbrown to v0.14.5 by @tvolk131 in #1721
- chore(chain)!: use
debug_assert!
onapply_update
by @oleonardolima in #1734 - ci: pin
rustls
dependency version to build with rust 1.63 by @LagginTimes in #1745 - Sqlite - allow persisting anchor without tx by @evanlinjin in #1736
- chore: Revert
rustls
pin dependency by @evanlinjin in #1749 - feat(chain,wallet)!: Transitive
ChainPosition
by @evanlinjin in #1733 - deps(electrum): bump
electrum-client
to 0.22.0 by @LagginTimes in #1751 - fix(tx_builder)!: make TxBuilder Send safe, remove Clone trait by @notmandatory in #1737
- deps(esplora): bump
esplora-client
to 0.11.0 by @ValuedMammal in #1746 - fix(electrum): prevent
fetch_prev_txout
from querying coinbase transactions by @LagginTimes in #1756 - Remove serde json dependency from chain crate by @nymius in #1752
- Introduce
O(n)
canonicalization algorithm by @evanlinjin in #1670 - Change coin_selection and DescriptorExt::dust_value to use Amount type by @notmandatory in #1763
- Bump bdk_wallet version to 1.0.0-beta.6 by @notmandatory in #1772
New Contributors
- @tvpeter made their first contribution in #1612
- @dependabot made their first contribution in #1211
- @torkelrogstad made their first contribution in #1668
- @riverKanies made their first contribution in #1722
- @tvolk131 made their first contribution in #1721
Full Changelog: v1.0.0-beta.5...v1.0.0-beta.6
Release 0.30.0
Summary
This release bumps the MSRV to 1.63.0 and updates the rusqlite
dependency version to 0.31 to be aligned with the upcoming 1.0.0 release. These changes will prepare projects for migrating wallet data to the 1.0.0 version of BDK, see #1648.
What's Changed
- ci (maintenance): Pin byteorder, webpki to keep the MSRV by @danielabrozzoni in #1160
- Bump MSRV 1.63.0 AND add deprecate TxBuilder::allow_shrinking() by @notmandatory in #1366
- (maintenance) doc(bdk): Clarify the absolute_fee docs by @danielabrozzoni in #1159
- release/0.29, deps: Update
rusqlite
to 0.31 by @ValuedMammal in #1651 - test: update electrsd to fix RUSTSEC-2024-0384 warning by @notmandatory in #1744
Full Changelog: v0.29.0...v0.30.0