Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
mnt_pairing_params.hpp
Go to the documentation of this file.
1 
16 #ifndef LIBSNARK_GADGETLIB1_GADGETS_PAIRING_MNT_MNT_PAIRING_PARAMS_HPP_
17 #define LIBSNARK_GADGETLIB1_GADGETS_PAIRING_MNT_MNT_PAIRING_PARAMS_HPP_
18 
27 
28 #include <libff/algebra/curves/mnt/mnt4/mnt4_pp.hpp>
29 #include <libff/algebra/curves/mnt/mnt6/mnt6_pp.hpp>
30 
31 namespace libsnark
32 {
33 
37 template<> class pairing_selector<libff::mnt4_pp>
38 {
39 public:
40  typedef libff::Fr<libff::mnt4_pp> FieldT;
41  typedef libff::Fqe<libff::mnt6_pp> FqeT;
42  typedef libff::Fqk<libff::mnt6_pp> FqkT;
43 
48 
52 
53  typedef libff::mnt6_pp other_curve_type;
54 
57 
62 
71 };
72 
76 template<> class pairing_selector<libff::mnt6_pp>
77 {
78 public:
79  typedef libff::Fr<libff::mnt6_pp> FieldT;
80 
81  typedef libff::Fqe<libff::mnt4_pp> FqeT;
82  typedef libff::Fqk<libff::mnt4_pp> FqkT;
83 
88 
92 
93  typedef libff::mnt4_pp other_curve_type;
94 
97 
102 
111 };
112 
113 // Parameters internal to the mnt code
114 template<typename ppT> class mnt_pairing_params;
115 
116 template<> class mnt_pairing_params<libff::mnt4_pp>
117 {
118 public:
121 
122  static const constexpr libff::bigint<libff::mnt6_Fr::num_limbs>
123  &pairing_loop_count = libff::mnt6_ate_loop_count;
124 };
125 
126 template<> class mnt_pairing_params<libff::mnt6_pp>
127 {
128 public:
131 
132  static const constexpr libff::bigint<libff::mnt4_Fr::num_limbs>
133  &pairing_loop_count = libff::mnt4_ate_loop_count;
134 };
135 
136 } // namespace libsnark
137 
138 #endif // LIBSNARK_GADGETLIB1_GADGETS_PAIRING_MNT_MNT_PAIRING_PARAMS_HPP_
libsnark::pairing_selector< libff::mnt4_pp >::final_exp_gadget_type
mnt4_final_exp_gadget< libff::mnt4_pp > final_exp_gadget_type
Definition: mnt_pairing_params.hpp:70
libsnark::pairing_selector< libff::mnt4_pp >::Fqk_variable_type
Fp6_2over3_variable< FqkT > Fqk_variable_type
Definition: mnt_pairing_params.hpp:49
libsnark::Fp3_mul_gadget
Definition: fp3_gadgets.hpp:74
mnt_final_exponentiation.hpp
libsnark::Fp3_mul_by_lc_gadget
Definition: fp3_gadgets.hpp:101
libsnark::pairing_selector< libff::mnt6_pp >::other_curve_type
libff::mnt4_pp other_curve_type
Definition: mnt_pairing_params.hpp:93
libsnark::pairing_selector< libff::mnt4_pp >::Fqk_sqr_gadget_type
Fp6_2over3_sqr_gadget< FqkT > Fqk_sqr_gadget_type
Definition: mnt_pairing_params.hpp:51
libsnark::pairing_selector< libff::mnt4_pp >::G2_precomputation_type
mnt_G2_precomputation< libff::mnt4_pp > G2_precomputation_type
Definition: mnt_pairing_params.hpp:59
libsnark::G1_checker_gadget
Definition: weierstrass_g1_gadget.hpp:94
libsnark::pairing_selector< libff::mnt6_pp >::Fqk_sqr_gadget_type
Fp4_sqr_gadget< FqkT > Fqk_sqr_gadget_type
Definition: mnt_pairing_params.hpp:91
libsnark::pairing_selector< libff::mnt6_pp >::miller_loop_gadget_type
mnt_miller_loop_gadget< libff::mnt6_pp > miller_loop_gadget_type
Definition: mnt_pairing_params.hpp:103
libsnark::pairing_selector< libff::mnt4_pp >::precompute_G2_gadget_type
mnt_precompute_G2_gadget< libff::mnt4_pp > precompute_G2_gadget_type
Definition: mnt_pairing_params.hpp:61
libsnark
Definition: accumulation_vector.hpp:18
libsnark::pairing_selector
Definition: pairing_params.hpp:84
libsnark::pairing_selector< libff::mnt6_pp >::Fqe_sqr_gadget_type
Fp2_sqr_gadget< FqeT > Fqe_sqr_gadget_type
Definition: mnt_pairing_params.hpp:87
libsnark::Fp2_variable
Definition: fp2_gadgets.hpp:27
fp3_gadgets.hpp
fp2_gadgets.hpp
fp4_gadgets.hpp
libsnark::pairing_selector< libff::mnt6_pp >::e_times_e_times_e_over_e_miller_loop_gadget_type
mnt_e_times_e_times_e_over_e_miller_loop_gadget< libff::mnt6_pp > e_times_e_times_e_over_e_miller_loop_gadget_type
Definition: mnt_pairing_params.hpp:109
libsnark::Fp6_2over3_mul_gadget
Definition: fp6_2over3_gadgets.hpp:60
libsnark::pairing_selector< libff::mnt4_pp >::Fqe_mul_gadget_type
Fp3_mul_gadget< FqeT > Fqe_mul_gadget_type
Definition: mnt_pairing_params.hpp:45
libsnark::Fp2_mul_by_lc_gadget
Definition: fp2_gadgets.hpp:102
libsnark::pairing_selector< libff::mnt4_pp >::e_over_e_miller_loop_gadget_type
mnt_e_over_e_miller_loop_gadget< libff::mnt4_pp > e_over_e_miller_loop_gadget_type
Definition: mnt_pairing_params.hpp:65
libsnark::pairing_selector< libff::mnt6_pp >::G2_checker_type
G2_checker_gadget< libff::mnt6_pp > G2_checker_type
Definition: mnt_pairing_params.hpp:96
libsnark::pairing_selector< libff::mnt6_pp >::precompute_G2_gadget_type
mnt_precompute_G2_gadget< libff::mnt6_pp > precompute_G2_gadget_type
Definition: mnt_pairing_params.hpp:101
libsnark::Fp4_direct_mul_gadget
Definition: fp4_gadgets.hpp:105
libsnark::mnt_G2_precomputation
Definition: mnt_precomputation.hpp:141
libsnark::pairing_selector< libff::mnt6_pp >::final_exp_gadget_type
mnt6_final_exp_gadget< libff::mnt6_pp > final_exp_gadget_type
Definition: mnt_pairing_params.hpp:110
libsnark::Fp4_sqr_gadget
Definition: fp4_gadgets.hpp:138
libsnark::pairing_selector< libff::mnt4_pp >::FqeT
libff::Fqe< libff::mnt6_pp > FqeT
Definition: mnt_pairing_params.hpp:41
libsnark::pairing_selector< libff::mnt4_pp >::G1_checker_type
G1_checker_gadget< libff::mnt4_pp > G1_checker_type
Definition: mnt_pairing_params.hpp:55
libsnark::pairing_selector< libff::mnt6_pp >::Fqe_mul_by_lc_gadget_type
Fp2_mul_by_lc_gadget< FqeT > Fqe_mul_by_lc_gadget_type
Definition: mnt_pairing_params.hpp:86
libsnark::mnt6_final_exp_gadget
Definition: mnt_final_exponentiation.hpp:91
libsnark::Fp4_variable
Definition: fp4_gadgets.hpp:27
libsnark::pairing_selector< libff::mnt4_pp >::G2_checker_type
G2_checker_gadget< libff::mnt4_pp > G2_checker_type
Definition: mnt_pairing_params.hpp:56
libsnark::mnt4_final_exp_gadget
Definition: mnt_final_exponentiation.hpp:33
mnt_miller_loop.hpp
libsnark::pairing_selector< libff::mnt4_pp >::Fqe_variable_type
Fp3_variable< FqeT > Fqe_variable_type
Definition: mnt_pairing_params.hpp:44
libsnark::pairing_selector< libff::mnt4_pp >::FieldT
libff::Fr< libff::mnt4_pp > FieldT
Definition: mnt_pairing_params.hpp:40
libsnark::pairing_selector< libff::mnt6_pp >::G1_checker_type
G1_checker_gadget< libff::mnt6_pp > G1_checker_type
Definition: mnt_pairing_params.hpp:95
libsnark::pairing_selector< libff::mnt6_pp >::G1_precomputation_type
mnt_G1_precomputation< libff::mnt6_pp > G1_precomputation_type
Definition: mnt_pairing_params.hpp:98
libsnark::Fp6_2over3_mul_by_2345_gadget
Definition: fp6_2over3_gadgets.hpp:111
libsnark::mnt_G1_precomputation
Definition: mnt_precomputation.hpp:37
libsnark::pairing_selector< libff::mnt4_pp >::e_times_e_times_e_over_e_miller_loop_gadget_type
mnt_e_times_e_times_e_over_e_miller_loop_gadget< libff::mnt4_pp > e_times_e_times_e_over_e_miller_loop_gadget_type
Definition: mnt_pairing_params.hpp:69
libsnark::pairing_selector< libff::mnt4_pp >::Fqe_mul_by_lc_gadget_type
Fp3_mul_by_lc_gadget< FqeT > Fqe_mul_by_lc_gadget_type
Definition: mnt_pairing_params.hpp:46
libsnark::pairing_selector< libff::mnt6_pp >::Fqe_variable_type
Fp2_variable< FqeT > Fqe_variable_type
Definition: mnt_pairing_params.hpp:84
pairing_params.hpp
libsnark::mnt_pairing_params
Definition: mnt_pairing_params.hpp:114
libsnark::pairing_selector< libff::mnt4_pp >::miller_loop_gadget_type
mnt_miller_loop_gadget< libff::mnt4_pp > miller_loop_gadget_type
Definition: mnt_pairing_params.hpp:63
libsnark::pairing_selector< libff::mnt6_pp >::G2_precomputation_type
mnt_G2_precomputation< libff::mnt6_pp > G2_precomputation_type
Definition: mnt_pairing_params.hpp:99
libsnark::pairing_selector< libff::mnt6_pp >::FqeT
libff::Fqe< libff::mnt4_pp > FqeT
Definition: mnt_pairing_params.hpp:81
fp6_2over3_gadgets.hpp
libsnark::mnt_e_over_e_miller_loop_gadget
Gadget for verifying a double Miller loop (where the second is inverted).
Definition: mnt_miller_loop.hpp:150
libsnark::pairing_selector< libff::mnt4_pp >::other_curve_type
libff::mnt6_pp other_curve_type
Definition: mnt_pairing_params.hpp:53
libsnark::pairing_selector< libff::mnt6_pp >::Fqk_variable_type
Fp4_variable< FqkT > Fqk_variable_type
Definition: mnt_pairing_params.hpp:89
libsnark::pairing_selector< libff::mnt6_pp >::FieldT
libff::Fr< libff::mnt6_pp > FieldT
Definition: mnt_pairing_params.hpp:79
libsnark::G2_checker_gadget
Gadget that creates constraints for the validity of a G2 variable.
Definition: weierstrass_g2_gadget.hpp:96
libsnark::pairing_selector< libff::mnt4_pp >::precompute_G1_gadget_type
mnt_precompute_G1_gadget< libff::mnt4_pp > precompute_G1_gadget_type
Definition: mnt_pairing_params.hpp:60
libsnark::pairing_selector< libff::mnt6_pp >::precompute_G1_gadget_type
mnt_precompute_G1_gadget< libff::mnt6_pp > precompute_G1_gadget_type
Definition: mnt_pairing_params.hpp:100
libsnark::pairing_selector< libff::mnt4_pp >::FqkT
libff::Fqk< libff::mnt6_pp > FqkT
Definition: mnt_pairing_params.hpp:42
libsnark::pairing_selector< libff::mnt4_pp >::Fqe_sqr_gadget_type
Fp3_sqr_gadget< FqeT > Fqe_sqr_gadget_type
Definition: mnt_pairing_params.hpp:47
libsnark::mnt_miller_loop_gadget
Gadget for verifying a single Miller loop.
Definition: mnt_miller_loop.hpp:108
libsnark::pairing_selector< libff::mnt6_pp >::e_times_e_over_e_miller_loop_gadget_type
mnt_e_times_e_over_e_miller_loop_gadget< libff::mnt6_pp > e_times_e_over_e_miller_loop_gadget_type
Definition: mnt_pairing_params.hpp:107
libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget
Definition: mnt_miller_loop.hpp:274
libsnark::Fp3_variable
Definition: fp3_gadgets.hpp:27
libsnark::pairing_selector< libff::mnt4_pp >::G1_precomputation_type
mnt_G1_precomputation< libff::mnt4_pp > G1_precomputation_type
Definition: mnt_pairing_params.hpp:58
libsnark::pairing_selector< libff::mnt6_pp >::FqkT
libff::Fqk< libff::mnt4_pp > FqkT
Definition: mnt_pairing_params.hpp:82
libsnark::Fp6_2over3_sqr_gadget
Definition: fp6_2over3_gadgets.hpp:160
libsnark::pairing_selector< libff::mnt6_pp >::Fqk_mul_gadget_type
Fp4_mul_gadget< FqkT > Fqk_mul_gadget_type
Definition: mnt_pairing_params.hpp:90
libsnark::Fp2_sqr_gadget
Definition: fp2_gadgets.hpp:125
libsnark::pairing_selector< libff::mnt4_pp >::e_times_e_over_e_miller_loop_gadget_type
mnt_e_times_e_over_e_miller_loop_gadget< libff::mnt4_pp > e_times_e_over_e_miller_loop_gadget_type
Definition: mnt_pairing_params.hpp:67
libsnark::Fp3_sqr_gadget
Definition: fp3_gadgets.hpp:124
mnt_precomputation.hpp
libsnark::pairing_selector< libff::mnt6_pp >::e_over_e_miller_loop_gadget_type
mnt_e_over_e_miller_loop_gadget< libff::mnt6_pp > e_over_e_miller_loop_gadget_type
Definition: mnt_pairing_params.hpp:105
libsnark::mnt_pairing_params< libff::mnt4_pp >::Fqk_special_mul_gadget_type
Fp6_2over3_mul_by_2345_gadget< libff::Fqk< libff::mnt6_pp > > Fqk_special_mul_gadget_type
Definition: mnt_pairing_params.hpp:120
libsnark::pairing_selector< libff::mnt6_pp >::Fqe_mul_gadget_type
Fp2_mul_gadget< FqeT > Fqe_mul_gadget_type
Definition: mnt_pairing_params.hpp:85
libsnark::mnt_precompute_G2_gadget
Definition: mnt_precomputation.hpp:269
libsnark::mnt_precompute_G1_gadget
Definition: mnt_precomputation.hpp:58
libsnark::Fp6_2over3_variable
Definition: fp6_2over3_gadgets.hpp:29
libsnark::mnt_e_times_e_over_e_miller_loop_gadget
Gadget for verifying a triple Miller loop (where the third is inverted).
Definition: mnt_miller_loop.hpp:204
libsnark::pairing_selector< libff::mnt4_pp >::Fqk_mul_gadget_type
Fp6_2over3_mul_gadget< FqkT > Fqk_mul_gadget_type
Definition: mnt_pairing_params.hpp:50
libsnark::mnt_pairing_params< libff::mnt6_pp >::Fqk_special_mul_gadget_type
Fp4_mul_gadget< libff::Fqk< libff::mnt4_pp > > Fqk_special_mul_gadget_type
Definition: mnt_pairing_params.hpp:130
libsnark::Fp2_mul_gadget
Definition: fp2_gadgets.hpp:76