1<!DOCTYPE html> 2 3<!-- Including emoji support --> 4<link href="https://emoji-css.afeld.me/emoji.css" rel="stylesheet"> 5 6<!-- Including Lexend font --> 7<link href='https://fonts.googleapis.com/css?family=Lexend' rel='stylesheet'> 8 9<html lang="en"> 10 <head> 11 <title>ZKDL Camp</title> 12 <link rel="icon" type="image/x-icon" href="/images/favicon.ico"> 13 <meta charset="UTF-8"> 14 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 15 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 16 17 <!-- HTML Meta Tags --> 18 <link rel="canonical" href="https://zkdl-camp.github.io/"> 19 <meta name="description" content="Internal Lectures on Zero-Knowledge Proving Systems at Distributed Lab"> 20 <meta name=ârobotsâ content="index, follow"> 21 22 <!-- Twitter Meta Tags --> 23 <meta name="twitter:card" content="summary_large_image"> 24 <meta name="twitter:site" content="zkdl-camp.github.io"> 25 <meta property="og:site_name" content="ZKDL Camp"> 26 <meta name="twitter:creator" content="Distributed Lab"> 27 <meta name="twitter:title" content="ZKDL Camp"> 28 <meta name="twitter:description" content="Internal Lectures on Zero-Knowledge Proving Systems at Distributed Lab"> 29 <meta name="twitter:image" content="/images/preview.png"> 30 31 <!-- Facebook Meta Tags --> 32 <meta property="og:url" content="https://zkdl-camp.github.io/" /> 33 <meta property="og:type" content="website"> 34 <meta property="og:title" content="ZKDL Camp" /> 35 <meta property="og:description" content="Internal Lectures on Zero-Knowledge Proving Systems at Distributed Lab" /> 36 <meta property="og:image" content="/images/preview.png" /> 37 <meta property="og:locale" content="en_GB" /> 38 39 <!-- CSS Style --> 40 <link rel="stylesheet" href="styles/main/main.css"> 41 </head> 42 <body> 43 <!-- ZKDL Header --> 44 <div class="title-block"> 45 <h1 class="title-text"> ZKDL <br/> Camp </h1> 46 </div> 47 48 <!-- About Section --> 49 <div class="about-block"> 50 <h1 class="section-header"> About </h1> 51 52 <p> 53 <b> ZKDL Camp </b> is a series of lectures on zero-knowledge (ZK) proofs, conducted at <a href="https://distributedlab.com/">Distributed Lab</a>, in which we explore "from scratch" how modern <i>zk-SNARKs</i> such as <i>Groth16</i>, <i>PlonK</i>, <i>GKR</i> work, including all the mathematical components they rely on. 54 </p> 55 <p> 56 Note that this course is designed for a full low-level understanding of these protocols and, accordingly, all the mathematics on which they are based. That is why the course covers not only ZK theory itself and its applications, but also the basic mathematics level needed to understand ZK and cryptography in general. 57 </p> 58 </div> 59 60 <!-- About Section --> 61 <div class="summary-block"> 62 <h1 class="section-header"> Book </h1> 63 <p> 64 Based on the lecture material, we composed a book, which is 65 available by the link below. Note that the book is still in 66 active development, and we are looking forward to your feedback 67 on it. If you want to contribute, visit our <a 68 href="https://github.com/ZKDL-Camp/lectures-tex">GitHub 69 Repository</a> and leave your comments or pull requests. 70 </p> 71 72 <div class="book-container"> 73 <img src="images/book_cover.png" alt="Book Cover" class="book-cover"> 74 <div class="button-container"></div> 75 <a href="files/summary/lecture-notes.pdf" class="open-book-button" target="_blank">Open Book</a> 76 </div> 77 </div> 78 </div> 79 80 <!-- Lectures Section --> 81 <div class="lectures-block"> 82 <h1 class="section-header"> Lectures </h1> 83 84 <!-- Lecture 18 --> 85 <div class="lecture-card"> 86 <div class="lecture-card-head"> 87 <div class="lecture-card-preview"> 88 <img src="images/lecture-previews/lecture_18.png" class="preview"> 89 </div> 90 <div class="lecture-card-content"> 91 <div class="lecture-card-header"> 92 <h2 class="lecture-card-title"> Lecture 18: UltraGroth </h2> 93 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Dmytro Zakharov </p> 94 </div> 95 96 <div class="lecture-card-content"> 97 <p class="lecture-card-description"> 98 <strong>Content.</strong> Embedding lookup checks 99 into Groth16 is unfortunately currently impossible. 100 UltraGroth is a protocol designed to insignificantly 101 modify Groth16 to introduce lookup checks that 102 optimize arithmetical circuits written over R1CS. In 103 this lecture, we consider the construction of UltraGroth, 104 how to build interactive protocol over multi-round QAP, and efficie
104ncy 105 of such construction. 106 </p> 107 </div> 108 </div> 109 </div> 110 <div class="lecture-links-section"> 111 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 112 113 <div class="lecture-links-list"> 114 <a href="https://hackmd.io/@ZamDimon/SkFGEXbKgx" class="lecture-link"> 115 <img src="images/icons/hackmd.png"> 116 <p class="link-name"> Lecture Notes </p> 117 </a> 118 119 <a href="files/slides/18-ultragroth-informal.pdf" class="lecture-link"> 120 <img src="images/icons/slides_icon.png"> 121 <p class="link-name"> High-level Overview </p> 122 </a> 123 124 <a href="files/slides/18-ultragroth-formal.pdf" class="lecture-link"> 125 <img src="images/icons/slides_icon.png"> 126 <p class="link-name"> Technical Slides </p> 127 </a> 128 </div> 129 130 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 131 <ul> 132 <li> <a href="https://hackmd.io/@Merlin404/Hy_O2Gi-h"> "UltraGroth" </a> by Lev Soukhanov: original blog on UltraGroth construction. </li> 133 <li> <a href="https://mirror.xyz/0x90699B5A52BccbdFe73d5c9F3d039a33fb2D1AF6/T4lHiBlo7VoYp-5SEuitQnY7_ullpwkZbanOOwjeZI4"> "Implementing Lookups in Groth: The second ingredient to reduce Bionettaâs constraints" </a> by Illia Dovhopolyi, Artem Sdobnov, Dmytro Zakharov: application of UltraGroth to zero-knowledge Machine Learning (zkML) problem. </li> 134 </ul> 135 </div> 136 </div> 137 138 <!-- Lecture 17 --> 139 <div class="lecture-card"> 140 <div class="lecture-card-head"> 141 <div class="lecture-card-preview"> 142 <img src="images/lecture-previews/lecture_17.png" class="preview"> 143 </div> 144 <div class="lecture-card-content"> 145 <div class="lecture-card-header"> 146 <h2 class="lecture-card-title"> Lecture 17: Lookup Tables </h2> 147 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Dmytro Zakharov </p> 148 </div> 149 150 <div class="lecture-card-content"> 151 <p class="lecture-card-description"> 152 <strong>Content.</strong> This lecture introduces 153 a powerful tool to reduce the number of constraints 154 in the arithmetical circuits representing complex 155 non-native logic in the given zero-knowledge protocol. We 156 consider two widely used lookup protocols: plookup and 157 logup. 158 </p> 159 </div> 160 </div> 161 </div> 162 <div class="lecture-links-section"> 163 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 164 165 <div class="lecture-links-list"> 166 <a href="files/notes/17-lookups.pdf" class="lecture-link"> 167 <img src="images/icons/lecture_notes_icon.png"> 168 <p class="link-name"> Lecture Notes </p> 169 </a> 170 171 <a href="files/slides/17-lookups.pdf" class="lecture-link"> 172 <img src="images/icons/slides_icon.png"> 173 <p class="link-name"> Slides </p> 174 </a> 175 </div> 176 177 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 178 <ul> 179 <li> <a href="https://eprint.iacr.org/2020/315"> "plookup: A simplified polynomial protocol for lookup tables" </a> by Ariel Gabizon and Zachary J. Williamson: Original plookup paper. </li> 180 <li> <a href="https://hackmd.io/@relgabizon/ByFgSDA7D"> "Multiset checks in PLONK and Plookup" </a> by Ariel Gabizon: simplified explanation of plookup protocol from its author. </li> 181 <li> <a href="https://eprint.iacr.org/2022/1530.pdf"> "Multivariate lookups based on logarithmic derivatives" </a> by Ulrich Habock: Original Logup paper. </li> 182 </ul> 183 </div> 184 </div> 185 186 <!-- Lecture 16 --> 187 <div class="lecture-card"> 188 <div class="lecture-card-head"> 189 <div class="lecture-card-preview"> 190 <img src="images/lecture-previews/lecture_16.png" class="preview"> 191 </div> 192 <div class="lecture-card-content"> 193 <div class="lecture-card-header"> 194 <h2 class="lecture-card-title"> Lecture 16: GKR and Offline Memory Checking </h2> 195 <p class="lecture-card-speaker"> <strong>Speakers:</strong> Dmytro Zakharov and Anton Levochko </p> 196 </div> 197 198 <div class="lecture-card-content"> 199 <p class="lecture-card-description"> 200 <strong>Content.</strong> This lecture introduces 201 the first application of Sum-Check protocol for 202 building SNARK over Circuit Satisfiability problem. 203 Additionally, we specify how Sum-Check is 204 used for Offline Memory Checking problem. 205 </p> 206 </div> 207 </div> 208 </div> 209 <div class="lecture-links-section"> 210 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 211 212 <div class="lecture-links-list"> 213 <a href="files/notes/16-gkr.pdf" class="lecture-link"> 214 <img src="images/icons/lecture_notes_icon.png"> 215 <p class="link-name"> Lecture Notes </p> 216 </a> 217 218 <a href="files/slides/16-gkr.pdf" class="lecture-link"> 219 <img src="images/icons/slides_icon.png"> 220 <p class="link-name"> Slides </p> 221 </a> 222 </div> 223 224 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 225 <ul> 226 <li>
226 <a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/2008-DelegatingComputation.pdf"> "Delegating Computation: Interactive Proofs for Muggles" </a> by Shafi Goldwasser, Yael Tauman Kalai, and Guy N. Rothblum: original GKR paper. </li> 227 <li> <a href="https://people.cs.georgetown.edu/jthaler/GKRNote.pdf"> "A Note on the GKR Protocol" </a> by Justin Thaler: Simplification of original GKR interactive proof for circuit evaluation. </li> 228 </ul> 229 </div> 230 </div> 231 232 <!-- Lecture 15 --> 233 <div class="lecture-card"> 234 <div class="lecture-card-head"> 235 <div class="lecture-card-preview"> 236 <img src="images/lecture-previews/lecture_15.png" class="preview"> 237 </div> 238 <div class="lecture-card-content"> 239 <div class="lecture-card-header"> 240 <h2 class="lecture-card-title"> Lecture 15: Sum-Check Protocol </h2> 241 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Dmytro Zakharov </p> 242 </div> 243 244 <div class="lecture-card-content"> 245 <p class="lecture-card-description"> 246 <strong>Content.</strong> This lecture introduces 247 Sum-Check protocol which is a cornerstone of many modern 248 zk-SNARKs. Additionally, we introduce the notion of 249 multilinear polynomials and how to encode certain problems 250 into the multilinear form. 251 </p> 252 </div> 253 </div> 254 </div> 255 256 <div class="lecture-links-section"> 257 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 258 259 <div class="lecture-links-list"> 260 <a href="files/notes/15-sum-check.pdf" class="lecture-link"> 261 <img src="images/icons/lecture_notes_icon.png"> 262 <p class="link-name"> Lecture Notes </p> 263 </a> 264 265 <a href="files/slides/15-sumcheck.pdf" class="lecture-link"> 266 <img src="images/icons/slides_icon.png"> 267 <p class="link-name"> Slides </p> 268 </a> 269 </div> 270 271 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 272 <ul> 273 <li> <a href="https://people.cs.georgetown.edu/jthaler/ProofsArgsAndZK.html"> "Proofs, Arguments, and Zero-Knowledge" </a> by Justin Thaler: Book with a comprehensive description of Sum-Check protocols, its modifications, and applications. </li> 274 <li> <a href="https://www.youtube.com/watch?v=4018OYyoAf8"> "ZKP MOOC Lecture 4: Interactive Proofs" </a> by Justin Thaler: Lecture on Interactive Protocols and, in particular, Sum-Check protocol. </li> 275 </ul> 276 </div> 277 </div> 278 279 <!-- Lecture 14 --> 280 <div class="lecture-card"> 281 <div class="lecture-card-head"> 282 <div class="lecture-card-preview"> 283 <img src="images/lecture-previews/lecture_14.png" class="preview"> 284 </div> 285 <div class="lecture-card-content"> 286 <div class="lecture-card-header"> 287 <h2 class="lecture-card-title"> Lecture 14: Bulletproofs </h2> 288 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Yevhen Hrubian </p> 289 </div> 290 291 <div class="lecture-card-content"> 292 <p class="lecture-card-description"> 293 <strong>Content.</strong> In this lecture, we consider 294 Bulletproofs. This zero-knowledge proof system has logarithmic proof size, 295 requires no trusted setup, and requires minimal cryptographic 296 assumptions: only the discrete log assumption. In this lecture,
297 we introduce inner-product argument and corresponding 298 polynomial commitment scheme, and explain how to use it 299 for range proofs and arithmetic circuits satisfiability. 300 </p> 301 </div> 302 </div> 303 </div> 304 305 <div class="lecture-links-section"> 306 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 307 308 <div class="lecture-links-list"> 309 <a href="files/notes/14-bulletproofs.pdf" class="lecture-link"> 310 <img src="images/icons/lecture_notes_icon.png"> 311 <p class="link-name"> Lecture Notes </p> 312 </a> 313 314 <a href="files/slides/14-bulletproofs-part-1.pdf" class="lecture-link"> 315 <img src="images/icons/slides_icon.png"> 316 <p class="link-name"> Slides (Part I) </p> 317 </a> 318 319 <a href="files/slides/14-bulletproofs-part-2.pdf" class="lecture-link"> 320 <img src="images/icons/slides_icon.png"> 321 <p class="link-name"> Slides (Part II) </p> 322 </a> 323 324 <!-- <a href="https://github.com/ZKDL-Camp/circom-walkthrough" class="lecture-link"> 325 <img src="images/icons/github.png"> 326 <p class="link-name"> GitHub Repo </p> 327 </a> --> 328 </div> 329 330 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 331 <ul> 332 <li> <a href="https://doc-internal.dalek.rs/bulletproofs/index.html"> "Crate bulletproofs" </a> by dalek-cryptography: A pure-Rust implementation of Bulletproofs using Ristretto. </li> 333 <li> <a href="https://eprint.iacr.org/2017/1066.pdf"> "Bulletproofs: Short Proofs for Confidential Transactions and More" </a> by Benedikt Bunz, Jonathan Bootle, Dan Boneh et al: Original Bulletproofs paper. </li> 334 <li> <a href="https://rareskills.io/post/zk-multiplication"> "Zero Knowledge Multiplication" </a> by RareSkills: Explanation of Zero-Knowledge Multiplication protocol. </li> 335 </ul> 336 </div> 337 </div> 338 339 <!-- Lecture 13 --> 340 <div class="lecture-card"> 341 <div class="lecture-card-head"> 342 <div class="lecture-card-preview"> 343 <img src="images/lecture-previews/lecture_13.png" class="preview"> 344 </div> 345 <div class="lecture-card-content"> 346 <div class="lecture-card-header"> 347 <h2 class="lecture-card-title"> Lecture 13: Number Theoretic Transform (NTT/FFT) </h2> 348 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Dmytro Zakharov </p> 349 </div> 350 351 <div class="lecture-card-content"> 352 <p class="lecture-card-description"> 353 <strong>Content.</strong> All previous lectures required (a) interpolation and (b) fast operations over polynomials. In this lecture, we consider the widely used technique to reduce the complexity of such tasks from quadratic to quasilinear. Namely, we consider: 354 <ul> 355 <li> Barycentric Interpolation. </li> 356 <li> Finite Field roots of unity. </li> 357 <li> What are NTT and Inverse NTT problems. </li> 358 <li> NTT algorithm derivation and implementation. </li> 359 </ul> 360 </p> 361 </div> 362 </div> 363 </div> 364 365 <div class="lecture-links-section"> 366 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 367 368 <div class="lecture-links-list"> 369 <a href="files/notes/13-ntt.pdf" class="lecture-link"> 370 <img src="images/icons/lecture_notes_icon.png"> 371 <p class="link-name"> Lecture Notes </p> 372 </a> 373 374 <a href="files/slides/13-ntt.pdf" class="lecture-link"> 375 <img src="images/icons/slides_icon.png"> 376 <p class="link-name"> Slides </p> 377 </a> 378 379 <!-- <a href="https://github.com/ZKDL-Camp/circom-walkthrough" class="lecture-link"> 380 <img src="images/icons/github.png"> 381 <p class="link-name"> GitHub Repo </p> 382 </a> --> 383 </div> 384 385 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 386 <ul> 387 <li> <a href="https://youtu.be/h7apO7q16V0?si=h-CvEA6DREMsvxGC"> "The Fast Fourier Transform (FFT): Most Ingenious Algorithm Ever?" </a> by Reducible: Incredible Visual Explanation of the FFT algorithm (for real field case). </li> 388 <li> <a href="https://eprint.iacr.org/2024/585.pdf"> "A Complete Beginner Guide to the Number Theoretic Transform (NTT)" </a> by Ardianto Satriawan, Rella Mareta, and Hanho Lee: As the name suggests, a good tutorial on NTT with examples. </li> 389 <li> <a href="https://www.cs.rug.nl/~ando/pdfs/Ando_Emerencia_multiplying_huge_integers_using_fourier_transforms_paper.pdf"> "Multiplying Huge Integers using Fourier Transforms" </a> by Ando Emerencia: Well-explained tutorial on FFT based on large integer multiplication. </li> 390 <li> <a href="https://hackmd.io/@vbuterin/barycentric_evaluation"> "A Quick Barycentric Evaluation Tutorial" </a> by Vitalik Buterin: Explanation of Barycentric Interpolation derivation for both general case and roots of unity domain. </li> 391 </ul> 392 </div> 393 </div> 394 395 <!-- Lecture 12 --> 396 <div class="lecture-card"> 397 <div class="lecture-card-head"> 398 <div class="lecture-card-preview"> 399 <img src="images/lecture-previews/lecture_12.png" class="preview"> 400 </div> 401 <div class="lecture-card-content"> 402 <div class="lecture-card-header"> 403 <h2 class="lecture-card-title"> Lecture 12: PlonK Arithmetization </h2> 404 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Nikita Masych </p> 405 </div> 406 407 <div class="lecture-card-content"> 408 <p class="lecture-card-description"> 409 <strong>Content.</strong> Groth16 is not the only zk-SNARK protocol used in practice! In this lecture, we will c
409onsider the PlonK protocol, which is frequently used in various zkEVM implementations. Here, we cover: 410 <ul> 411 <li> PlonK Arithmetization </li> 412 <li> How gates work in PlonK. Custom Gates. </li> 413 <li> Gate and Wiring Satisfiability Checks. </li> 414 <li> Permutation Check over Polynomials. </li> 415 </ul> 416 </p> 417 </div> 418 </div> 419 </div> 420 421 <div class="lecture-links-section"> 422 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 423 424 <div class="lecture-links-list"> 425 <a href="files/notes/12-plonk-arithm.pdf" class="lecture-link"> 426 <img src="images/icons/lecture_notes_icon.png"> 427 <p class="link-name"> Lecture Notes </p> 428 </a> 429 430 <a href="files/slides/12-plonk-arithm.pdf" class="lecture-link"> 431 <img src="images/icons/slides_icon.png"> 432 <p class="link-name"> Slides </p> 433 </a> 434 435 <!-- <a href="https://github.com/ZKDL-Camp/circom-walkthrough" class="lecture-link"> 436 <img src="images/icons/github.png"> 437 <p class="link-name"> GitHub Repo </p> 438 </a> --> 439 </div> 440 441 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 442 <ul> 443 <li> <a href="https://eprint.iacr.org/2019/953.pdf"> "PlonK: Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge" </a> by Ariel Gabizon et. al.: original paper. Hard to read, but definitely worth it. </li> 444 <li> <a href="https://blog.lambdaclass.com/all-you-wanted-to-know-about-plonk/"> "All you wanted to know about Plonk" </a> by LambdaClass: Probably the most complete and well-explained article on PlonK anatomy. </li> 445 <li> <a href="https://vitalik.eth.limo/general/2019/09/22/plonk.html"> "Understanding PLONK" </a> by Vitalik Buterin: Another well-explained and illustrated guide on PlonK. </li> 446 </ul> 447 </div> 448 </div> 449 450 <!-- Lecture 11 --> 451 <div class="lecture-card"> 452 <div class="lecture-card-head"> 453 <div class="lecture-card-preview"> 454 <img src="images/lecture-previews/lecture_11.png" class="preview"> 455 </div> 456 <div class="lecture-card-content"> 457 <div class="lecture-card-header"> 458 <h2 class="lecture-card-title"> Lecture 11: Programming ZKPs in Circom </h2> 459 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Kyrylo Riabov </p> 460 </div> 461 462 <div class="lecture-card-content"> 463 <p class="lecture-card-description"> 464 <strong>Content.</strong> After covering the Groth16 zk-SNARK theory, we will move to the practical part of the course. Here, we will learn how to use Circom to create circuits and generate proofs. Here, we cover: 465 <ul> 466 <li> Basic Circom syntax. </li> 467 <li> Creating circuits. </li> 468 <li> Generating proofs. </li> 469 <li> Interpreting all the generated data such as .r1cs, .sym, proof.json, and how they relate to the previously covered theory. </li> 470 </ul> 471 </p> 472 </div> 473 </div> 474 </div> 475 476 <div class="lecture-links-section"> 477 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 478 479 <div class="lecture-links-list"> 480 <a href="files/notes/11-circom.pdf" class="lecture-link"> 481 <img src="images/icons/lecture_notes_icon.png"> 482 <p class="link-name"> Lecture Notes </p> 483 </a> 484 485 <a href="files/slides/11-circom.pdf" class="lecture-link"> 486 <img src="images/icons/slides_icon.png"> 487 <p class="link-name"> Slides </p> 488 </a> 489 490 <a href="https://github.com/ZKDL-Camp/circom-walkthrough" class="lecture-link"> 491 <img src="images/icons/github.png"> 492 <p class="link-name"> GitHub Repo </p> 493 </a> 494 </div> 495 496 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 497 <ul> 498 <li> <a href="https://ieeexplore.ieee.org/document/10002421"> "Circom: A Circuit Description Language for Building Zero-Knowledge Applications" </a> by Marta Belles-Munoz et al: Original Circom language paper. </li> 499 <li> <a href="https://zkintro.com/articles/programming-zkps-from-zero-to-hero"> "Programming ZKPs: From Zero to Hero" </a>
499 by zkintro: Well-explained tutorial on working with Circom. </li> 500 <li> <a href="https://circom.erhant.me/index.html"> "Circom101" </a> by erhant: introduces many practical examples (arithmetic, comparators, hashing, merkle trees etc.) where Circom can be used. </li> 501 <li> <a href="https://www.rareskills.io/post/circom-tutorial"> "Circom language tutorial with circomlib walkthrough" </a> by Team RareSkills: a very detailed tutorial on how to use Circom with practical examples. </li> 502 </ul> 503 </div> 504 </div> 505 506 <!-- Lecture 10 --> 507 <div class="lecture-card"> 508 <div class="lecture-card-head"> 509 <div class="lecture-card-preview"> 510 <img src="images/lecture-previews/lecture_10.png" class="preview"> 511 </div> 512 <div class="lecture-card-content"> 513 <div class="lecture-card-header"> 514 <h2 class="lecture-card-title"> Lecture 10: Pairing-based zk-SNARKs </h2> 515 <p class="lecture-card-speaker"> <strong>Speakers:</strong> Anton Levochko and Dmytro Zakharov </p> 516 </div> 517 518 <div class="lecture-card-content"> 519 <p class="lecture-card-description"> 520 <strong>Content.</strong> Finally, we consider one of the most advanced zk-SNARKs: Pinocchio and Groth16. Here, we cover: 521 <ul> 522 <li> Turning QAP into succint verification over encrypted space. </li> 523 <li> Making SNARK sound. </li> 524 <li> Turning SNARK into zk-SNARK. </li> 525 <li> Pinocchio Protocol. </li> 526 <li> Groth16 Protocol. </li> 527 </ul> 528 </p> 529 </div> 530 </div> 531 </div> 532 533 <div class="lecture-links-section"> 534 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 535 536 <div class="lecture-links-list"> 537 <a href="files/notes/10-groth16.pdf" class="lecture-link"> 538 <img src="images/icons/lecture_notes_icon.png"> 539 <p class="link-name"> Lecture Notes </p> 540 </a> 541 542 <a href="files/slides/10-groth16.pdf" class="lecture-link"> 543 <img src="images/icons/slides_icon.png"> 544 <p class="link-name"> Slides </p> 545 </a> 546 547 <!-- <a href="files/exercises/8-circuits.pdf" class="lecture-link"> 548 <img src="images/icons/test.png"> 549 <p class="link-name"> Task </p> 550 </a> 551 552 <a href="https://github.com/ZKDL-Camp/lecture-8-r1cs-qap" class="lecture-link"> 553 <img src="images/icons/github.png"> 554 <p class="link-name"> GitHub Repo </p> 555 </a> --> 556 </div> 557 558 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 559 <ul> 560 <li> <a href="https://arxiv.org/abs/1906.07221"> "Why and How zk-SNARK Works" </a> by Maksym Petkus: Very easy-to-follow tutorial on how zk-SNARKs work from scratch. Very friendly guide for beginners. </li> 561 <li> <a href="https://zk-learning.org/"> ZK MOOC, Spring 2023 </a>, "Linear PCP" lecture: amazing lecture on the idea of building Pinocchio and Groth16 protocols, expressed formally and mathematically. </li> 562 <li> <a href="https://eprint.iacr.org/2013/279.pdf"> "Pinocchio: Nearly Practical Verifiable Computation" </a> by Bryan Parno and Craig Gentry: original Pinocchio paper. Quite easy to understand if you are familiar with notation from lecture notes. </li> 563 <li> <a href="https://eprint.iacr.org/2016/260.pdf"> "On the Size of Pairing-based Non-interactive Arguments" </a> by Jens Groth: original Groth16 paper. A bit more formalistic view of the Groth16 protocol and what linear non-interactive proofs are used for. </li> 564 </ul> 565 </div> 566 </div> 567 568 <!-- Lecture 9 --> 569 <div class="lecture-card"> 570 <div class="lecture-card-head"> 571 <div class="lecture-card-preview"> 572 <img src="images/lecture-previews/lecture_9.png" class="preview"> 573 </div> 574 <div class="lecture-card-content"> 575 <div class="lecture-card-header"> 576 <h2 class="lecture-card-title"> Lecture 9: Quadratic Arithmetic Program. Probabilistically Checkable Proofs </h2> 577 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Anton Levochko </p> 578 </div> 579 580 <div class="lecture-card-content"> 581 <p class="lecture-card-description"> 582 <strong>Content.</strong> With R1CS in our hands, we are now ready to succintly represent it as a Quadratic Arithmetic Program (QAP). Additionally, we consider other basic theory before specifying the Groth16 protocol. Here, we cover: 583 <ul> 584 <li> Turning R1CS into QAP. </li> 585 <li> What is PCP, IPCP, IOP. </li> 586 <li> Proof of Exponent. </li> 587 </ul> 588 </p> 589 </div> 590 </div> 591 </div> 592 593 <div class="lecture-links-section"> 594 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 595 596 <div class="lecture-links-list"> 597 <a href="files/notes/9-qap-pcp.pdf" class="lecture-link"> 598 <img src="images/icons/lecture_notes_icon.png"> 599 <p class="link-name"> Lecture Notes </p> 600 </a> 601 602 <a href="files/slides/9-qap-pcp.pdf" class="lecture-link"> 603 <img src="images/icons/slides_icon.png"> 604 <p class="link-name"> Slides </p> 605 </a> 606 607 <!-- <a href="files/exercises/8-circuits.pdf" class="lecture-link"> 608 <img src="images/icons/test.png"> 609 <p class="link-name"> Task </p> 610 </a> 611 612 <a href="https://github.com/ZKDL-Camp/lecture-8-r1cs-qap" class="lecture-link"> 613 <img src="images/icons/github.png"> 614 <p class="link-name"> GitHub Repo </p> 615 </a> --> 616 </div> 617 618 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 619 <ul> 620 <li> <a href="https://arxiv.org/abs/1906.07221"> "Why and How zk-SNARK Works" </a> by Maksym Petkus: Very easy-to-follow tutorial on how zk-SNARKs work from scratch. Very friendly guide for beginners. </li> 621 <li>
621 <a href="https://medium.com/@VitalikButerin/quadratic-arithmetic-programs-from-zero-to-hero-f6d558cea649"> "Quadratic Arithmetic Programs: From Zero to Hero" </a> by Vitalik Buterin: R1CS and QAP demonstrated over real numbers. </li> 622 </ul> 623 </div> 624 </div> 625 626 <!-- Lecture 8 --> 627 <div class="lecture-card"> 628 <div class="lecture-card-head"> 629 <div class="lecture-card-preview"> 630 <img src="images/lecture-previews/lecture_8.png" class="preview"> 631 </div> 632 <div class="lecture-card-content"> 633 <div class="lecture-card-header"> 634 <h2 class="lecture-card-title"> Lecture 8: SNARKs. Arithmetical Circuits </h2> 635 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Anton Levochko </p> 636 </div> 637 638 <div class="lecture-card-content"> 639 <p class="lecture-card-description"> 640 <strong>Content.</strong> This is an opening lecture on SNARKs: technology we are using daily in our projects. Here, we cover: 641 <ul> 642 <li> The definition of zk-SNARK. </li> 643 <li> Arithmetic Circuits. Circuit Satisfability Problem. </li> 644 <li> Rank-1 Constraint System (R1CS) in vector and matrix forms. </li> 645 </ul> 646 </p> 647 </div> 648 </div> 649 </div> 650 651 <div class="lecture-links-section"> 652 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 653 654 <div class="lecture-links-list"> 655 <a href="files/notes/8-circuits.pdf" class="lecture-link"> 656 <img src="images/icons/lecture_notes_icon.png"> 657 <p class="link-name"> Lecture Notes </p> 658 </a> 659 660 <a href="files/slides/8-circuits.pdf" class="lecture-link"> 661 <img src="images/icons/slides_icon.png"> 662 <p class="link-name"> Slides </p> 663 </a> 664 665 <a href="files/exercises/8-circuits.pdf" class="lecture-link"> 666 <img src="images/icons/test.png"> 667 <p class="link-name"> Task </p> 668 </a> 669 670 <a href="https://github.com/ZKDL-Camp/lecture-8-r1cs-qap" class="lecture-link"> 671 <img src="images/icons/github.png"> 672 <p class="link-name"> GitHub Repo </p> 673 </a> 674 </div> 675 676 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 677 <ul> 678 <li> <a href="https://arxiv.org/abs/1906.07221"> "Why and How zk-SNARK Works" </a> by Maksym Petkus: Very easy-to-follow tutorial on how zk-SNARKs work from scratch. Very friendly guide for beginners. </li> 679 <li> <a href="https://www.rareskills.io/post/rank-1-constraint-system"> "Converting Algebraic Circuits to R1CS" </a> by RareSkills: Also well-explained how R1CS works with many practical examples. </li> 680 </ul> 681 </div> 682 </div> 683 684 <!-- Lecture 7 --> 685 <div class="lecture-card"> 686 <div class="lecture-card-head"> 687 <div class="lecture-card-preview"> 688 <img src="images/lecture-previews/lecture_7.png" class="preview"> 689 </div> 690 <div class="lecture-card-content"> 691 <div class="lecture-card-header"> 692 <h2 class="lecture-card-title"> Lecture 7: Sigma Protocols </h2> 693 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Dmytro Zakharov </p> 694 </div> 695 696 <div class="lecture-card-content"> 697 <p class="lecture-card-description"> 698 <strong>Content.</strong>
698 Here, we will consider the most basic form of interactive proofs - Sigma Protocols. We will understand how to turn them into non-interactive proofs and how to use them in practice. Here, we cover: 699 <ul> 700 <li> Schnorr Signature Scheme. </li> 701 <li> Sigma Protocols. </li> 702 <li> Examples of Sigma Protocols: Okamoto's and Chaum-Pedersen Protocols </li> 703 <li> Combining Sigma Protocols. </li> 704 </ul> 705 </p> 706 </div> 707 </div> 708 </div> 709 710 <div class="lecture-links-section"> 711 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 712 713 <div class="lecture-links-list"> 714 <a href="files/notes/7-sigma.pdf" class="lecture-link"> 715 <img src="images/icons/lecture_notes_icon.png"> 716 <p class="link-name"> Lecture Notes </p> 717 </a> 718 719 <a href="files/slides/7-sigma.pdf" class="lecture-link"> 720 <img src="images/icons/slides_icon.png"> 721 <p class="link-name"> Slides </p> 722 </a> 723 724 <a href="files/exercises/7-sigma.pdf" class="lecture-link"> 725 <img src="images/icons/test.png"> 726 <p class="link-name"> Exercises </p> 727 </a> 728 729 <a href="https://forms.gle/9vW5viQSunms62bD8" class="lecture-link"> 730 <img src="images/icons/google_form.png"> 731 <p class="link-name"> Test Form </p> 732 </a> 733 734 <a href="https://github.com/ZKDL-Camp/lecture-7-sigma" class="lecture-link"> 735 <img src="images/icons/github.png"> 736 <p class="link-name"> GitHub Repo </p> 737 </a> 738 </div> 739 740 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 741 <ul> 742 <li> <a href="https://toc.cryptobook.us/"> "A Graduate Course in Applied Cryptography" </a> by Dan Boneh and Victor Shoup, <strong>Section 19</strong>: Very formalistic and rigorous introduction to Sigma Protocols and turning interactiveness to non-interactiveness in the subsequent <strong>Section 20</strong>. </li> 743 <li> <a href="https://people.cs.georgetown.edu/jthaler/ProofsArgsAndZK.pdf"> "Proofs, Arguments, and Zero-Knowledge" </a> by Justin Thaler, <strong> Chapter 12 </strong>: quite rigorous description of Discrete Logarithm-based zero-knowledge protocols. </li> 744 </ul> 745 </div> 746 </div> 747 748 <!-- Lecture 6 --> 749 <div class="lecture-card"> 750 <div class="lecture-card-head"> 751 <div class="lecture-card-preview"> 752 <img src="images/lecture-previews/lecture_6.png" class="preview"> 753 </div> 754 <div class="lecture-card-content"> 755 <div class="lecture-card-header"> 756 <h2 class="lecture-card-title"> Lecture 6: Introduction to Zero-Knowledge Proofs </h2> 757 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Dmytro Zakharov </p> 758 </div> 759 760 <div class="lecture-card-content"> 761 <p class="lecture-card-description"> 762 <strong>Content.</strong> This lecture finally introduces the concept of Zero-Knowledge Proofs and their applications. Here, we cover: 763 <ul> 764 <li> What is a cryptographic proof exactly? </li> 765 <li> Interactive Proofs. </li> 766 <li> Soundness and Zero-Knowledge definitions. </li> 767 <li> Proof vs Proof of Knowledge. </li> 768 <li> Fiat-Shamir Heuristic. </li> 769 </ul> 770 </p> 771 </div> 772 </div> 773 </div> 774 775 <div class="lecture-links-section"> 776 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 777 778 <div class="lecture-links-list"> 779 <a href="files/notes/6-intro-zk.pdf" class="lecture-link"> 780 <img src="images/icons/lecture_notes_icon.png"> 781 <p class="link-name"> Lecture Notes </p> 782 </a> 783 784 <a href="files/slides/6-intro-zk.pdf" class="lecture-link"> 785 <img src="images/icons/slides_icon.png"> 786 <p class="link-name"> Slides </p> 787 </a> 788 789 <a href="files/exercises/6-intro-zk.pdf" class="lecture-link"> 790 <img src="images/icons/test.png"> 791 <p class="link-name"> Exercises </p> 792 </a> 793 794 <a href="https://forms.gle/h3hrk4ug6B5LAgLs6" class="lecture-link"> 795 <img src="images/icons/google_form.png"> 796 <p class="link-name"> Test Form </p> 797 </a> 798 </div> 799 800 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 801 <ul> 802 <li> <a href="https://zk-learning.org/"> "Zero Knowledge Proofs MOOC, Spring 2023" </a> Amazing series of lectures on zero-knowledge proofs. This lecture was primarily based on the first lecture by Shafi Goldwasser. </li> 803 <li> <a href="https://www.cs.princeton.edu/courses/archive/fall07/cos433/lec15.pdf"> "Zero Knowledge Proofs Lecture" </a> by Boaz Barak: very well-explained fundamentals of zero-knowledge proof with a detailed analysis of a quadratic residue interactive protocol. </li> 804 </ul> 805 </div> 806 </div> 807 808 <!-- Lecture 5 --> 809 <div class="lecture-card"> 810 <div class="lecture-card-head"> 811 <div class="lecture-card-preview"> 812 <img src="images/lecture-previews/lecture_5.jpg" class="preview"> 813 </div> 814 <div class="lecture-card-content"> 815 <div class="lecture-card-header"> 816 <h2 class="lecture-card-title"> Lecture 5: Cryptographic commitment schemes </h2> 817 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Denis Riabtsev </p> 818 </div> 819 820 <div class="lecture-card-content"> 821 <p class="lecture-card-description"> 822 <strong>Content.</strong> In this lecture we will dive into the design and application of various cryptographic commit schemes that are often used in zero knowledge proof systems. All in all, here we cover: 823 <ul> 824 <li> Hash-based commitments. </li> 825 <li> Vector commitments. </li> 826 <li> Polynomial commitments. </li> 827 </ul> 828 </p> 829 </div> 830 </div> 831 </div> 832 833 <div class="lecture-links-section"> 834 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 835 836 <div class="lecture-links-list"> 837 <a href="files/notes/5-commitments.pdf" class="lecture-link"> 838 <img src="images/icons/lecture_notes_icon.png"> 839 <p class="link-name"> Lecture Notes </p> 840 </a> 841 842 <a href="files/slides/5-commitments.pdf" class="lecture-link"> 843 <img src="images/icons/slides_icon.png"> 844 <p class="link-name"> Slides </p> 845 </a> 846 847 <a href="files/exercises/5-commitments.pdf" class="lecture-link"> 848 <img src="images/icons/test.png"> 849 <p class="link-name"> Exercises </p> 850 </a> 851 852 <a href="https://docs.google.com/forms/d/e/1FAIpQLSfBYGvraga2D2jGWy5vuJ46Uy6a4sYb_A33FSmFhnq2E_Cr5g/viewform" class="lecture-link"> 853 <img src="images/icons/google_form.png"> 854 <p class="link-name"> Test Form </p> 855 </a> 856 </div> 857 858 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 859 <ul> 860 <li> <a href="https://docs.scroll.io/en/learn/zero-knowledge/kzg-commitment-scheme/"> KZG Commitment Scheme </a> by <i>Scroll</i>
860, explains the math behind KZG commitment schemes. </li> 861 <li> <a href="https://assets.super.so/9c1ce0ba-bad4-4680-8c65-3a46532bf44a/files/61fb28e6-f2dc-420f-89e1-cc8000233a4f.pdf"> Modern Zero Knowledge Cryptography. Lecture 5 </a> by Ying Tong with formally explained vector and polynomial commitments. </li> 862 <li> <a href="https://www.rareskills.io/post/pedersen-commitment"> "What are Pedersen Commitments and How They Work" </a> by <i>RareSkills</i>: an article that explains Pedersen commitments in simple words with code examples in Python. </li> 863 </ul> 864 </div> 865 </div> 866 867 <!-- Lecture 4 --> 868 <div class="lecture-card"> 869 <div class="lecture-card-head"> 870 <div class="lecture-card-preview"> 871 <img src="images/lecture-previews/lecture_4.png" class="preview"> 872 </div> 873 <div class="lecture-card-content"> 874 <div class="lecture-card-header"> 875 <h2 class="lecture-card-title"> Lecture 4: Projective Coordinates and Pairing </h2> 876 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Dmytro Zakharov </p> 877 </div> 878 879 <div class="lecture-card-content"> 880 <p class="lecture-card-description"> 881 <strong>Content.</strong> This lecture will touch the central part of SNARKs: elliptic curve pairing, its properties and applications. But first, we will cover projective coordinates and how they can be used to optimize elliptic curve operations. All in all, here we cover: 882 <ul> 883 <li> Relations and equivalence classes. </li> 884 <li> Projective Coordinates. </li> 885 <li> Adding points in projective coordinates. Scalar multiplication using double-and-add algorithm. </li> 886 <li> Elliptic Curve Pairing. </li> 887 <li> Pairing applications. </li> 888 </ul> 889 </p> 890 </div> 891 </div> 892 </div> 893 894 <div class="lecture-links-section"> 895 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 896 897 <div class="lecture-links-list"> 898 <a href="files/notes/4-pairing.pdf" class="lecture-link"> 899 <img src="images/icons/lecture_notes_icon.png"> 900 <p class="link-name"> Lecture Notes </p> 901 </a> 902 903 <a href="files/slides/4-pairing.pdf" class="lecture-link"> 904 <img src="images/icons/slides_icon.png"> 905 <p class="link-name"> Slides </p> 906 </a> 907 908 <a href="files/exercises/4-pairing.pdf" class="lecture-link"> 909 <img src="images/icons/test.png"> 910 <p class="link-name"> Exercises </p> 911 </a> 912 913 <a href="https://forms.gle/3Bq4DTWkp53dtdyA9" class="lecture-link"> 914 <img src="images/icons/google_form.png"> 915 <p class="link-name"> Test Form </p> 916 </a> 917 918 <a href="https://github.com/ZKDL-Camp/lecture-4-pairings" class="lecture-link"> 919 <img src="images/icons/github.png"> 920 <p class="link-name"> GitHub Repo </p> 921 </a> 922 </div> 923 924 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 925 <ul> 926 <li> <a href="https://static1.squarespace.com/static/5fdbb09f31d71c1227082339/t/5ff394720493bd28278889c6/1609798774687/PairingsForBeginners.pdf"> "Pairing for Beginners" </a> by Craig Costello: Not only this already mentioned book contains pairing inner working, but also a profou
926nd introduction into projective form of elliptic curves. </li> 927 <li> <a href="https://toc.cryptobook.us/"> "A Graduate Course in Applied Cryptography" </a> by Dan Boneh and Victor Shoup, <strong>Section 15</strong>. Recommended to read this chapter up to section 15.5 including. </li> 928 <li> <a href="https://hackmd.io/@jpw/bn254"> "BN254 For The Rest of Us" </a> by Jonathan Wang: if you want specifics of pairing-friendly curve parameters, you can take a look here. This curve is currently widely used. </li> 929 <li> <a href="https://eprint.iacr.org/2010/354.pdf"> High-Speed Software Implementation of the Optimal Ate Pairing over Barreto-Naehrig Curves </a> by Jean-Luc Beuchat et al.: if you <strong>really</strong> want to get into the details of pairing implementation, this paper is the best. It contains all the algorithms to implement pairing from scratch. </li> 930 </ul> 931 </div> 932 </div> 933 934 <!-- Lecture 3 --> 935 <div class="lecture-card"> 936 <div class="lecture-card-head"> 937 <div class="lecture-card-preview"> 938 <img src="images/lecture-previews/lecture_3.png" class="preview"> 939 </div> 940 <div class="lecture-card-content"> 941 <div class="lecture-card-header"> 942 <h2 class="lecture-card-title"> Lecture 3: Finite Field Extensions and Elliptic Curves </h2> 943 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Dmytro Zakharov </p> 944 </div> 945 946 <div class="lecture-card-content"> 947 <p class="lecture-card-description"> 948 <strong>Content.</strong> Our primary focus will be on Finite Field Extensions, while also covering basics of Elliptic Curves. Here, we cover: 949 <ul> 950 <li> Finite Field Extensions </li> 951 <li> Algebraic Closure </li> 952 <li> Elliptic Curve Definition </li> 953 <li> Discere Logarithm on Elliptic Curves </li> 954 </ul> 955 </p> 956 </div> 957 </div> 958 </div> 959 960 <div class="lecture-links-section"> 961 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 962 963 <div class="lecture-links-list"> 964 <a href="files/notes/3-fields-and-ec.pdf" class="lecture-link"> 965 <img src="images/icons/lecture_notes_icon.png"> 966 <p class="link-name"> Lecture Notes </p> 967 </a> 968 969 <a href="files/slides/3-ec.pdf" class="lecture-link"> 970 <img src="images/icons/slides_icon.png"> 971 <p class="link-name"> Slides </p> 972 </a> 973 974 <a href="files/exercises/3-ec.pdf" class="lecture-link"> 975 <img src="images/icons/test.png"> 976 <p class="link-name"> Exercises </p> 977 </a> 978 979 <a href="https://forms.gle/LiXaeXkzzHFyLvMX9" class="lecture-link"> 980 <img src="images/icons/google_form.png"> 981 <p class="link-name"> Test Form </p> 982 </a> 983 </div> 984 985 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 986 <ul> 987 <li> <a href="https://www.math.uchicago.edu/~may/VIGRE/VIGRE2009/REUPapers/Moy.pdf"> An Introduction to the Theory of Field Extensions </a> by Samuel Moy: rigorous and "mathematicalish" introduction to what field extensions are. Highly recommended, but maybe too much for basic understanding of finite field extensions. </li> 988 <li> <a href="http://tomlr.free.fr/Math%E9matiques/Math%20Complete/Cryptography/Guide%20to%20Elliptic%20Curve%20Cryptography%20-%20D.%20Hankerson,%20A.%20Menezes,
988%20S.%20Vanstone.pdf"> "Guide to Elliptic Curve Cryptography" </a> by Alfred Menezes et al.: Amazing book on Elliptic Curves optimizations. It also contains a great introduction into finite fields. </li> 989 <li> <a href="https://static1.squarespace.com/static/5fdbb09f31d71c1227082339/t/5ff394720493bd28278889c6/1609798774687/PairingsForBeginners.pdf"> "Pairing for Beginners" </a> by Craig Costello: Quick dive into inner workings of elliptic curve pairing. </li> 990 <li> <a href="https://toc.cryptobook.us/"> "A Graduate Course in Applied Cryptography" </a> by Dan Boneh and Victor Shoup, <strong>Section 15</strong> (Elliptic curve cryptography and pairings): Elliptic Curves are described very well together with the basics of pairing (without going into the details of construction). </li> 991 </ul> 992 </div> 993 </div> 994 995 <!-- Lecture 2 --> 996 <div class="lecture-card"> 997 <div class="lecture-card-head"> 998 <div class="lecture-card-preview"> 999 <img src="images/lecture-previews/lecture_2.png" class="preview"> 1000 </div> 1001 <div class="lecture-card-content"> 1002 <div class="lecture-card-header"> 1003 <h2 class="lecture-card-title"> Lecture 2: Security, Polynomials, Lagrange Interpolation </h2> 1004 <p class="lecture-card-speaker"> <strong>Speakers:</strong> Dmytro Zakharov and Denis Riabtsev </p> 1005 </div> 1006 1007 <div class="lecture-card-content"> 1008 <p class="lecture-card-description"> 1009 <strong>Content.</strong> In this lecture, we will continue covering the basic mathematics used in cryptography. Here, we cover: 1010 <ul> 1011 <li> Basic Security Definitions </li> 1012 <li> Polynomials </li> 1013 <li> Lagrange Interpolation: Shamir's Secret Sharing and Reed-Solomon Codes </li> 1014 <li> Schwarz-Zippel Lemma </li> 1015 <li> Number Theory </li> 1016 </ul> 1017 </p> 1018 </div> 1019 </div> 1020 </div> 1021 1022 <div class="lecture-links-section"> 1023 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 1024 1025 <div class="lecture-links-list"> 1026 <a href="files/notes/2-math-and-crypto.pdf" class="lecture-link"> 1027 <img src="images/icons/lecture_notes_icon.png"> 1028 <p class="link-name"> Lecture Notes </p> 1029 </a> 1030 1031 <a href="files/slides/2-math-and-crypto.pdf" class="lecture-link"> 1032 <img src="images/icons/slides_icon.png"> 1033 <p class="link-name"> Slides </p> 1034 </a> 1035 1036 <a href="files/exercises/2-math-and-crypto.pdf" class="lecture-link"> 1037 <img src="images/icons/test.png"> 1038 <p class="link-name"> Exercises </p> 1039 </a> 1040 1041 <a href="https://forms.gle/cvXfeSQzo1Au3x567" class="lecture-link"> 1042 <img src="images/icons/google_form.png"> 1043 <p class="link-name"> Test Form </p> 1044 </a> 1045 </div> 1046 1047 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 1048 <ul> 1049 <li> <a href="https://toc.cryptobook.us/"> "A Graduate Course in Applied Cryptography" </a> by Dan Boneh and Victor Shoup, <strong>Section 2</strong> (Encryption): This book can give a fundamental understanding of system security analysis and cryptography formalism. In particular, check <i>Section 2</i> for introduction to security definitions. </li> 1050 <li> <a href="https://doi.org/10.1137%2F0108018"> Reed, Irving S.; Solomon, Gustave (1960), Polynomial Codes over Certain Finite Fields </a>: Original Paper on Reed-Solomon Error Correction. </li> 1051 </ul> 1052 </div> 1053 </div> 1054
1055 <!-- Lecture 1 --> 1056 <div class="lecture-card"> 1057 <div class="lecture-card-head"> 1058 <div class="lecture-card-preview"> 1059 <img src="images/lecture-previews/lecture_1.png" class="preview"> 1060 </div> 1061 <div class="lecture-card-content"> 1062 <div class="lecture-card-header"> 1063 <h2 class="lecture-card-title"> Lecture 1: Algebra Basics </h2> 1064 <p class="lecture-card-speaker"> <strong>Speaker:</strong> Dmytro Zakharov </p> 1065 </div> 1066 1067 <div class="lecture-card-content"> 1068 <p class="lecture-card-description"> 1069 <strong>Content.</strong> In this lecture, we will cover the basic mathematics required for understanding Zero-Knowledge Proving Systems. Here, we cover: 1070 <ul class="lecture-card-list"> 1071 <li> Basic Set Theory and Logic </li> 1072 <li> Basic Group Theory </li> 1073 <li> Fields. Finite Field Arithmetic. </li> 1074 </ul> 1075 </p> 1076 </div> 1077 </div> 1078 </div> 1079 1080 <div class="lecture-links-section"> 1081 <h1 class="lecture-links-header"> <strong> Lecture Material: </strong> </h1> 1082 1083 <div class="lecture-links-list"> 1084 <a href="files/notes/1-math.pdf" class="lecture-link"> 1085 <img src="images/icons/lecture_notes_icon.png"> 1086 <p class="link-name"> Lecture Notes </p> 1087 </a> 1088 1089 <a href="files/slides/1-math.pdf" class="lecture-link"> 1090 <img src="images/icons/slides_icon.png"> 1091 <p class="link-name"> Slides </p> 1092 </a> 1093 1094 <a href="files/exercises/1-math.pdf" class="lecture-link"> 1095 <img src="images/icons/test.png"> 1096 <p class="link-name"> Exercises </p> 1097 </a> 1098 1099 <a href="https://forms.gle/phHTR7YcYVUUchpF8" class="lecture-link"> 1100 <img src="images/icons/google_form.png"> 1101 <p class="link-name"> Test Form </p> 1102 </a> 1103 1104 <a href="https://github.com/ZKDL-Camp/lecture-1-math" class="lecture-link"> 1105 <img src="images/icons/github.png"> 1106 <p class="link-name"> GitHub Repo </p> 1107 </a> 1108 </div> 1109 1110 <h1 class="lecture-links-header"> <strong> Other Helpful Resources: </strong> </h1> 1111 <ul> 1112 <li> <a href="https://www.youtube.com/watch?v=j5nkkCp0ARw&list=PLVMgvCDIRy1y4JFpnpzEQZ0gRwr-sPTpw"> Michael Penn's "Abstract Algebra" Youtube Course </a>: one of the best explanations of Algebra I have seen with tons of examples. </li> 1113 <li> <a href="https://ocw.mit.edu/courses/18-703-modern-algebra-spring-2013/"> MIT Modern Algebra Class (18.703) </a>: Quite a rigorous course in Algebra, yet still easy-to-follow. </li> 1114 <li> <a href="https://www.youtube.com/watch?v=UwTQdOop-nU&list=PLwV-9DG53NDxU337smpTwm6sef4x-SCLv"> Visual Group Theory </a>: Very comprehensive list of lectures on Group Theory and Galois Theory with illustrations and many examples. </li> 1115 </ul> 1116 </div> 1117 </div> 1118 </div> 1119 1120 <footer> 1121 <p class="copyright">Distributed Lab. All rights reserved</p> 1122 </footer> 1123 </body> 1124</html> 1125
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.