A Series On Hash Functions
The development and use of integrity/zero-knowledge (ZK) proofs has accelerated over the past few years. The introduction of general purpose ZK virtual machines, which allow us to write and prove Rust code, has made developing verifiable applications easier and faster. We have blockchains like Mina that prove every block and maintain a succinct state, showing the capabilities of this transformative technology. Additionally, we see the development of prover networks and progress towards client-side proving, thus reducing the cost of generating these proofs. The only thing hindering the mass adoption of ZK is high verification costs and low throughput. Aligned provides a solution to these problems without increasing latency.
Among the proof systems used in the industry, STARKs have gained dominance due to their performance, more straightforward security assumptions, and ease of recursion (which lets you merge several proofs into one). At the heart of this proof system, we find Reed-Solomon codes and hash functions. Concrete efficiency and security depend on the choice of hash function used. Some hash functions are faster to run on hardware, but others have more straightforward representations as algebraic equations, leading to faster proof recursion. Hash functions are ubiquitous in cryptography, and their applications exceed the realm of STARKs.
When we start learning about cryptography or proof systems, some questions arise:
- What are hash functions?
- What are the applications of hash functions?
- What are the properties and security of hash functions?
- How do you choose the best hash function?
- How do hash functions work?
- What are the design considerations for hash functions?
- How do you arithmetize hash functions?
We have partnered with 3MI Labs to continue researching and developing new secure algorithms, products, and protocols, and to help developers understand how cryptography works. Given the importance of hash functions in cryptography and STARKs, we've decided to launch a series of posts on hash functions, covering different aspects from beginner level to more advanced topics. We hope you will enjoy them as much as we enjoy writing them.