Bitcoin Block Parser
Blazing fast parser for bitcoin blocks
data with input amount and output spend 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 if any
TxOut
is spent or unspent for calculations on the UTXO set - Can track the
TxOut
of everyTxIn
for calculating metrics such as fee rates - Multithreaded in-memory parsing provides fast block parsing performance
Requirements / Benchmarks
- You must be running a non-pruning bitcoin node (this is the default configuration)
- We recommend using fast storage (e.g. NVMe) and a multithreaded CPU for best performance
- See benchmarks below to understand how much RAM you may need:
Function | Time | Memory |
---|---|---|
BlockParser::parse() Parses blocks |
2m 55s | 0.9 GB |
UtxoParser::create_filter() Create a new filter |
15m 12s | 2.6 GB |
UtxoParser::parse() Parse with existing filter |
18m 30s | 12.1 GB |
Our benchmarks were run on NVMe storage with a 32-thread processor on 800,000 blocks.
Quick Usage
See BlockParser
for details on how to parse blocks:
use *;
// Initialize a logger (if you want to monitor parsing progress)
builder.filter_level.init;
// Parse all blocks in the directory and map them to total_size
let parser = new.unwrap;
for size in parser.parse
See UtxoParser
for details on how to track inputs and outputs:
use *;
// Load a filter file or create a new one for tracking output status
let parser = new;
for txdata in parser.parse.unwrap