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

#include <protoboard.hpp>

Public Member Functions

 r1cs_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 r1cs_primary_input< FieldT > &primary_input, const r1cs_auxiliary_input< FieldT > &auxiliary_input) const
 
void add_constraint (const r1cs_constraint< FieldT > &c)
 
void add_constraint (const r1cs_constraint< FieldT > &c, const std::string &annotation)
 
void swap_AB_if_beneficial ()
 
bool operator== (const r1cs_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< r1cs_constraint< FieldT > > constraints
 

Friends

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

Detailed Description

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

A system of R1CS constraints looks like

{ < A_k , X > * < B_k , X > = < C_k , X > }_{k=1}^{n}  .

In other words, the system is satisfied if and only if there exist a USCS variable assignment for which each R1CS constraint is satisfied.

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 25 of file protoboard.hpp.

Constructor & Destructor Documentation

◆ r1cs_constraint_system()

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

Definition at line 122 of file r1cs.hpp.

Member Function Documentation

◆ add_constraint() [1/2]

template<typename FieldT >
void libsnark::r1cs_constraint_system< FieldT >::add_constraint ( const r1cs_constraint< FieldT > &  c)

◆ add_constraint() [2/2]

template<typename FieldT >
void libsnark::r1cs_constraint_system< FieldT >::add_constraint ( const r1cs_constraint< FieldT > &  c,
const std::string &  annotation 
)

◆ is_satisfied()

template<typename FieldT >
bool libsnark::r1cs_constraint_system< FieldT >::is_satisfied ( const r1cs_primary_input< FieldT > &  primary_input,
const r1cs_auxiliary_input< FieldT > &  auxiliary_input 
) const
Here is the caller graph for this function:

◆ is_valid()

template<typename FieldT >
bool libsnark::r1cs_constraint_system< FieldT >::is_valid ( ) const
Here is the caller graph for this function:

◆ num_constraints()

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

◆ num_inputs()

template<typename FieldT >
size_t libsnark::r1cs_constraint_system< FieldT >::num_inputs ( ) const
Here is the caller graph for this function:

◆ num_variables()

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

◆ operator==()

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

◆ report_linear_constraint_statistics()

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

◆ swap_AB_if_beneficial()

template<typename FieldT >
void libsnark::r1cs_constraint_system< FieldT >::swap_AB_if_beneficial ( )

Friends And Related Function Documentation

◆ operator

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

◆ operator>>

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

Member Data Documentation

◆ auxiliary_input_size

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

Definition at line 118 of file r1cs.hpp.

◆ constraints

template<typename FieldT >
std::vector<r1cs_constraint<FieldT> > libsnark::r1cs_constraint_system< FieldT >::constraints

Definition at line 120 of file r1cs.hpp.

◆ primary_input_size

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

Definition at line 117 of file r1cs.hpp.


The documentation for this class was generated from the following files:
libsnark::r1cs_constraint_system::primary_input_size
size_t primary_input_size
Definition: r1cs.hpp:117
libsnark::r1cs_constraint_system::auxiliary_input_size
size_t auxiliary_input_size
Definition: r1cs.hpp:118