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§

address
Bitcoin addresses.
amount
Bitcoin amounts.
base58
Bitcoin base58 encoding and decoding.
base64
Correct, fast, and configurable base64 decoding and encoding. Base64 transports binary data efficiently in contexts where only plain text is allowed.
bech32
Encoding and decoding of the Bech32 format.
bip32
BIP32 implementation.
bip152
BIP152 Compact Blocks
bip158
BIP 158 Compact Block Filters for Light Clients.
blockdata
Bitcoin block data.
consensus
Bitcoin consensus.
ecdsa
ECDSA Bitcoin signatures.
error
Contains error types and other error handling tools.
hash_types
Bitcoin hash types.
hashes
Rust hashes library.
io
Rust-Bitcoin IO Library
key
Bitcoin keys.
merkle_tree
Bitcoin merkle tree functions.
network
Bitcoin network.
p2p
Bitcoin p2p network types.
parse
Unit parsing utilities.
policy
Bitcoin policy.
pow
Proof-of-work related integer types.
psbt
Partially Signed Bitcoin Transactions.
secp256k1
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.
sighash
Signature hash implementation (used in transaction signing).
sign_message
Signature
taproot
Bitcoin Taproot.

Structs§

Address
A Bitcoin address.
Amount
Amount
Block
Bitcoin block.
BlockHash
A bitcoin block hash.
CompactTarget
Encoding of 256-bit target as 32-bit float.
CompressedPublicKey
An always-compressed Bitcoin ECDSA public key
FeeRate
Represents fee rate.
FilterHash
Filter hash, as defined in BIP-157
FilterHeader
Filter header, as defined in BIP-157
LegacySighash
Hash of a transaction according to the legacy signature algorithm.
MerkleBlock
Data structure that represents a block header paired to a partial merkle tree.
Opcode
A script Opcode.
OutPoint
A reference to a transaction output.
PrivateKey
A Bitcoin ECDSA private key
Psbt
A Partially Signed Transaction.
PubkeyHash
A hash of a public key.
PublicKey
A Bitcoin ECDSA public key
Script
Bitcoin script slice.
ScriptBuf
An owned, growable script.
ScriptHash
A hash of Bitcoin Script bytecode.
SegwitV0Sighash
Hash of a transaction according to the segwit version 0 signature algorithm.
Sequence
Bitcoin transaction input sequence number.
SignedAmount
SignedAmount
TapBranchTag
The tag used for TapNodeHash
TapLeafHash
Taproot-tagged hash with tag "TapLeaf".
TapLeafTag
The tag used for TapLeafHash
TapNodeHash
Tagged hash used in taproot trees.
TapSighash
Taproot-tagged hash with tag "TapSighash".
TapSighashTag
The tag used for TapSighash
TapTweakHash
Taproot-tagged hash with tag "TapTweak".
TapTweakTag
The tag used for TapTweakHash
Target
A 256 bit integer representing target.
Transaction
Bitcoin transaction.
TxIn
Bitcoin transaction input.
TxMerkleNode
A hash of the Merkle tree branch or root for transactions.
TxOut
Bitcoin transaction output.
Txid
A bitcoin transaction hash/transaction ID.
VarInt
A variable-length unsigned integer.
WPubkeyHash
SegWit version of a public key hash.
WScriptHash
SegWit version of a Bitcoin Script bytecode hash.
Weight
Represents block weight - the weight of a transaction or block.
Witness
The Witness is the data used to unlock bitcoin since the segwit upgrade.
WitnessCommitment
A hash corresponding to the witness structure commitment in the coinbase transaction.
WitnessMerkleNode
A hash corresponding to the Merkle tree root for witness data.
WitnessProgram
The segregated witness program.
Work
A 256 bit integer representing work.
Wtxid
A bitcoin witness transaction ID.
XKeyIdentifier
Extended key identifier as defined in BIP-32.
XOnlyPublicKey
An x-only public key, used for verification of Taproot signatures and serialized according to BIP-340.

Enums§

AddressType
The different types of addresses.
Denomination
A set of denominations in which amounts can be expressed.
EcdsaSighashType
Hashtype of an input’s signature, encoded in the last byte of the signature.
KnownHrp
Known bech32 human-readable parts.
Network
The cryptocurrency network to act on.
NetworkKind
What kind of network we are on.
TapSighashType
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.
WitnessVersion
Version of the segregated witness program.