BitcoinIdentity Type
Every BINST entity in the decoder carries a BitcoinIdentity struct linking it across all reachability layers.
#![allow(unused)] fn main() { pub struct BitcoinIdentity { /// Taproot x-only public key (32 bytes) — ROOT OF AUTHORITY. /// Controls the inscription UTXO and is the canonical identity. pub bitcoin_pubkey: [u8; 32], /// Ordinals inscription ID (e.g., "abc123...i0") pub inscription_id: Option<String>, /// Rune ID for membership token (e.g., "840000:20") pub membership_rune_id: Option<String>, /// EVM address on the current L2 (derived from or authorized by the BTC key) pub evm_address: Option<[u8; 20]>, /// HD derivation path hint (e.g., "m/86'/0'/0'/0/0") pub derivation_hint: Option<String>, } }
Field Ordering = Authority Hierarchy
bitcoin_pubkey— the root of authority (controls inscription UTXO) — requiredinscription_id— permanent identity on Bitcoinmembership_rune_id— membership token on Bitcoinevm_address— current L2 delegate (optional — changes if L2 changes)derivation_hint— wallet recovery aid
The required/optional distinction encodes the sovereignty model: Bitcoin identity is mandatory, L2 address is a transient delegate reference.