bdk_chain

Crate bitcoin

Expand description

§Rust Bitcoin Library

This is a library that supports the Bitcoin network protocol and associated primitives. It is designed for Rust programs built to work with the Bitcoin network.

Except for its dependency on libsecp256k1 (and optionally libbitcoinconsensus), this library is written entirely in Rust. It illustrates the benefits of strong type safety, including ownership and lifetime, for financial and/or cryptographic software.

See README.md for detailed documentation about development and supported environments.

§Available feature flags

  • std - the usual dependency on std (default).
  • secp-recovery - enables calculating public key from a signature and message.
  • base64 - (dependency), enables encoding of PSBTs and message signatures.
  • rand - (dependency), makes it more convenient to generate random values.
  • serde - (dependency), implements serde-based serialization and deserialization.
  • secp-lowmemory - optimizations for low-memory devices.
  • bitcoinconsensus-std - enables std in bitcoinconsensus and communicates it to this crate so it knows how to implement std::error::Error. At this time there’s a hack to achieve the same without this feature but it could happen the implementations diverge one day.
  • ordered - (dependency), adds implementations of ArbitraryOrdOrd to some structs.

Modules§

  • Bitcoin addresses.
  • Bitcoin amounts.
  • Bitcoin base58 encoding and decoding.
  • Correct, fast, and configurable base64 decoding and encoding. Base64 transports binary data efficiently in contexts where only plain text is allowed.
  • Encoding and decoding of the Bech32 format.
  • BIP32 implementation.
  • BIP152 Compact Blocks
  • BIP 158 Compact Block Filters for Light Clients.
  • Bitcoin block data.
  • Bitcoin consensus.
  • ECDSA Bitcoin signatures.
  • Contains error types and other error handling tools.
  • Bitcoin hash types.
  • Rust hashes library.
  • Rust-Bitcoin IO Library
  • Bitcoin keys.
  • Bitcoin merkle tree functions.
  • Bitcoin network.
  • Bitcoin p2p network types.
  • Unit parsing utilities.
  • Bitcoin policy.
  • Proof-of-work related integer types.
  • Partially Signed Bitcoin Transactions.
  • Rust bindings for Pieter Wuille’s secp256k1 library, which is used for fast and accurate manipulation of ECDSA signatures on the secp256k1 curve. Such signatures are used extensively by the Bitcoin network and its derivatives.
  • Signature hash implementation (used in transaction signing).
  • Signature
  • Bitcoin Taproot.

Structs§

Enums§

  • The different types of addresses.
  • A set of denominations in which amounts can be expressed.
  • Hashtype of an input’s signature, encoded in the last byte of the signature.
  • Known bech32 human-readable parts.
  • The cryptocurrency network to act on.
  • What kind of network we are on.
  • Hashtype of an input’s signature, encoded in the last byte of the signature. Fixed values so they can be cast as integer types for encoding.
  • Version of the segregated witness program.