brk_cohort
UTXO and address cohort filtering for on-chain analytics.
What It Enables
Slice the UTXO set and address population by age, amount, output type, halving epoch, or holder classification (STH/LTH). Build complex cohorts by combining filters for metrics like "realized cap of 1+ BTC UTXOs older than 150 days."
Key Features
- Age-based:
TimeFilter::GreaterOrEqual(hours),TimeFilter::Range(hours..hours),TimeFilter::LowerThan(hours) - Amount-based:
AmountFilter::GreaterOrEqual(Sats::_1BTC),AmountFilter::Range(Sats::_100K..Sats::_1M) - Term classification:
Term::Sth(short-term holders, <150 days),Term::Lth(long-term holders) - Epoch filters: Group by halving epoch
- Type filters: Segment by output type (P2PKH, P2TR, etc.)
- Context-aware naming: Automatic prefix generation (
utxos_,addrs_) based on cohort context - Inclusion logic: Filter hierarchy for aggregation (
Filter::includes)
Filter Types
Core API
// TimeFilter values are in hours (e.g., 3600 hours = 150 days)
let filter = Time;
// Check membership
filter.contains_time; // true (4000 hours > 3600 hours)
filter.contains_amount;
// Generate metric names (via CohortContext)
let ctx = Utxo;
ctx.full_name; // "utxos_min_age_150d"
Built On
brk_errorfor error handlingbrk_typesforSats,HalvingEpoch,OutputTypebrk_traversablefor data structure traversal