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

#include <miller_loop.hpp>

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

Public Member Functions

void generate_r1cs_constraints ()
 
void generate_r1cs_witness ()
 
 mnt_e_over_e_miller_loop_component (blueprint< field_type > &bp, const g1_precomputation< CurveType > &prec_P1, const g2_precomputation< CurveType > &prec_Q1, const g1_precomputation< CurveType > &prec_P2, const g2_precomputation< CurveType > &prec_Q2, 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_muls1
 
std::vector< std::shared_ptr< typename component_policy::Fqk_special_mul_component_type > > add_muls2
 
std::vector< std::shared_ptr< mnt_miller_loop_add_line_eval< CurveType > > > addition_steps1
 
std::vector< std::shared_ptr< mnt_miller_loop_add_line_eval< CurveType > > > addition_steps2
 
std::size_t dbl_count
 
std::vector< std::shared_ptr< typename component_policy::Fqk_special_mul_component_type > > dbl_muls1
 
std::vector< std::shared_ptr< typename component_policy::Fqk_special_mul_component_type > > dbl_muls2
 
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_steps1
 
std::vector< std::shared_ptr< mnt_miller_loop_dbl_line_eval< CurveType > > > doubling_steps2
 
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_P1s
 
std::vector< std::shared_ptr< typename component_policy::Fqk_variable_type > > g_RQ_at_P2s
 
std::vector< std::shared_ptr< typename component_policy::Fqk_variable_type > > g_RR_at_P1s
 
std::vector< std::shared_ptr< typename component_policy::Fqk_variable_type > > g_RR_at_P2s
 
g1_precomputation< CurveType > prec_P1
 
g1_precomputation< CurveType > prec_P2
 
g2_precomputation< CurveType > prec_Q1
 
g2_precomputation< CurveType > prec_Q2
 
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_e_over_e_miller_loop_component< CurveType >

Component for verifying a double Miller loop (where the second is inverted).

Constructor & Destructor Documentation

◆ mnt_e_over_e_miller_loop_component()

template<typename CurveType >
nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::mnt_e_over_e_miller_loop_component ( blueprint< field_type > &  bp,
const g1_precomputation< CurveType > &  prec_P1,
const g2_precomputation< CurveType > &  prec_Q1,
const g1_precomputation< CurveType > &  prec_P2,
const g2_precomputation< CurveType > &  prec_Q2,
const typename component_policy::Fqk_variable_type &  result 
)
inline

Member Function Documentation

◆ generate_r1cs_constraints()

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

◆ generate_r1cs_witness()

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

Member Data Documentation

◆ add_count

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

◆ add_muls1

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_special_mul_component_type> > nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::add_muls1

◆ add_muls2

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_special_mul_component_type> > nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::add_muls2

◆ addition_steps1

template<typename CurveType >
std::vector<std::shared_ptr<mnt_miller_loop_add_line_eval<CurveType> > > nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::addition_steps1

◆ addition_steps2

template<typename CurveType >
std::vector<std::shared_ptr<mnt_miller_loop_add_line_eval<CurveType> > > nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::addition_steps2

◆ 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_e_over_e_miller_loop_component< CurveType >::dbl_count

◆ dbl_muls1

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_special_mul_component_type> > nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::dbl_muls1

◆ dbl_muls2

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_special_mul_component_type> > nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::dbl_muls2

◆ dbl_sqrs

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

◆ doubling_steps1

template<typename CurveType >
std::vector<std::shared_ptr<mnt_miller_loop_dbl_line_eval<CurveType> > > nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::doubling_steps1

◆ doubling_steps2

template<typename CurveType >
std::vector<std::shared_ptr<mnt_miller_loop_dbl_line_eval<CurveType> > > nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::doubling_steps2

◆ f_count

template<typename CurveType >
std::size_t nil::crypto3::zk::components::mnt_e_over_e_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_e_over_e_miller_loop_component< CurveType >::fs

◆ g_RQ_at_P1s

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_variable_type> > nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::g_RQ_at_P1s

◆ g_RQ_at_P2s

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_variable_type> > nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::g_RQ_at_P2s

◆ g_RR_at_P1s

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_variable_type> > nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::g_RR_at_P1s

◆ g_RR_at_P2s

template<typename CurveType >
std::vector<std::shared_ptr<typename component_policy::Fqk_variable_type> > nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::g_RR_at_P2s

◆ prec_P1

template<typename CurveType >
g1_precomputation<CurveType> nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::prec_P1

◆ prec_P2

template<typename CurveType >
g1_precomputation<CurveType> nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::prec_P2

◆ prec_Q1

template<typename CurveType >
g2_precomputation<CurveType> nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::prec_Q1

◆ prec_Q2

template<typename CurveType >
g2_precomputation<CurveType> nil::crypto3::zk::components::mnt_e_over_e_miller_loop_component< CurveType >::prec_Q2

◆ result

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

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