<ahref="https://github.com/bitcoindevkit/bdk/blob/master/LICENSE"><imgalt="MIT or Apache-2.0 Licensed"src="https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg"/></a>
<ahref="https://blog.rust-lang.org/2021/12/02/Rust-1.57.0.html"><imgalt="Rustc Version 1.57.0+"src="https://img.shields.io/badge/rustc-1.57.0%2B-lightgrey.svg"/></a>
<ahref="https://discord.gg/d7NkDKm"><imgalt="Chat on Discord"src="https://img.shields.io/discord/753336465005608961?logo=discord"></a>
- [`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`:
- [`example_cli`](./example-crates/example_cli): Library used by the `example_*` crates. Provides utilities for syncing, showing the balance, generating addresses and creating transactions without using the bdk `Wallet`.
- [`example_electrum`](./example-crates/example_electrum): A command line Bitcoin wallet application built on top of `example_cli` and the `electrum` crate. It shows the power of the bdk tools (`chain` + `file_store` + `electrum`), without depending on the main `bdk` library.
- [`wallet_esplora`](./example-crates/wallet_esplora): Uses the `Wallet` to sync and spend using the Esplora blocking interface.
- [`wallet_esplora_async`](./example-crates/wallet_esplora_async): Uses the `Wallet` to sync and spend using the Esplora asynchronous interface.
- [`wallet_electrum`](./example-crates/wallet_electrum): Uses the `Wallet` to sync and spend using Electrum.