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

#include <bacs.hpp>

Public Member Functions

 bacs_circuit ()
 
size_t num_inputs () const
 
size_t num_gates () const
 
size_t num_wires () const
 
std::vector< size_t > wire_depths () const
 
size_t depth () const
 
bool is_valid () const
 
bool is_satisfied (const bacs_primary_input< FieldT > &primary_input, const bacs_auxiliary_input< FieldT > &auxiliary_input) const
 
bacs_variable_assignment< FieldT > get_all_outputs (const bacs_primary_input< FieldT > &primary_input, const bacs_auxiliary_input< FieldT > &auxiliary_input) const
 
bacs_variable_assignment< FieldT > get_all_wires (const bacs_primary_input< FieldT > &primary_input, const bacs_auxiliary_input< FieldT > &auxiliary_input) const
 
void add_gate (const bacs_gate< FieldT > &g)
 
void add_gate (const bacs_gate< FieldT > &g, const std::string &annotation)
 
bool operator== (const bacs_circuit< FieldT > &other) const
 
void print () const
 
void print_info () const
 

Public Attributes

size_t primary_input_size
 
size_t auxiliary_input_size
 
std::vector< bacs_gate< FieldT > > gates
 

Friends

std::ostream & operator (std::ostream &out, const bacs_circuit< FieldT > &circuit)
 
std::istream & operator>> (std::istream &in, bacs_circuit< FieldT > &circuit)
 

Detailed Description

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

A BACS circuit is an arithmetic circuit in which every gate is a BACS gate.

Given a BACS primary input and a BACS auxiliary input, the circuit can be evaluated. If every output evaluates to zero, then the circuit 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 89 of file bacs.hpp.

Constructor & Destructor Documentation

◆ bacs_circuit()

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

Definition at line 115 of file bacs.hpp.

Member Function Documentation

◆ add_gate() [1/2]

template<typename FieldT >
void libsnark::bacs_circuit< FieldT >::add_gate ( const bacs_gate< FieldT > &  g)

◆ add_gate() [2/2]

template<typename FieldT >
void libsnark::bacs_circuit< FieldT >::add_gate ( const bacs_gate< FieldT > &  g,
const std::string &  annotation 
)

◆ depth()

template<typename FieldT >
size_t libsnark::bacs_circuit< FieldT >::depth ( ) const

◆ get_all_outputs()

template<typename FieldT >
bacs_variable_assignment<FieldT> libsnark::bacs_circuit< FieldT >::get_all_outputs ( const bacs_primary_input< FieldT > &  primary_input,
const bacs_auxiliary_input< FieldT > &  auxiliary_input 
) const

◆ get_all_wires()

template<typename FieldT >
bacs_variable_assignment<FieldT> libsnark::bacs_circuit< FieldT >::get_all_wires ( const bacs_primary_input< FieldT > &  primary_input,
const bacs_auxiliary_input< FieldT > &  auxiliary_input 
) const

◆ is_satisfied()

template<typename FieldT >
bool libsnark::bacs_circuit< FieldT >::is_satisfied ( const bacs_primary_input< FieldT > &  primary_input,
const bacs_auxiliary_input< FieldT > &  auxiliary_input 
) const

◆ is_valid()

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

◆ num_gates()

template<typename FieldT >
size_t libsnark::bacs_circuit< FieldT >::num_gates ( ) const

◆ num_inputs()

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

◆ num_wires()

template<typename FieldT >
size_t libsnark::bacs_circuit< FieldT >::num_wires ( ) const

◆ operator==()

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

◆ print()

template<typename FieldT >
void libsnark::bacs_circuit< FieldT >::print ( ) const

◆ print_info()

template<typename FieldT >
void libsnark::bacs_circuit< FieldT >::print_info ( ) const

◆ wire_depths()

template<typename FieldT >
std::vector<size_t> libsnark::bacs_circuit< FieldT >::wire_depths ( ) const

Friends And Related Function Documentation

◆ operator

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

◆ operator>>

template<typename FieldT >
std::istream& operator>> ( std::istream &  in,
bacs_circuit< FieldT > &  circuit 
)
friend

Member Data Documentation

◆ auxiliary_input_size

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

Definition at line 112 of file bacs.hpp.

◆ gates

template<typename FieldT >
std::vector<bacs_gate<FieldT> > libsnark::bacs_circuit< FieldT >::gates

Definition at line 113 of file bacs.hpp.

◆ primary_input_size

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

Definition at line 111 of file bacs.hpp.


The documentation for this class was generated from the following file:
libsnark::bacs_circuit::primary_input_size
size_t primary_input_size
Definition: bacs.hpp:111
libsnark::bacs_circuit::auxiliary_input_size
size_t auxiliary_input_size
Definition: bacs.hpp:112