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

#include <mnt_miller_loop.hpp>

Inheritance diagram for libsnark::mnt_miller_loop_add_line_eval< ppT >:
Inheritance graph
[legend]
Collaboration diagram for libsnark::mnt_miller_loop_add_line_eval< 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_miller_loop_add_line_eval (protoboard< FieldT > &pb, const bool invert_Q, const mnt_G1_precomputation< ppT > &prec_P, const mnt_precompute_G2_gadget_coeffs< ppT > &c, const G2_variable< ppT > &Q, std::shared_ptr< Fqk_variable< ppT >> &g_RQ_at_P, 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

bool invert_Q
 
mnt_G1_precomputation< ppT > prec_P
 
mnt_precompute_G2_gadget_coeffs< ppT > c
 
G2_variable< ppT > Q
 
std::shared_ptr< Fqk_variable< ppT > > & g_RQ_at_P
 
std::shared_ptr< Fqe_variable< ppT > > gamma_twist
 
std::shared_ptr< Fqe_variable< ppT > > g_RQ_at_P_c1
 
std::shared_ptr< Fqe_mul_by_lc_gadget< ppT > > compute_g_RQ_at_P_c1
 

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_miller_loop_add_line_eval< ppT >

Gadget for addition step in the Miller loop.

Technical note:

mnt_Fqk g_RQ_at_P = mnt_Fqk(prec_P.PY_twist_squared, -prec_P.PX * c.gamma_twist + c.gamma_X - prec_Q.QY);

(later in Miller loop: f = f * g_RQ_at_P)

Note the slight interface change: this gadget will allocate g_RQ_at_P inside itself (!)

Definition at line 77 of file mnt_miller_loop.hpp.

Member Typedef Documentation

◆ FieldT

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

Definition at line 80 of file mnt_miller_loop.hpp.

◆ FqeT

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

Definition at line 81 of file mnt_miller_loop.hpp.

◆ FqkT

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

Definition at line 82 of file mnt_miller_loop.hpp.

Constructor & Destructor Documentation

◆ mnt_miller_loop_add_line_eval()

template<typename ppT >
libsnark::mnt_miller_loop_add_line_eval< ppT >::mnt_miller_loop_add_line_eval ( protoboard< FieldT > &  pb,
const bool  invert_Q,
const mnt_G1_precomputation< ppT > &  prec_P,
const mnt_precompute_G2_gadget_coeffs< ppT > &  c,
const G2_variable< ppT > &  Q,
std::shared_ptr< Fqk_variable< ppT >> &  g_RQ_at_P,
const std::string &  annotation_prefix 
)

Member Function Documentation

◆ generate_r1cs_constraints()

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

◆ generate_r1cs_witness()

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

Member Data Documentation

◆ c

Definition at line 86 of file mnt_miller_loop.hpp.

◆ compute_g_RQ_at_P_c1

template<typename ppT >
std::shared_ptr<Fqe_mul_by_lc_gadget<ppT> > libsnark::mnt_miller_loop_add_line_eval< ppT >::compute_g_RQ_at_P_c1

Definition at line 92 of file mnt_miller_loop.hpp.

◆ g_RQ_at_P

template<typename ppT >
std::shared_ptr<Fqk_variable<ppT> >& libsnark::mnt_miller_loop_add_line_eval< ppT >::g_RQ_at_P

Definition at line 88 of file mnt_miller_loop.hpp.

◆ g_RQ_at_P_c1

template<typename ppT >
std::shared_ptr<Fqe_variable<ppT> > libsnark::mnt_miller_loop_add_line_eval< ppT >::g_RQ_at_P_c1

Definition at line 91 of file mnt_miller_loop.hpp.

◆ gamma_twist

template<typename ppT >
std::shared_ptr<Fqe_variable<ppT> > libsnark::mnt_miller_loop_add_line_eval< ppT >::gamma_twist

Definition at line 90 of file mnt_miller_loop.hpp.

◆ invert_Q

template<typename ppT >
bool libsnark::mnt_miller_loop_add_line_eval< ppT >::invert_Q

Definition at line 84 of file mnt_miller_loop.hpp.

◆ prec_P

template<typename ppT >
mnt_G1_precomputation<ppT> libsnark::mnt_miller_loop_add_line_eval< ppT >::prec_P

Definition at line 85 of file mnt_miller_loop.hpp.

◆ Q

template<typename ppT >
G2_variable<ppT> libsnark::mnt_miller_loop_add_line_eval< ppT >::Q

Definition at line 87 of file mnt_miller_loop.hpp.


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