Releases: bitcoindevkit/bdk
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
Release 1.0.0-beta.5
Summary
This release changes bdk_wallet transaction creation to enable RBF by default, it also updates the bdk_esplora client to retry server requests that fail due to rate limiting. The bdk_electrum crate now also offers a use-openssl feature.
What's Changed
- ci: automated update to rustc 1.81.0 by @create-pr-actions in #1613
- doc(wallet): Add docs to explain the lookahead by @ValuedMammal in #1596
- chore: fix RUSTSEC-2024-0370 proc-macro-error is unmaintained by @oleonardolima in #1603
- fix(bdk_esplora, bdk_electrum): build and test with
--no-default-features
by @oleonardolima in #1615 - fix!(wallet):
ChangeSet
should not be non-exhaustive by @evanlinjin in #1623 - feat(wallet)!: enable RBF by default on TxBuilder by @luisschwab in #1616
- deps(esplora): bump esplora-client to 0.10.0 by @ValuedMammal in #1626
- feat(chain,core)!: move
Merge
tobdk_core
by @evanlinjin in #1625 - Replace trait
AnchorFromBlockPosition
with new struct by @jirijakes in #1594 - ci: fix build-test job with --no-default-features, add miniscript/no-std by @notmandatory in #1636
- feat(bdk_electrum): add
use-openssl
as a feature by @oleonardolima in #1620 - Bump bdk_wallet version to 1.0.0-beta.5 by @ValuedMammal in #1639
New Contributors
- @luisschwab made their first contribution in #1616
- @jirijakes made their first contribution in #1594
Full Changelog: v1.0.0-beta.4...v1.0.0-beta.5
Release 1.0.0-beta.4
Summary
BDK Wallet 1.0.0-beta.4 replaces 1.0.0-beta.3 and fixes a versioning mistake with two of our dependency crates. The bdk-wallet 1.0.0-beta.3 version and related dependency patch releases have been yanked from crates.io.
Changelog
See https://github.com/bitcoindevkit/bdk/releases/tag/v1.0.0-beta.3
What's Changed
- Bump bdk_wallet version to 1.0.0-beta.4 by @notmandatory in #1610
Full Changelog: v1.0.0-beta.3...v1.0.0-beta.4
Release 1.0.0-beta.3
Version Yanked and Replaced by 1.0.0-beta.4
Summary
BDK Wallet 1.0.0-beta.3 is out! 🚀 Fixed transaction creation to not skip unused addresses, added function for sorting wallet transactions and option to change default BNB fallback coin selection. We moved the bdk_hwi crate functionality to the rust-hwi repo.
NOTE: The bdk_wallet
BETA releases are meant for early user testing to find bugs, get feedback on APIs and identify any missing functionality. A final bdk_wallet
1.0.0 release will be available once known bugs are fixed, and tutorial docs and language bindings projects are updated.
What's Changed
- chore: add
print_stdout
/print_stderr
lints to workspace level by @oleonardolima in #1425 - ci: add token for cron-update-rust.yml by @notmandatory in #1580
- feat(core): add
TxUpdate::map_anchors
by @evanlinjin in #1587 - ci: pin
tokio-util
dependency version to build with rust 1.63 by @LagginTimes in #1590 - feat(wallet): add transactions_sort_by function by @notmandatory in #1477
- docs: update CONTRIBUTING.md by @ValuedMammal in #1584
- fix(wallet): only mark change address used if
create_tx
succeeds by @ValuedMammal in #1579 - refactor(wallet): use
Amount
everywhere by @ValuedMammal in #1595 - Change methods of
IndexedTxGraph
/TxGraph
/Wallet
that insert txs to be more generic by @evanlinjin in #1586 - fix: typos by @storopoli in #1599
- fix(wallet): do
check_wallet_descriptor
when creating and loading by @ValuedMammal in #1597 - refactor(bdk_hwi): remove
bdk_hwi
, asHWISigner
's being moved torust-hwi
by @oleonardolima in #1561 - Allow custom fallback algorithm for bnb by @evanlinjin in #1581
- fix(core): calling
CheckPoint::insert
with existing block must succeed by @evanlinjin in #1601 - fix(wallet): fix SingleRandomDraw to error if insufficient funds by @notmandatory in #1605
- Bump bdk_wallet version to 1.0.0-beta.3 by @notmandatory in #1608
Full Changelog: v1.0.0-beta.2...v1.0.0-beta.3
Release 1.0.0-beta.2
Summary
The primary user facing changes are re-enabling single descriptor wallets and renaming LoadParams methods to be more explict. Wallet persistence was also simplified and blockchain clients no longer depend on bdk_chain.
What's Changed
- ci: pin tokio to 1.38.1 to support MSRV 1.63 by @notmandatory in #1524
- fix: typos by @storopoli in #1529
- chore: fix clippy lints by @storopoli in #1530
- bdk_wallet: Don't reimplement descriptor checksum, use the one from rust-miniscript by @darosior in #1523
- Remove crate-renaming by @evanlinjin in #1544
- example: Update
example_cli
and retire old nursery crates by @ValuedMammal in #1495 - feat(testenv): Add method
new_with_config
by @ValuedMammal in #1545 - test(electrum): Test sync in reorg and no-reorg situations by @LagginTimes in #1535
- Add documentation for Electrum's full_scan/sync by @thunderbiscuit in #1494
- Enable selecting use-rustls-ring feature on electrum client by @thunderbiscuit in #1491
- [wallet] Enable support for single descriptor wallets by @ValuedMammal in #1533
- Allow opting out of getting
LocalChain
updates withFullScanRequest
/SyncRequest
structures by @evanlinjin in #1478 - Use explicit names for wallet builder methods that validate rather than set by @thunderbiscuit in #1537
- fix(example_cli): add bitcoin and rand dependencies by @notmandatory in #1549
- Simplify wallet persistence by @evanlinjin in #1547
- Derive
Clone
onAddressInfo
by @praveenperera in #1560 - fix(wallet)!: make
LoadParams
implicitly satisfySend
by @evanlinjin in #1562 - ci: add cron-update-rust.yml by @ValuedMammal in #1564
- Introduce
tx_graph::Update
and simplifyTxGraph
update logic by @evanlinjin in #1568 - Introduce
bdk_core
by @evanlinjin in #1569 - Bump bdk version to 1.0.0-beta.2 by @notmandatory in #1572
- chore: add missing bdk_core README.md and remove specific bdk_chain dev version by @notmandatory in #1573
New Contributors
- @praveenperera made their first contribution in #1560
Full Changelog: v1.0.0-beta.1...v1.0.0-beta.2
Release 1.0.0-beta.1
Summary
This release includes the first beta version of bdk_wallet
with a stable 1.0.0 API. The changes in this version include reworked wallet persistence, changeset, and construction, optional user provided RNG, custom tx sorting, and use of merkle proofs in bdk_electrum.
What's Changed
- fix(wallet)!: Simplify
SignOptions
and improve finalization logic by @ValuedMammal in #1476 - feat(wallet): Allow user provided RNG, make rand an optional dependency by @rustaceanrob in #1395
- refactor(wallet): Use Psbt::sighash_ecdsa for computing sighashes by @ValuedMammal in #1424
- refactor(wallet)!: Use
Weight
type instead ofusize
by @oleonardolima in #1468 - refactor(wallet): Remove usage of
blockdata::
from bitcoin paths by @tcharding in #1490 - refactor(chain): calculate DescriptorId as the sha256 hash of spk at index 0 by @notmandatory in #1486
- refactor(chain)!: Change tx_last_seen to
Option<u64>
by @ValuedMammal in #1416 - refactor(wallet)!: Add support for custom sorting and deprecate BIP69 by @nymius in #1487
- refactor(chain)!: Create module
indexer
by @ValuedMammal in #1493 - chore(chain)!: Rename
Append
toMerge
by @LagginTimes in #1502 - refactor(wallet)!: Simplify public_descriptor(), remove redundant function by @gnapoli23 in #1503
- ci: pin cc dependency version to build with rust 1.63 by @LagginTimes in #1505
- feat(electrum)!: Update
bdk_electrum
to use merkle proofs by @LagginTimes in #1489 - refactor(wallet)!: rework persistence, changeset, and construction by @evanlinjin in #1514
- refactor(chain)!: Update KeychainTxOutIndex methods to use owned K and ScriptBuf by @rustaceanrob in #1506
- Bump bdk version to 1.0.0-beta.1 by @notmandatory in #1522
New Contributors
- @nymius made their first contribution in #1487
- @gnapoli23 made their first contribution in #1503
Full Changelog: v1.0.0-alpha.13...v1.0.0-beta.1
Release 1.0.0-alpha.13
Summary
This release includes major changes required to finalize the bdk_wallet 1.0.0 APIs, including: upgrading to rust-bitcoin 0.32 and rust-miniscript 0.12.0, constructing a Wallet now requires two descriptors (external and internal), the db field was removed from Wallet, staged changes can be persisted via a blocking or async data store.
Changelog
Fixed
- Fix KeychainTxOutIndex range-based methods. #1463
Changed
- Upgrade rust bitcoin to 0.32.0, miniscript to 0.12.0. #1448
- Use compute_txid() instead of deprecated txid().
- Use minimal_non_dust() instead of dust_value().
- Use signature and sighash_type fields, instead of previous sig and hash_type.
- Use sighash::P2wpkhError, and sighash::TaprootError instead of older sighash::Error.
- Converts from Network to NetworkKind, where expected.
- Converts from Weight type to current used usize.
- Use .into() to convert from AbsLockTime and RelLockTime to absolute::LockTime and relative::LockTime.
- Remove use of deprecated ThirtyTwoByteHash trait, use Message::from_digest().
- Update the miniscript policy and dsl macros to proper expect and handle new Threshold type, instead of the previous two parameters.
- Add further bitcoin::Amount usage on public APIs. #1426
- Updated CreateTxError::FeeTooLow to use bitcoin::Amount.
- Updated Wallet::calculate_fee(). to use bitcoin::Amount
- Updated TxBuilder::fee_absolute(). to use bitcoin::Amount.
- Updated CalculateFeeError::NegativeFee to use bitcoin::SignedAmount.
- Updated TxGraph::calculate_fee(). to use bitcoin::Amount.
- Updated PsbUtils::fee_amount() to use bitcoin::Amount.
- Wallet::get_balance() renamed to Wallet::balance(). #1455
- Constructing a Wallet now requires two distinct descriptors. #1390
- Removed duplicated
InsufficientFunds
error member. #1441 - Refactor wallet and persist mods, remove bdk_persist crate. #1454 and #1473
- Removed
db
fromWallet
, users are now responsible for persisting changes, see docs and examples. - Removed the
bdk_persist
crate. - Remove persist submodule from bdk_chain.
- Change Wallet to outsource it's persistence logic by introducing Wallet::take_staged.
- Add take convenience method to Append trait.
- Removed
What's Changed
- feat: add further
bitcoin::Amount
usage on public APIs by @oleonardolima in #1426 - refactor(wallet): rename get_balance() to balance() by @notmandatory in #1455
- refactor(electrum) put the tx cache in electrum by @LLFourn in #1453
- Make Wallet require a change descriptor by @ValuedMammal in #1390
- Remove duplicated InsufficientFunds error member by @e1a0a0ea in #1441
- ci: pin url dependency version to build with rust 1.63 by @notmandatory in #1470
- bump(deps): upgrade rust
bitcoin
to0.32.0
,miniscript
to0.12.0
and others by @oleonardolima in #1448 - No descriptor ids in spk txout index by @LLFourn in #1463
- Refactor wallet and persist mod, remove bdk_persist crate by @notmandatory in #1454
- fix: typo on
SignedAmount
instead ofAmount
by @oleonardolima in #1458 - Remove
persist
submodule by @evanlinjin in #1473 - Bump bdk version to 1.0.0-alpha.13 by @notmandatory in #1472
New Contributors
Full Changelog: v1.0.0-alpha.12...v1.0.0-alpha.13
Release 1.0.0-alpha.12
Summary
This bi-weekly release fixes an electrum syncing bug when calculating fees and adds the bdk_sqlite crate for storing wallet data in a SQLite tables. The Wallet::allow_shrinking function was also remove because it was too easy to misuse. Also the bdk
crate was renamed to bdk_wallet
. See the changelog for all the details.
Changelog
Fixed
- Fixed
calculate_fee
result when syncing with electrum. #1443
Changed
- Removed
TxBuilder::allow_shrinking()
function. #1386 - Renamed
bdk
crate tobdk_wallet
. #1326 - Update Wallet to use
CombinedChangeSet
for persistence. #1128
Added
- Add
CombinedChangeSet
in bdk_persist crate. #1128 - Add
bdk_sqlite
crate implementing SQLite based wallet data storage. #1128 - Update
bdk_wallet
export feature to support taproot descriptors. #1393
What's Changed
- chore: rename bdk crate to bdk_wallet by @notmandatory in #1326
- fix(electrum): Fix
fetch_prev_txout
by @ValuedMammal in #1443 - feat: add bdk_sqlite crate implementing PersistBackend by @notmandatory in #1128
- Remove TxBuilder allow_shrinking() and unneeded context param by @notmandatory in #1386
- fix(export): add tr descriptor by @rustaceanrob in #1393
- Bump bdk version to 1.0.0-alpha.12 by @notmandatory in #1450
Full Changelog: v1.0.0-alpha.11...v1.0.0-alpha.12