Proof of Sumcheck
A key observation that the Hyrax protocol makes is that the verifier's sumcheck "checks," i.e. that , and the final oracle query, can be modeled as linear equations.
At each round, "sends" the univariate by committing to its coefficients using Pedersen scalar commitments. Let (to get commitments ) be the coefficients for a degree univariate, where is the coefficient of the -th degree term.
Notice that is simply and is . Then is . We can compute the commitment to this using just the commitments to the coefficients as . Similarly, the evaluation can be computed using commitments to the coefficients of as . For each intermediate round of sumcheck, we simply have to compute a proof of equality between the two commitments and .
We can formulate the verifier's checks as a matrix vector product where the matrix contains the linear combination coefficients over the prover's messages, and the vector contains the prover's sumcheck messages as coefficients of the univariate polynomial in each round. Let round 's univariate have coefficients. Then, we can write the verifier's checks as such:
To encode all of the verifier's sumcheck checks in one go, we have check that:
The final represents the fact that the final dot product in the matrix-vector product is not . In fact, it should be exactly equal to the value that receives when it does the final "oracle query" in sumcheck. This is discussed next.
Every non-specified entry in the matrix is , and it has dimension . has dimension . Its product has dimension . The sum represents 's original claim for the sumcheck expression -- the sum of the first univariate should be equal to the sum, which is what the first row of the matrix multiplied by encodes.
Note that we can do a proof of dot product for each of the row of the matrix with as the private vector, and each entry in the resultant vector as the claimed dot product.
However, there is a small subtlety: every coefficients in must be committed to before the challenge is sampled for sumcheck. Otherwise, can modify the commitments to make false claims using its knowledge of Therefore, is committed to incrementally, and after each commitment is sampled. Finally, and engage in a proof of dot product for every row of the matrix .
The final "oracle query"
Over here we have encoded all of 's checks except for the final oracle query. Recall that at the end of sumcheck, has claims on underlying MLEs. In the Hyrax universe, commits to the claims it has on each of these MLEs, say via the commitments Then can combine these commitments linearly to compute a commitment to the expected value Then, we expand the matrix to have additional columns and add the coefficients needs to compute the linear combination of to the last (the -th) row of , and has additional entries with the commitments . Then can expect the result of the final dot product to be .
Example
We provide a minimal example to show how and are constructed. Assume and are engaging in sumcheck over the claim that , and via layerwise encoding, There are rounds of sumcheck (for each of the and ) variables, where bind to and is bound to . At the end of sumcheck, commits to and as and
look like this:
And their result that expects, which it can compute on its own is:
Optimizations
There is an optimization specified in the original Hyrax paper which allows us to take the random linear combination of the rows of and do proofs of dot product of just size where is the number of coefficients in the univariate of round , rather than proofs of dot product of size . We don't go into how to formulate this optimization, but suggest reading the original paper and specifically the "squashing 's checks" section. We have implemented this optimization in Remainder.