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.
Green: Implemented, but not merged yet
Blue: Needs to be implemented
Yellow: Unstable, awaits confirmation
Purple: Optimizations not critical to MVP
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 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) →
Verify(public_key, message, signature) →