Closed
Description
Create a new minor release
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.
Commit
TBD
Changelog
Fixed
- Further improve unconfirmed tx conflict resolution. Further improve unconfirmed tx conflict resolution #1109
- Stuck Electrum chain sync issue. fix(electrum): fixed 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. fix(bdk): Check if we're using the correct internal key before signing #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. fix(chain): filter coinbase tx not in best chain #1202
- Esplora incorrect gap limit check in blocking client. esplora: fix incorrect gap limit check in blocking client #1225
- Loading a wallet from persistence now restores keychain indices. Fix: apply loaded changeset to indexed_graph when loading a wallet from persistence #1246
Changed
- Rename ConfirmationTimeAnchor to ConfirmationTimeHeightAnchor. chore: rename
ConfirmationTimeAnchor
toConfirmationTimeHeightAnchor
#1206 - New LocalChain now have a hardwired genesis block:
LocalChain
with 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: Add CreateTxError and use as error type for TxBuilder::finish() #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(). Add CreateTxError and use as error type for TxBuilder::finish() #1028
- Rename LocalUtxo to LocalOutput. Add
Wallet::list_output
method #1190 - MSRV is now 1.63.0 for bdk, chain, and bitcoind_rpc crates. Bump MSRV to 1.63.0 #1183
- Use a universal lookahead value for KeychainTxOutIndex and have a reasonable default. 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). cherry-pick feat(wallet)!: add
NonEmptyDatabase
variant toNewError
#1256 - In electrum_ext rename functions scan_without_keychain to sync and scan to full_scan. Refactor/rename electrum_ext and esplora_ext to have sync and full_scan functions #1235
- In esplora_ext rename functions scan_txs to sync and scan_txs_with_keychains to full_scan. Refactor/rename electrum_ext and esplora_ext to have sync and full_scan functions #1235
- Increase rust-bip39 dependency version to 2.0 Bump
bip39
dependency to v2.0 #1259
Removed
- Removed catch-all top level bdk::Error enum. Add CreateTxError and use as error type for TxBuilder::finish() #1028
- Removed impl_error macro. Add CreateTxError and use as error type for TxBuilder::finish() #1028
Added
- Add infallible Wallet get_address and get_internal_address functions. Add CreateTxError and use as error type for TxBuilder::finish() #1028
- Add Wallet::list_output method. 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. build(esplora): Add async-https-rustls flag to esplora client #1179
Checklist
Release numbering must follow Semantic Versioning. These steps assume the current master
branch development version is 1.0.0-alpha.2.
On the day of the feature freeze
Change the master
branch to the next MINOR+1 version:
- Switch to the
master
branch. - Create a new PR branch called
bump_dev_1.0.0_alpha.3
. - Bump the
bump_dev_1.0.0_alpha.3
branch to the next development MINOR+1 version.- Change the bdk
Cargo.toml
version value to1.0.0-alpha.3
. - Bump the modified crate (bitcoind_rpc, chain, and electrum) versions in their
Cargo.toml
files. - The commit message should be "Bump version to 1.0.0-alpha.3".
- Change the bdk
- Create PR and merge the
bump_dev_1.0.0-alpha.3
branch tomaster
. Bump bdk version to 1.0.0-alpha.3 #1255- Title PR "Bump bdk version to 1.0.0-alpha.3".
On the day of the release
Tag and publish new release:
- Add a tag to the
HEAD
commit in themaster
branch.- The tag name should be
v1.0.0-alpha.3
- The first line of the tag message should be "Release 1.0.0-alpha.3".
- In the body of the tag message put a copy of the Summary and Changelog for the release.
- Make sure the tag is signed, for extra safety use the explicit
--sign
flag.
- The tag name should be
- Wait for the CI to finish one last time.
- Push the new tag to the
bitcoindevkit/bdk
repo. - Publish all the updated crates to crates.io.
- Create the release on GitHub.
- Go to "tags", click on the dots on the right and select "Create Release".
- Set the title to
Release 1.0.0-alpha.3
. - In the release notes body put the Summary and Changelog.
- Use the "+ Auto-generate release notes" button to add details from included PRs.
- Until we reach a
1.0.0
release check the "Pre-release" box.
- Make sure the new release shows up on crates.io and that the docs are built correctly on docs.rs.
- Announce the release, using the Summary, on Discord, Twitter and Mastodon.
- Celebrate 🎉
Metadata
Metadata
Assignees
Type
Projects
Status
Done