Try   HackMD

Modern ZK Crypto - Session 2 Lecture Notes

How to use these notes: These notes are meant to go along with slides and recordings. If you're following along with either the slides or the course recordings, and want to dig deeper into some topic mentioned, look for the appropriate header below for additional links or context.

What is a zkSNARK?

This will be covererd in more detail later, but there are plenty of great resources to understand how zkSNARKs work, their academic lineage, etc.

circom/snarkjs/zkREPL Demo

If you're interested in infrastructure or developer tools, zkREPL is a really cool example of a useful ZK dev tool.

Read more about it here, or watch Kevin Kwok's talk here.

circomlib

circomlib contains a listing of audited, common circuit buidling blocks. You can find many of the circuits we're discussing today in this library.

Field size and BN254

All signals in circom are field elements in the prime field of order

r = 21888242871839275222246405745257275088548364400416034343698204186575808495617

This is a 254-bit prime known as the BabyJubJub prime. It's the curve order for BN254, a pairing-friendly elliptic curve used by Ethereum and (formerly) ZCash. You can read more about BN254 in Jonathan Wang's excellent document here.

ZK Applications

zkmessage

More information on this is linked in the Modern ZK Crypto - Session 1 Exercises.

Dark Forest

You can read more about Dark Forest in this blog post.

If you're interested in digging deeper, here's a video (30m) on the "decentralized incomplete information game" paradox, and some ZK constructions for decentralized games. Here's another video (30m) on why decentralized games are interesting.

Tornado Cash

Tornado Cash uses the same ZK construction as the anonymous voting app that we discussed in the first session. We dig deeper into how Tornado Cash works here, and we'll discuss it later in the course as well.

ZKML

You can check out a collection of resources for ZKML here.