19 releases
Uses new Rust 2024
| 0.1.9 | Feb 13, 2026 |
|---|---|
| 0.1.8 | Feb 13, 2026 |
| 0.1.2 | Jan 29, 2026 |
| 0.1.0-alpha.1 | Dec 21, 2025 |
#18 in #brk
117 downloads per month
Used in 18 crates
520KB
17K
SLoC
brk_types
Domain types for Bitcoin data analysis with serialization and indexing support.
What It Enables
Work with Bitcoin primitives (heights, satoshis, addresses, transactions) through purpose-built types that handle encoding, arithmetic, time conversions, and database storage automatically.
Key Features
- Bitcoin primitives:
Height,Sats,Txid,BlockHash,Outpointwith full arithmetic and conversion support - Address types: All output types (P2PK33, P2PK65, P2PKH, P2MS, P2SH, P2WPKH, P2WSH, P2TR, P2A, OP_RETURN) with address index variants
- Time indexes:
DateIndex,WeekIndex,MonthIndex,QuarterIndex,SemesterIndex,YearIndex,DecadeIndexwith cross-index conversion - Protocol types:
DifficultyEpoch,HalvingEpoch,TxVersion,RawLocktime - Financial types:
Dollars,Cents,OHLC(Open/High/Low/Close) - Serialization: Serde + JSON Schema generation via schemars
- Compression: PCO (Pco) derive for columnar compression in vecdb
Type Categories
| Category | Examples |
|---|---|
| Block metadata | Height, BlockHash, BlockTimestamp, BlkPosition |
| Transaction | Txid, TxIndex, TxIn, TxOut, Vsize, Weight |
| Address | P2PKHAddressIndex, P2TRBytes, AnyAddressIndex, AddressStats |
| Value | Sats, Dollars, Cents, Bitcoin |
| Time | Date, DateIndex, WeekIndex, MonthIndex, ... |
| Metric | Metric, MetricData, MetricSelection |
| API | Pagination, Health, RecommendedFees, MempoolInfo |
Core API
All types implement standard traits: Debug, Clone, Serialize, Deserialize, plus domain-specific operations like CheckedSub, Formattable, and PrintableIndex.
use brk_types::{Height, Sats, DateIndex, Date};
let height = Height::new(840_000);
let reward = Sats::FIFTY_BTC / 16; // Post-4th-halving reward
let date_idx = DateIndex::try_from(Date::new(2024, 4, 20))?;
Built On
brk_errorfor error handling
Dependencies
~21MB
~339K SLoC