mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-04-25 07:09:59 -07:00
97 lines
3.7 KiB
Rust
97 lines
3.7 KiB
Rust
use std::{env, path::Path};
|
|
|
|
use brk_indexer::Indexer;
|
|
use brk_types::{Height, P2PKHAddressIndex, P2SHAddressIndex, TxOutIndex, TypeIndex};
|
|
use vecdb::GenericStoredVec;
|
|
|
|
fn main() -> color_eyre::Result<()> {
|
|
color_eyre::install()?;
|
|
|
|
let outputs_dir = Path::new(&env::var("HOME").unwrap()).join(".brk");
|
|
|
|
let indexer = Indexer::forced_import(&outputs_dir)?;
|
|
|
|
let reader_outputtype = indexer.vecs.txoutindex_to_outputtype.create_reader();
|
|
let reader_typeindex = indexer.vecs.txoutindex_to_typeindex.create_reader();
|
|
let reader_txindex = indexer.vecs.txoutindex_to_txindex.create_reader();
|
|
let reader_txid = indexer.vecs.txindex_to_txid.create_reader();
|
|
let reader_height_to_first_txoutindex = indexer.vecs.height_to_first_txoutindex.create_reader();
|
|
let reader_p2pkh = indexer.vecs.p2pkhaddressindex_to_p2pkhbytes.create_reader();
|
|
let reader_p2sh = indexer.vecs.p2shaddressindex_to_p2shbytes.create_reader();
|
|
|
|
// Check what's stored at typeindex 254909199 in both P2PKH and P2SH vecs
|
|
let typeindex = TypeIndex::from(254909199_usize);
|
|
|
|
let p2pkh_bytes = indexer
|
|
.vecs
|
|
.p2pkhaddressindex_to_p2pkhbytes
|
|
.read(P2PKHAddressIndex::from(typeindex), &reader_p2pkh);
|
|
println!("P2PKH at typeindex 254909199: {:?}", p2pkh_bytes);
|
|
|
|
let p2sh_bytes = indexer
|
|
.vecs
|
|
.p2shaddressindex_to_p2shbytes
|
|
.read(P2SHAddressIndex::from(typeindex), &reader_p2sh);
|
|
println!("P2SH at typeindex 254909199: {:?}", p2sh_bytes);
|
|
|
|
// Check first P2SH index at height 476152
|
|
let reader_first_p2sh = indexer.vecs.height_to_first_p2shaddressindex.create_reader();
|
|
let reader_first_p2pkh = indexer.vecs.height_to_first_p2pkhaddressindex.create_reader();
|
|
let first_p2sh_at_476152 = indexer.vecs.height_to_first_p2shaddressindex.read(Height::from(476152_usize), &reader_first_p2sh);
|
|
let first_p2pkh_at_476152 = indexer.vecs.height_to_first_p2pkhaddressindex.read(Height::from(476152_usize), &reader_first_p2pkh);
|
|
println!("First P2SH index at height 476152: {:?}", first_p2sh_at_476152);
|
|
println!("First P2PKH index at height 476152: {:?}", first_p2pkh_at_476152);
|
|
|
|
// Check the problematic txoutindexes found during debugging
|
|
for txoutindex_usize in [653399433_usize, 653399443_usize] {
|
|
let txoutindex = TxOutIndex::from(txoutindex_usize);
|
|
let outputtype = indexer
|
|
.vecs
|
|
.txoutindex_to_outputtype
|
|
.read(txoutindex, &reader_outputtype)
|
|
.unwrap();
|
|
let typeindex = indexer
|
|
.vecs
|
|
.txoutindex_to_typeindex
|
|
.read(txoutindex, &reader_typeindex)
|
|
.unwrap();
|
|
let txindex = indexer
|
|
.vecs
|
|
.txoutindex_to_txindex
|
|
.read(txoutindex, &reader_txindex)
|
|
.unwrap();
|
|
let txid = indexer
|
|
.vecs
|
|
.txindex_to_txid
|
|
.read(txindex, &reader_txid)
|
|
.unwrap();
|
|
|
|
// Find height by binary search
|
|
let mut height = Height::from(0_usize);
|
|
for h in 0..900_000_usize {
|
|
let first_txoutindex = indexer
|
|
.vecs
|
|
.height_to_first_txoutindex
|
|
.read(Height::from(h), &reader_height_to_first_txoutindex);
|
|
if let Ok(first) = first_txoutindex {
|
|
if usize::from(first) > txoutindex_usize {
|
|
break;
|
|
}
|
|
height = Height::from(h);
|
|
}
|
|
}
|
|
|
|
println!(
|
|
"txoutindex={}, outputtype={:?}, typeindex={}, txindex={}, txid={}, height={}",
|
|
txoutindex_usize,
|
|
outputtype,
|
|
usize::from(typeindex),
|
|
usize::from(txindex),
|
|
txid,
|
|
usize::from(height)
|
|
);
|
|
}
|
|
|
|
Ok(())
|
|
}
|