Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::GeminiProver_< Curve > Class Template Reference

#include <gemini.hpp>

Classes

class  PolynomialBatcher
 Class responsible for computation of the batched multilinear polynomials required by the Gemini protocol. More...
 

Public Member Functions

template<typename Transcript >
std::vector< typename GeminiProver_< Curve >::Claimprove (Fr circuit_size, PolynomialBatcher &polynomial_batcher, std::span< Fr > multilinear_challenge, const CommitmentKey< Curve > &commitment_key, const std::shared_ptr< Transcript > &transcript, bool has_zk)
 

Static Public Member Functions

static std::vector< Polynomialcompute_fold_polynomials (const size_t log_n, std::span< const Fr > multilinear_challenge, const Polynomial &A_0, const bool &has_zk=false)
 Computes d-1 fold polynomials Fold_i, i = 1, ..., d-1.
 
static std::pair< Polynomial, Polynomialcompute_partially_evaluated_batch_polynomials (const size_t log_n, PolynomialBatcher &polynomial_batcher, const Fr &r_challenge, const std::vector< Polynomial > &batched_groups_to_be_concatenated={})
 
static std::vector< Claimconstruct_univariate_opening_claims (const size_t log_n, Polynomial &&A_0_pos, Polynomial &&A_0_neg, std::vector< Polynomial > &&fold_polynomials, const Fr &r_challenge)
 Computes/aggragates d+1 univariate polynomial opening claims of the form {polynomial, (challenge, evaluation)}.
 
template<typename Transcript >
static std::vector< Claimprove (const Fr circuit_size, PolynomialBatcher &polynomial_batcher, std::span< Fr > multilinear_challenge, const CommitmentKey< Curve > &commitment_key, const std::shared_ptr< Transcript > &transcript, bool has_zk=false)
 

Private Types

using Fr = typename Curve::ScalarField
 
using Commitment = typename Curve::AffineElement
 
using Polynomial = bb::Polynomial< Fr >
 
using Claim = ProverOpeningClaim< Curve >
 

Detailed Description

template<typename Curve>
class bb::GeminiProver_< Curve >

Definition at line 103 of file gemini.hpp.

Member Typedef Documentation

◆ Claim

template<typename Curve >
using bb::GeminiProver_< Curve >::Claim = ProverOpeningClaim<Curve>
private

Definition at line 107 of file gemini.hpp.

◆ Commitment

template<typename Curve >
using bb::GeminiProver_< Curve >::Commitment = typename Curve::AffineElement
private

Definition at line 105 of file gemini.hpp.

◆ Fr

template<typename Curve >
using bb::GeminiProver_< Curve >::Fr = typename Curve::ScalarField
private

Definition at line 104 of file gemini.hpp.

◆ Polynomial

template<typename Curve >
using bb::GeminiProver_< Curve >::Polynomial = bb::Polynomial<Fr>
private

Definition at line 106 of file gemini.hpp.

Member Function Documentation

◆ compute_fold_polynomials()

template<typename Curve >
std::vector< typename GeminiProver_< Curve >::Polynomial > bb::GeminiProver_< Curve >::compute_fold_polynomials ( const size_t  log_n,
std::span< const Fr multilinear_challenge,
const Polynomial A_0,
const bool &  has_zk = false 
)
static

Computes d-1 fold polynomials Fold_i, i = 1, ..., d-1.

Parameters
multilinear_challengemultilinear opening point 'u'
A_0= F(X) + G↺(X) = F(X) + G(X)/X
Returns
std::vector<Polynomial>

Definition at line 139 of file gemini_impl.hpp.

◆ compute_partially_evaluated_batch_polynomials()

template<typename Curve >
static std::pair< Polynomial, Polynomial > bb::GeminiProver_< Curve >::compute_partially_evaluated_batch_polynomials ( const size_t  log_n,
PolynomialBatcher polynomial_batcher,
const Fr r_challenge,
const std::vector< Polynomial > &  batched_groups_to_be_concatenated = {} 
)
static

◆ construct_univariate_opening_claims()

template<typename Curve >
std::vector< typename GeminiProver_< Curve >::Claim > bb::GeminiProver_< Curve >::construct_univariate_opening_claims ( const size_t  log_n,
Polynomial &&  A_0_pos,
Polynomial &&  A_0_neg,
std::vector< Polynomial > &&  fold_polynomials,
const Fr r_challenge 
)
static

Computes/aggragates d+1 univariate polynomial opening claims of the form {polynomial, (challenge, evaluation)}.

Parameters
mle_opening_pointu = (u₀,...,uₘ₋₁) is the MLE opening point
fold_polynomialsvector of polynomials whose first two elements are F(X) = ∑ⱼ ρʲfⱼ(X) and G(X) = ∑ⱼ ρᵏ⁺ʲ gⱼ(X), and the next d-1 elements are Fold_i, i = 1, ..., d-1.
r_challengeunivariate opening challenge

The d+1 evaluations are A₀₊(r), A₀₋(-r), and Aₗ(−r^{2ˡ}) for l = 1, ..., d-1, where the Aₗ are the fold polynomials.

Parameters
A_0_posA₀₊
A_0_negA₀₋
fold_polynomialsAₗ, l = 1, ..., d-1
r_challenge
Returns
std::vector<typename GeminiProver_<Curve>::Claim> d+1 univariate opening claims

Definition at line 243 of file gemini_impl.hpp.

◆ prove() [1/2]

template<typename Curve >
template<typename Transcript >
static std::vector< Claim > bb::GeminiProver_< Curve >::prove ( const Fr  circuit_size,
PolynomialBatcher polynomial_batcher,
std::span< Fr multilinear_challenge,
const CommitmentKey< Curve > &  commitment_key,
const std::shared_ptr< Transcript > &  transcript,
bool  has_zk = false 
)
static

◆ prove() [2/2]

template<typename Curve >
template<typename Transcript >
std::vector< typename GeminiProver_< Curve >::Claim > bb::GeminiProver_< Curve >::prove ( Fr  circuit_size,
PolynomialBatcher polynomial_batcher,
std::span< Fr multilinear_challenge,
const CommitmentKey< Curve > &  commitment_key,
const std::shared_ptr< Transcript > &  transcript,
bool  has_zk 
)

Definition at line 50 of file gemini_impl.hpp.


The documentation for this class was generated from the following files: