Crate bdk_chain

source ·
Expand description

This crate is a collection of core structures for Bitcoin Dev Kit.

The goal of this crate is to give wallets the mechanisms needed to:

  1. Figure out what data they need to fetch.
  2. Process the data in a way that never leads to inconsistent states.
  3. Fully index that data and expose it to be consumed without friction.

Our design goals for these mechanisms are:

  1. Data source agnostic – nothing in bdk_chain cares about where you get data from or whether you do it synchronously or asynchronously. If you know a fact about the blockchain, you can just tell bdk_chain’s APIs about it, and that information will be integrated, if it can be done consistently.
  2. Data persistence agnostic – bdk_chain does not care where you cache on-chain data, what you cache or how you retrieve it from persistent storage.


pub extern crate serde_crate as serde;
pub use bitcoin;
pub use indexed_tx_graph::IndexedTxGraph;
pub use tx_graph::TxGraph;
pub use miniscript;


Contains the IndexedTxGraph and associated types. Refer to the IndexedTxGraph documentation for more.
Module for keychain related structures.
The LocalChain is a local implementation of ChainOracle.
Helper types for spk-based blockchain clients.
Module for structures that store and traverse transactions.


A reference to a block in the canonical chain.
An Anchor implementation that also records the exact confirmation height of the transaction.
An Anchor implementation that also records the exact confirmation time and height of the transaction.
Represents the ID of a descriptor, defined as the sha256 hash of the descriptor string, checksum excluded.
A TxOut with as much data as we can retrieve about it
An iterator for derived script pubkeys.
An index storing TxOuts that have a script pubkey that matches those in a list.


Represents the observed position of some chain data.
Block height and timestamp at which a transaction is confirmed.


Maximum BIP32 derivation index.
How many confirmations are needed f or a coinbase output to be spent.


Trait that “anchors” blockchain data to a specific block of height and hash.
An Anchor that can be constructed from a given block, block height and transaction position within the block.
Trait that makes an object appendable.
Represents a service that tracks the blockchain.
A trait to extend the functionality of a miniscript descriptor.