/Rareskills-ZK-book

My work for Rareskills ZK Book.

Primary LanguagePython

RareSkills - ZK-book

This repository contains my work on the RareSkills ZK-book.

Table of Contents

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

Summary

Monoid

  • 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.

Group

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.

Ring

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

Field

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