compact output — 64-byte → 32-byte hash

reduce hemera output from 8 field elements (64 bytes) to 4 field elements (32 bytes). sponge state unchanged (16 elements, 512 bits). only the squeeze extraction changes.

squeeze change

hemera-1: output = state[0..8]     → 8 elements, 64 bytes
hemera-2: output = state[0..4]     → 4 elements, 32 bytes

for multi-block output (XOF): squeeze 4 elements, permute, squeeze 4 more.

security

property hemera-1 (64 bytes) hemera-2 (32 bytes)
classical collision 2^256 2^128
classical preimage 2^256 2^256 (capacity = 256 bits)
quantum collision (BHT) 2^170 2^85
quantum preimage (Grover) 2^128 2^128 (capacity-limited)

128-bit classical collision is the standard (SHA-256, BLAKE3, Keccak-256). preimage security governed by capacity (256 bits), not output.

birthday probability among 2^80 particles (planetary scale): 2^{80} × (2^{80} - 1) / (2 × 2^{256}) ≈ 2^{-98}. negligible.

tree hashing: 2× faster

hemera-1: binary node = 128 bytes (2 × 64) = 16 elements = 2 rate blocks = 2 permutations
hemera-2: binary node = 64 bytes (2 × 32) = 8 elements = 1 rate block = 1 permutation

single-permutation binary nodes. tree hashing throughput: ~26 MB/s → ~53 MB/s.

storage savings

every hash in the system halves:

structure hemera-1 hemera-2 savings
particle address 64 bytes 32 bytes
neuron identity 64 bytes 32 bytes
Merkle node 128 bytes 64 bytes
NMT node 192 bytes 128 bytes 1.5×
WHIR commitment 64 bytes 32 bytes
nox noun identity 64 bytes 32 bytes

planetary scale (10^24 particles): ~64 PB saved.

endofunction property

hemera-2 is an endofunction over 32-byte space: hash(32 bytes) → 32 bytes. self-hashing is a fixed-point-free permutation over the reachable set.

impact on nox encoding

hemera-1 encoding sizes: 8 (atom), 64 (hash), 128 (cell)  — 2³, 2⁶, 2⁷
hemera-2 encoding sizes: 8 (atom), 32 (hash), 64 (cell)   — 2³, 2⁵, 2⁶

nox identity = 32 bytes. computation key = 64 bytes. Rs Address (32 bytes) = hemera output. types converge.

impact on zheng-2

WHIR commitments, transcript digests, Merkle path nodes all shrink to 32 bytes. proof size reduction: ~30% (Merkle paths dominate proof bulk).

impact on bbg

BBG sub-roots already 32 bytes. binary Merkle nodes drop to 64 bytes. storage halved at every layer.

see inversion-sbox for the S-box upgrade, hemera for base specification

Dimensions

compact-output

Local Graph