Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
Go to the documentation of this file.
12 #ifndef EXPONENTIATION_GADGET_HPP_
13 #define EXPONENTIATION_GADGET_HPP_
15 #include <libff/algebra/fields/bigint.hpp>
16 #include <libff/algebra/scalar_multiplication/wnaf.hpp>
34 class Fpk_mul_gadgetT,
36 class Fpk_sqr_gadgetT,
42 std::vector<long>
NAF;
49 Fpk_variableT<FpkT>
elt;
60 const Fpk_variableT<FpkT> &
elt,
61 const libff::bigint<m> &
power,
62 const Fpk_variableT<FpkT> &
result,
73 class Fpk_mul_gadgetT,
75 class Fpk_sqr_gadgetT,
78 const libff::bigint<m> &
power,
const std::string &annotation);
84 #endif // EXPONENTIATION_GADGET_HPP_
Fpk_variableT< FpkT > result
const std::string annotation_prefix
protoboard< FpkT::my_Fp > & pb
std::vector< std::shared_ptr< Fpk_mul_gadgetT< FpkT > > > addition_steps
Fpk_variableT< FpkT > elt
FElem power(const FElem &base, long exponent)
void generate_r1cs_constraints()
std::vector< std::shared_ptr< Fpk_sqr_gadgetT< FpkT > > > doubling_steps
void generate_r1cs_witness()
std::vector< std::shared_ptr< Fpk_mul_gadgetT< FpkT > > > subtraction_steps
exponentiation_gadget(protoboard< FieldT > &pb, const Fpk_variableT< FpkT > &elt, const libff::bigint< m > &power, const Fpk_variableT< FpkT > &result, const std::string &annotation_prefix)
std::vector< std::shared_ptr< Fpk_variableT< FpkT > > > intermediate
void test_exponentiation_gadget(const libff::bigint< m > &power, const std::string &annotation)