bitcoin_explorer
is an efficient library for reading
bitcoin-core binary blockchain file as a database (utilising multi-threading).
Go to Rust Documentation
This package deals with the binary file of another software Bitcoin Core
.
It might not be compatible with older Bitcoin Core versions.
Tested on
Bitcoin Core version v0.21.1.0-g194b9b8792d9b0798fdb570b79fa51f1d1f5ebaf
Copyright (C) 2009-2020 The Bitcoin Core developers
.
SSD allows faster performance.
Iterating through all 700000 blocks (non-connected, in sequential order) takes about 10 minutes (Windows 10, CPU Core i7-9700, Block chain data on external SSD drive connected through USB 3.1).
```rust use bitcoin_explorer::{BitcoinDB, FBlock, SBlock, Block}; use std::path::Path;
let path = Path::new("/Users/me/bitcoin");
// launch without reading txindex let db = BitcoinDB::new(path, false).unwrap();
// get block of height 600000 (in different formats) let block: Block = db.getblock(600000).unwrap(); let block: FBlock = db.getblock(600000).unwrap(); let block: SBlock = db.get_block(600000).unwrap(); ```
```rust use bitcoin_explorer::{BitcoinDB, Transaction, FTransaction, STransaction, Txid, FromHex}; use std::path::Path;
let path = Path::new("/Users/me/bitcoin");
// !!must launch with txindex=true!! let db = BitcoinDB::new(path, true).unwrap();
// get transaction // e3bf3d07d4b0375638d5f1db5255fe07ba2c4cb067cd81b84ee974b6585fb468 let txidstr = "e3bf3d07d4b0375638d5f1db5255fe07ba2c4cb067cd81b84ee974b6585fb468"; let txid = Txid::fromhex(txid_str).unwrap();
// get transactions in different formats let tx: Transaction = db.gettransaction(&txid).unwrap(); let tx: FTransaction = db.gettransaction(&txid).unwrap(); let tx: STransaction = db.get_transaction(&txid).unwrap(); ```
```rust use bitcoin_explorer::{BitcoinDB, Block, SBlock, FBlock}; use std::path::Path;
let path = Path::new("/Users/me/bitcoin");
// launch without reading txindex let db = BitcoinDB::new(path, false).unwrap();
// iterate over block from 600000 to 700000
for block in db.iter_block::
// iterate over block from 600000 to 700000
for block in db.iter_block::
// iterate over block from 600000 to 700000
for block in db.iter_block::
```rust use bitcoin_explorer::{BitcoinDB, FConnectedBlock, SConnectedBlock}; use std::path::Path;
let path = Path::new("/Users/me/bitcoin");
// launch without reading txindex let db = BitcoinDB::new(path, false).unwrap();
// iterate over block from 0 to 700000, (full format)
for block in db.iterconnectedblock::
// iterate over block from 0 to 700000, (simple format)
for block in db.iterconnectedblock::