The Bitcoin Dev Kit
A suite of libraries for building modern, lightweight, descriptor-based wallets written in Rust!
Project Homepage
About
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.
Architecture
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_cliand theelectrumcrate. It shows the power of the bdk tools (chain+file_store+electrum), without depending on the mainbdk_walletlibrary.example_esplora: A command line Bitcoin wallet application built on top ofexample_cliand theesploracrate. It shows the power of the bdk tools (chain+file_store+esplora), without depending on the mainbdk_walletlibrary.example_bitcoind_rpc_polling: A command line Bitcoin wallet application built on top ofexample_cliand thebitcoind_rpccrate. It shows the power of the bdk tools (chain+file_store+bitcoind_rpc), without depending on the mainbdk_walletlibrary.
Minimum Supported Rust Version (MSRV)
The following BDK crates maintains a MSRV of 1.85.0. To build these crates with the MSRV of 1.85.0 you will need to pin dependencies by running the pin-msrv.sh script.
bdk_corebdk_chainbdk_bitcoind_rpcbdk_esplorabdk_file_storebdk_electrum
Just
This project has a justfile for easy command running. You must have just installed.
To see a list of available recipes: just
License
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.
Contribution
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.
