barretenberg
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
proof_system::StandardCircuitBuilder_< FF > Class Template Reference
Inheritance diagram for proof_system::StandardCircuitBuilder_< FF >:
proof_system::CircuitBuilderBase< FF >

Public Types

using Arithmetization = arithmetization::Standard< FF >
 
using WireVector = std::vector< uint32_t, barretenberg::ContainerSlabAllocator< uint32_t > >
 
using SelectorVector = std::vector< FF, barretenberg::ContainerSlabAllocator< FF > >
 
- Public Types inherited from proof_system::CircuitBuilderBase< FF >
using FF = FF
 
using EmbeddedCurve = std::conditional_t< std::same_as< FF, barretenberg::g1::coordinate_field >, curve::BN254, curve::Grumpkin >
 

Public Member Functions

WireVector & w_l ()
 
WireVector & w_r ()
 
WireVector & w_o ()
 
const WireVector & w_l () const
 
const WireVector & w_r () const
 
const WireVector & w_o () const
 
SelectorVector & q_m ()
 
SelectorVector & q_1 ()
 
SelectorVector & q_2 ()
 
SelectorVector & q_3 ()
 
SelectorVector & q_c ()
 
const SelectorVector & q_m () const
 
const SelectorVector & q_1 () const
 
const SelectorVector & q_2 () const
 
const SelectorVector & q_3 () const
 
const SelectorVector & q_c () const
 
 StandardCircuitBuilder_ (const size_t size_hint=0)
 
 StandardCircuitBuilder_ (const StandardCircuitBuilder_ &other)=delete
 
 StandardCircuitBuilder_ (StandardCircuitBuilder_ &&other)=default
 
StandardCircuitBuilder_operator= (const StandardCircuitBuilder_ &other)=delete
 
StandardCircuitBuilder_operator= (StandardCircuitBuilder_ &&other)
 
void assert_equal_constant (uint32_t const a_idx, FF const &b, std::string const &msg="assert equal constant")
 
void create_add_gate (const add_triple_< FF > &in) override
 
void create_mul_gate (const mul_triple_< FF > &in) override
 
void create_bool_gate (const uint32_t a) override
 
void create_poly_gate (const poly_triple_< FF > &in) override
 
void create_big_add_gate (const add_quad_< FF > &in)
 
void create_big_add_gate_with_bit_extraction (const add_quad_< FF > &in)
 
void create_big_mul_gate (const mul_quad_< FF > &in)
 
void create_balanced_add_gate (const add_quad_< FF > &in)
 
void create_fixed_group_add_gate (const fixed_group_add_quad_< FF > &in)
 
void create_fixed_group_add_gate_with_init (const fixed_group_add_quad_< FF > &in, const fixed_group_init_quad_< FF > &init)
 
void create_fixed_group_add_gate_final (const add_quad_< FF > &in)
 
void fix_witness (const uint32_t witness_index, const FF &witness_value)
 
std::vector< uint32_t > decompose_into_base4_accumulators (const uint32_t witness_index, const size_t num_bits, std::string const &msg="create_range_constraint")
 
void create_range_constraint (const uint32_t variable_index, const size_t num_bits, std::string const &msg="create_range_constraint")
 
accumulator_triple_< FF > create_logic_constraint (const uint32_t a, const uint32_t b, const size_t num_bits, bool is_xor_gate)
 
accumulator_triple_< FF > create_and_constraint (const uint32_t a, const uint32_t b, const size_t num_bits)
 
accumulator_triple_< FF > create_xor_constraint (const uint32_t a, const uint32_t b, const size_t num_bits)
 
uint32_t put_constant_variable (const FF &variable)
 
size_t get_num_constant_gates () const override
 
bool check_circuit ()
 
msgpack::sbuffer export_circuit () override
 
- Public Member Functions inherited from proof_system::CircuitBuilderBase< FF >
 CircuitBuilderBase (size_t size_hint=0)
 
 CircuitBuilderBase (const CircuitBuilderBase &other)=default
 
 CircuitBuilderBase (CircuitBuilderBase &&other) noexcept=default
 
CircuitBuilderBaseoperator= (const CircuitBuilderBase &other)=default
 
CircuitBuilderBaseoperator= (CircuitBuilderBase &&other) noexcept=default
 
virtual size_t get_num_gates () const
 
virtual void print_num_gates () const
 
virtual size_t get_num_variables () const
 
virtual void create_add_gate (const add_triple_< FF > &in)=0
 
virtual void create_mul_gate (const mul_triple_< FF > &in)=0
 
virtual void create_bool_gate (const uint32_t a)=0
 
virtual void create_poly_gate (const poly_triple_< FF > &in)=0
 
virtual size_t get_num_constant_gates () const=0
 
uint32_t get_first_variable_in_class (uint32_t index) const
 
void update_real_variable_indices (uint32_t index, uint32_t new_real_index)
 
FF get_variable (const uint32_t index) const
 
const FF & get_variable_reference (const uint32_t index) const
 
uint32_t get_public_input_index (const uint32_t witness_index) const
 
FF get_public_input (const uint32_t index) const
 
std::vector< FF > get_public_inputs () const
 
virtual uint32_t add_variable (const FF &in)
 
virtual void set_variable_name (uint32_t index, const std::string &name)
 
virtual void update_variable_names (uint32_t index)
 
virtual void finalize_variable_names ()
 
virtual msgpack::sbuffer export_circuit ()
 
virtual uint32_t add_public_variable (const FF &in)
 
virtual void set_public_input (const uint32_t witness_index)
 
virtual void assert_equal (const uint32_t a_idx, const uint32_t b_idx, std::string const &msg="assert_equal")
 
size_t get_circuit_subgroup_size (const size_t num_gates) const
 
