Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Public Types | Public Member Functions | Public Attributes | List of all members
libsnark::kzg10_verifier_gadget< ppT > Class Template Reference

#include <kzg10_verifier_gadget.hpp>

Inheritance diagram for libsnark::kzg10_verifier_gadget< ppT >:
Inheritance graph
[legend]
Collaboration diagram for libsnark::kzg10_verifier_gadget< ppT >:
Collaboration graph
[legend]

Public Types

using FieldT = libff::Fr< ppT >
 

Public Member Functions

 kzg10_verifier_gadget (protoboard< libff::Fr< ppT >> &pb, const kzg10_srs_variable< ppT > &srs, const kzg10_commitment_variable< ppT > &commitmennt, pb_linear_combination< libff::Fr< ppT >> i, pb_linear_combination< libff::Fr< ppT >> poly_eval, const kzg10_witness_variable< ppT > &witness, pb_variable< libff::Fr< ppT >> result, const std::string &annotation_prefix)
 
void generate_r1cs_constraints ()
 
void generate_r1cs_witness ()
 
- Public Member Functions inherited from libsnark::gadget< libff::Fr< ppT > >
 gadget (protoboard< libff::Fr< ppT > > &pb, const std::string &annotation_prefix)
 

Public Attributes

G2_variable_or_identity< ppT > i_in_G2
 
G2_mul_by_scalar_gadget< ppT > compute_i_in_G2
 
G2_variable< ppT > B
 
G2_add_gadget< ppT > compute_B
 
G1_variable_or_identity< ppT > poly_eval_in_G1
 
G1_mul_by_scalar_gadget< ppT > compute_poly_eval_in_G1
 
G1_variable< ppT > C
 
G1_add_gadget< ppT > compute_C
 
G1_precomputation< ppT > A_precomp
 
precompute_G1_gadget< ppT > compute_A_precomp
 
G2_precomputation< ppT > B_precomp
 
precompute_G2_gadget< ppT > compute_B_precomp
 
G1_precomputation< ppT > C_precomp
 
precompute_G1_gadget< ppT > compute_C_precomp
 
G2_precomputation< ppT > D_precomp
 
pb_variable< libff::Fr< ppT > > check_result
 
check_e_equals_e_gadget< ppT > check_pairing_equality
 
pb_variable< libff::Fr< ppT > > group_elements_non_zero
 
pb_variable< libff::Fr< ppT > > result
 

Additional Inherited Members

- Protected Attributes inherited from libsnark::gadget< libff::Fr< ppT > >
protoboard< libff::Fr< ppT > > & pb
 
const std::string annotation_prefix
 

Detailed Description

template<typename ppT>
class libsnark::kzg10_verifier_gadget< ppT >

Uses a nested pairing (via a pairing selector) to implement the verification step of [KZG10]. See the native implementation for details.

TODO: this gadget does not currently support either the evaluation point i or the result of polynomial evaluation being zero. This could potentially be addressed by further use of gadgets that handle variable_or_identity inputs.

Definition at line 63 of file kzg10_verifier_gadget.hpp.

Member Typedef Documentation

◆ FieldT

template<typename ppT >
using libsnark::kzg10_verifier_gadget< ppT >::FieldT = libff::Fr<ppT>

Definition at line 66 of file kzg10_verifier_gadget.hpp.

Constructor & Destructor Documentation

◆ kzg10_verifier_gadget()

template<typename ppT >
libsnark::kzg10_verifier_gadget< ppT >::kzg10_verifier_gadget ( protoboard< libff::Fr< ppT >> &  pb,
const kzg10_srs_variable< ppT > &  srs,
const kzg10_commitment_variable< ppT > &  commitmennt,
pb_linear_combination< libff::Fr< ppT >>  i,
pb_linear_combination< libff::Fr< ppT >>  poly_eval,
const kzg10_witness_variable< ppT > &  witness,
pb_variable< libff::Fr< ppT >>  result,
const std::string &  annotation_prefix 
)

Member Function Documentation

◆ generate_r1cs_constraints()

template<typename ppT >
void libsnark::kzg10_verifier_gadget< ppT >::generate_r1cs_constraints ( )

◆ generate_r1cs_witness()

template<typename ppT >
void libsnark::kzg10_verifier_gadget< ppT >::generate_r1cs_witness ( )

Member Data Documentation

◆ A_precomp

