How does the hashing function Kerl work, i.e. how exactly is an input hashed into the standard 81-tryte-long output? I know that under the hood it uses Keccak (this is not what I am interested in).

What I am specifically wondering about is the flow of how a specific input of trytes is converted to trits, chunked up, absorbed, squeezed, digested, hashed, etc.

So for example, if we have a 2187-tryte-long input, how is this treated to arrive at a 81-tryte-long output?

  • I don't think there is any formal specification available anywhere. But there are implementations in (at least) JS, Java and Go available, which are reasonably short and which you can check to find out how exactly trits are converted to bits and back again after hashing with Keccak.
    – mihi
    Feb 10, 2018 at 0:03


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.