Skip to content

Blake2b-256 AID Requirement

Retired — superseded by the E-native contract (2026-07-16)

cardano-keri is now E-native: standard Blake3 (E-prefix) AIDs are supported as-is, with in-script blake3 (spike #88 lane-packed core) on the rare genesis/rotation paths and raw-key verification on the authorization hot path. This document is kept as the archived rationale for the earlier F-prefix decision and as the cost record that motivated it.

cardano-keri required Blake2b-256 (CESR F prefix) AID derivation; Blake3 AIDs were not supported.

Why Blake2b-256

blake2b_256 is a native Plutus builtin. With F-prefix AIDs, the full derivation chain is on-chain verifiable today, with no Plutus changes:

cesr_aid    = blake2b_256(inception_event)    — Cardano builtin
next_digest = blake2b_256(next_pubkey)        — Cardano builtin
trie_key    = blake2b_256(cbor({cur_pubkey, next_digest}))  — Cardano builtin

All three steps use the same builtin. An on-chain script can verify the full chain. This was demonstrated with a working CLI: https://github.com/lambdasistemi/cardano-keri-verify.

CESR F prefix

CESR (Composable Event Streaming Representation) encodes the hash algorithm alongside the value as a derivation code prefix. The F prefix denotes Blake2b-256 (RFC 7693). The qualified base64url value is 44 characters.

Example:

raw bytes (32):  f4a778e87cb3d6e9c9ab6e6b59a2b0e1e7c8d2f1a3b5c7d9e0f1a2b3c4d5e6f7
F-prefix qb64:   F9Kd46Hy026-mm5rm5orzh7x4tLxowtc2exeD7Gim3M

The KERI inception event's n (next-key digest) field carries this CESR-qualified value. Cardano stores only the raw 32 bytes after decoding.

The Veridian fix

Veridian's prefixer.ts does not yet implement the F prefix. The fix is approximately 40 lines. Fix branch: https://github.com/lambdasistemi/signify-ts/tree/feat/blake2b-256-prefix-derivation.

Until this merges upstream, the cardano-keri SDK bridge must apply the patch when generating KERI inception events.

Existing Blake3 AIDs

Veridian users with existing Blake3 (E prefix) AIDs cannot use cardano-keri with those identities. They must create a new identity using F-prefix derivation.

Blake3 as a Plutus builtin is not planned and not needed. cardano-keri is fully functional with Blake2b-256.