size_t get_num_public_inputs () const
 
void assert_valid_variables (const std::vector< uint32_t > &variable_indices)
 
bool is_valid_variable (uint32_t variable_index)
 
void add_recursive_proof (const std::vector< uint32_t > &proof_output_witness_indices)
 Add information about which witnesses contain the recursive proof computation information.
 
void set_recursive_proof (const std::vector< uint32_t > &proof_output_witness_indices)
 Update recursive_proof_public_input_indices with existing public inputs that represent a recursive proof.
 
bool failed () const
 
const std::string & err () const
 
void set_err (std::string msg)
 
void failure (std::string msg)
 

Public Attributes

std::vector< std::string > selector_names = Arithmetization::selector_names
 
std::array< std::vector< uint32_t, barretenberg::ContainerSlabAllocator< uint32_t > >, NUM_WIRES > wires
 
Arithmetization selectors
 
std::map< FF, uint32_t > constant_variable_indices
 
fixed_group_add_quad_< FF > previous_add_quad
 
- Public Attributes inherited from proof_system::CircuitBuilderBase< FF >
size_t num_gates
 
std::vector< uint32_t > public_inputs
 
std::vector< FF > variables
 
std::unordered_map< uint32_t, std::string > variable_names
 
std::vector< uint32_t > next_var_index
 
std::vector< uint32_t > prev_var_index
 
std::vector< uint32_t > real_variable_index
 
std::vector< uint32_t > real_variable_tags
 
uint32_t current_tag
 
std::map< uint32_t, uint32_t > tau
 
std::vector< uint32_t > recursive_proof_public_input_indices
 
bool contains_recursive_proof
 
bool _failed
 
std::string _err
 
uint32_t zero_idx
 
uint32_t one_idx
 

Static Public Attributes

static constexpr size_t NUM_WIRES = Arithmetization::NUM_WIRES
 
static constexpr size_t program_width = Arithmetization::NUM_WIRES
 
static constexpr size_t num_selectors = Arithmetization::NUM_SELECTORS
 
static constexpr std::string_view NAME_STRING = "StandardArithmetization"
 
static constexpr CircuitType CIRCUIT_TYPE = CircuitType::STANDARD
 
static constexpr merkle::HashType merkle_hash_type = merkle::HashType::FIXED_BASE_PEDERSEN
 
static constexpr pedersen::CommitmentType commitment_type = pedersen::CommitmentType::FIXED_BASE_PEDERSEN
 
static constexpr size_t UINT_LOG2_BASE = 2
 
- Static Public Attributes inherited from proof_system::CircuitBuilderBase< FF >
static constexpr uint32_t REAL_VARIABLE
 
static constexpr uint32_t FIRST_VARIABLE_IN_CLASS
 

Member Function Documentation

◆ check_circuit()

template<typename FF >
bool proof_system::StandardCircuitBuilder_< FF >::check_circuit

Check if all the circuit gates are correct given the witnesses. Goes through each gates and checks if the identity holds.

Returns
true if the circuit is correct.

◆ create_add_gate()

template<typename FF >
void proof_system::StandardCircuitBuilder_< FF >::create_add_gate ( const add_triple_< FF > &  in)
override

Create an addition gate.

Parameters
inAn add_triple containing the indexes of variables to be placed into the wires w_l, w_r, w_o and addition coefficients to be placed into q_1, q_2, q_3, q_c().

◆ create_balanced_add_gate()

template<typename FF >
void proof_system::StandardCircuitBuilder_< FF >::create_balanced_add_gate ( const add_quad_< FF > &  in)

Create a balanced addition gate. (a*a_c + b*b_c + c*c_c + d*d_c + q_c = 0, where d is in [0,3])

Parameters
inAn add quad containing the indexes of variables a, b, c, d and the scaling factors.

◆ create_big_add_gate()

template<typename FF >
void proof_system::StandardCircuitBuilder_< FF >::create_big_add_gate ( const add_quad_< FF > &  in)

Create a big addition gate. (a*a_c + b*b_c + c*c_c + d*d_c + q_c = 0)

Parameters
inAn add quad containing the indexes of variables a, b, c, d and the scaling factors.

◆ create_bool_gate()

template<typename FF >
void proof_system::StandardCircuitBuilder_< FF >::create_bool_gate ( const uint32_t  variable_index)
overridevirtual

Create a bool gate. This gate constrains a variable to two possible values: 0 or 1.

Parameters
variable_indexThe index of the variable.

Implements proof_system::CircuitBuilderBase< FF >.

◆ create_mul_gate()

template<typename FF >
void proof_system::StandardCircuitBuilder_< FF >::create_mul_gate ( const mul_triple_< FF > &  in)
override

Create a multiplication gate.

Parameters
inA mul_tripple containing the indexes of variables to be placed into the wires w_l, w_r, w_o and scaling coefficients to be placed into q_m, q_3, q_c().

◆ create_poly_gate()

template<typename FF >
void proof_system::StandardCircuitBuilder_< FF >::create_poly_gate ( const poly_triple_< FF > &  in)
override

Create a gate where you set all the indexes and coefficients yourself.

Parameters
inA poly_triple containing all the information.

◆ export_circuit()

template<typename FF >
msgpack::sbuffer proof_system::StandardCircuitBuilder_< FF >::export_circuit
overridevirtual

Export the existing circuit as msgpack compatible buffer.

Returns
msgpack compatible buffer

Reimplemented from proof_system::CircuitBuilderBase< FF >.

◆ get_num_constant_gates()

template<typename FF >
size_t proof_system::StandardCircuitBuilder_< FF >::get_num_constant_gates ( ) const
inlineoverridevirtual

The documentation for this class was generated from the following files: