The bdk
libraries aim to provide well engineered and reviewed components for Bitcoin wallets and other applications.
They are built upon the excellent rust-bitcoin
and rust-miniscript
crates.
The workspace in this repository contains several crates in the /crates
directory:
Sub-Directory | Description | Badges |
---|---|---|
chain |
Tools for storing and indexing chain data. | |
core |
A collection of core structures used by the bdk_chain , bdk_wallet , and BDK's chain data source crates. |
|
esplora |
Extends the esplora-client crate with methods to fetch chain data from an esplora HTTP server in the form that bdk_chain and Wallet can consume. |
|
electrum |
Extends the electrum-client crate with methods to fetch chain data from an electrum server in the form that bdk_chain and Wallet can consume. |
|
bitcoind_rpc |
Extends bitcoincore-rpc for emitting blockchain data from the bitcoind RPC interface in the form that bdk_chain and Wallet can consume. |
|
file_store |
Persistence backend for storing chain data in a single file. Intended for testing and development purposes, not for production. |
The bdk_wallet
repository and crate contains a higher level Wallet
type that depends on the above lower-level mechanism crates.
Fully working examples of how to use these components are in /examples
:
example_cli
: Library used by theexample_*
crates. Provides utilities for syncing, showing the balance, generating addresses and creating transactions without using the bdk_walletWallet
.example_electrum
: A command line Bitcoin wallet application built on top ofexample_cli
and theelectrum
crate. It shows the power of the bdk tools (chain
+file_store
+electrum
), without depending on the mainbdk_wallet
library.example_esplora
: A command line Bitcoin wallet application built on top ofexample_cli
and theesplora
crate. It shows the power of the bdk tools (chain
+file_store
+esplora
), without depending on the mainbdk_wallet
library.example_bitcoind_rpc_polling
: A command line Bitcoin wallet application built on top ofexample_cli
and thebitcoind_rpc
crate. It shows the power of the bdk tools (chain
+file_store
+bitcoind_rpc
), without depending on the mainbdk_wallet
library.
The following BDK crates maintains a MSRV of 1.63.0. To build these crates with the MSRV of 1.63.0 you will need to pin dependencies by running the pin-msrv.sh
script.
bdk_core
bdk_chain
bdk_bitcoind_rpc
bdk_esplora
bdk_file_store
The MSRV of the bdk_electrum
crate is 1.75.0.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.