Release v0.9.0
A new release of BDK is out: v0.9.0
(opens new window) brings support for Bitcoin Core backends, more sanity checks and bugfixes.
You can find the full v0.9.0 changelog (opens new window) on GitHub.
# What's new in v0.9.0
Below are some highlights of the new release:
# Bitcoin Core Blockchain
Backend
This release finally adds support for using a Bitcoin Core node as the Blockchain
backend for a wallet, through the RPC. This is still considered experimental for the time being, since there are a few missing
things that we'd like to add, and adding those could force us to change the API a little.
Nonetheless, if you don't mind a breaking-change later on it's already fully functional.
The backend works by importing addresses in Bitcoin Core using the importmulti
call.
Using it is pretty straightforward, here's a quick example:
let config = RpcConfig {
url: "127.0.0.1:18332".to_string(),
auth: bitcoincore_rpc::Auth::CookieFile("/home/user/.bitcoin/.cookie".into()),
network: bdk::bitcoin::Network::Testnet,
wallet_name: "wallet_name".to_string(),
skip_blocks: None,
};
let blockchain = RpcBlockchain::from_config(&config);
Similarly to the compact filters backend, the skip_blocks
field allows for starting a rescan of the blockchain at a given height rather than the genesis, saving some time. The rescan is only performed once, the
first time an address is imported. Afterwards every sync()
call will only perform a few queries on the node and it will be much faster.
# Updated TransactionDetails
Struct
To better accomodate the Bitcoin Core RPC and potentially more future new backends, the TransactionDetails
(opens new window) structure have been updated as follows:
- The
fees
field has been renamed tofee
and it has been made optional.Blockchain
backends can set this toNone
when they have no way of computing the fee of a transaction - The
timestamp
andheight
fields have been merged into an optionalConfirmationTime
(opens new window) struct
# Verify Downloaded TXs
This release also introduces an opt-in feature called verify
that can be enabled to verify the unconfirmed transactions that BDK downloads from untrusted sources like Electrum servers.
Verifying the transactions against the consensus rules can be an additional protection against some kind of attacks that could trick a wallet into creating wrong RBF (BIP 125) "bump" transactions. Check out the issue (opens new window) for more details.
# Contributors
A huge thanks to everybody who contributed to this new release with suggestions, pull requests and bug reports.
Since the v0.8.0
release around a month ago, we've had 45
new commits made by 6
different contributors for a total of 1336
additions and 266
deletions. Here's the full diff (opens new window).
A special thanks to the new contributor for this release:
- [@jb55][@jb55] - William Casarin