Some nice tricks and definitions utilized in Plonk

Disclaimer: This write up introduces some basic tricks and definitions that one will bump into while trying to learn Plonk. This article is neither precise nor exhaustive. Its objective is to provide some intuition for those jumping onto Plonk and some fun for those who love math.

Is it an ELI5 article?

Lagrange interpolation

  • The idea of Lagrange interpolation is that, taking a number of points, one can reconstruct the polynomial passing through all of these points. In particular, first we construct a polynomial for each point that (i) passes through that point and (ii) equals zero in all other points. We then sum up all of the polynomials.

  • To describe what exactly we are talking about… Let FF be a field and HH be a subgroup of FF of order nn. Lagrange polynomial LxL_x is a polynomial of degree n1n-1 that vanishes (equals zero) in all points of HH except for xx and at point xx, Lx(x)=1L_x(x)=1. As this polynomial vanishes in all points except for xx, it has a very sparse representation: LX(X)=(cx(Xn1))/(Xx)L_X(X)=(c_x(X_n-1))/(X-x) where cxc_x is some constant. This sparsity allows Verifier to compute Lagrange polynomials on its own (i.e. it’s not too heavy).

Permutation check

  • Permutation check allows us to check that two sets contain the same elements regardless of their order. The idea of this check is to multiply all elements (1) in the initial order and (2) after the permutation, introducing randomness, and ensure that the results are equal.

Cosets

  • Cosets are used to decompose the underlying set into disjoint subsets of equal size. The initial set equals the sum of all cosets. In the diagram below, SS is the underlying cosets and S0S_0, S1S_1, S2S_2, S3S_3, S4S_4, S5S_5 are the cosets of equal size such as S0+S1+S2+S3+S4+S5=SS_0+ S_1+ S_2+ S_3+ S_4+ S_5=S.

Quotient polynomial

To explain what a quotient polynomial is, let’s represent p(x)p(x) as p(x)=s(x)q(x)+r(x)p(x)=s(x)q(x)+r(x). Then we say that q(x)q(x) is the quotient polynomial of p(x)p(x) and s(x)s(x), while r(x)r(x) is the reminder. Using quotient polynomials, one can check in a simple way if x=x0x=x_0 is a root of a specific polynomial. Following the notations we introduced above, if x=x0x=x_0 is really a root of y=p(x)y=p(x), then p(x)yp(x)-y can be divided by (xx0)(x-x_0) and as a result we will get another polynomial q(x)q(x).

n-th roots of unity

An nn-th root of unity is a complex number such that when raised to some positive integer power nn equals one: n=1⍵^n=1. nn-th roots of unity is defined as a set of all such numbers: Ωn={Cn=1}Ω_n=\{⍵∈C|⍵^n=1\} where CC is the set of complex numbers. A complex number is defined as =a+ib⍵=a+ib such that a,bRa,b∈R, i2=1i^2=-1 where aa refers to the real number part and bb to the imaginary part. n=1⍵^n=1 can be represented as a unit circuit:

  • A set of complex numbers includes all numbers of such form: C={=a+ib,a,bR,i2=1}C=\{⍵=a+ib, a,b∈R, i^2=-1\}.

  • Roots of unity are often used to construct cosets because they are conveniently decomposable into cosets.

Polynomial commitment

  • Polynomial commitment allows a committer to commit to a polynomial with a short string that can be used by a verifier to confirm claimed evaluations of the committed polynomial.

  • There are different types of polynomial commitments, but in the context of Plonk-ish arithmetization, we are especially interested in the KZG commitment (pairing-based). A nice property of KZG is that it is additively homomorphic. That is, if [f][f] is the commitment of f(x)f(x) and [g][g] is the commitment of g(x)g(x), then [f+g][f+g] if the commitment of f(x)+g(x)f(x)+g(x).

Circuit

  • When we are talking about Plonk, most of the time we are talking about polynomials. However, when it comes to a circuit, we have a table of wires and selectors that one can think about as the following:

where ww stands for “wire” and qq stands for “selector.” The depth of the table equals the number of gates nn.

For those feeling like ready to go one level deeper – check the book “Programmable Cryptography” by 0xPARC. Chapters on snark (Plonk) are absolutely awesome.

Subscribe to Lisa Akselrod
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.