Verifies the consistency of polynomial evaluations provided by the the prover.
More...
|
static bool | check_consistency (const std::array< FF, NUM_SMALL_IPA_EVALUATIONS > &small_ipa_evaluations, const FF &small_ipa_eval_challenge, const std::vector< FF > &challenge_polynomial, const FF &inner_product_eval_claim, const FF &vanishing_poly_eval) |
| Generic consistency check agnostic to challenge polynomial \( F\).
|
|
static bool | check_libra_evaluations_consistency (const std::array< FF, NUM_SMALL_IPA_EVALUATIONS > &libra_evaluations, const FF &gemini_evaluation_challenge, const std::vector< FF > &multilinear_challenge, const FF &inner_product_eval_claim) |
| A method required by ZKSumcheck. The challenge polynomial is concatenated from the powers of the sumcheck challenges.
|
|
static bool | check_eccvm_evaluations_consistency (const std::array< FF, NUM_SMALL_IPA_EVALUATIONS > &small_ipa_evaluations, const FF &evaluation_challenge, const FF &evaluation_challenge_x, const FF &batching_challenge_v, const FF &inner_product_eval_claim) |
| A method required for the verification Translation Evaluations in the ECCVMVerifier. The challenge polynomial is concatenated from the products \( x^i \cdot v^j\). See the corresponding method for details.
|
|
static void | handle_edge_cases (const FF &vanishing_poly_eval) |
| Check if the random evaluation challenge is in the SmallSubgroup.
|
|
static std::array< FF, NUM_BARYCENTRIC_EVALUATIONS > | compute_batched_barycentric_evaluations (const std::vector< FF > &coeffs, const FF &r, const FF &vanishing_poly_eval) |
| Efficient batch evaluation of the challenge polynomial, Lagrange first, and Lagrange last.
|
|
static std::array< FF, NUM_SMALL_IPA_EVALUATIONS > | evaluation_points (const FF &small_ipa_evaluation_challenge) |
|
static std::array< std::string, NUM_SMALL_IPA_EVALUATIONS > | evaluation_labels (const std::string &label_prefix) |
|
template<typename
Curve>
class bb::SmallSubgroupIPAVerifier< Curve >
Verifies the consistency of polynomial evaluations provided by the the prover.
Given a subgroup of \( \mathbb{F}^\ast \), its generator \( g\), this function checks whether the following equation holds:
\[ L_1(r) A(r) + (r - g^{-1}) \left( A(g*r) - A(r) - F(r) G(r) \right) + L_{|H|}(r) \left( A(r) - s
\right) = T(r) Z_H(r) \]
where the following evaluations are sent by the prover:
- \( A(r), A(g\cdot r) \) are the evaluations of the "grand sum polynomial"
- \( G(r) \) is the evaluation of the witness polynomial
- \( Q(r) \) is the evaluation of the quotient of the big sum identity polynomial by the vanishing polynomial for \(H\); and the following evaluations are computed by the verifier
- \( L_1(r) \) and \( L_{|H|}(r) \) are the evaluations of Lagrange polynomials corresponding to \( 1 \) and \( g^{-1} \).
- \( F(r) \) is the evaluation of a public polynomial formed from the challenges.
- \( Z_H(r) \) is the vanishing polynomial \( X^{|H|} - 1\) evaluated at the challenge point.
Definition at line 216 of file small_subgroup_ipa.hpp.
template<typename
Curve >
Efficient batch evaluation of the challenge polynomial, Lagrange first, and Lagrange last.
It is a modification of compute_barycentric_evaluation method that does not require EvaluationDomain object and outputs the barycentric evaluation of a polynomial along with the evaluations of the first and last Lagrange polynomials. The interpolation domain is given by \( (1, g, g^2, \ldots, g^{|H| -1 } )\)
- Parameters
-
coeffs | Coefficients of the polynomial to be evaluated, in our case it is the challenge polynomial |
r | Evaluation point, we are using the Gemini evaluation challenge |
inverse_root_of_unity | Inverse of the generator of the subgroup H |
- Returns
- std::array<FF, NUM_BARYCENTRIC_EVALUATIONS>
Definition at line 373 of file small_subgroup_ipa.hpp.