nil::crypto3::zk::snark::tbcs_circuit Struct Reference

#include <tbcs.hpp>

+ Collaboration diagram for nil::crypto3::zk::snark::tbcs_circuit:

Public Member Functions

void add_gate (const tbcs_gate &g)
 
std::size_t depth () const
 
tbcs_variable_assignment get_all_outputs (const tbcs_primary_input &primary_input, const tbcs_auxiliary_input &auxiliary_input) const
 
tbcs_variable_assignment get_all_wires (const tbcs_primary_input &primary_input, const tbcs_auxiliary_input &auxiliary_input) const
 
bool is_satisfied (const tbcs_primary_input &primary_input, const tbcs_auxiliary_input &auxiliary_input) const
 
bool is_valid () const
 
std::size_t num_gates () const
 
std::size_t num_inputs () const
 
std::size_t num_wires () const
 
bool operator== (const tbcs_circuit &other) const
 
 tbcs_circuit ()
 
std::vector< std::size_t > wire_depths () const
 

Public Attributes

std::size_t auxiliary_input_size
 
std::vector< tbcs_gategates
 
std::size_t primary_input_size
 

Detailed Description

A TBCS circuit is a boolean circuit in which every gate has 2 inputs.

A TBCS circuit is satisfied by a TBCS variable assignment if every output evaluates to zero.

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.

Constructor & Destructor Documentation

◆ tbcs_circuit()

nil::crypto3::zk::snark::tbcs_circuit::tbcs_circuit ( )
inline

Member Function Documentation

◆ add_gate()

void nil::crypto3::zk::snark::tbcs_circuit::add_gate ( const tbcs_gate g)
inline

◆ depth()

std::size_t nil::crypto3::zk::snark::tbcs_circuit::depth ( ) const
inline

◆ get_all_outputs()

tbcs_variable_assignment nil::crypto3::zk::snark::tbcs_circuit::get_all_outputs ( const tbcs_primary_input primary_input,
const tbcs_auxiliary_input auxiliary_input 
) const
inline

◆ get_all_wires()

tbcs_variable_assignment nil::crypto3::zk::snark::tbcs_circuit::get_all_wires ( const tbcs_primary_input primary_input,
const tbcs_auxiliary_input auxiliary_input 
) const
inline

◆ is_satisfied()

bool nil::crypto3::zk::snark::tbcs_circuit::is_satisfied ( const tbcs_primary_input primary_input,
const tbcs_auxiliary_input auxiliary_input 
) const
inline

◆ is_valid()

bool nil::crypto3::zk::snark::tbcs_circuit::is_valid ( ) const
inline

The output wire of gates[i] must have index 1+num_inputs+i. (The '1+' accounts for the index of the constant wire.)

Gates must be topologically sorted.

◆ num_gates()

std::size_t nil::crypto3::zk::snark::tbcs_circuit::num_gates ( ) const
inline

◆ num_inputs()

std::size_t nil::crypto3::zk::snark::tbcs_circuit::num_inputs ( ) const
inline

◆ num_wires()

std::size_t nil::crypto3::zk::snark::tbcs_circuit::num_wires ( ) const
inline

◆ operator==()

bool nil::crypto3::zk::snark::tbcs_circuit::operator== ( const tbcs_circuit other) const
inline

◆ wire_depths()

std::vector<std::size_t> nil::crypto3::zk::snark::tbcs_circuit::wire_depths ( ) const
inline

Member Data Documentation

◆ auxiliary_input_size

std::size_t nil::crypto3::zk::snark::tbcs_circuit::auxiliary_input_size

◆ gates

std::vector<tbcs_gate> nil::crypto3::zk::snark::tbcs_circuit::gates

◆ primary_input_size

std::size_t nil::crypto3::zk::snark::tbcs_circuit::primary_input_size

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