#parser #bitcoin #crypto #blocks #tracking #optimized #data

bin+lib bitcoin-block-parser

Fast optimized parser for the bitcoin blocks data with UTXO tracking

6 releases

0.3.2 Oct 18, 2024
0.3.1 Oct 18, 2024
0.2.0 Sep 20, 2024
0.1.1 Sep 13, 2024

#680 in Magic Beans

Download history 152/week @ 2024-09-07 177/week @ 2024-09-14 80/week @ 2024-09-21 23/week @ 2024-09-28 2/week @ 2024-10-05 215/week @ 2024-10-12 135/week @ 2024-10-19

380 downloads per month

MIT license

43KB
656 lines

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();
}

Dependencies

~11MB
~149K SLoC