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

#include <precomputation.hpp>

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

Public Types

typedef CurveType::pairing::fp_type FieldType
 
using fqe_type = typename CurveType::pairing::pair_curve_type::pairing::fqe_type
 

Public Member Functions

void generate_r1cs_constraints ()
 
void generate_r1cs_witness ()
 
 precompute_G2_component_doubling_step (blueprint< FieldType > &bp, const precompute_G2_component_coeffs< CurveType > &cur, const precompute_G2_component_coeffs< CurveType > &next)
 

Public Attributes

std::shared_ptr< typename component_policy::Fqe_mul_component_type > compute_gamma
 
std::shared_ptr< typename component_policy::Fqe_mul_component_type > compute_gamma_X
 
std::shared_ptr< typename component_policy::Fqe_sqr_component_type > compute_next_RX
 
std::shared_ptr< typename component_policy::Fqe_mul_component_type > compute_next_RY
 
std::shared_ptr< typename component_policy::Fqe_sqr_component_type > compute_RXsquared
 
precompute_G2_component_coeffs< CurveType > cur
 
precompute_G2_component_coeffs< CurveType > next
 
std::shared_ptr< typename component_policy::Fqe_variable_type > next_RX_plus_two_RX
 
std::shared_ptr< typename component_policy::Fqe_variable_type > RX_minus_next_RX
 
std::shared_ptr< typename component_policy::Fqe_variable_type > RXsquared
 
std::shared_ptr< typename component_policy::Fqe_variable_type > RY_plus_next_RY
 
std::shared_ptr< typename component_policy::Fqe_variable_type > three_RXsquared_plus_a
 
std::shared_ptr< typename component_policy::Fqe_variable_type > two_RY
 

Protected Attributes

blueprint< CurveType::scalar_field_type > & bp
 

Detailed Description

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

Technical note:

QX and QY – X and Y coordinates of Q

initialization: coeffs[0].RX = QX coeffs[0].RY = QY

g2_precompute_doubling_step relates coeffs[i] and coeffs[i+1] as follows

coeffs[i] gamma = (3 * RX^2 + twist_coeff_a) * (2*RY).inversed() gamma_X = gamma * RX

coeffs[i+1] RX = prev_gamma^2 - (2*prev_RX) RY = prev_gamma * (prev_RX - RX) - prev_RY

Member Typedef Documentation

◆ FieldType

template<typename CurveType >
typedef CurveType::pairing::fp_type nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::FieldType

◆ fqe_type

template<typename CurveType >
using nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::fqe_type = typename CurveType::pairing::pair_curve_type::pairing::fqe_type

Constructor & Destructor Documentation

◆ precompute_G2_component_doubling_step()

template<typename CurveType >
nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::precompute_G2_component_doubling_step ( blueprint< FieldType > &  bp,
const precompute_G2_component_coeffs< CurveType > &  cur,
const precompute_G2_component_coeffs< CurveType > &  next 
)
inline

Member Function Documentation

◆ generate_r1cs_constraints()

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

◆ generate_r1cs_witness()

template<typename CurveType >
void nil::crypto3::zk::components::precompute_G2_component_doubling_step< 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

◆ compute_gamma

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_mul_component_type> nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::compute_gamma

◆ compute_gamma_X

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_mul_component_type> nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::compute_gamma_X

◆ compute_next_RX

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_sqr_component_type> nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::compute_next_RX

◆ compute_next_RY

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_mul_component_type> nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::compute_next_RY

◆ compute_RXsquared

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_sqr_component_type> nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::compute_RXsquared

◆ cur

◆ next

◆ next_RX_plus_two_RX

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_variable_type> nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::next_RX_plus_two_RX

◆ RX_minus_next_RX

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_variable_type> nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::RX_minus_next_RX

◆ RXsquared

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_variable_type> nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::RXsquared

◆ RY_plus_next_RY

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_variable_type> nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::RY_plus_next_RY

◆ three_RXsquared_plus_a

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_variable_type> nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::three_RXsquared_plus_a

◆ two_RY

template<typename CurveType >
std::shared_ptr<typename component_policy::Fqe_variable_type> nil::crypto3::zk::components::precompute_G2_component_doubling_step< CurveType >::two_RY

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