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 | 2× |
| neuron identity | 64 bytes | 32 bytes | 2× |
| Merkle node | 128 bytes | 64 bytes | 2× |
| NMT node | 192 bytes | 128 bytes | 1.5× |
| WHIR commitment | 64 bytes | 32 bytes | 2× |
| nox noun identity | 64 bytes | 32 bytes | 2× |
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