Commitment scheme - basically a generalisation of merkle trees. The merkle root is in essence, a commitment.
FRI is a binary search for the polynomial to find an area where it fails the low-degreeness test.
Fiat-Shamir - hashes make people (the prover) commit to things (same idea as atomic swaps), which prevents them from aborting a protocol (like a swap).
Reed-Solomon - this tech is usually used for error correction - ie. redundantly encode data, so if a bit flips / the cable does something wack, you can still recover the full data.If you look at how Reed-Solomun works, it's just based on interpolating that data into a polynomial curve, and sampling points from it (redundancy). FRI just uses Reed-Solomun to sample random points for the binary search
ZK-STARK's - how are they generated?
The best explanation I've ever read of ZK-STARK's is from a cryptographer named Alan Szepieniec, who has written an entire public series here. The diagrams and content below in this section are mostly lifted from his writing.
These are the basic steps to generating a STARK proof from running a provable program:
Arithmetization. The first transformation in the pipeline is known as arithmetization. In this procedure, the sequence of elementary logical and arithmetical operations on strings of bits is transformed into a sequence of native finite field operations on finite field elements, such that the two represent the same computation. The output is an arithmetic constraint system, essentially a bunch of equations with coefficients and variables taking values from the finite field.
Interpolation. Interpolation in the usual sense means finding a polynomial that passes through a set of data points. In the context of the STARK compilation pipeline, interpolation means finding a representation of the arithmetic constraint system in terms of polynomials. The interpolation step reduces the satisfiability of an arithmetic constraint system to a claim about the low degree of certain polynomials - ie. from to . The resulting object is an abstract protocol called a Polynomial Interactive oracle proof (IOP).
Proving low-degreeness. The protocol designer who wants to use a Polynomial IOP as an intermediate stage must find a way to commit to a polynomial and then open that polynomial in a point of the verifier’s choosing. FRI is a key component of a STARK proof that achieves this task by using Merkle trees of Reed-Solomon Codewords to prove the boundedness of a polynomial’s degree. After applying the Fiat-Shamir transform to make it non-interactive, you get a probabilistic proof that at least some high percentage (eg. 80%) of a given set of values represent the evaluations of some specific polynomial whose degree is much lower than the number of values given. This is the STARK.
How can proving low-degreeness be related to proving the satisfiability of the polynomial?
This is a question I had, and didn't know the answer to! So we investigated.
Problem. How is the problem of arithmetic satisfiability converted into proving low-degreeness of a polynomial?
Answer. Using the unicity theorem of polynomials + blowing up the domain to make it intractable to find a "colliding" polynomial. See [1], [2]
Polynomial unicity theorem.There exists a unique polynomial of degree at most that interpolates the data points , where no two are the same.
Basically:
polynomial has roots, where
there is a theorem which relates the roots of a polynomial with the degree
this is the unicity theorem
if you can construct the unique polynomial of degree at most , for these roots, then proving the existence of this polynomial (impossible) is equivalent to proving the low-degreeness of the polynomial (possible using FRI)
problem though - what stops me constructing a polynomial of a similar degree less than , but with completely different values to those in the trace?
approach is to "blow up" the polynomial's domain, such that finding a 2nd "exploit" polynomial as described would be intractable according to some security assumptions.
this is called the low-degree extension. Quoting Starkware:
N. In order to achieve a secure protocol, each such polynomial is evaluated over a larger domain, which we call the evaluation domain. For example, in our StarkDEX Alpha the size of the evaluation domain is usually 16*N. We refer to this evaluation as the trace Low Degree Extension (LDE) and the ratio between the size of the evaluation domain and the trace domain as the blowup factor (those familiar with coding theory notation will notice that the blowup factor is 1/rate and the LDE is in fact simply a Reed-Solomon code of the trace).
Concepts.
Execution Trace. A series of registers over time.
Constraints / Trace Polynomials / AIR constraints.
expressed as polynomials composed over the trace cells that are satisfied if and only if the computation is correct.
Compute evaluations of the DEEP composition polynomial at the queried positions.
Verify low-degree proof. Make sure that evaluations of the DEEP composition polynomial we computed in the previous step are in fact evaluations of a polynomial of degree equal to trace polynomial degree. This uses the positions from step (2).
Basically:
The computation is expressed as both the trace and the constraints. Of course we cannot know the validity of the constraints without the trace values. We use a public coin to seed our selection of positions, and then read the commitments, evaluate the polynomials at those committed positions, combine their values into the composition polynomial, and then do our degree-ness test using FRI.