Commitment
Vortex has much in common with Ligero (frankly speaking, it has been built using Ligero idea). So, imagine we have a list of polynomials . We want to commit them and evaluate at the same point at the same time. So, leveraging the Reed-Solomon’s evaluation domain we describe each polynomial as vector where the interpolation of equals to the :
For simplicity, let’s define the interpolation function that works as follows:
Then, we organize these vectors into the matrix . Same as in Ligero, we extend our matrix with additional columns by replacing each word with its codeword, resulting in a matrix , where .
Then we hash each column, receiving values of — we will use these values as our commitment to the polynomials .
Open
Given input from the verifier, the prover responds with values where
Prove & Verification
- The verifier samples a challenge
- The prover responds with , where
- Then, the verifier samples indexes where
- The prover opens the corresponding columns from the matrix
- The verifier computes the Reed-Solomon encoding of named
- The verifier checks:
- for each
- → this follows from the linearity of Reed-Solomon
- The verifier checks that . This check follows from the following observation: , so:
- →
- →
- →
- etc.
The parameter is selected according to the security parameters.