brk_types

Crates.iobrk_types
lib.rsbrk_types
version0.1.0-beta.0
created_at2025-12-18 22:16:44.018252+00
updated_at2026-01-25 13:21:18.772076+00
descriptionStructs used throughout BRK
homepagehttps://bitcoinresearchkit.org
repositoryhttps://github.com/bitcoinresearchkit/brk
max_upload_size
id1993653
size469,712
(nym21)

documentation

README

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, Outpoint with 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, DecadeIndex with 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_error for error handling
Commit count: 1045

cargo fmt