The cryptographic hashing process typically involves some form of complex operations of squeezing and fiddling bits of data, and something that lacks algebraic methods. The Pedersen hash, on the other hand, involves the combination of a few elliptic curve points. This makes them extremely useful in implementing a hashing function in Zero Knowledge Proof (ZKP) systems.
The Pedersen hash is based on the work of Torben P Pedersen on commitment schemes [1]:
The method has been given renewed focus after the Zcash team implemented it within zk-SNARK circuits for their Sapling protocol [here]:
The method
In its simplest form, a Pedersen hash is basically a way of fixing the hash of a value to an elliptic curve point:
Hash(x) = x.G
and where G is a point on the elliptic curve. With this, we should not be able to reverse the value of x.G back to x. In a more complete form, we can split the input message up into k chunks (m1, m2 … mk), and then use these…