template<typename ppT >
G1_precomputation<ppT> libsnark::kzg10_verifier_gadget< ppT >::A_precomp

Definition at line 98 of file kzg10_verifier_gadget.hpp.

◆ B

template<typename ppT >
G2_variable<ppT> libsnark::kzg10_verifier_gadget< ppT >::B

Definition at line 88 of file kzg10_verifier_gadget.hpp.

◆ B_precomp

template<typename ppT >
G2_precomputation<ppT> libsnark::kzg10_verifier_gadget< ppT >::B_precomp

Definition at line 100 of file kzg10_verifier_gadget.hpp.

◆ C

template<typename ppT >
G1_variable<ppT> libsnark::kzg10_verifier_gadget< ppT >::C

Definition at line 94 of file kzg10_verifier_gadget.hpp.

◆ C_precomp

template<typename ppT >
G1_precomputation<ppT> libsnark::kzg10_verifier_gadget< ppT >::C_precomp

Definition at line 102 of file kzg10_verifier_gadget.hpp.

◆ check_pairing_equality

template<typename ppT >
check_e_equals_e_gadget<ppT> libsnark::kzg10_verifier_gadget< ppT >::check_pairing_equality

Definition at line 109 of file kzg10_verifier_gadget.hpp.

◆ check_result

template<typename ppT >
pb_variable<libff::Fr<ppT> > libsnark::kzg10_verifier_gadget< ppT >::check_result

Definition at line 108 of file kzg10_verifier_gadget.hpp.

◆ compute_A_precomp

template<typename ppT >
precompute_G1_gadget<ppT> libsnark::kzg10_verifier_gadget< ppT >::compute_A_precomp

Definition at line 99 of file kzg10_verifier_gadget.hpp.

◆ compute_B

template<typename ppT >
G2_add_gadget<ppT> libsnark::kzg10_verifier_gadget< ppT >::compute_B

Definition at line 89 of file kzg10_verifier_gadget.hpp.

◆ compute_B_precomp

template<typename ppT >
precompute_G2_gadget<ppT> libsnark::kzg10_verifier_gadget< ppT >::compute_B_precomp

Definition at line 101 of file kzg10_verifier_gadget.hpp.

◆ compute_C

template<typename ppT >
G1_add_gadget<ppT> libsnark::kzg10_verifier_gadget< ppT >::compute_C

Definition at line 95 of file kzg10_verifier_gadget.hpp.

◆ compute_C_precomp

template<typename ppT >
precompute_G1_gadget<ppT> libsnark::kzg10_verifier_gadget< ppT >::compute_C_precomp

Definition at line 103 of file kzg10_verifier_gadget.hpp.

◆ compute_i_in_G2

template<typename ppT >
G2_mul_by_scalar_gadget<ppT> libsnark::kzg10_verifier_gadget< ppT >::compute_i_in_G2

Definition at line 87 of file kzg10_verifier_gadget.hpp.

◆ compute_poly_eval_in_G1

template<typename ppT >
G1_mul_by_scalar_gadget<ppT> libsnark::kzg10_verifier_gadget< ppT >::compute_poly_eval_in_G1

Definition at line 93 of file kzg10_verifier_gadget.hpp.

◆ D_precomp

template<typename ppT >
G2_precomputation<ppT> libsnark::kzg10_verifier_gadget< ppT >::D_precomp

Definition at line 106 of file kzg10_verifier_gadget.hpp.

◆ group_elements_non_zero

template<typename ppT >
pb_variable<libff::Fr<ppT> > libsnark::kzg10_verifier_gadget< ppT >::group_elements_non_zero

Definition at line 113 of file kzg10_verifier_gadget.hpp.

◆ i_in_G2

template<typename ppT >
G2_variable_or_identity<ppT> libsnark::kzg10_verifier_gadget< ppT >::i_in_G2

Definition at line 86 of file kzg10_verifier_gadget.hpp.

◆ poly_eval_in_G1

template<typename ppT >
G1_variable_or_identity<ppT> libsnark::kzg10_verifier_gadget< ppT >::poly_eval_in_G1

Definition at line 92 of file kzg10_verifier_gadget.hpp.

◆ result

template<typename ppT >
pb_variable<libff::Fr<ppT> > libsnark::kzg10_verifier_gadget< ppT >::result

Definition at line 116 of file kzg10_verifier_gadget.hpp.


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