nil::crypto3::zk::components::mnt_miller_loop_component< CurveType > Class Template Reference

#include <miller_loop.hpp>

+ Inheritance diagram for nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >:
+ Collaboration diagram for nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >:

Public Member Functions

void generate_r1cs_constraints ()
 
void generate_r1cs_witness ()
 
 mnt_miller_loop_component (blueprint< field_type > &bp, const g1_precomputation< CurveType > &prec_P, const g2_precomputation< CurveType > &prec_Q, const typename component_policy::Fqk_variable_type &result)
 

Public Attributes

std::size_t add_count
 
std::vector< std::shared_ptr< typename component_policy::Fqk_special_mul_component_type > > add_muls
 
std::vector< std::shared_ptr< mnt_miller_loop_add_line_eval< CurveType > > > addition_steps
 
std::size_t dbl_count
 
std::vector< std::shared_ptr< typename component_policy::Fqk_special_mul_component_type > > dbl_muls
 
std::vector< std::shared_ptr< typename component_policy::Fqk_sqr_component_type > > dbl_sqrs
 
std::vector< std::shared_ptr< mnt_miller_loop_dbl_line_eval< CurveType > > > doubling_steps
 
std::size_t f_count
 
std::vector< std::shared_ptr< typename component_policy::Fqk_variable_type > > fs
 
std::vector< std::shared_ptr< typename component_policy::Fqk_variable_type > > g_RQ_at_Ps
 
std::vector< std::shared_ptr< typename component_policy::Fqk_variable_type > > g_RR_at_Ps
 
g1_precomputation< CurveType > prec_P
 
g2_precomputation< CurveType > prec_Q
 
component_policy::Fqk_variable_type result
 

Protected Attributes

blueprint< CurveType::scalar_field_type > & bp
 

Detailed Description

template<typename CurveType>
class nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >

Component for verifying a single Miller loop.

Constructor & Destructor Documentation

◆ mnt_miller_loop_component()

template<typename CurveType >
nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::mnt_miller_loop_component ( blueprint< field_type > &  bp,
const g1_precomputation< CurveType > &  prec_P,
const g2_precomputation< CurveType > &  prec_Q,
const typename component_policy::Fqk_variable_type &  result 
)
inline

Member Function Documentation

◆ generate_r1cs_constraints()

template<typename CurveType >
void nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::generate_r1cs_constraints ( )
inline

◆ generate_r1cs_witness()

template<typename CurveType >
void nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::generate_r1cs_witness ( )
inline

Member Data Documentation

◆ add_count

template<typename CurveType >
std::size_t nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::add_count

◆ add_muls

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_special_mul_component_type> > nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::add_muls

◆ addition_steps

template<typename CurveType >
std::vector<std::shared_ptr<mnt_miller_loop_add_line_eval<CurveType> > > nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::addition_steps

◆ bp

blueprint<CurveType::scalar_field_type >& nil::crypto3::zk::components::component< CurveType::scalar_field_type >::bp
protectedinherited

◆ dbl_count

template<typename CurveType >
std::size_t nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::dbl_count

◆ dbl_muls

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_special_mul_component_type> > nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::dbl_muls

◆ dbl_sqrs

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_sqr_component_type> > nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::dbl_sqrs

◆ doubling_steps

template<typename CurveType >
std::vector<std::shared_ptr<mnt_miller_loop_dbl_line_eval<CurveType> > > nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::doubling_steps

◆ f_count

template<typename CurveType >
std::size_t nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::f_count

◆ fs

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_variable_type> > nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::fs

◆ g_RQ_at_Ps

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_variable_type> > nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::g_RQ_at_Ps

◆ g_RR_at_Ps

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_variable_type> > nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::g_RR_at_Ps

◆ prec_P

template<typename CurveType >
g1_precomputation<CurveType> nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::prec_P

◆ prec_Q

template<typename CurveType >
g2_precomputation<CurveType> nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::prec_Q

◆ result

template<typename CurveType >
component_policy::Fqk_variable_type nil::crypto3::zk::components::mnt_miller_loop_component< CurveType >::result

The documentation for this class was generated from the following file: