nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType > Class Template Reference
#include <exponentiation.hpp>
Inheritance diagram for nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >:
Collaboration diagram for nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >:
Public Types | |
typedef FpkT::base_field_type | FieldType |
typedef NumberType | integral_type |
Public Member Functions | |
template<typename Backend , typename multiprecision::expression_template_option ExpressionTemplates> | |
exponentiation_component (blueprint< FieldType > &bp, const Fpk_variableT< FpkT > &elt, const multiprecision::number< Backend, ExpressionTemplates > &power, const Fpk_variableT< FpkT > &result) | |
void | generate_r1cs_constraints () |
void | generate_r1cs_witness () |
Public Attributes | |
std::size_t | add_count |
std::vector< std::shared_ptr< Fpk_mul_componentT< FpkT > > > | addition_steps |
std::size_t | dbl_count |
std::vector< std::shared_ptr< Fpk_sqr_componentT< FpkT > > > | doubling_steps |
Fpk_variableT< FpkT > | elt |
std::size_t | intermed_count |
std::vector< std::shared_ptr< Fpk_variableT< FpkT > > > | intermediate |
std::vector< long > | NAF |
integral_type | power |
Fpk_variableT< FpkT > | result |
std::size_t | sub_count |
std::vector< std::shared_ptr< Fpk_mul_componentT< FpkT > > > | subtraction_steps |
Detailed Description
template<typename FpkT, template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
class nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >
The exponentiation component verifies field exponentiation in the field F_{p^k}.
Note that the power is a constant (i.e., hardcoded into the component).
Member Typedef Documentation
◆ FieldType
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
typedef FpkT::base_field_type nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::FieldType |
◆ integral_type
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
typedef NumberType nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::integral_type |
Constructor & Destructor Documentation
◆ exponentiation_component()
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
template<typename Backend , typename multiprecision::expression_template_option ExpressionTemplates>
|
inline |
Member Function Documentation
◆ generate_r1cs_constraints()
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
|
inline |
◆ generate_r1cs_witness()
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
|
inline |
Member Data Documentation
◆ add_count
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
std::size_t nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::add_count |
◆ addition_steps
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
std::vector<std::shared_ptr<Fpk_mul_componentT<FpkT> > > nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::addition_steps |
◆ dbl_count
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
std::size_t nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::dbl_count |
◆ doubling_steps
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
std::vector<std::shared_ptr<Fpk_sqr_componentT<FpkT> > > nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::doubling_steps |
◆ elt
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
Fpk_variableT<FpkT> nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::elt |
◆ intermed_count
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
std::size_t nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::intermed_count |
◆ intermediate
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
std::vector<std::shared_ptr<Fpk_variableT<FpkT> > > nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::intermediate |
◆ NAF
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
std::vector<long> nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::NAF |
◆ power
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
integral_type nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::power |
◆ result
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
Fpk_variableT<FpkT> nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::result |
◆ sub_count
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
std::size_t nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::sub_count |
◆ subtraction_steps
template<typename FpkT , template< class > class Fpk_variableT, template< class > class Fpk_mul_componentT, template< class > class Fpk_sqr_componentT, typename NumberType = typename FpkT::integral_type>
std::vector<std::shared_ptr<Fpk_mul_componentT<FpkT> > > nil::crypto3::zk::components::exponentiation_component< FpkT, Fpk_variableT, Fpk_mul_componentT, Fpk_sqr_componentT, NumberType >::subtraction_steps |
The documentation for this class was generated from the following file: