PageSourceSearch

https://zkdl-camp.github.io/

html zkdl-camp.github.io collected 2026-10-03 10:15:08 UTC 68,586 bytes, 1,125 lines download raw bytes

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.