nil::crypto3::zk::snark::qap_instance< FieldType > Class Template Reference

#include <qap.hpp>

+ Collaboration diagram for nil::crypto3::zk::snark::qap_instance< FieldType >:

Public Member Functions

bool is_satisfied (const qap_witness< field_type > &witness) const
 
qap_instanceoperator= (const qap_instance< field_type > &other)=default
 
qap_instanceoperator= (qap_instance< field_type > &&other)=default
 
 qap_instance (const qap_instance< field_type > &other)=default
 
 qap_instance (const std::shared_ptr< evaluation_domain< field_type >> &domain, const std::size_t num_variables, const std::size_t degree, const std::size_t num_inputs, const std::vector< std::map< std::size_t, field_value_type >> &A_in_Lagrange_basis, const std::vector< std::map< std::size_t, field_value_type >> &B_in_Lagrange_basis, const std::vector< std::map< std::size_t, field_value_type >> &C_in_Lagrange_basis)
 
 qap_instance (const std::shared_ptr< evaluation_domain< field_type >> &domain, const std::size_t num_variables, const std::size_t degree, const std::size_t num_inputs, std::vector< std::map< std::size_t, field_value_type >> &&A_in_Lagrange_basis, std::vector< std::map< std::size_t, field_value_type >> &&B_in_Lagrange_basis, std::vector< std::map< std::size_t, field_value_type >> &&C_in_Lagrange_basis)
 
 qap_instance (qap_instance< field_type > &&other)=default
 

Public Attributes

std::vector< std::map< std::size_t, field_value_type > > A_in_Lagrange_basis
 
std::vector< std::map< std::size_t, field_value_type > > B_in_Lagrange_basis
 
std::vector< std::map< std::size_t, field_value_type > > C_in_Lagrange_basis
 
std::size_t degree
 
std::shared_ptr< evaluation_domain< field_type > > domain
 
std::size_t num_inputs
 
std::size_t num_variables
 

Detailed Description

template<typename FieldType>
class nil::crypto3::zk::snark::qap_instance< FieldType >

A QAP instance.

Specifically, the data structure stores:

  • a choice of domain (corresponding to a certain subset of the field);
  • the number of variables, the degree, and the number of inputs; and
  • coefficients of the A,B,C polynomials in the Lagrange basis.

There is no need to store the Z polynomial because it is uniquely determined by the domain (as Z is its vanishing polynomial).

Constructor & Destructor Documentation

◆ qap_instance() [1/4]

template<typename FieldType >
nil::crypto3::zk::snark::qap_instance< FieldType >::qap_instance ( const std::shared_ptr< evaluation_domain< field_type >> &  domain,
const std::size_t  num_variables,
const std::size_t  degree,
const std::size_t  num_inputs,
const std::vector< std::map< std::size_t, field_value_type >> &  A_in_Lagrange_basis,
const std::vector< std::map< std::size_t, field_value_type >> &  B_in_Lagrange_basis,
const std::vector< std::map< std::size_t, field_value_type >> &  C_in_Lagrange_basis 
)
inline

◆ qap_instance() [2/4]

template<typename FieldType >
nil::crypto3::zk::snark::qap_instance< FieldType >::qap_instance ( const std::shared_ptr< evaluation_domain< field_type >> &  domain,
const std::size_t  num_variables,
const std::size_t  degree,
const std::size_t  num_inputs,
std::vector< std::map< std::size_t, field_value_type >> &&  A_in_Lagrange_basis,
std::vector< std::map< std::size_t, field_value_type >> &&  B_in_Lagrange_basis,
std::vector< std::map< std::size_t, field_value_type >> &&  C_in_Lagrange_basis 
)
inline

◆ qap_instance() [3/4]

template<typename FieldType >
nil::crypto3::zk::snark::qap_instance< FieldType >::qap_instance ( const qap_instance< field_type > &  other)
default

◆ qap_instance() [4/4]

template<typename FieldType >
nil::crypto3::zk::snark::qap_instance< FieldType >::qap_instance ( qap_instance< field_type > &&  other)
default

Member Function Documentation

◆ is_satisfied()

template<typename FieldType >
bool nil::crypto3::zk::snark::qap_instance< FieldType >::is_satisfied ( const qap_witness< field_type > &  witness) const
inline

◆ operator=() [1/2]

template<typename FieldType >
qap_instance& nil::crypto3::zk::snark::qap_instance< FieldType >::operator= ( const qap_instance< field_type > &  other)
default

◆ operator=() [2/2]

template<typename FieldType >
qap_instance& nil::crypto3::zk::snark::qap_instance< FieldType >::operator= ( qap_instance< field_type > &&  other)
default

Member Data Documentation

◆ A_in_Lagrange_basis

template<typename FieldType >
std::vector<std::map<std::size_t, field_value_type> > nil::crypto3::zk::snark::qap_instance< FieldType >::A_in_Lagrange_basis

◆ B_in_Lagrange_basis

template<typename FieldType >
std::vector<std::map<std::size_t, field_value_type> > nil::crypto3::zk::snark::qap_instance< FieldType >::B_in_Lagrange_basis

◆ C_in_Lagrange_basis

template<typename FieldType >
std::vector<std::map<std::size_t, field_value_type> > nil::crypto3::zk::snark::qap_instance< FieldType >::C_in_Lagrange_basis

◆ degree

template<typename FieldType >
std::size_t nil::crypto3::zk::snark::qap_instance< FieldType >::degree

◆ domain

template<typename FieldType >
std::shared_ptr<evaluation_domain<field_type> > nil::crypto3::zk::snark::qap_instance< FieldType >::domain

◆ num_inputs

template<typename FieldType >
std::size_t nil::crypto3::zk::snark::qap_instance< FieldType >::num_inputs

◆ num_variables

template<typename FieldType >
std::size_t nil::crypto3::zk::snark::qap_instance< FieldType >::num_variables

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