This is a slightly-rewritten version of the original post from here.
This document explains how to open different polynomials at different points.
The opening proof consists of one inner-product argument (IPA) proof, one commitment and one scalar.
The key application here is computing a slim Verkle proof fast!
Let
Let
where
Given
The prover starts off by committing to
The prover's job is to now convince the verifier that
We split the evaluation into two parts
However,
We note that
However, the verifier will work with:
Note that
Crucially, the verifier is able to compute the commitment for
Now we form two IPA proofs:
The prover now computes
The proof consists of
In this non-aggregated variation, the prover does not need to add
to the transcript.
The Verifier ultimately wants to verify that
The verifier computes
The verifier also computes
The verifier now needs to compute
Hence the verifier can compute
Note, however, that they cannot be sure that
This is
Hence
The verifier is able to compute this themselves, and so is able to verify the proof
Note now that since
We can now verify
The communication complexity of this protocol is two IPA proofs, 1 scalar and 1 commitment. We can get a better protocol by aggregating things together!
We now present a protocol to aggregate the two IPA proofs together, only requiring one IPA proof.
The prover no longer computes an IPA proof for
Instead, the prover combines them using
Let:
Now, we form an IPA proof
The prover still computes
The smaller proof now consists of
In the previous step, the verifier checked
We delay this verification and instead compute:
The verifier now checks
With overwhelming probability over
this will only return true iff and opened at are and respectively, from the equation.
The communication complexity of the protocol is one IPA Proof, one commitment and one scalar.
In the KZG document, this is
If we were able to avoid this, then we could save a lot on prover time, as they could evaluate each
However, we do need to do this because the challenge
There may be an argument to say that since
Given two polynomials :
and I generate a completely random variable
. If I want to add together
and Is it enough to generate randomness based on
and alone?
The answer is no because the prover has free reign over
and can change it without affecting