purify
C++ Purify implementation with native circuit and BPP support
Loading...
Searching...
No Matches
purify::NativeBulletproofCircuit Struct Reference

Native in-memory representation of a Bulletproof-style arithmetic circuit. More...

#include <bulletproof.hpp>

Data Structures

struct  PackedSlackPlan
 
class  PackedWithSlack
 Resettable packed circuit representation backed by one aligned owning slab. More...
 

Public Member Functions

 NativeBulletproofCircuit ()=default
 
 NativeBulletproofCircuit (std::size_t gates, std::size_t commitments, std::size_t bits=0)
 
void resize (std::size_t gates, std::size_t commitments, std::size_t bits=0)
 Reinitializes the circuit shape and clears all accumulated constraints.
 
bool has_valid_shape () const
 Returns true when the sparse matrix vectors match the declared circuit dimensions.
 
std::size_t add_constraint (const FieldElement &constant=FieldElement::zero())
 Appends a new linear constraint constant term and returns its index.
 
void add_left_term (std::size_t gate_idx, std::size_t constraint_idx, const FieldElement &scalar)
 Adds a coefficient to the left-wire matrix.
 
void add_right_term (std::size_t gate_idx, std::size_t constraint_idx, const FieldElement &scalar)
 Adds a coefficient to the right-wire matrix.
 
void add_output_term (std::size_t gate_idx, std::size_t constraint_idx, const FieldElement &scalar)
 Adds a coefficient to the output-wire matrix.
 
void add_commitment_term (std::size_t commitment_idx, std::size_t constraint_idx, const FieldElement &scalar)
 Adds a coefficient to the commitment matrix using the Bulletproof sign convention.
 
bool evaluate (const BulletproofAssignmentData &assignment) const
 Evaluates the circuit against a witness assignment and checks all gate and row equations.
 
Result< PackedWithSlackpack_with_slack () const
 Packs the circuit into one aligned slab with no additional row or constraint slack.
 
Result< PackedWithSlackpack_with_slack (const PackedSlackPlan &slack) const
 Packs the circuit into one aligned slab with caller-specified slack for later mutation.
 

Data Fields

std::size_t n_gates = 0
 
std::size_t n_commitments = 0
 
std::size_t n_bits = 0
 
std::vector< NativeBulletproofCircuitRowwl
 
std::vector< NativeBulletproofCircuitRowwr
 
std::vector< NativeBulletproofCircuitRowwo
 
std::vector< NativeBulletproofCircuitRowwv
 
std::vector< FieldElementc
 

Detailed Description

The matrices are stored in sparse row form per gate column so the circuit can be built directly in C++ without parser round-trips.

Definition at line 81 of file bulletproof.hpp.

Constructor & Destructor Documentation

◆ NativeBulletproofCircuit() [1/2]

purify::NativeBulletproofCircuit::NativeBulletproofCircuit ( )
default

◆ NativeBulletproofCircuit() [2/2]

purify::NativeBulletproofCircuit::NativeBulletproofCircuit ( std::size_t  gates,
std::size_t  commitments,
std::size_t  bits = 0 
)

Definition at line 842 of file bulletproof.cpp.

Member Function Documentation

◆ add_commitment_term()

void purify::NativeBulletproofCircuit::add_commitment_term ( std::size_t  commitment_idx,
std::size_t  constraint_idx,
const FieldElement scalar 
)

Definition at line 880 of file bulletproof.cpp.

References n_commitments, scalar, and wv.

◆ add_constraint()

std::size_t purify::NativeBulletproofCircuit::add_constraint ( const FieldElement constant = FieldElement::zero())

Definition at line 863 of file bulletproof.cpp.

References c.

Referenced by purify::BulletproofTranscript::add_pubkey_and_out().

◆ add_left_term()

void purify::NativeBulletproofCircuit::add_left_term ( std::size_t  gate_idx,
std::size_t  constraint_idx,
const FieldElement scalar 
)

Definition at line 868 of file bulletproof.cpp.

References n_gates, scalar, and wl.

◆ add_output_term()

void purify::NativeBulletproofCircuit::add_output_term ( std::size_t  gate_idx,
std::size_t  constraint_idx,
const FieldElement scalar 
)

Definition at line 876 of file bulletproof.cpp.

References n_gates, scalar, and wo.

◆ add_right_term()

void purify::NativeBulletproofCircuit::add_right_term ( std::size_t  gate_idx,
std::size_t  constraint_idx,
const FieldElement scalar 
)

Definition at line 872 of file bulletproof.cpp.

References n_gates, scalar, and wr.

◆ evaluate()

◆ has_valid_shape()

◆ pack_with_slack() [1/2]

Result< NativeBulletproofCircuit::PackedWithSlack > purify::NativeBulletproofCircuit::pack_with_slack ( ) const

Definition at line 1487 of file bulletproof.cpp.

References pack_with_slack().

Referenced by pack_with_slack(), and purify::verifier_circuit_template().

◆ pack_with_slack() [2/2]

Result< NativeBulletproofCircuit::PackedWithSlack > purify::NativeBulletproofCircuit::pack_with_slack ( const PackedSlackPlan slack) const

◆ resize()

void purify::NativeBulletproofCircuit::resize ( std::size_t  gates,
std::size_t  commitments,
std::size_t  bits = 0 
)

Definition at line 845 of file bulletproof.cpp.

References c, n_bits, n_commitments, n_gates, wl, wo, wr, and wv.

Field Documentation

◆ c

◆ n_bits

◆ n_commitments

◆ n_gates

◆ wl

◆ wo

◆ wr

◆ wv


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