| 
    Clearmatics Libsnark
    0.1
    
   C++ library for zkSNARK proofs 
   | 
 
 
 
 
Go to the documentation of this file.
   15 #ifndef LIBSNARK_GADGETLIB1_GADGETS_PAIRING_MNT_MNT_FINAL_EXPONENTIATION_HPP_ 
   16 #define LIBSNARK_GADGETLIB1_GADGETS_PAIRING_MNT_MNT_FINAL_EXPONENTIATION_HPP_ 
   21 #include <libff/algebra/curves/mnt/mnt4/mnt4_pp.hpp> 
   22 #include <libff/algebra/curves/mnt/mnt6/mnt6_pp.hpp> 
   23 #include <libff/algebra/curves/public_params.hpp> 
   32 template<
typename ppT>
 
   39     std::shared_ptr<Fqk_variable<ppT>> 
one;
 
   40     std::shared_ptr<Fqk_variable<ppT>> 
el_inv;
 
   41     std::shared_ptr<Fqk_variable<ppT>> 
el_q_3;
 
   43     std::shared_ptr<Fqk_variable<ppT>> 
alpha;
 
   44     std::shared_ptr<Fqk_variable<ppT>> 
beta;
 
   45     std::shared_ptr<Fqk_variable<ppT>> 
beta_q;
 
   50     std::shared_ptr<Fqk_variable<ppT>> 
w1;
 
   51     std::shared_ptr<Fqk_variable<ppT>> 
w0;
 
   52     std::shared_ptr<Fqk_variable<ppT>> 
result;
 
   90 template<
typename ppT>
 
   97     std::shared_ptr<Fqk_variable<ppT>> 
one;
 
   98     std::shared_ptr<Fqk_variable<ppT>> 
el_inv;
 
   99     std::shared_ptr<Fqk_variable<ppT>> 
el_q_2;
 
  104     std::shared_ptr<Fqk_variable<ppT>> 
w1;
 
  105     std::shared_ptr<Fqk_variable<ppT>> 
w0;
 
  106     std::shared_ptr<Fqk_variable<ppT>> 
result;
 
  117         libff::mnt4_q_limbs>>
 
  124         libff::mnt4_q_limbs>>
 
  143 #endif // LIBSNARK_GADGETLIB1_GADGETS_PAIRING_MNT_MNT_FINAL_EXPONENTIATION_HPP_ 
  
std::shared_ptr< exponentiation_gadget< FqkT< ppT >, Fp6_2over3_variable, Fp6_2over3_mul_gadget, Fp6_2over3_cyclotomic_sqr_gadget, libff::mnt6_q_limbs > > compute_w1
 
std::shared_ptr< Fqk_variable< ppT > > el_q_2
 
std::shared_ptr< Fqk_mul_gadget< ppT > > compute_el_q_2_minus_1
 
const std::string annotation_prefix
 
std::shared_ptr< Fqk_variable< ppT > > el_inv_q_2_minus_1
 
std::shared_ptr< exponentiation_gadget< FqkT< ppT >, Fp4_variable, Fp4_mul_gadget, Fp4_cyclotomic_sqr_gadget, libff::mnt4_q_limbs > > compute_w0
 
std::shared_ptr< Fqk_mul_gadget< ppT > > compute_el_inv_q_2_minus_1
 
Fp4_direct_mul_gadget< Fp4T > Fp4_mul_gadget
 
std::shared_ptr< Fqk_variable< ppT > > el_q_3_minus_1
 
std::shared_ptr< Fqk_mul_gadget< ppT > > compute_el_q_3_minus_1
 
std::shared_ptr< Fqk_mul_gadget< ppT > > compute_el_inv_q_3_minus_1
 
protoboard< libff::Fr< ppT > > & pb
 
std::shared_ptr< Fqk_variable< ppT > > el_q_2_minus_1
 
pb_variable< FieldT > result_is_one
 
std::shared_ptr< Fqk_variable< ppT > > w0
 
typename pairing_selector< ppT >::FqkT FqkT
 
std::shared_ptr< Fqk_mul_gadget< ppT > > compute_beta
 
std::shared_ptr< Fqk_variable< ppT > > beta_q
 
std::shared_ptr< Fqk_variable< ppT > > inv_beta
 
std::shared_ptr< Fqk_variable< ppT > > el_inv
 
void generate_r1cs_witness()
 
std::shared_ptr< Fqk_variable< ppT > > one
 
pb_variable< FieldT > result_is_one
 
void generate_r1cs_witness()
 
std::shared_ptr< Fqk_variable< ppT > > w0
 
std::shared_ptr< Fqk_variable< ppT > > el_q_3
 
std::shared_ptr< Fqk_variable< ppT > > el_q_3_minus_q
 
std::shared_ptr< Fqk_variable< ppT > > result
 
std::shared_ptr< Fqk_variable< ppT > > one
 
std::shared_ptr< Fqk_variable< ppT > > el_inv
 
std::shared_ptr< Fqk_variable< ppT > > w1
 
std::shared_ptr< Fqk_variable< ppT > > alpha
 
std::shared_ptr< Fqk_variable< ppT > > w1
 
mnt4_final_exp_gadget(protoboard< FieldT > &pb, const Fqk_variable< ppT > &el, const pb_variable< FieldT > &result_is_one, const std::string &annotation_prefix)
 
std::shared_ptr< Fqk_variable< ppT > > el_inv_q_3_minus_1
 
std::shared_ptr< Fqk_mul_gadget< ppT > > compute_el_inv
 
mnt6_final_exp_gadget(protoboard< FieldT > &pb, const Fqk_variable< ppT > &el, const pb_variable< FieldT > &result_is_one, const std::string &annotation_prefix)
 
void generate_r1cs_constraints()
 
typename pairing_selector< ppT >::Fqk_variable_type Fqk_variable
 
std::shared_ptr< Fqk_mul_gadget< ppT > > compute_result
 
std::shared_ptr< Fqk_variable< ppT > > inv_alpha
 
std::shared_ptr< Fqk_variable< ppT > > el_inv_q_3
 
std::shared_ptr< exponentiation_gadget< FqkT< ppT >, Fp6_2over3_variable, Fp6_2over3_mul_gadget, Fp6_2over3_cyclotomic_sqr_gadget, libff::mnt6_q_limbs > > compute_w0
 
std::shared_ptr< Fqk_variable< ppT > > result
 
std::shared_ptr< Fqk_variable< ppT > > el_inv_q_2
 
std::shared_ptr< Fqk_mul_gadget< ppT > > compute_inv_beta
 
std::shared_ptr< Fqk_variable< ppT > > beta
 
std::shared_ptr< exponentiation_gadget< FqkT< ppT >, Fp4_variable, Fp4_mul_gadget, Fp4_cyclotomic_sqr_gadget, libff::mnt4_q_limbs > > compute_w1
 
std::shared_ptr< Fqk_mul_gadget< ppT > > compute_result
 
std::shared_ptr< Fqk_mul_gadget< ppT > > compute_el_inv
 
void generate_r1cs_constraints()