diff --git a/specs/casper_sharding_v2.1.md b/specs/casper_sharding_v2.1.md index 0c3b70f40..9e5f8c241 100644 --- a/specs/casper_sharding_v2.1.md +++ b/specs/casper_sharding_v2.1.md @@ -443,5 +443,14 @@ Slashing conditions may include: Proof of custody no secret reveal RANDAO leak +# Appendix +## Appendix A - Hash function +The general hash function `hash(x)` in this specification is defined as: + +`hash(x) := BLAKE2b-512(x)[0:32]`, where `BLAKE2b-512` (`blake2b512`) algorithm is defined in [RFC 7693](https://tools.ietf.org/html/rfc7693) and input `x` is bytes type. + +* `BLAKE2b-512` is the *default* `BLAKE2b` algorithm with 64-byte digest size. To get a 32-byte result, the general hash function output is defined as the leftmost `32` bytes of `BLAKE2b-512` hash output. +* The design rationale is keeping using the default algorithm and avoiding too much dependency on external hash function libraries. + ## Copyright Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).