# Modern ZK Crypto - Session 1 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. ## Why are we interested in modern ZK? For an overview of high-level topics and trends in modern ZK, and why the technology is important we highly recommend this [hour-long panel](https://www.youtube.com/watch?v=hBupNf1igbY). This panel is aimed at an audience with technical literacy but no ZK-specific background. ## What is this course about? You can find all of this information on the [course homepage](https://zkiap.com). ## Logistics You can find all of the information in these slides on the [course homepage](https://zkiap.com). ### A note about pre-reqs We expect to move pretty fast, and we assume a solid mathematical foundation. This foundation is mostly necessary for fully understanding everything going on, building a project, etc. Lectures 5 through 9 (covering the construction of ZK proving stacks) in particular will absolutely require a level of comfort with the mathematical prereqs listed in the course description. Without the appropriate level of background, this course will be difficult to follow. ### Time Commitments There are a few different levels of participation. **For students who are just "looking around"**: - If you'd just like to follow along with lectures, you're welcome to attend classes. There are three 90-minute sessions per week. - Students who are interested in getting a little more hands-on, but who don't have too much more time beyond that, may be interested in also completing the ungraded psets and coming by Office Hours (or asking in Discord) to check their work. Psets are not meant to be extremely extensive; they are mostly understanding exercises. - Students who attend sessions 5 to 9 (or at least most of these!) may be interested in also participating in the PLONKathon at the end of the third week. **For students who are interested in seriously diving into ZK**: - Students who are interested in getting hands-on experience are highly recommended to participate in the project component of the class. - We also highly recommend that you attend most Office Hours, especially starting week 2. Office Hours are a good time to ask questions and work on your project. We'll also get into some additional ZK topics (some impromptu and some prepared) during office hours. - The PLONKathon will likely be a particularly valuable way to shore up your understanding. Students working on a project can either: - Work on their projects during the PLONKathon, as mentors will be around to help out. - Work on the PLONKathon labs during the weekend, and work on the project during Week 3/4 weekdays. (Of course, you should only pick this option if you're willing to make enough of a commitment to the course that you think you can do both!) ## Schedule Notably, the first week serves as an "introduction" to the content, from which you can decide whether or not you want to join on as a full participant in the course, follow along with the material more passively, or drop the program altogether. The full Discord will be opened at the end of the first week. ## What is a ZKP? For a more formal reference on the properties of ZKPs, see [here](https://crypto.stanford.edu/pbc/notes/crypto/zk.html). ### Anonymous Voting Digression I highly recommend Vitalik Buterin's explainer on zkSNARK app design patterns [here](https://vitalik.ca/general/2022/06/15/using_snarks.html). In this section, we've given a very rapid fly-by overview of the first four-ish sections of this blog post. ## 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. - For folks coming from complexity theory: [a succinct story of zero-knowledge](https://nibnalin.me/dust-nib/a-succinct-story-of-zero-knowledge.html) - [ZCash: What are zkSNARKs?](https://z.cash/technology/zksnarks/) (intro section only; the rest of this starts going deeper into the math) - ## 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](https://0xparc.org/blog/zkrepl), or watch Kevin Kwok's talk [here](https://www.youtube.com/watch?v=xoN3Ph836n4&list=PLJijNYoOwnssZzIIxfochRxo5QRW5Uvfg&index=16). ## ZK Applications See the exercises for more info! ## Additional Resources We also recommend Dan Boneh's [CS 251 lectures](https://cs251.stanford.edu/syllabus.html) (Lectures 14 and 15) on zkSNARKs. Previous versions of this course (versions with a more applied focus) are also hosted at learn.0xparc.org.