# The Bitcoin Dev Kit

BDK

A modern, lightweight, descriptor-based wallet library written in Rust!

Crate Info MIT or Apache-2.0 Licensed CI Status API Docs Rustc Version 1.57.0+ Chat on Discord

Project Homepage | Documentation

## About The `bdk` libraries aims to provide well engineered and reviewed components for Bitcoin based applications. It is built upon the excellent [`rust-bitcoin`] and [`rust-miniscript`] crates. > ⚠ The Bitcoin Dev Kit developers are in the process of releasing a `v1.0` which is a fundamental re-write of how the library works. > See for some background on this project: https://bitcoindevkit.org/blog/road-to-bdk-1/ (ignore the timeline 😁) > For a release timeline see the [`bdk_core_staging`] repo where a lot of the component work is being done. The plan is that everything in the `bdk_core_staging` repo will be moved into the `crates` directory here. ## Architecture The project is split up into several crates in the `/crates` directory: - [`bdk`](./crates/bdk): Contains the central high level `Wallet` type that is built from the low-level mechanisms provided by the other components - [`chain`](./crates/chain): Tools for storing and indexing chain data - [`file_store`](./crates/file_store): A (experimental) persistence backend for storing chain data in a single file. - [`esplora`](./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`](./crates/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. Fully working examples of how to use these components are in `/example-crates` [`bdk_core_staging`]: https://github.com/LLFourn/bdk_core_staging [`rust-miniscript`]: https://github.com/rust-bitcoin/rust-miniscript [`rust-bitcoin`]: https://github.com/rust-bitcoin/rust-bitcoin [`esplora-client`]: https://docs.rs/esplora-client/0.3.0/esplora_client/ [`electrum-client`]: https://docs.rs/electrum-client/0.13.0/electrum_client/ ## Minimum Supported Rust Version (MSRV) This library should compile with any combination of features with Rust 1.57.0. To build with the MSRV you will need to pin dependencies as follows: ``` # log 0.4.19 has MSRV 1.60.0+ cargo update -p log --precise "0.4.18" # tempfile 3.7.0 has MSRV 1.63.0 cargo update -p tempfile --precise "3.6.0" ```