diff --git a/bootcamp/0_groth_16.jpg b/bootcamp/0_groth_16.jpg deleted file mode 100644 index 93e054488..000000000 Binary files a/bootcamp/0_groth_16.jpg and /dev/null differ diff --git a/bootcamp/0_snarks_starks.jpg b/bootcamp/0_snarks_starks.jpg deleted file mode 100644 index ea6beef07..000000000 Binary files a/bootcamp/0_snarks_starks.jpg and /dev/null differ diff --git a/bootcamp/0_starks_constraints.jpg b/bootcamp/0_starks_constraints.jpg deleted file mode 100644 index edba953fb..000000000 Binary files a/bootcamp/0_starks_constraints.jpg and /dev/null differ diff --git a/bootcamp/0_starks_general.jpg b/bootcamp/0_starks_general.jpg deleted file mode 100644 index 51d20acfb..000000000 Binary files a/bootcamp/0_starks_general.jpg and /dev/null differ diff --git a/bootcamp/0_starks_proof.jpg b/bootcamp/0_starks_proof.jpg deleted file mode 100644 index 2a75e1da2..000000000 Binary files a/bootcamp/0_starks_proof.jpg and /dev/null differ diff --git a/bootcamp/README.md b/bootcamp/README.md deleted file mode 100644 index 0f49e9469..000000000 --- a/bootcamp/README.md +++ /dev/null @@ -1,247 +0,0 @@ -# Lambda's Sparkling Water Bootcamp - Repo for challenges and learning path - -Public repository for exercises, challenges and all the needs of the Sparkling Water Bootcamp. - -## Week 1 - Forging your tools: Finite Fields - -This first week will be focused on the development of one of the building blocks of Cryptography: Finite Fields. - -### Recommended material: - -- [An introduction to mathematical cryptography](https://books.google.com.ar/books/about/An_Introduction_to_Mathematical_Cryptogr.html?id=BHuTQgAACAAJ&source=kp_book_description&redir_esc=y) - Chapter 1. -- [Finite Fields](https://www.youtube.com/watch?v=MAhmV_omOwA&list=PLFX2cij7c2PynTNWDBzmzaD6ij170ILbQ&index=8) -- [Constructing finite fields](https://www.youtube.com/watch?v=JPiXFn9WA5Y&list=PLFX2cij7c2PynTNWDBzmzaD6ij170ILbQ&index=6) -- [Cyclic groups](https://www.youtube.com/watch?v=UIhhs38IAGM&list=PLFX2cij7c2PynTNWDBzmzaD6ij170ILbQ&index=3) -- [Summary on Montgomery arithmetic](https://eprint.iacr.org/2017/1057.pdf) -- [Mersenne primes](https://eprint.iacr.org/2023/824.pdf) - -### Challenges: - -- [Implement Montgomery backend for 32 bit fields](https://github.com/lambdaclass/lambdaworks/issues/538). -- [Implement efficient Mersenne prime backend](https://github.com/lambdaclass/lambdaworks/issues/540). -- [Implement efficient backend for pseudo-Mersenne primes](https://github.com/lambdaclass/lambdaworks/issues/393). -- Compare specific field implementations with ordinary Montgomery arithmetic. - -### Cryptography content: - -- [Serious Cryptography](https://books.google.com.ar/books/about/Serious_Cryptography.html?id=1D-QEAAAQBAJ&source=kp_book_description&redir_esc=y), Chapters 9 & 10. - -### Exercises -- Implement naïve version of RSA. -- $7$ is a generator of the multiplicative group of $Z_p^\star$, where $p = 2^{64} - 2^{32} +1$. Find the generators for the $2^{32}$ roots of unity. Find generators for subgroups of order $2^{16} + 1$ and $257$. -- Define in your own words what is a group, a subgroup, a ring and a field. -- What are the applications of the Chinese Remainder Theorem in Cryptography? -- Find all the subgroups of the multiplicative group of $Z_{29}^\star$ - -## Supplementary Material -- [Polynomial Secret Sharing](https://decentralizedthoughts.github.io/2020-07-17-polynomial-secret-sharing-and-the-lagrange-basis/) -- [Polynomials over a Field](https://decentralizedthoughts.github.io/2020-07-17-the-marvels-of-polynomials-over-a-field/) -- [Fourier Transform](https://www.youtube.com/watch?v=spUNpyF58BY) -- [Fast Fourier Transform](https://www.youtube.com/watch?v=h7apO7q16V0) - -## Week 2 - Enter Elliptic Curves - -During the second week we'll continue with Finite Fields and begin with Elliptic Curves and dive deeper into Rust - -### Recommended material - -- [Moonmath Manual](https://leastauthority.com/community-matters/moonmath-manual/) - Chapter 5, until 5.3 -- [Programming Bitcoin](https://books.google.fr/books/about/Programming_Bitcoin.html?id=O2aHDwAAQBAJ&source=kp_book_description&redir_esc=y) - Chapters 2 & 3. -- [Introduction to Mathematical Cryptography](https://books.google.com.ar/books/about/An_Introduction_to_Mathematical_Cryptogr.html?id=BHuTQgAACAAJ&source=kp_book_description&redir_esc=y) - Chapter 5 until 5.5 -- [Serious Cryptography](https://books.google.com.ar/books/about/Serious_Cryptography.html?id=1D-QEAAAQBAJ&source=kp_book_description&redir_esc=y) - Chapters 11 & 12. -- [Pairings for Beginners](https://static1.squarespace.com/static/5fdbb09f31d71c1227082339/t/5ff394720493bd28278889c6/1609798774687/PairingsForBeginners.pdf) - Chapters 1 & 2 - -### Exercises - -- Define an elliptic curve element type. -- Implement the basic operations: addition and doubling. -- Implement scalar multiplication. -- Check that the point belongs to the correct subgroup. -- The BLS12-381 elliptic curve is given by the equation $y^2 = x^3 + 4$ and defined over $\mathbb{F}_p$ with p = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab. The group generator is given by the point p1 = (0x04, 0x0a989badd40d6212b33cffc3f3763e9bc760f988c9926b26da9dd85e928483446346b8ed00e1de5d5ea93e354abe706c) and the cofactor is $h_1 = 0x396c8c005555e1568c00aaab0000aaab$. Find the generator $g$ of the subgroup of order -r = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001. -- Implement a naïve version of the Diffie - Hellman protocol -- Implement point compression and decompression to store elliptic curve points - -### Challenges - -- Special CTF challenge (will be revealed later) -- [Implement BN254](https://github.com/lambdaclass/lambdaworks/issues/548) -- Implement Secp256k1 -- Implement Ed25519 - -### Rust Workshop - -- [Aguante Rust](https://youtu.be/nYpMbjzb1t8?si=HNanyXYWcu1xDjG5) - -## Week 3: Polynomials - -### Recommended material - -- [Polynomials](https://www.youtube.com/watch?v=HiaJa3yhHTU&list=PLFX2cij7c2PynTNWDBzmzaD6ij170ILbQ&index=6) -- [Lagrange interpolation](https://www.youtube.com/watch?v=REnFOKo9gXs&list=PLFX2cij7c2PynTNWDBzmzaD6ij170ILbQ&index=10) -- [Lagrange interpolation and secret sharing](https://www.youtube.com/watch?v=3g4wZnhl4m8&list=PLFX2cij7c2PynTNWDBzmzaD6ij170ILbQ&index=3) -- [Moonmath](https://leastauthority.com/community-matters/moonmath-manual/) - Chapter 3.4 -- [Convolution polynomial rings - Introduction to Mathematical Cryptography](https://books.google.com.ar/books/about/An_Introduction_to_Mathematical_Cryptogr.html?id=BHuTQgAACAAJ&source=kp_book_description&redir_esc=y) - Chapter 6.9 - -### Supplementary - -- [Roots of unity and polynomials](https://www.youtube.com/watch?v=3KK5RuAgOpA&list=PLFX2cij7c2PynTNWDBzmzaD6ij170ILbQ&index=2) -- [Fast Fourier Transform](https://www.youtube.com/watch?v=toj_IoCQE-4) -- [FFT walkthrough](https://www.youtube.com/watch?v=Ty0JcR6Dvis) - -### Exercises - -- Define a polynomial type. -- Implement basic operations, such as addition, multiplication and evaluation. -- Implement Lagrange polynomial interpolation. -- Implement basic version of Shamir's secret sharing. - -### Issue - -- [Implement Stockham FFT](http://wwwa.pikara.ne.jp/okojisan/otfft-en/stockham1.html) - -## Week 4: STARKs - -### Recommended material - -- [STARKs by Sparkling Water Bootcamp](https://www.youtube.com/watch?v=cDzTm3clrEo) -- [Lambdaworks Docs](https://github.com/lambdaclass/lambdaworks/tree/main/docs/src/starks) -- [Stark 101](https://github.com/starkware-industries/stark101) -- [Constraints](https://blog.lambdaclass.com/periodic-constraints-and-recursion-in-zk-starks/) -- [Stark 101 - rs](https://github.com/lambdaclass/stark101-rs/) -- [Anatomy of a STARK](https://aszepieniec.github.io/stark-anatomy/) -- [BrainSTARK](https://aszepieniec.github.io/stark-brainfuck/) -- [A summary on FRI low degree testing](https://eprint.iacr.org/2022/1216) -- [STARKs by Risc0](https://dev.risczero.com/reference-docs/about-starks) - -### Exercises - -- Complete STARK-101 - -## Week 5: Symmetric encryption - -### Recommended material - -- [One time pad - Dan Boneh](https://www.youtube.com/watch?v=pQkyFJp2eUg&list=PL58C6Q25sEEHXvACYxiav_lC2DqSlC7Og&index=6) -- [Stream ciphers and pseudorandom generators - Dan Boneh](https://www.youtube.com/watch?v=ZSjTMSvp-eI&list=PL58C6Q25sEEHXvACYxiav_lC2DqSlC7Og&index=7) -- [Attacks - Dan Boneh](https://www.youtube.com/watch?v=Qm8fycVt5v8&list=PL58C6Q25sEEHXvACYxiav_lC2DqSlC7Og&index=8) -- [Semantic security - Dan Boneh](https://www.youtube.com/watch?v=6LFyXO58F4A&list=PL58C6Q25sEEHXvACYxiav_lC2DqSlC7Og&index=11) -- [Block ciphers - Dan Boneh](https://www.youtube.com/watch?v=dzoqxqfpZB4&list=PL58C6Q25sEEHXvACYxiav_lC2DqSlC7Og&index=35) -- [Serious Cryptography](https://books.google.com.ar/books/about/Serious_Cryptography.html?id=1D-QEAAAQBAJ&source=kp_book_description&redir_esc=y) - Chapters 3 - 5. - -### Supplementary material - -- [AES - NIST](https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.197.pdf) - -### Exercises - -- Implement AES round function - -### Side project - Multilinear polynomials - -- [Proofs, Args and ZK](https://people.cs.georgetown.edu/jthaler/ProofsArgsAndZK.pdf) - -### Mandatory task - -- Choose a project: STARKs, Sumcheck protocol or Groth16 (or propose a new project) - -### Additional resources for each project - -- STARKs: see week 4. -- [Groth16](https://eprint.iacr.org/2016/260.pdf) -- [DIZK - Groth 16](https://eprint.iacr.org/2018/691.pdf) -- [Multilinear polynomials and sumcheck protocol](https://people.cs.georgetown.edu/jthaler/ProofsArgsAndZK.pdf) - -#### Challenges - -- Implement a multilinear polynomial type with all the basic operations. - -## Week 6: Interactive proofs and SNARKs - -- [Moonmath](https://leastauthority.com/community-matters/moonmath-manual/) Chapters 6 - 8. -- [Proofs, Arguments and Zero Knowledge](https://people.cs.georgetown.edu/jthaler/ProofsArgsAndZK.pdf) Chapters 1 - 5. -- [Overview of modern SNARK constructions](https://www.youtube.com/watch?v=bGEXYpt3sj0) -- [Pinocchio protocol overview](https://www.zeroknowledgeblog.com/index.php/zk-snarks) -- [Pinocchio implementation](https://github.com/lambdaclass/pinocchio_lambda_vm) -- [SNARKs and STARKs](https://zkhack.dev/whiteboard/module-four/) - -### Additional material on some proof systems - -- [EthSTARK](https://github.com/starkware-libs/ethSTARK/tree/master) -- [EthSTARK - paper](https://eprint.iacr.org/2021/582) -- [STARK paper](https://eprint.iacr.org/2018/046.pdf) -- [DEEP FRI](https://eprint.iacr.org/2019/336) -- [Proximity gaps](https://eprint.iacr.org/2020/654) -- [STARKs by Eli Ben-Sasson I](https://www.youtube.com/watch?v=9VuZvdxFZQo) -- [STARKs by Eli Ben-Sasson II](https://www.youtube.com/watch?v=L7tZeO8ihcQ) - -## Week 7: Plonk - -- [Plonk](https://eprint.iacr.org/2019/953) -- [Custom gates](https://zkhack.dev/whiteboard/module-five/) -- [Plonk by hand](https://research.metastate.dev/plonk-by-hand-part-1/) -- [Plonk docs in Lambdaworks](https://github.com/lambdaclass/lambdaworks/tree/main/docs/src/plonk) - -## Week 8: Lookup arguments - -- [Plookup](https://eprint.iacr.org/2020/315.pdf) -- [LogUp and GKR](https://eprint.iacr.org/2023/1284.pdf) -- [Neptune - Permutation Argument](https://neptune.cash/learn/tvm-cross-table-args/) -- [Randomized AIR with preprocessing](https://hackmd.io/@aztec-network/plonk-arithmetiization-air) -- [PlonkUp](https://eprint.iacr.org/2022/086.pdf) -- [Lookups by Ingonyama](https://medium.com/@ingonyama/a-brief-history-of-lookup-arguments-a4eeeeca2749) -- [LogUp](https://eprint.iacr.org/2022/1530.pdf) -- [Lookups - Halo2](https://zcash.github.io/halo2/design/proving-system/lookup.html) - -## Week 9: Signatures - -- [BLS signatures](https://www.ietf.org/archive/id/draft-irtf-cfrg-bls-signature-05.html#name-introduction-2) -- [Real World Cryptography](https://books.google.com.ar/books/about/Real_World_Cryptography.html?id=Qd5CEAAAQBAJ&source=kp_book_description&redir_esc=y) Chapter 7 -- [ECDSA](https://www.rfc-editor.org/rfc/rfc6605.txt) -- [RSA Signature](https://www.ietf.org/rfc/rfc8017.html#section-5.2) - -## Week 10: Folding schemes - -- [Nova by Justin Drake](https://zkhack.dev/whiteboard/module-fourteen/) -- [Nova](https://eprint.iacr.org/2021/370) -- [SuperNova](https://eprint.iacr.org/2022/1758) -- [ProtoStar](https://eprint.iacr.org/2023/620) -- [ProtoGalaxy](https://eprint.iacr.org/2023/1106) - -## Projects - -- Implement IPA commitment scheme -- Implement Jacobian coordinates for Elliptic Curves -- Benchmark elliptic curve operations -- Add improvements to fixed base scalar multiplication in Elliptic Curves -- Add BN254 elliptic curve -- Implement Pasta curves -- Implement Lookup arguments for Plonk (Plookup) -- Sumcheck protocol -- Benchmark and optimize multilinear polynomial operations -- Import circuits from gnark or circom to use with Groth16 backend - -### Links to repos with solutions to the exercises -- [Naïve ECC](https://github.com/saitunc/naive_ecc) -- [Crypto](https://github.com/irfanbozkurt/crypto) -- [Naïve RSA](https://github.com/WiseMrMusa/rsa-naive) -- [Naïve RSA](https://github.com/Elvis339/naive_rsa) -- [Exercises from weeks 1 & 2](https://github.com/ArpitxGit/sparkling_water_bootcamp/tree/main) -- [Programming bitcoin EC](https://github.com/Elvis339/rbtc) -- [Shamir secret sharing](https://github.com/cliraa/shamir_secret_sharing) -- [Several exercises](https://github.com/ArpitxGit/sparkling_water_bootcamp/tree/main) - -### Intended Roadmap - -- Finite Fields -- Elliptic Curves -- Polynomials -- Extension fields -- Pairings -- Public key encryption -- Symmetric encryption -- Hash functions -- Signatures -- Authenticated encryption -- SNARKs -- STARKs diff --git a/bootcamp/WhiteboardDiscussion.png b/bootcamp/WhiteboardDiscussion.png deleted file mode 100644 index 3a912e992..000000000 Binary files a/bootcamp/WhiteboardDiscussion.png and /dev/null differ diff --git a/bootcamp/WhiteboardPolynomials.png b/bootcamp/WhiteboardPolynomials.png deleted file mode 100644 index 8f1916ff6..000000000 Binary files a/bootcamp/WhiteboardPolynomials.png and /dev/null differ diff --git a/bootcamp/WhiteboardRSA.png b/bootcamp/WhiteboardRSA.png deleted file mode 100644 index b60c48f19..000000000 Binary files a/bootcamp/WhiteboardRSA.png and /dev/null differ diff --git a/bootcamp/learning_resources.md b/bootcamp/learning_resources.md deleted file mode 100644 index 6dcc37302..000000000 --- a/bootcamp/learning_resources.md +++ /dev/null @@ -1,94 +0,0 @@ -# Roadmap - -## 1. Fundamentals of Cryptography and Mathematics - -### Key Concepts: -- What is cryptography. - - [Cryptography I - Dan Boneh: Videos 1, 2 and 3.](https://youtube.com/playlist?list=PL58C6Q25sEEHXvACYxiav_lC2DqSlC7Og&si=M8qItPK_HUy3WR7b) -- Symmetric ciphers: the one time pad and stream ciphers. - - [Cryptography I - Dan Boneh: Videos 6, 7, 8 and 9.](https://www.youtube.com/watch?v=pQkyFJp2eUg&list=PL58C6Q25sEEHXvACYxiav_lC2DqSlC7Og&index=7) -- Exclusive or. - - [Crypto101: Chapter 5](https://www.crypto101.io/) -- Block ciphers. - - [Crypto101: Chapter 6](https://www.crypto101.io/) -- Number Theory: Modular arithmetic and prime numbers - - [An Introduction to Mathematical Cryptography: Chapter 1](https://link.springer.com/book/10.1007/978-0-387-77993-5) -- Public key cryptography: Discrete logarithms and Diffie-Hellman. - - [An Introduction to Mathematical Cryptography: Chapters from 2.1 to 2.4](https://link.springer.com/book/10.1007/978-0-387-77993-5) -- Abstract Algebra: Group Theory. - - [An Introduction to Mathematical Cryptography: Chapter 2.5](https://link.springer.com/book/10.1007/978-0-387-77993-5) -- Abstract Algebra: Rings and finite fields. - - [An Introduction to Mathematical Cryptography: Chapter 2.10](https://link.springer.com/book/10.1007/978-0-387-77993-5) -- Finite Field Theory: Operations and applications in cryptography. -- RSA. - - [How RSA Works](https://www.youtube.com/watch?v=qph77bTKJTM&t=1060s) -- Basic Cryptography: hash functions, and digital signatures. - - [What are Digital Signatures?](https://www.youtube.com/watch?v=s22eJ1eVLTU) - - -## 2. Theory and Application of Elliptic Curves - -### Key Concepts: -- Elliptic Curves over Finite Fields: Definition and operations. - - [Elliptic Curves - Computerphile](https://www.youtube.com/watch?v=NF1pwjL9-DE) -- Elliptic Curve Cryptography (ECC): Applications and advantages. -- Points and Operations on Elliptic Curves: Point addition and scalar multiplication. -- Pairing - - [Pairing for Beginners](https://static1.squarespace.com/static/5fdbb09f31d71c1227082339/t/5ff394720493bd28278889c6/1609798774687/PairingsForBeginners.pdf) Chapter 1 & 2 - - -## 3. Introduction to Zero-Knowledge Proofs - -### Key Concepts: -- Definition and Properties: Completeness, soundness, and zero-knowledge. - - [Computer Scientist Explains One Concept in 5 Levels of Difficulty](https://www.youtube.com/watch?v=fOGdb1CTu5c) - - -## 4. SNARKs (Succinct Non-Interactive Arguments of Knowledge) - -### Key Concepts: -- Introduction to SNARKs: Concepts and uses. - - [What is a zk-SNARK?](https://www.youtube.com/watch?v=gcKCW7CNu_M) -- Components of SNARKs: Arithmetization, constraint systems, and quadratic arithmetic programs (QAP). - - [SNARKs vs. STARKs](https://zkhack.dev/whiteboard/module-four/) - -Related Papers -[Pinocchio: Nearly Practical Verifiable Computation](https://eprint.iacr.org/2013/279.pdf) - -## 5. STARKs (Scalable Transparent ARguments of Knowledge) - -### Key Concepts: -- Fundamentals of STARKs: Differences with SNARKs and applications. - - [ZK-STARKs: Scalable Transparent Zero Knowledge Proofs](https://eprint.iacr.org/2018/046.pdf) - - [Diving into Starks](https://www.youtube.com/watch?v=cDzTm3clrEo) - - Multipart tutorial by Vitalik Buterin [I](https://vitalik-eth-limo.translate.goog/general/2017/11/09/starks_part_1.html?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es-419&_x_tr_pto=sc) [II](https://vitalik.eth.limo/general/2017/11/22/starks_part_2.html) & [III](https://vitalik.eth.limo/general/2018/07/21/starks_part_3.html) -- Protocols and Security in STARKs: FRI (Fast Reed-Solomon IOPP) and AIR (Algebraic Intermediate Representation) - -# Other learning resources - -This list contains papers, videos, books, and links to resources that we found useful to learn about zero-knowledge proofs and cryptography. The list is by no means exhaustive and we will be updating it. - -## Videos - -- [ZK Whiteboard](https://zkhack.dev/whiteboard/) -- [All the MATH you need to understand SNARKs and STARKs](https://www.youtube.com/playlist?list=PLFX2cij7c2PynTNWDBzmzaD6ij170ILbQ) - -## Books - -- [Thaler - Proofs, Arguments and Zero-knowledge](https://people.cs.georgetown.edu/jthaler/ProofsArgsAndZK.pdf) - -## Papers - -- [Pinocchio](https://eprint.iacr.org/2013/279.pdf) -- [Plonk](https://eprint.iacr.org/2019/953.pdf) -- [Square Span Programs with Applications to Succinct NIZK Arguments](https://eprint.iacr.org/2014/718.pdf) -- [KZG Polynomial Commitment Scheme](https://cacr.uwaterloo.ca/techreports/2010/cacr2010-10.pdf) - -## Courses -- [Modern Zero Knowledge Cryptography - MIT IAP 2023](https://zkiap.com) -- [Zero Knowledge Proofs](https://zk-learning.org) Dan Boneh, Shafi Goldwasser, Dawn Song, Justin Thaler & Yupeng Zhang - -## Links - -- [STARK-101 - Python](https://starkware.co/stark-101/) -- [BabySnark Protocol](https://github.com/lambdaclass/lambdaworks/tree/main/examples/baby-snark) diff --git a/bootcamp/sparkling_water_0b10.md b/bootcamp/sparkling_water_0b10.md deleted file mode 100644 index 03d7d1a64..000000000 --- a/bootcamp/sparkling_water_0b10.md +++ /dev/null @@ -1,115 +0,0 @@ -# Sparkling Water Bootcamp in Cryptography 01b0 - -## About - -This is the second edition of the Sparkling Water Bootcamp in Cryptography. It is intended to provide an overview of proof systems and some topic in cryptography. It has a duration of 8 weeks of lectures, exercises and coding practice. - -## Intended roadmap - -The roadmap is dynamic and may change as the bootcamp progresses. - -### Week 1 - Fundamentals I - -- Math preliminaries: groups, rings and fields -- Finite fields -- RSA cryptosystem -- Univariate polynomials over finite fields -- Shamir secret sharing -- Examples of commonly used finite fields in Cryptography - -#### Learning materials: - -- [An introduction to mathematical cryptography](https://books.google.com.ar/books/about/An_Introduction_to_Mathematical_Cryptogr.html?id=BHuTQgAACAAJ&source=kp_book_description&redir_esc=y) - Chapter 1 & 3. -- [The MiniGoldilocks prime](https://xn--2-umb.com/22/goldilocks/) -- [Summary on Montgomery arithmetic](https://eprint.iacr.org/2017/1057.pdf) -- [Mersenne primes](https://eprint.iacr.org/2023/824.pdf) -- [Binary fields by Vitalik](https://vitalik.eth.limo/general/2024/04/29/binius.html) -- [Finite Fields](https://www.youtube.com/watch?v=MAhmV_omOwA&list=PLFX2cij7c2PynTNWDBzmzaD6ij170ILbQ&index=8) -- [Constructing finite fields](https://www.youtube.com/watch?v=JPiXFn9WA5Y&list=PLFX2cij7c2PynTNWDBzmzaD6ij170ILbQ&index=6) -- [Cyclic groups](https://www.youtube.com/watch?v=UIhhs38IAGM&list=PLFX2cij7c2PynTNWDBzmzaD6ij170ILbQ&index=3) - -#### Motivation - -- [Mersenne primes' performance in STWO](https://www.youtube.com/watch?v=_eha0QqAbIA) -- [Circle STARKs](https://www.youtube.com/watch?v=NAhLYMysSdk&list=PLj80z0cJm8QFy2umHqu77a8dbZSqpSH54&index=17) -- [Binius](https://www.youtube.com/watch?v=rgRWcWOll0w&list=PLj80z0cJm8QFy2umHqu77a8dbZSqpSH54&index=4) - -#### Exercises - -- Find all the multiplicative subgroups of the multiplicative group of integers modulo 17. -- Define a field in lambdaworks. -- Write simple code using the different field operations in lambdaworks. -- Implement a basic version of Shamir secret sharing. - -### Week 2 - Fundamentals II - -- Elliptic curves over finite fields. -- Diffie-Hellman key exchange -- Small subgroup attacks -- Collision-resistant hash functions -- Merkle trees -- KZG polynomial commitment scheme - -#### Recommended material - -- [Moonmath Manual](https://leastauthority.com/community-matters/moonmath-manual/) - Chapter 5, until 5.3 -- [Programming Bitcoin](https://books.google.fr/books/about/Programming_Bitcoin.html?id=O2aHDwAAQBAJ&source=kp_book_description&redir_esc=y) - Chapters 2 & 3. -- [Introduction to Mathematical Cryptography](https://books.google.com.ar/books/about/An_Introduction_to_Mathematical_Cryptogr.html?id=BHuTQgAACAAJ&source=kp_book_description&redir_esc=y) - Chapter 5 until 5.5 -- [Serious Cryptography](https://books.google.com.ar/books/about/Serious_Cryptography.html?id=1D-QEAAAQBAJ&source=kp_book_description&redir_esc=y) - Chapters 11 & 12. -- [KZG basics and application to Mina Bridge](https://blog.lambdaclass.com/mina-to-ethereum-bridge/) - -### Week 3 - BabySNARK - -- SNARKs - fundamentals. -- Elliptic curve pairings. -- KZG commitment scheme. -- Square span programs -- BabySNARK -- Field extensions - -#### Reading material - -- [Pairings for beginners](https://static1.squarespace.com/static/5fdbb09f31d71c1227082339/t/5ff394720493bd28278889c6/1609798774687/PairingsForBeginners.pdf) -- [BabySNARK](https://github.com/lambdaclass/lambdaworks/tree/main/examples/baby-snark) - -#### Exercises - -- Create a simple boolean circuit, generate the square constraint system and generate a proof of execution and verify it. -- Explain what polynomial commitments are and how KZG commitment works. -- Create a false proof if you know the value of the parameter beta. -- Explain the drawbacks of a trusted setup. -- Solve [exercise 2 in lambdaworks](https://github.com/lambdaclass/lambdaworks/tree/main/exercises/challenge_2) - -### Week 4 - STARKs and the FRI protocol - -- Algebraic intermediate representation (AIR) -- FRI protocol -- STARK protocol -- Comparison between virtual machines - -### Week 5 - Groth 16 - -- R1CS -- Quadratic arithmetic programs -- Groth 16 - -### Week 6 - Plonk - -- Plonkish arithmetization -- Permutation checks -- Different flavors of Plonk - -### Week 7 - Lookup arguments and folding schemes - -- Lookup arguments -- Plookup -- LogUp -- Folding schemes -- Proof-carrying data (PCD) -- Nova - -### Week 8 - More advanced topics - -TBD - -## Challenges and exercises