You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm sorry to ask this question because this question does not involve the correctness of the code, but is purely a question of my own understanding. After inquiring some information, I did not get a suitable answer, so I think I can only ask the question in here it is.
I don't quite understand how the eval_of_tau function in generator works.
It's first parameter is powers_of_tau, but this powers_of_tau confuses me. In the front, this variable is exactly what it says, it is the powers of tau
// Use inverse FFT to convert powers of tau to Lagrange coefficients
powers_of_tau.ifft(&worker);
So as I understand it, from here on powers_of_tau becomes the coefficients (a0, a1, ..an) of the polynomial f(x) such that
A polynomial of the form f(x) = a0 + a1 * x + a2 * x^2 .... an * x^n
Satisfy:
f(ω0) = tau^0
f(ω1) = tau^1
....
In this case, according to the implementation of the eval_at_tau function
How can this be the value of a QAP polynomial at tau?
Because powers_of_tau has been ifft transformed before, so powers_of_tau[index].0 here should be the indexth coefficient of f(x). What is the significance of multiplying this coefficient with coeff?
I guess based on the comments, here is the equivalent to the point value form of QAP by doing Lagrangian interpolation, the formula:
$$ L(x) = \sum _{j=0}^{k} {y}_j * {l}_j(x) $$
Then coeff is equivalent to $$ {y}_j $$
Then the jth item of powers_of_tau is equal to the l_j(x) corresponding to y_j?
Is this guess correct? Is there any formula to prove that they are indeed equal? Thanks!
The text was updated successfully, but these errors were encountered:
I'm sorry to ask this question because this question does not involve the correctness of the code, but is purely a question of my own understanding. After inquiring some information, I did not get a suitable answer, so I think I can only ask the question in here it is.
I don't quite understand how the
eval_of_tau
function ingenerator
works.Here is the
eval_at_tau
function:bellman/src/groth16/generator.rs
Lines 371 to 384 in 9bb30a7
Its second parameter is the QAP polynomial stored in point-valued form:
bellman/src/groth16/generator.rs
Lines 313 to 316 in 9bb30a7
It's first parameter is
powers_of_tau
, but thispowers_of_tau
confuses me. In the front, this variable is exactly what it says, it is the powers of taubellman/src/groth16/generator.rs
Lines 244 to 259 in 9bb30a7
But before actually using it, make the following transformation:
bellman/src/groth16/generator.rs
Lines 294 to 295 in 9bb30a7
So as I understand it, from here on
powers_of_tau
becomes the coefficients (a0, a1, ..an) of the polynomial f(x) such thatA polynomial of the form f(x) = a0 + a1 * x + a2 * x^2 .... an * x^n
Satisfy:
f(ω0) = tau^0
f(ω1) = tau^1
....
In this case, according to the implementation of the
eval_at_tau
functionbellman/src/groth16/generator.rs
Lines 375 to 381 in 9bb30a7
How can this be the value of a QAP polynomial at tau?
Because
powers_of_tau
has been ifft transformed before, sopowers_of_tau[index].0
here should be theindex
th coefficient of f(x). What is the significance of multiplying this coefficient withcoeff
?I guess based on the comments, here is the equivalent to the point value form of QAP by doing Lagrangian interpolation, the formula:
Then
coeff
is equivalent to $$ {y}_j $$Then the
j
th item ofpowers_of_tau
is equal to the l_j(x) corresponding to y_j?Is this guess correct? Is there any formula to prove that they are indeed equal? Thanks!
The text was updated successfully, but these errors were encountered: