Crate bitcoin

source ·
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.

It is also written entirely in Rust to illustrate the benefits of strong type safety, including ownership and lifetime, for financial and/or cryptographic software.

See 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.
  • no-std - enables additional features required for this crate to be usable without std. Does not disable std. Depends on core2.
  • 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.



  • Bitcoin addresses.
  • Bitcoin amounts.
  • Base58 encoder and decoder.
  • 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.
  • Bitcoin keys.
  • Bitcoin merkle tree functions.
  • Bitcoin network support.
  • Bitcoin policy.
  • Proof-of-work related integer types.
  • Partially Signed Bitcoin Transactions.
  • Signature hash implementation (used in transaction signing).
  • Signature
  • Bitcoin string parsing utilities.
  • Bitcoin Taproot.
  • Utility functions.