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()