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.
This will be covererd in more detail later, but there are plenty of great resources to understand how zkSNARKs work, their academic lineage, etc.
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 contains a listing of audited, common circuit buidling blocks. You can find many of the circuits we're discussing today in this library.
All signals in circom are field elements in the prime field of order
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.
More information on this is linked in the Modern ZK Crypto - Session 1 Exercises.
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 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.
You can check out a collection of resources for ZKML here.