In this session, we cover the goals of the Applied ZK Learning Group, and make a conceptual introduction to zero-knowledge proofs. We discuss zkSNARKs and a few of their applications.
To ensure that we can hit the ground running, we have a handful of readings and tutorials for you to check out over the weekend. If you want to dig deeper, feel free to check out the pre-program topic sampler.
Introduction to Zero-Knowledge
If you aren't already familiar with zero-knowledge proofs conceptually, take a look at some of the articles below, and try out the interactive demo applet.
ZKPs for Engineers: Introduction (read sections "What are ZKPs" and "What are SNARKs")
[Optional] Zero Knowledge Proofs: An Illustrated Primer (section with hat example is good)
[Optional] Privacy in Cryptocurrencies: An Overview - only briefly touches on ZKPs, but helpful context for why blockchains care about this kind of privacy tech
Play with this Interactive ZK 3-coloring demo (after reading the "illustrated primer" reading). Try to answer Exercises 1 and 2 at the bottom of the page.
- Make sure that you have node.js version 14 or above installed on your system. Node version manager is a helpful tool that allows you to install and manage different node versions.
- Most of our materials and sample repos use circom 1.0, but a new release of circom (2.0) was recently published. If you wish to use circom 2.0 in your projects, you'll want Rust available on your system.
- If you have extra time, you may also be interested in playing around with Ethereum smart contracts, which are written in Solidity. Check out Austin Griffith's scaffold-eth resources.
Introduction to Ethereum
One reason that zkSNARKs are exciting is because they enable a new class of decentralized applications—applications which are able to maintain a meaningful notion of private state. This is traditionally difficult on decentralized systems because many of these systems, by design, have completely open and transparent data layers.
Some examples of decentralized applications that are made possible by zkSNARKs include marketplaces for encrypted data, "mixer" smart contracts that allow for anonymous cryptocurrency transfers, and message boards that allow for anonymous but reputation-proving message signatures.
In this program, we'll generally focus on zkSNARK applications on the Ethereum smart contract platform (though the same concepts are applicable to applications built on top of any "programmable blockchain"). If you aren't familiar with Ethereum, we highly recommend that you go through the tutorial and article series below (takes about 2-3hr).
Read About ZK Applications
If you have extra time and are curious to read about applications of zkSNARKs that currently exist in production, check out some of the articles below. We'll have an "overview of ZK Apps" session in our first week as well.