Signing, Hashing and Key Derivation

Signing algorithm: ED25519¶

ED25519 is an elliptic curve algorithm developed in an academic setting with a focus on security from side channel attack, performance, and fixing a lot of the little annoyances in most elliptic curve systems1. However, it should be noted that instead of using SHA-512 in the key derivation function, Nano uses Blake2b.

Incorrect, SHA-512 has been used

0000000000000000000000000000000000000000000000000000000000000000 ->
3B6A27BCCEB6A42D62A3A8D02A6F0D73653215771DE243A63AC048A18B59DA29


Correct, Blake2b digested the seed

0000000000000000000000000000000000000000000000000000000000000000 ->
19D3D919475DEED4696B5D13018151D1AF88B2BD3BCFF048B45031C1F36D1858


Hashing algorithm: Blake2¶

Compared to existing cryptocurrencies, the hash algorithm chosen is much less important since it's not being used in a Proof-of-Work context. In Nano hashing is used purely as a digest algorithm against block contents. Blake2 is a highly optimized cryptographic hash function whose predecessor was a SHA3 finalist.2

Key derivation function: Argon2¶

The key derivation function of Argon2 is used for securing the account keys in the reference wallet. 3