Disclaimer: This is a work in progress. While we do not expect it to change significantly, the details, especially parameter values, may change. As such, concrete values and details described here may not reflect the current state of the codebase.


Color Legend

Default: Implemented

Green: Implemented, but not merged yet

Blue: Needs to be implemented

Yellow: Unstable, awaits confirmation

Purple: Optimizations not critical to MVP

Essential Primitives


Hashes provide succinct commitments to arbitrary data.

hash(message) generally denotes BLAKE2b-256 unless otherwise specified.

keyed_hash(key, message) denotes keyed BLAKE2b-256 hash.

Substrate primitives (i.e., block hashing) use BLAKE2b-256 as well.

Digital Signature

Digital signatures secure different parts of consensus by providing a means of authentication.

We currently use Schnorr/Ristretto x25519 (also known as sr25519) as key derivation and signing algorithm (with the schnorrkel library).

Non-canonical Schnorr signature:

Sign(secret_key, message)signature

Verify(public_key, message, signature)bool