What are zero-knowledge proofs?
- Published on
What are zero-knowledge proofs?
Zero-knowledge proofs (ZKPs) are an area of cryptography that has become extremely relevant to the blockchain industry. From wikipedia: zero-knowledge proofs is a method by which one party (the prover) can prove to another party (the verifier) that a given statement is true, while avoiding conveying to the verifier any information beyond the mere fact of the statement's truth What is it that I can “prove something is true, without giving any more information about it”?
What is it that I can “prove something is true, without giving any more information about it”?
Let's think about the following analogy: I'm playing Where is Waldo? where I have to find a figure of a person in a sea of people, images, and objects. I want to convince my friends that I've found Waldo but without telling them exactly where he is so that they can continue playing. The way it's done is that I (Alice) take a large piece of cardboard, punch a hole in it, and put the large piece of cardboard on top of the game. That way I can prove that I've found Waldo, without revealing exactly where he is. When I remove the cardboard, people can continue playing without knowing any more information than they did at the start.
𝗣𝗿𝗼𝗽𝗶𝗲𝗱𝗮𝗱𝗲𝘀 𝗱𝗲 𝗭𝗞𝗣𝘀:
Integrity: If a statement is true, an honest verifier can be convinced by an honest prover that they have knowledge about that statement. Soundness: If a statement is false, no dishonest prover can unilaterally convince an honest verifier that they have knowledge about the correct information. Zero knowledge: If the state is true, then the verifier learns nothing more from the prover other than that the statement is true.
𝗜𝗺𝗽𝗼𝗿𝘁𝗮𝗻𝗰𝗶𝗮:
Due to these properties, it is possible to make the following statements in the blockchain world: (private transactions) “I can prove that I made a transaction following the rules of Ethereum” (scalability) “I can prove that these 100 transactions that I made on my Layer 2 blockchain, follow the rules of Ethereum” (interoperability) “I can prove that these tokens on blockchain A I destroyed, so that I can create the same tokens on blockchain B” (identity privacy) “I can prove that I am over 18 years old without giving any other information” (private voting) “I can prove that I can vote and it is the first time I vote in this round”
𝗥𝗲𝘀𝘂𝗺𝗲𝗻
In summary, I I would classify the potential of ZKPs into 3: Scalability Privacy Interoperability Which i) solves the Blockchain Trilemma, ii) brings privacy back iii) allows to expand the use cases enormously. Topics left out for other posts: History Dev Mindset Types of ZKPs ZKP Constructions Mathematics behind ZKPs Tooling
💡Key Ideas:
Define what outcome you want when starting to learn these topics Simplify towards the level of abstraction you want to operate Don't over complicate it!
🛠️ Build and Practice:
Reflect: are you more of a top-down approach (big picture then details) or bottom-up approach (simple detailed concepts, then building from there)?