Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Public Member Functions | Public Attributes | Friends | List of all members
libsnark::uscs_constraint_system< FieldT > Class Template Reference

#include <uscs.hpp>

Public Member Functions

 uscs_constraint_system ()
 
size_t num_inputs () const
 
size_t num_variables () const
 
size_t num_constraints () const
 
bool is_valid () const
 
bool is_satisfied (const uscs_primary_input< FieldT > &primary_input, const uscs_auxiliary_input< FieldT > &auxiliary_input) const
 
void add_constraint (const uscs_constraint< FieldT > &constraint)
 
void add_constraint (const uscs_constraint< FieldT > &constraint, const std::string &annotation)
 
bool operator== (const uscs_constraint_system< FieldT > &other) const
 
void report_linear_constraint_statistics () const
 

Public Attributes

size_t primary_input_size
 
size_t auxiliary_input_size
 
std::vector< uscs_constraint< FieldT > > constraints
 

Friends

std::ostream & operator (std::ostream &out, const uscs_constraint_system< FieldT > &cs)
 
std::istream & operator>> (std::istream &in, uscs_constraint_system< FieldT > &cs)
 

Detailed Description

template<typename FieldT>
class libsnark::uscs_constraint_system< FieldT >

A system of USCS constraints looks like

{ ( \sum_{i=1}^{m_k} a_{k,i} * x_{k,i} )^2 = 1 }_{k=1}^{n}  .

In other words, the system is satisfied if and only if there exist a USCS variable assignment for which each USCS constraint evaluates to -1 or 1.

NOTE: The 0-th variable (i.e., "x_{0}") always represents the constant 1. Thus, the 0-th variable is not included in num_variables.

Definition at line 57 of file uscs.hpp.

Constructor & Destructor Documentation

◆ uscs_constraint_system()

template<typename FieldT >
libsnark::uscs_constraint_system< FieldT >::uscs_constraint_system ( )
inline

Definition at line 86 of file uscs.hpp.

Member Function Documentation

◆ add_constraint() [1/2]

template<typename FieldT >
void libsnark::uscs_constraint_system< FieldT >::add_constraint ( const uscs_constraint< FieldT > &  constraint)

◆ add_constraint() [2/2]

template<typename FieldT >
void libsnark::uscs_constraint_system< FieldT >::add_constraint ( const uscs_constraint< FieldT > &  constraint,
const std::string &  annotation 
)

◆ is_satisfied()

template<typename FieldT >
bool libsnark::uscs_constraint_system< FieldT >::is_satisfied ( const uscs_primary_input< FieldT > &  primary_input,
const uscs_auxiliary_input< FieldT > &  auxiliary_input 
) const

◆ is_valid()

template<typename FieldT >
bool libsnark::uscs_constraint_system< FieldT >::is_valid ( ) const

◆ num_constraints()

template<typename FieldT >
size_t libsnark::uscs_constraint_system< FieldT >::num_constraints ( ) const

◆ num_inputs()

template<typename FieldT >
size_t libsnark::uscs_constraint_system< FieldT >::num_inputs ( ) const

◆ num_variables()

template<typename FieldT >
size_t libsnark::uscs_constraint_system< FieldT >::num_variables ( ) const

◆ operator==()

template<typename FieldT >
bool libsnark::uscs_constraint_system< FieldT >::operator== ( const uscs_constraint_system< FieldT > &  other) const

◆ report_linear_constraint_statistics()

template<typename FieldT >
void libsnark::uscs_constraint_system< FieldT >::report_linear_constraint_statistics ( ) const

Friends And Related Function Documentation

◆ operator

template<typename FieldT >
std::ostream& operator ( std::ostream &  out,
const uscs_constraint_system< FieldT > &  cs 
)
friend

◆ operator>>

template<typename FieldT >
std::istream& operator>> ( std::istream &  in,
uscs_constraint_system< FieldT > &  cs 
)
friend

Member Data Documentation

◆ auxiliary_input_size

template<typename FieldT >
size_t libsnark::uscs_constraint_system< FieldT >::auxiliary_input_size

Definition at line 82 of file uscs.hpp.

◆ constraints

template<typename FieldT >
std::vector<uscs_constraint<FieldT> > libsnark::uscs_constraint_system< FieldT >::constraints

Definition at line 84 of file uscs.hpp.

◆ primary_input_size

template<typename FieldT >
size_t libsnark::uscs_constraint_system< FieldT >::primary_input_size

Definition at line 81 of file uscs.hpp.


The documentation for this class was generated from the following file:
libsnark::uscs_constraint_system::auxiliary_input_size
size_t auxiliary_input_size
Definition: uscs.hpp:82
libsnark::uscs_constraint_system::primary_input_size
size_t primary_input_size
Definition: uscs.hpp:81