[low priority] Univariate KZG in evaluation form #339
Labels
cappuccino
optimize-vid
https://www.notion.so/espressosys/9d835f79d4504926b8b3bb3d015abf06?v=b7028cdaea804b7aa918af95c0cd651
stretch
vid
In some applications of univariate KZG the polynomial is given in evaluation form (as
d
evaluationsp(1),...,p(d)
of polynomialp
at input points1,...,d
) instead of the conventional coefficient form (asd
coefficients ofp
). Example: KZG as a vector commitment.Currently we enforce coefficient form at the API level:
commit
,open
and their batch/multi variants all require aSelf::Polynomial
in coeff form:jellyfish/primitives/src/pcs/mod.rs
Lines 116 to 119 in ff34041
This API can be used for polynomials in evaluation form, but it forces the user to do a bunch of unnecessary and expensive FFTs.
It is possible to do all KZG operations natively in evaluation form, with no need for FFT anywhere in the stack: see here. (Skip to "evaluation form" section.)
Suggestions
Self::Polynomial
to a type that abstracts over the underlying representation (coeff vs. eval). Methods such ascommit
,open
, etc select the underlying implementation according to the underlying polynomial representation.I prefer a low-level solution such as item 1 but that's open to discussion.
The text was updated successfully, but these errors were encountered: