|
Barretenberg
The ZK-SNARK library at the core of Aztec
|
Class responsible for computation of the batched multilinear polynomials required by the Gemini protocol. More...
#include <gemini.hpp>
Public Member Functions | |
| PolynomialBatcher (const size_t full_batched_size, const size_t actual_data_size=0) | |
| bool | has_unshifted () const |
| bool | has_to_be_shifted_by_one () const |
| void | set_unshifted (RefVector< Polynomial > polynomials) |
| void | set_to_be_shifted_by_one (RefVector< Polynomial > polynomials) |
| Polynomial | compute_batched (const Fr &challenge) |
| Compute batched polynomial A₀ = F + G/X as the linear combination of all polynomials to be opened, where F is the linear combination of the unshifted polynomials and G is the linear combination of the to-be-shifted-by-1 polynomials. | |
| std::pair< Polynomial, Polynomial > | compute_partially_evaluated_batch_polynomials (const Fr &r_challenge) |
| Compute partially evaluated batched polynomials A₀(X, r) = A₀₊ = F + G/r, A₀(X, -r) = A₀₋ = F - G/r. | |
Public Attributes | |
| RefVector< Polynomial > | unshifted |
| RefVector< Polynomial > | to_be_shifted_by_one |
Private Attributes | |
| size_t | full_batched_size = 0 |
| size_t | actual_data_size_ = 0 |
| Polynomial | batched_unshifted |
| Polynomial | batched_to_be_shifted_by_one |
Class responsible for computation of the batched multilinear polynomials required by the Gemini protocol.
Opening multivariate polynomials using Gemini requires the computation of batched polynomials. The first, here denoted A₀, is a linear combination of all polynomials to be opened. If we denote the linear combinations (based on challenge rho) of the unshifted and to-be-shifted-by-1 polynomials by F and G respectively, then A₀ = F + G/X. This polynomial is "folded" in Gemini to produce d-1 univariate polynomials Fold_i, i = 1, ..., d-1. The second and third are the partially evaluated batched polynomials A₀₊ = F + G/r, and A₀₋ = F - G/r. These are required in order to prove the opening of shifted polynomials G_i/X from the commitments to their unshifted counterparts G_i.
Definition at line 125 of file gemini.hpp.
|
inline |
Definition at line 137 of file gemini.hpp.
|
inline |
Compute batched polynomial A₀ = F + G/X as the linear combination of all polynomials to be opened, where F is the linear combination of the unshifted polynomials and G is the linear combination of the to-be-shifted-by-1 polynomials.
| challenge | batching challenge |
Definition at line 159 of file gemini.hpp.
|
inline |
Compute partially evaluated batched polynomials A₀(X, r) = A₀₊ = F + G/r, A₀(X, -r) = A₀₋ = F - G/r.
| r_challenge | partial evaluation challenge |
Definition at line 194 of file gemini.hpp.
|
inline |
Definition at line 145 of file gemini.hpp.
|
inline |
Definition at line 144 of file gemini.hpp.
|
inline |
Definition at line 149 of file gemini.hpp.
|
inline |
Definition at line 148 of file gemini.hpp.
|
private |
Definition at line 128 of file gemini.hpp.
|
private |
Definition at line 131 of file gemini.hpp.
|
private |
Definition at line 130 of file gemini.hpp.
|
private |
Definition at line 127 of file gemini.hpp.
| RefVector<Polynomial> bb::GeminiProver_< Curve >::PolynomialBatcher::to_be_shifted_by_one |
Definition at line 135 of file gemini.hpp.
| RefVector<Polynomial> bb::GeminiProver_< Curve >::PolynomialBatcher::unshifted |
Definition at line 134 of file gemini.hpp.