Crate bdk_chain

source ·
Expand description

This crate is a collection of core structures for Bitcoin Dev Kit (alpha release).

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. Error-free APIs.
  3. Data persistence agnostic – bdk_chain does not care where you cache on-chain data, what you cache or how you fetch it.


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 structure and associated types.
Module for keychain related structures.
The LocalChain is a local implementation of ChainOracle.
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.
A TxOut with as much data as we can retrieve about it
Persist wraps a PersistBackend (B) to create a convenient staging area for changes (C) before they are persisted.
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.
A persistence backend for Persist.