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.

Readings

Understanding ZKPs Through Illustrated Examples

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

Quests

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.

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).

Development Environment