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.

Re-exports§

pub extern crate bdk_core;
pub extern crate rusqlite;
pub extern crate serde;
pub use indexed_tx_graph::IndexedTxGraph;
pub use indexer::spk_txout;
pub use indexer::Indexer;
pub use tx_graph::TxGraph;
pub use indexer::keychain_txout;
pub use bitcoin;
pub use miniscript;

Modules§

bitcoin
Rust Bitcoin Library
indexed_tx_graph
Contains the IndexedTxGraph and associated types. Refer to the IndexedTxGraph documentation for more.
indexer
Indexer provides utilities for indexing transaction data.
local_chain
The LocalChain is a local implementation of ChainOracle.
rusqlite_impl
Support for persisting bdk_chain structures to SQLite using [rusqlite].
spk_client
Helper types for spk-based blockchain clients.
tx_graph
Module for structures that store and traverse transactions.

Structs§

Balance
Balance, differentiated into various categories.
BlockId
A reference to a block in the canonical chain.
CanonicalIter
Iterates over canonical txs.
CheckPoint
A checkpoint is a node of a reference-counted linked list of BlockIds.
CheckPointIter
Iterates over checkpoints backwards.
ConfirmationBlockTime
Represents the confirmation block and time of a transaction.
DescriptorId
Represents the unique ID of a descriptor.
FullTxOut
A TxOut with as much data as we can retrieve about it
Impl
A wrapper that we use to impl remote traits for types in our crate or dependency crates.
SpkIterator
An iterator for derived script pubkeys.
TxPosInBlock
Set of parameters sufficient to construct an Anchor.
TxUpdate
Data object used to communicate updates about relevant transactions from some chain data source to the core model (usually a bdk_chain::TxGraph).

Enums§

CanonicalReason
The reason why a transaction is canonical.
ChainPosition
Represents the observed position of some chain data.
ObservedIn
Represents when and where a transaction was last observed in.

Constants§

BIP32_MAX_INDEX
Maximum BIP32 derivation index.

Traits§

Anchor
Trait that “anchors” blockchain data to a specific block of height and hash.
ChainOracle
Represents a service that tracks the blockchain.
DescriptorExt
A trait to extend the functionality of a miniscript descriptor.
Merge
Trait that makes an object mergeable.

Type Aliases§

Indexed
A tuple of keychain index and T representing the indexed value.
KeychainIndexed
A tuple of keychain K, derivation index (u32) and a T associated with them.