Fast Reed-Solomon Interactive Oracle Proof of Proximity (FRI) is an interactive protocol used to check if the degree of a committed polynomial is less than a specific value \( d \). The general idea is as follows: Given two polynomials \( p \) and \( q \) with degree \( d \), for any random challenge \( a \), the polynomial \( p + a q \) is of degree \( d \) (thus its encoded value is also close to a degree \( d \) polynomial).
Specifically, the FRI protocol is divided into three phases: Commit, Folding, and Query.
The main advantages of FRI are:
The main drawbacks of FRI are:
Next, we describe the three phases of the FRI protocol: Commit, Folding, and Query. It is important to note that the FRI protocol outlined here is the interactive version, meaning that the verifier sends random challenges to the prover. To convert it to a non-interactive version, the Fiat-Shamir transformation is used to replace random challenges with queries to a random oracle.
Commit: Given a degree \( d \) polynomial \( p(X) \), a predefined set \( \{w_1, w_2, \dots, w_n\} \) of size \( n \) (where \( n = qd, q > 2 \)) and a collision-resistant hash function \( H \), the following steps are performed:
Folding: The problem size is halved using a binary method, i.e., the degree \( d \) polynomial is converted into two degree \( d/2 \) polynomials, and a Random Linear Combination (RLC) is used to generate a new degree \( d/2 \) polynomial, until the polynomial is reduced to a constant or reaches the predefined degree. The steps are as follows: For the \( i \)-th round of FRI folding (until the polynomial is compressed to a constant, i.e., \( i \) is at most \( \log d \)):
Query: The verifier issues several random challenges to verify the correctness of the prover’s folding process (which can be viewed as re-executing the folding process). The prover must submit the evaluations for each challenge, along with the corresponding Merkle paths, to verify that the evaluations are correct and part of the Merkle root. The detailed interaction logic is as follows (this process is repeated for multiple rounds, though only one round is considered here as the verification method is the same for each round):
For \( i = 1 \ldots \log d \)
To compute \( p_e(X) \) and \( p_o(X) \), only the values of \( p(X) \) at \( X = t \) and \( X = -t \) are needed, as the following equation holds (the prover must submit the corresponding Merkle paths when responding):
\[ p(X) = p_e(X) + X p_o(X)\]
For \( p(X) \), the even terms are extracted as \( p_e(X) = \frac{p(X) + p(-X)}{2} \), and the odd terms are extracted as \( p_o(X) = \frac{p(X) - p(-X)}{2} \). The rest of the terms can be simplified and expanded.
FRI involves trade-offs between proof size, proving time, and verification time, primarily determined by the size of the set Ω, where \( n = qd \).
To reduce proof size (i.e., the length of the Merkle path), Plonky2 typically submits a Merkle cap rather than the Merkle root, which consists of the node values of the subtrees of the Merkle root.
Like KZG polynomial commitments, FRI can also be applied to polynomial commitments. Given a polynomial \( p(X) \) and a point \( t \), such that \( p(t) = y \), we can define:
\[h(X) = \frac{p(X) - y}{X - t}\]
In polynomial commitments, commitments to both \( h(X) \) and \( p(X) \) are made simultaneously, and specific points are opened to check that \( h(X) \) and \( p(X) \) have degrees at most \( d-1 \) and \( d \), respectively. Through random challenges, we verify:
\[h(X) (X - t)= p(X) - y\]
If the equality holds, the verification is successful.
Subscribe to the ZKM Blog to stay updated with the latest research by ZKM. If you have any questions, you can contact the ZKM team on discord: discord.com/zkm
Fast Reed-Solomon Interactive Oracle Proof of Proximity (FRI) is an interactive protocol used to check if the degree of a committed polynomial is less than a specific value \( d \). The general idea is as follows: Given two polynomials \( p \) and \( q \) with degree \( d \), for any random challenge \( a \), the polynomial \( p + a q \) is of degree \( d \) (thus its encoded value is also close to a degree \( d \) polynomial).
Specifically, the FRI protocol is divided into three phases: Commit, Folding, and Query.
The main advantages of FRI are:
The main drawbacks of FRI are:
Next, we describe the three phases of the FRI protocol: Commit, Folding, and Query. It is important to note that the FRI protocol outlined here is the interactive version, meaning that the verifier sends random challenges to the prover. To convert it to a non-interactive version, the Fiat-Shamir transformation is used to replace random challenges with queries to a random oracle.
Commit: Given a degree \( d \) polynomial \( p(X) \), a predefined set \( \{w_1, w_2, \dots, w_n\} \) of size \( n \) (where \( n = qd, q > 2 \)) and a collision-resistant hash function \( H \), the following steps are performed:
Folding: The problem size is halved using a binary method, i.e., the degree \( d \) polynomial is converted into two degree \( d/2 \) polynomials, and a Random Linear Combination (RLC) is used to generate a new degree \( d/2 \) polynomial, until the polynomial is reduced to a constant or reaches the predefined degree. The steps are as follows: For the \( i \)-th round of FRI folding (until the polynomial is compressed to a constant, i.e., \( i \) is at most \( \log d \)):
Query: The verifier issues several random challenges to verify the correctness of the prover’s folding process (which can be viewed as re-executing the folding process). The prover must submit the evaluations for each challenge, along with the corresponding Merkle paths, to verify that the evaluations are correct and part of the Merkle root. The detailed interaction logic is as follows (this process is repeated for multiple rounds, though only one round is considered here as the verification method is the same for each round):
For \( i = 1 \ldots \log d \)
To compute \( p_e(X) \) and \( p_o(X) \), only the values of \( p(X) \) at \( X = t \) and \( X = -t \) are needed, as the following equation holds (the prover must submit the corresponding Merkle paths when responding):
\[ p(X) = p_e(X) + X p_o(X)\]
For \( p(X) \), the even terms are extracted as \( p_e(X) = \frac{p(X) + p(-X)}{2} \), and the odd terms are extracted as \( p_o(X) = \frac{p(X) - p(-X)}{2} \). The rest of the terms can be simplified and expanded.
FRI involves trade-offs between proof size, proving time, and verification time, primarily determined by the size of the set Ω, where \( n = qd \).
To reduce proof size (i.e., the length of the Merkle path), Plonky2 typically submits a Merkle cap rather than the Merkle root, which consists of the node values of the subtrees of the Merkle root.
Like KZG polynomial commitments, FRI can also be applied to polynomial commitments. Given a polynomial \( p(X) \) and a point \( t \), such that \( p(t) = y \), we can define:
\[h(X) = \frac{p(X) - y}{X - t}\]
In polynomial commitments, commitments to both \( h(X) \) and \( p(X) \) are made simultaneously, and specific points are opened to check that \( h(X) \) and \( p(X) \) have degrees at most \( d-1 \) and \( d \), respectively. Through random challenges, we verify:
\[h(X) (X - t)= p(X) - y\]
If the equality holds, the verification is successful.
Subscribe to the ZKM Blog to stay updated with the latest research by ZKM. If you have any questions, you can contact the ZKM team on discord: discord.com/zkm