Releases: bitcoindevkit/bdk
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
Summmary
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
Release 1.0.0-alpha.11
Summary
This incremental bi-weekly release includes three big improvements. New electrum full_scan and sync APIs were added for more efficiently querying blockchain data. And the keychain::Changeset now includes public key descriptors and keychain::Balance uses bitcoin::Amount instead of u32 sats amounts. See the changelog for all the details.
Changelog
Changed
- Include the descriptor in keychain::Changeset #1203
- Update bdk_electrum crate to use sync/full-scan structs #1403
- Update keychain::Balance to use bitcoin::Amount #1411
- Change
bdk_testenv
to re-export internally used crates. #1414 - Updated documentation for
full_scan
andsync
inbdk_esplora
. #1427
What's Changed
- test(wallet): add thread safety test by @rustaceanrob in #1417
- docs(esplora): fixed
full_scan
andsync
documentation by @LagginTimes in #1427 - chore: clean up
electrsd
andanyhow
dev dependencies by @LagginTimes in #1414 - feat: update
keychain::Balance
to usebitcoin::Amount
by @oleonardolima in #1411 - fix(persist): add default feature to enable bdk_chain/std by @notmandatory in #1423
- ci: Pin clippy to rust 1.78.0 by @ValuedMammal in #1430
- Include the descriptor in
keychain::Changeset
by @danielabrozzoni in #1203 - Update
bdk_electrum
crate to use sync/full-scan structs by @LagginTimes in #1403 - Bump bdk version to 1.0.0-alpha.11 by @notmandatory in #1437
New Contributors
- @oleonardolima made their first contribution in #1411
Full Changelog: v1.0.0-alpha.10...v1.0.0-alpha.11
Release 1.0.0-alpha.10
Summary
This incremental bi-weekly release improves the address API, simplifies the Esplora API, and introduced new structures for spk-based scanning that will enable easier syncing with electrum/esplora. It also introduces a new bdk-persist crate, removes the generic T from the Wallet, and makes KeychainTxOutIndex more range based.
Changelog
Fixed
- Enable blocking-https-rustls feature on esplora client #1408
Changed
- KeychainTxOutIndex methods modified to take ranges of keychains instead. #1324
- Remove the generic from wallet #1387
- Changed PersistenceBackend errors to depend on the anyhow crate
- Remove the generic T from Wallet
- Improve address API #1402
- Added Wallet methods:
- peek_address
- reveal_next_address
- next_unused_address
- reveal_addresses_to
- list_unused_addresses
- mark_used
- unmark_used
- Removed Wallet methods:
- get_address
- get_internal_address
- try_get_address
- try_get_internal_address
- Added Wallet methods:
- Simplified EsploraExt API #1380
- Changed EsploraExt API so that sync only requires one round of fetching data. The local_chain_update method is removed and the local_tip parameter is added to the full_scan and sync methods.
- Removed TxGraph::missing_heights and tx_graph::ChangeSet::missing_heights_from methods.
- Introduced CheckPoint::insert which allows convenient checkpoint-insertion. This is intended for use by chain-sources when crafting an update.
- Refactored merge_chains to also return the resultant CheckPoint tip.
- Optimized the update LocalChain logic - use the update CheckPoint as the new CheckPoint tip when possible.
- Introduce
bdk-persist
crate #1412 - Introduce universal sync/full-scan structures for spk-based syncing #1413
- Add universal structures for initiating/receiving sync/full-scan requests/results for spk-based syncing.
- Updated bdk_esplora chain-source to make use of new universal sync/full-scan structures.
What's Changed
- [chain] Make KeychainTxOutIndex more range based by @LLFourn in #1324
- fix(wallet): remove the generic from wallet by @rustaceanrob in #1387
- [wallet] Improve address API by @ValuedMammal in #1402
- Fix: enable blocking-https-rustls feature on esplora client by @thunderbiscuit in #1408
- Simplified
EsploraExt
API by @evanlinjin in #1380 - Add new crate
bdk-persist
by @rustaceanrob in #1412 - Introduce universal sync/full-scan structures for spk-based syncing by @evanlinjin in #1413
- fix: Cargo clippy lints by @danielabrozzoni in #1421
- Bump bdk version to 1.0.0-alpha.10 by @danielabrozzoni in #1420
New Contributors
- @rustaceanrob made their first contribution in #1387
Full Changelog: v1.0.0-alpha.9...v1.0.0-alpha.10