Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
#include <mnt_miller_loop.hpp>
Public Types | |
typedef libff::Fr< ppT > | FieldT |
typedef libff::Fqe< other_curve< ppT > > | FqeT |
typedef libff::Fqk< other_curve< ppT > > | FqkT |
typedef mnt_pairing_params< ppT >::Fqk_special_mul_gadget_type | Fqk_special_mul_gadget |
Public Member Functions | |
mnt_e_times_e_times_e_over_e_miller_loop_gadget (protoboard< FieldT > &pb, const G1_precomputation< ppT > &prec_P1, const G2_precomputation< ppT > &prec_Q1, const G1_precomputation< ppT > &prec_P2, const G2_precomputation< ppT > &prec_Q2, const G1_precomputation< ppT > &prec_P3, const G2_precomputation< ppT > &prec_Q3, const G1_precomputation< ppT > &prec_P4, const G2_precomputation< ppT > &prec_Q4, const Fqk_variable< ppT > &result, const std::string &annotation_prefix) | |
void | generate_r1cs_constraints () |
void | generate_r1cs_witness () |
![]() | |
gadget (protoboard< libff::Fr< ppT > > &pb, const std::string &annotation_prefix) | |
Public Attributes | |
std::vector< std::shared_ptr< Fqk_variable< ppT > > > | g_RR_at_P1s |
std::vector< std::shared_ptr< Fqk_variable< ppT > > > | g_RQ_at_P1s |
std::vector< std::shared_ptr< Fqk_variable< ppT > > > | g_RR_at_P2s |
std::vector< std::shared_ptr< Fqk_variable< ppT > > > | g_RQ_at_P2s |
std::vector< std::shared_ptr< Fqk_variable< ppT > > > | g_RR_at_P3s |
std::vector< std::shared_ptr< Fqk_variable< ppT > > > | g_RQ_at_P3s |
std::vector< std::shared_ptr< Fqk_variable< ppT > > > | g_RR_at_P4s |
std::vector< std::shared_ptr< Fqk_variable< ppT > > > | g_RQ_at_P4s |
std::vector< std::shared_ptr< Fqk_variable< ppT > > > | fs |
std::vector< std::shared_ptr< mnt_miller_loop_add_line_eval< ppT > > > | addition_steps1 |
std::vector< std::shared_ptr< mnt_miller_loop_dbl_line_eval< ppT > > > | doubling_steps1 |
std::vector< std::shared_ptr< mnt_miller_loop_add_line_eval< ppT > > > | addition_steps2 |
std::vector< std::shared_ptr< mnt_miller_loop_dbl_line_eval< ppT > > > | doubling_steps2 |
std::vector< std::shared_ptr< mnt_miller_loop_add_line_eval< ppT > > > | addition_steps3 |
std::vector< std::shared_ptr< mnt_miller_loop_dbl_line_eval< ppT > > > | doubling_steps3 |
std::vector< std::shared_ptr< mnt_miller_loop_add_line_eval< ppT > > > | addition_steps4 |
std::vector< std::shared_ptr< mnt_miller_loop_dbl_line_eval< ppT > > > | doubling_steps4 |
std::vector< std::shared_ptr< Fqk_sqr_gadget< ppT > > > | dbl_sqrs |
std::vector< std::shared_ptr< Fqk_special_mul_gadget > > | dbl_muls1 |
std::vector< std::shared_ptr< Fqk_special_mul_gadget > > | add_muls1 |
std::vector< std::shared_ptr< Fqk_special_mul_gadget > > | dbl_muls2 |
std::vector< std::shared_ptr< Fqk_special_mul_gadget > > | add_muls2 |
std::vector< std::shared_ptr< Fqk_special_mul_gadget > > | dbl_muls3 |
std::vector< std::shared_ptr< Fqk_special_mul_gadget > > | add_muls3 |
std::vector< std::shared_ptr< Fqk_special_mul_gadget > > | dbl_muls4 |
std::vector< std::shared_ptr< Fqk_special_mul_gadget > > | add_muls4 |
size_t | f_count |
size_t | add_count |
size_t | dbl_count |
G1_precomputation< ppT > | prec_P1 |
G2_precomputation< ppT > | prec_Q1 |
G1_precomputation< ppT > | prec_P2 |
G2_precomputation< ppT > | prec_Q2 |
G1_precomputation< ppT > | prec_P3 |
G2_precomputation< ppT > | prec_Q3 |
G1_precomputation< ppT > | prec_P4 |
G2_precomputation< ppT > | prec_Q4 |
Fqk_variable< ppT > | result |
Additional Inherited Members | |
![]() | |
protoboard< libff::Fr< ppT > > & | pb |
const std::string | annotation_prefix |
Gadget for verifying a quadruple Miller loop (where the fourth is inverted). This gadget is necessary to implement the Groth16 verifier, and carry out the check: e(\pi.A, \pi.B) = e(vk.\alpha, vk.\beta) * e (acc, g2) * e(\pi.C, vk.\delta) where, g2 is the generator we use for encoding in G2, and where * denotes the group operation in GT.
Definition at line 274 of file mnt_miller_loop.hpp.
typedef libff::Fr<ppT> libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::FieldT |
Definition at line 278 of file mnt_miller_loop.hpp.
typedef libff::Fqe<other_curve<ppT> > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::FqeT |
Definition at line 279 of file mnt_miller_loop.hpp.
typedef mnt_pairing_params<ppT>::Fqk_special_mul_gadget_type libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::Fqk_special_mul_gadget |
Definition at line 282 of file mnt_miller_loop.hpp.
typedef libff::Fqk<other_curve<ppT> > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::FqkT |
Definition at line 280 of file mnt_miller_loop.hpp.
libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::mnt_e_times_e_times_e_over_e_miller_loop_gadget | ( | protoboard< FieldT > & | pb, |
const G1_precomputation< ppT > & | prec_P1, | ||
const G2_precomputation< ppT > & | prec_Q1, | ||
const G1_precomputation< ppT > & | prec_P2, | ||
const G2_precomputation< ppT > & | prec_Q2, | ||
const G1_precomputation< ppT > & | prec_P3, | ||
const G2_precomputation< ppT > & | prec_Q3, | ||
const G1_precomputation< ppT > & | prec_P4, | ||
const G2_precomputation< ppT > & | prec_Q4, | ||
const Fqk_variable< ppT > & | result, | ||
const std::string & | annotation_prefix | ||
) |
void libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::generate_r1cs_constraints | ( | ) |
void libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::generate_r1cs_witness | ( | ) |
size_t libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::add_count |
Definition at line 322 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_special_mul_gadget> > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::add_muls1 |
Definition at line 313 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_special_mul_gadget> > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::add_muls2 |
Definition at line 315 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_special_mul_gadget> > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::add_muls3 |
Definition at line 317 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_special_mul_gadget> > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::add_muls4 |
Definition at line 319 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<mnt_miller_loop_add_line_eval<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::addition_steps1 |
Definition at line 295 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<mnt_miller_loop_add_line_eval<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::addition_steps2 |
Definition at line 299 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<mnt_miller_loop_add_line_eval<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::addition_steps3 |
Definition at line 303 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<mnt_miller_loop_add_line_eval<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::addition_steps4 |
Definition at line 307 of file mnt_miller_loop.hpp.
size_t libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::dbl_count |
Definition at line 323 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_special_mul_gadget> > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::dbl_muls1 |
Definition at line 312 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_special_mul_gadget> > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::dbl_muls2 |
Definition at line 314 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_special_mul_gadget> > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::dbl_muls3 |
Definition at line 316 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_special_mul_gadget> > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::dbl_muls4 |
Definition at line 318 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_sqr_gadget<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::dbl_sqrs |
Definition at line 311 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<mnt_miller_loop_dbl_line_eval<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::doubling_steps1 |
Definition at line 297 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<mnt_miller_loop_dbl_line_eval<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::doubling_steps2 |
Definition at line 301 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<mnt_miller_loop_dbl_line_eval<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::doubling_steps3 |
Definition at line 305 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<mnt_miller_loop_dbl_line_eval<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::doubling_steps4 |
Definition at line 309 of file mnt_miller_loop.hpp.
size_t libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::f_count |
Definition at line 321 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_variable<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::fs |
Definition at line 292 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_variable<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::g_RQ_at_P1s |
Definition at line 285 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_variable<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::g_RQ_at_P2s |
Definition at line 287 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_variable<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::g_RQ_at_P3s |
Definition at line 289 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_variable<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::g_RQ_at_P4s |
Definition at line 291 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_variable<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::g_RR_at_P1s |
Definition at line 284 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_variable<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::g_RR_at_P2s |
Definition at line 286 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_variable<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::g_RR_at_P3s |
Definition at line 288 of file mnt_miller_loop.hpp.
std::vector<std::shared_ptr<Fqk_variable<ppT> > > libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::g_RR_at_P4s |
Definition at line 290 of file mnt_miller_loop.hpp.
G1_precomputation<ppT> libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::prec_P1 |
Definition at line 325 of file mnt_miller_loop.hpp.
G1_precomputation<ppT> libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::prec_P2 |
Definition at line 327 of file mnt_miller_loop.hpp.
G1_precomputation<ppT> libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::prec_P3 |
Definition at line 329 of file mnt_miller_loop.hpp.
G1_precomputation<ppT> libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::prec_P4 |
Definition at line 331 of file mnt_miller_loop.hpp.
G2_precomputation<ppT> libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::prec_Q1 |
Definition at line 326 of file mnt_miller_loop.hpp.
G2_precomputation<ppT> libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::prec_Q2 |
Definition at line 328 of file mnt_miller_loop.hpp.
G2_precomputation<ppT> libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::prec_Q3 |
Definition at line 330 of file mnt_miller_loop.hpp.
G2_precomputation<ppT> libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::prec_Q4 |
Definition at line 332 of file mnt_miller_loop.hpp.
Fqk_variable<ppT> libsnark::mnt_e_times_e_times_e_over_e_miller_loop_gadget< ppT >::result |
Definition at line 333 of file mnt_miller_loop.hpp.