This note attempts to be a summary of the Basefold paper and talk by Binyi Chen.
The paper makes three major contributions that are all interlinked. It introduces
Let's dive in!
The authors present a code family that generalizes Reed-Solomon code such that the code is still linear, but doesn't rely on FFT-friendly fields. The code family is defined as
where "
In words,
The Basefold authors define
as being "foldable".
Notice that
The only property of interest for this discussion is that
where
This section can be safely skipped upon first read
We claimed earlier that the code presented above is a generalization of the Reed-Solomon code. Hence, we need to show that there exists
Recall the definition of a Reed-Solomon code. For
where the brackets signify that
Next, define
Next, since the Reed-Solomon code is linear, the following holds:
where
Next, notice the following
Naturally, the same holds for
Notice that this fits the foldability property, where
This comes with a caveat. The foldability property requires the coefficients of
then
We leave it as an exercise to verify why this is correct.
The Basefold paper introduces a new Interactive Oracle Proof of Proximity (IOPP) analogous to FRI, but for multilinear polynomials. That is, the protocol convinces the verifier that the prover has a multilinear polynomial (or, to be more precise, a function "close" to one). Where FRI uses Reed-Solomon codes, Basefold's IOPP uses the foldable code presented in the previous sections. Finally, similar to FRI, Basefold's IOPP also has a "commit" phase, where the prover commits to codes using Merkle trees for a number of layers, and a "query" phase, where the verifier queries random points in the codes to check for consistency between the layers.
Formally, the goal of the prover is to show that it has some polynomial
For example, if
In the first round, the prover encodes
The verifier then sends a random
The protocol repeats similarly for another
Notice: by construction,
. In words, is where the last variable has been fixed to . If we extend this observation all the way down to the last round, , for random . This will be an important point in the last section when we talk about the Basefold polynomial commitment scheme.
The goal of the query phase is for the verifier to check the consistency between
Let
For readability purposes, we will define the following variables
With this we are ready to start discussing how queries work. The verifier samples
Next, the verifier infers
or equivalently,
Finally, recall from the commit phase that
We can use the linearity property of the code to get
When we focus on a single index
Hence, the verifier was able to compute
Note that
either lies in the first or second half of ; that is, when , or otherwise. Whichever one it is, the prover only needs to send the Merkle proof for it, since the verifier already computed the value. Naturally, the prover also needs to send the value & Merkle proof for the other half (which the verifier didn't compute).
The same process then repeats for each round. In the last round, the prover only sends the Merkle proof for
Note: we use
to signify the index in the last round, where .
As in FRI, the verifier performs a number of queries, depending on the desired security level (i.e. the more queries, the more secure).
The Basefold polynomial commitment scheme relies heavily on sum-check. Refer to this article for a refresher.
The Basefold paper culiminates into a polynomial commitment scheme (PCS) for multilinear polynomials. That is, it allows a prover to commit to a multilinear polynomial
In this section, we will freely switch between the equalivalent notations for vectors
: .
First, we rewrite
where
For a refresher on multilinear polynomials, see this article.
Recall that sum-check requires the verifier to be able to evaluate
Note: this requires the prover to send
in the last step of the IOPP instead of . The verifier can then compute on its own in constant time.
Hence, the PCS protocol is as follows:
In a sense, sum-check almost gives you a multilinear PCS; the only missing piece is that last query
But in order to do that, what was missing is a linear code for multilinear polynomials that allows the verifier to track the correct transformation between codewords (i.e. the "foldable" property). Additionally, it's crucial for the IOPP to be computing
All in all, the Basefold PCS is a very clever construction at the intersection of all these ideas.