Skip to main content

bitcoin_heuristics/
lib.rs

1//! # bitcoin-heuristics
2//!
3//! Pattern detection heuristics for Bitcoin on-chain analytics.
4//!
5//! Detects consolidations, distributions, CoinJoin, fee spikes, dormant supply
6//! reactivation and more from pre-extracted [`TxFeatures`].
7//!
8//! ## Quick Start
9//!
10//! ```rust
11//! use bitcoin_heuristics::{HeuristicRegistry, TxFeatures};
12//!
13//! // Populate TxFeatures from your Bitcoin transaction parser
14//! let features = TxFeatures {
15//!     input_count: 15,
16//!     output_count: 2,
17//!     is_consolidation: true,
18//!     total_input_value: 200_000_000, // 2 BTC
19//!     is_input_script_homogeneous: true,
20//!     output_value_max: 180_000_000,
21//!     total_output_value: 199_995_000,
22//!     block_price_usd: Some(60_000.0),
23//!     ..TxFeatures::default()
24//! };
25//!
26//! let registry = HeuristicRegistry::default_registry(0.7);
27//! let matches = registry.evaluate_all(&features);
28//!
29//! for m in &matches {
30//!     println!("[{}] {} — {}", m.event_type, m.pattern, m.summary);
31//! }
32//! ```
33
34pub mod analyzers;
35pub mod errors;
36pub mod heuristics;
37pub mod match_result;
38pub mod models;
39
40pub use errors::HeuristicError;
41pub use heuristics::long_term_supply_activation::{
42    BitcoinRpc, JsonRpcClient, LongTermSupplyActivationHeuristic, TxOutInfo,
43};
44pub use heuristics::{Heuristic, HeuristicRegistry, HeuristicStatus};
45pub use match_result::HeuristicMatch;
46pub use models::{
47    encode_movement_range_log, AbsoluteFeeTier, AddressHotness, ChangeDetection, CoinJoinScore,
48    EmbeddedProtocol, EntityCategory, EntityPresence, FeeEfficiencyRatio, FeePercentileTier,
49    FeeRateTier, IoScaleTier, LightningIndicator, MultisigThreshold, ScriptType, StructuralPattern,
50    TaprootSpendPath, TimelockFingerprint, TxFeatures, TxVersionTier, UtxoAgeVariance, VsizeTier,
51};