These days, I gave a talk about Zero Knowledge Proof, my slides at: “Gentle” Introduction to Zero Knowledge Proof for Blockchain Developers. In this post, I want to share my main sources for that talk.
A “Gentle” Introduction
First, there is an excellent collection of resources at Awesome zero knowledge proof (zkp) by MatterLabs.
A similar resource, but as a site, is at Zero-Knowledge Proofs.
The initial paper to read (if you are interested in historical notes) at The Knowledge Complexity of Interactive Proof-Systems
A good introduction to that paper and zkp ideas at Zero Knowledge Proofs: An illustrated primer.
The initial paper was oriented to Interactive proof systems. Then, a paper that describes non-interactive ones: Non-interactive zero-knowledge and its application.
Trying to understand the process involved in current non-interactive ZKP Demostrate how Zero-Knowledge Proofs work without using maths.
Comparing two popular approaches: SNARKs and STARKs. A Small Difference with Big Implications.
Not so “gentle” introduction
Now, more hard-core math related information.
To understand the process to obtain a proof, read Vitalik Buterin posts about SNARKS:
and about STARKs:
In my talk, I briefly commented about zkSNARKs steps from code to proof. My main sources:
What are zk-SNARKs? from Zcash
Explaining SNARKs Part I: Homomorphic Hidings where some E(x) functions are presented with the interesting property of: having E(x) and E(y) you can calculate E(x+y)
Explaining SNARKs Part II: Blind Evaluation of Polynomials where using homorphic hiding we can evaluate polynomials and check the result without revealing the original value s.
Explaining SNARKs Part III: The Knowledge of Coefficient Test and Assumption additional operations to confirm the evaluation of polynomial are related.
Explaining SNARKs Part IV: How to make Blind Evaluation of Polynomials Verifiable assuring that Alice calculation E(P(s)) is verified by Bob.
Explaining SNARKs Part V: From Computations to Polynomials from code to circuits to polynomials, a critical step in this implementation. Read paper about Algebraic methods for interactive proof systems.
Explaining SNARKs Part VI: The Pinocchio Protocol the interactive proof using the Pinocchio Protocol.
Explaining SNARKs Part VII: Pairings of Elliptic Curves presenting the Common Reference String and the non-interactive implementation.
It’s not an easy topic, but it is VERY interesting, spanning many math topics, beyond the use in blockchain and cryptography.
Angel “Java” Lopez