mempool: snapshot

This commit is contained in:
nym21
2025-12-13 16:26:29 +01:00
parent 9c8b9b1a3b
commit c59ac62e45
22 changed files with 1808 additions and 582 deletions
+48 -10
View File
@@ -5,10 +5,9 @@ use brk_monitor::Mempool;
use brk_rpc::{Auth, Client};
fn main() -> Result<()> {
// Connect to Bitcoin Core
let bitcoin_dir = Client::default_bitcoin_path();
// let bitcoin_dir = Path::new("/Volumes/WD_BLACK/bitcoin");
brk_logger::init(None)?;
let bitcoin_dir = Client::default_bitcoin_path();
let client = Client::new(
Client::default_url(),
Auth::CookieFile(bitcoin_dir.join(".cookie")),
@@ -16,19 +15,58 @@ fn main() -> Result<()> {
let mempool = Mempool::new(&client);
// Start mempool sync in background thread
let mempool_clone = mempool.clone();
thread::spawn(move || {
mempool_clone.start();
});
// Access from main thread
// Poll and display stats every 5 seconds
loop {
thread::sleep(Duration::from_secs(5));
let txs = mempool.get_txs();
println!("mempool_tx_count: {}", txs.len());
let addresses = mempool.get_addresses();
println!("mempool_address_count: {}", addresses.len());
}
// Ok(())
// Basic mempool info
let info = mempool.get_info();
let block_stats = mempool.get_block_stats();
let total_fees: u64 = block_stats.iter().map(|s| u64::from(s.total_fee)).sum();
println!("\n=== Mempool Info ===");
println!(" Transactions: {}", info.count);
println!(" Total vsize: {} vB", info.vsize);
println!(
" Total fees: {:.4} BTC",
total_fees as f64 / 100_000_000.0
);
// Fee recommendations (like mempool.space)
let fees = mempool.get_fees();
println!("\n=== Recommended Fees (sat/vB) ===");
println!(" No Priority {:.4}", f64::from(fees.economy_fee));
println!(" Low Priority {:.4}", f64::from(fees.hour_fee));
println!(" Medium Priority {:.4}", f64::from(fees.half_hour_fee));
println!(" High Priority {:.4}", f64::from(fees.fastest_fee));
// Projected blocks (like mempool.space)
if !block_stats.is_empty() {
println!("\n=== Projected Blocks ===");
for (i, stats) in block_stats.iter().enumerate() {
let total_fee_btc = u64::from(stats.total_fee) as f64 / 100_000_000.0;
println!(
" Block {}: ~{:.4} sat/vB, {:.4}-{:.4} sat/vB, {:.3} BTC, {} txs",
i + 1,
f64::from(stats.median_fee_rate()),
f64::from(stats.min_fee_rate()),
f64::from(stats.max_fee_rate()),
total_fee_btc,
stats.tx_count,
);
}
}
// Address tracking stats
let addresses = mempool.get_addresses();
println!("\n=== Address Tracking ===");
println!(" Addresses with pending txs: {}", addresses.len());
println!("\n----------------------------------------");
}
}