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

#include <miller_loop.hpp>

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

Public Member Functions

void generate_r1cs_constraints ()
 
void generate_r1cs_witness ()
 
 mnt_miller_loop_dbl_line_eval (blueprint< field_type > &bp, const g1_precomputation< CurveType > &prec_P, const precompute_G2_component_coeffs< CurveType > &c, std::shared_ptr< typename component_policy::Fqk_variable_type > &g_RR_at_P)
 

Public Attributes

precompute_G2_component_coeffs< CurveType > c
 
std::shared_ptr< typename component_policy::Fqe_mul_by_lc_component_type > compute_g_RR_at_P_c1
 
std::shared_ptr< typename component_policy::Fqk_variable_type > & g_RR_at_P
 
std::shared_ptr< typename component_policy::Fqe_variable_type > g_RR_at_P_c1
 
std::shared_ptr< typename component_policy::Fqe_variable_type > gamma_twist
 
g1_precomputation< CurveType > prec_P
 

Protected Attributes

blueprint< CurveType::scalar_field_type > & bp
 

Detailed Description

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

Component for doubling step in the Miller loop.

Technical note:

mnt_Fqk g_RR_at_P = mnt_Fqk(prec_P.PY_twist_squared, -prec_P.PX * c.gamma_twist + c.gamma_X - c.old_RY);

(later in Miller loop: f = f.squared() * g_RR_at_P)

Note the slight interface change: this component allocates g_RR_at_P inside itself (!)

Constructor & Destructor Documentation

◆ mnt_miller_loop_dbl_line_eval()

template<typename CurveType >
nil::crypto3::zk::components::mnt_miller_loop_dbl_line_eval< CurveType >::mnt_miller_loop_dbl_line_eval ( blueprint< field_type > &  bp,
const g1_precomputation< CurveType > &  prec_P,
const precompute_G2_component_coeffs< CurveType > &  c,
std::shared_ptr< typename component_policy::Fqk_variable_type > &  g_RR_at_P 
)
inline

Member Function Documentation

◆ generate_r1cs_constraints()

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

◆ generate_r1cs_witness()

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

Member Data Documentation

◆ bp

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

◆ c

template<typename CurveType >
precompute_G2_component_coeffs<CurveType> nil::crypto3::zk::components::mnt_miller_loop_dbl_line_eval< CurveType >::c

◆ compute_g_RR_at_P_c1

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_mul_by_lc_component_type> nil::crypto3::zk::components::mnt_miller_loop_dbl_line_eval< CurveType >::compute_g_RR_at_P_c1

◆ g_RR_at_P

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqk_variable_type>& nil::crypto3::zk::components::mnt_miller_loop_dbl_line_eval< CurveType >::g_RR_at_P

◆ g_RR_at_P_c1

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_variable_type> nil::crypto3::zk::components::mnt_miller_loop_dbl_line_eval< CurveType >::g_RR_at_P_c1

◆ gamma_twist

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_variable_type> nil::crypto3::zk::components::mnt_miller_loop_dbl_line_eval< CurveType >::gamma_twist

◆ prec_P

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

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