2. Hashing
H(x) = SHA3-256(x).- Tagged hash:
TH(tag, x) = SHA3-256(varbytes("ARRK/" ‖ tag) ‖ x).
| Tag | Used for |
|---|---|
txid | transaction id (no witnesses) |
wtxid | transaction id including witnesses |
block | block id (the AuxPoW commits to it, §9.6) |
merkle/node | internal merkle nodes |
sighash | signature message |
spent-outputs | commitment to spent outputs |
pubkey | key hash in locks |
multisig | multisig policy hash |
asset | issued asset ids |
asset-authority | mint authority token id |
asset-control | issuer control token id |
policy | spending-policy hash in POLICY locks (§4.2) |
filter/item, filter, filter/header | compact-filter item mapping, filter hash, filter-header chain (§9.5) |
utxo/commitment | chain-state commitment over the LtHash (§9.7) |
snapshot | snapshot file checksum (§9.7.2) |
checkpoint, checkpoint/set | checkpoint signed message, signer-set id (§9.8) |
cmpct/shortid | compact-block short ids (§12.4) |
message | signed messages (§3.5) |
checkpoint/relay | P2P relay de-duplication key (not consensus) |
Merkle root over a list of 32-byte leaves:
- An empty list → 32 zero bytes. One leaf → that leaf.
- Otherwise, pair the leaves left to right,
node = TH("merkle/node", left ‖ right). An unpaired last element is promoted unchanged (never duplicated). Repeat until one hash remains.