Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
#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) |
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.
|
inline |
void libsnark::bacs_circuit< FieldT >::add_gate | ( | const bacs_gate< FieldT > & | g | ) |
void libsnark::bacs_circuit< FieldT >::add_gate | ( | const bacs_gate< FieldT > & | g, |
const std::string & | annotation | ||
) |
size_t libsnark::bacs_circuit< FieldT >::depth | ( | ) | const |
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 |
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 |
bool libsnark::bacs_circuit< FieldT >::is_satisfied | ( | const bacs_primary_input< FieldT > & | primary_input, |
const bacs_auxiliary_input< FieldT > & | auxiliary_input | ||
) | const |
bool libsnark::bacs_circuit< FieldT >::is_valid | ( | ) | const |
size_t libsnark::bacs_circuit< FieldT >::num_gates | ( | ) | const |
size_t libsnark::bacs_circuit< FieldT >::num_inputs | ( | ) | const |
size_t libsnark::bacs_circuit< FieldT >::num_wires | ( | ) | const |
bool libsnark::bacs_circuit< FieldT >::operator== | ( | const bacs_circuit< FieldT > & | other | ) | const |
void libsnark::bacs_circuit< FieldT >::print | ( | ) | const |
void libsnark::bacs_circuit< FieldT >::print_info | ( | ) | const |
std::vector<size_t> libsnark::bacs_circuit< FieldT >::wire_depths | ( | ) | const |
|
friend |
|
friend |
size_t libsnark::bacs_circuit< FieldT >::auxiliary_input_size |
std::vector<bacs_gate<FieldT> > libsnark::bacs_circuit< FieldT >::gates |
size_t libsnark::bacs_circuit< FieldT >::primary_input_size |