bitcoin-block-parser

Crates.iobitcoin-block-parser
lib.rsbitcoin-block-parser
version0.3.2
sourcesrc
created_at2024-09-13 18:26:12.981852
updated_at2024-10-18 15:00:10.031262
descriptionFast optimized parser for the bitcoin `blocks` data with UTXO tracking.
homepage
repositoryhttps://github.com/sumopool/bitcoin-block-parser
max_upload_size
id1374051
size61,812
Saigo Nanshu (sumopool)

documentation

https://docs.rs/bitcoin-block-parser

README

Bitcoin Block Parser

Crates.io Docs MIT licensed

Fast optimized parser for the bitcoin blocks data with UTXO tracking.

⚠️ The API is still evolving and should not be considered stable until release 1.0.0

Features

  • Parses blocks into the Rust bitcoin Block format for easier manipulation
  • Can track whether any TxOut in a Transaction is spent or unspent
  • Can track the Amount of every TxIn for calculating metrics such as fee rates
  • Or implement your own custom multithreaded BlockParser
  • Uses many optimizations to provide the best block parsing performance

Requirements / Benchmarks

  • You must be running a non-pruning bitcoin node (this is the default configuration)
  • You should look at the table below to understand how much RAM you need (tunable through Options)
  • We recommend using fast storage and a multithreaded CPU for best performance

Our benchmarks were run on NVMe storage with a 32-thread processor on 850,000 blocks:

Function Time Memory
DefaultParser 5 min 3.5 GB
FilterParser 17 min 9.3 GB
UtxoParser 39 min 17.5 GB

Quick Usage

use bitcoin_block_parser::*;

// Iterates over all the blocks in the directory
for block in DefaultParser.parse_dir("/home/user/.bitcoin/blocks").unwrap() {
  // Do whatever you want with the parsed block here
  block.unwrap().check_witness_commitment();
}
Commit count: 14

cargo fmt