1. Conventions
- Integers are little-endian and unsigned, with fixed width unless noted:
u8 u16 u32 u64.
- varint is Bitcoin's CompactSize:
<0xFD → 1 byte; 0xFD+u16; 0xFE+u32; 0xFF+u64.
Decoders MUST reject non-minimal encodings.
- varbytes = varint length ‖ bytes. varstr = varbytes containing strict UTF-8.
- Every decoder MUST reject trailing bytes, truncation, lengths above the stated bounds, and
unknown enum values.
- Hex in this document is lowercase. Hashes are shown in their natural byte order. Unlike
Bitcoin, Arrekta never byte-reverses hashes.