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

#include <mnt_precomputation.hpp>

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

Public Types

typedef libff::Fr< ppT > FieldT
 
typedef libff::Fqe< other_curve< ppT > > FqeT
 
typedef libff::Fqk< other_curve< ppT > > FqkT
 

Public Member Functions

 mnt_precompute_G2_gadget_doubling_step (protoboard< FieldT > &pb, const mnt_precompute_G2_gadget_coeffs< ppT > &cur, const mnt_precompute_G2_gadget_coeffs< ppT > &next, 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

mnt_precompute_G2_gadget_coeffs< ppT > cur
 
mnt_precompute_G2_gadget_coeffs< ppT > next
 
std::shared_ptr< Fqe_variable< ppT > > RXsquared
 
std::shared_ptr< Fqe_sqr_gadget< ppT > > compute_RXsquared
 
std::shared_ptr< Fqe_variable< ppT > > three_RXsquared_plus_a
 
std::shared_ptr< Fqe_variable< ppT > > two_RY
 
std::shared_ptr< Fqe_mul_gadget< ppT > > compute_gamma
 
std::shared_ptr< Fqe_mul_gadget< ppT > > compute_gamma_X
 
std::shared_ptr< Fqe_variable< ppT > > next_RX_plus_two_RX
 
std::shared_ptr< Fqe_sqr_gadget< ppT > > compute_next_RX
 
std::shared_ptr< Fqe_variable< ppT > > RX_minus_next_RX
 
std::shared_ptr< Fqe_variable< ppT > > RY_plus_next_RY
 
std::shared_ptr< Fqe_mul_gadget< ppT > > compute_next_RY
 

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::mnt_precompute_G2_gadget_doubling_step< ppT >

Technical note:

QX and QY – X and Y coordinates of Q

initialization: coeffs[0].RX = QX coeffs[0].RY = QY

G2_precompute_doubling_step relates coeffs[i] and coeffs[i+1] as follows

coeffs[i] gamma = (3 * RX^2 + twist_coeff_a) * (2*RY).inverse() gamma_X = gamma * RX

coeffs[i+1] RX = prev_gamma^2 - (2*prev_RX) RY = prev_gamma * (prev_RX - RX) - prev_RY

Definition at line 179 of file mnt_precomputation.hpp.

Member Typedef Documentation

◆ FieldT

template<typename ppT >
typedef libff::Fr<ppT> libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::FieldT

Definition at line 182 of file mnt_precomputation.hpp.

◆ FqeT

template<typename ppT >
typedef libff::Fqe<other_curve<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::FqeT

Definition at line 183 of file mnt_precomputation.hpp.

◆ FqkT

template<typename ppT >
typedef libff::Fqk<other_curve<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::FqkT

Definition at line 184 of file mnt_precomputation.hpp.

Constructor & Destructor Documentation

◆ mnt_precompute_G2_gadget_doubling_step()

template<typename ppT >
libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::mnt_precompute_G2_gadget_doubling_step ( protoboard< FieldT > &  pb,
const mnt_precompute_G2_gadget_coeffs< ppT > &  cur,
const mnt_precompute_G2_gadget_coeffs< ppT > &  next,
const std::string &  annotation_prefix 
)

Member Function Documentation

◆ generate_r1cs_constraints()

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

◆ generate_r1cs_witness()

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

Member Data Documentation

◆ compute_gamma

template<typename ppT >
std::shared_ptr<Fqe_mul_gadget<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::compute_gamma

Definition at line 193 of file mnt_precomputation.hpp.

◆ compute_gamma_X

template<typename ppT >
std::shared_ptr<Fqe_mul_gadget<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::compute_gamma_X

Definition at line 194 of file mnt_precomputation.hpp.

◆ compute_next_RX

template<typename ppT >
std::shared_ptr<Fqe_sqr_gadget<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::compute_next_RX

Definition at line 197 of file mnt_precomputation.hpp.

◆ compute_next_RY

template<typename ppT >
std::shared_ptr<Fqe_mul_gadget<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::compute_next_RY

Definition at line 201 of file mnt_precomputation.hpp.

◆ compute_RXsquared

template<typename ppT >
std::shared_ptr<Fqe_sqr_gadget<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::compute_RXsquared

Definition at line 190 of file mnt_precomputation.hpp.

◆ cur

Definition at line 186 of file mnt_precomputation.hpp.

◆ next

Definition at line 187 of file mnt_precomputation.hpp.

◆ next_RX_plus_two_RX

template<typename ppT >
std::shared_ptr<Fqe_variable<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::next_RX_plus_two_RX

Definition at line 196 of file mnt_precomputation.hpp.

◆ RX_minus_next_RX

template<typename ppT >
std::shared_ptr<Fqe_variable<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::RX_minus_next_RX

Definition at line 199 of file mnt_precomputation.hpp.

◆ RXsquared

template<typename ppT >
std::shared_ptr<Fqe_variable<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::RXsquared

Definition at line 189 of file mnt_precomputation.hpp.

◆ RY_plus_next_RY

template<typename ppT >
std::shared_ptr<Fqe_variable<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::RY_plus_next_RY

Definition at line 200 of file mnt_precomputation.hpp.

◆ three_RXsquared_plus_a

template<typename ppT >
std::shared_ptr<Fqe_variable<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::three_RXsquared_plus_a

Definition at line 191 of file mnt_precomputation.hpp.

◆ two_RY

template<typename ppT >
std::shared_ptr<Fqe_variable<ppT> > libsnark::mnt_precompute_G2_gadget_doubling_step< ppT >::two_RY

Definition at line 192 of file mnt_precomputation.hpp.


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