This repository contains my work on the RareSkills ZK-book.
Chapter 1: Set Theory
Chapter 2: Group Theory
Chapter 3: Rings and Fields
Chapter 4: Elliptic Curve Addition
Chapter 5: Elliptic Curves in Finite Fields
Chapter 6: Bilinear Pairings
Chapter 7: Arithmetic Circuits
Chapter 8: Rank 1 Constraint Systems
Chapter 9: Zero Knowledge Proofs with Rank 1 Constraint Systems
Chapter 10: Quadratic Arithmetic Programs
Chapter 11: R1CS to QAP in Python
Chapter 12: Encrypted Polynomial Evaluation
Chapter 13: Quadratic Arithmetic Programs over Elliptic Curves
Chapter 14: Groth16 Explained
Chapter 15: Circom and Circomlib
- A magma is a set with a closed binary operator.
- A semigroup is a magma where the binary operator must be associative.
- A monoid is a semigroup with an identity element.
It is a set with:
- an associative and closed binary operator
- an identity element
- every element has an inverse
- (abelian group:)
- binary operator is commutative
Order of a group = the number of elements in it
Cyclic group = group that has a generator element, allows to generate every other elements with the binary operator
Product of groups exist and are useful.
It is a set with two binary operators such that:
- under first binary operator, the set is an abelian group
- under second binary operator, the set is a monoid
- Monoid: only the inverse property is missing to make it a group
- if monoid is commutative, then it is an abelian ring
- second binary distributes over the first
It is a set with two bin operators such that:
- under the first, the set is an abelian group
- under the second (excluding the zero element), the set is an abelian group