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

#include <bar_gadget.hpp>

Inheritance diagram for libsnark::bar_gadget< FieldT >:
Inheritance graph
[legend]
Collaboration diagram for libsnark::bar_gadget< FieldT >:
Collaboration graph
[legend]

Public Member Functions

 bar_gadget (protoboard< FieldT > &pb, const pb_linear_combination_array< FieldT > &X, const FieldT &a, const pb_linear_combination_array< FieldT > &Y, const FieldT &b, const pb_linear_combination< FieldT > &Z_packed, const std::string &annotation_prefix)
 
void generate_r1cs_constraints ()
 
void generate_r1cs_witness ()
 
- Public Member Functions inherited from libsnark::gadget< FieldT >
 gadget (protoboard< FieldT > &pb, const std::string &annotation_prefix)
 

Public Attributes

pb_linear_combination_array< FieldT > X
 
FieldT a
 
pb_linear_combination_array< FieldT > Y
 
FieldT b
 
pb_linear_combination< FieldT > Z_packed
 
pb_variable_array< FieldT > Z_bits
 
pb_variable< FieldT > result
 
pb_variable_array< FieldT > overflow
 
pb_variable_array< FieldT > unpacked_result
 
std::shared_ptr< packing_gadget< FieldT > > unpack_result
 
std::shared_ptr< packing_gadget< FieldT > > pack_Z
 
size_t width
 

Additional Inherited Members

- Protected Attributes inherited from libsnark::gadget< FieldT >
protoboard< FieldT > & pb
 
const std::string annotation_prefix
 

Detailed Description

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

The bar gadget checks linear combination Z = aX + bY (mod 2^w) for a, b - const, X, Y - vectors of w bits, where w is implicitly inferred, Z - a packed variable.

This gadget is used four times in fooram:

Definition at line 32 of file bar_gadget.hpp.

Constructor & Destructor Documentation

◆ bar_gadget()

template<typename FieldT >
libsnark::bar_gadget< FieldT >::bar_gadget ( protoboard< FieldT > &  pb,
const pb_linear_combination_array< FieldT > &  X,
const FieldT &  a,
const pb_linear_combination_array< FieldT > &  Y,
const FieldT &  b,
const pb_linear_combination< FieldT > &  Z_packed,
const std::string &  annotation_prefix 
)

Member Function Documentation

◆ generate_r1cs_constraints()

template<typename FieldT >
void libsnark::bar_gadget< FieldT >::generate_r1cs_constraints ( )

◆ generate_r1cs_witness()

template<typename FieldT >
void libsnark::bar_gadget< FieldT >::generate_r1cs_witness ( )

Member Data Documentation

◆ a

template<typename FieldT >
FieldT libsnark::bar_gadget< FieldT >::a

Definition at line 36 of file bar_gadget.hpp.

◆ b

template<typename FieldT >
FieldT libsnark::bar_gadget< FieldT >::b

Definition at line 38 of file bar_gadget.hpp.

◆ overflow

template<typename FieldT >
pb_variable_array<FieldT> libsnark::bar_gadget< FieldT >::overflow

Definition at line 43 of file bar_gadget.hpp.

◆ pack_Z

template<typename FieldT >
std::shared_ptr<packing_gadget<FieldT> > libsnark::bar_gadget< FieldT >::pack_Z

Definition at line 47 of file bar_gadget.hpp.

◆ result

template<typename FieldT >
pb_variable<FieldT> libsnark::bar_gadget< FieldT >::result

Definition at line 42 of file bar_gadget.hpp.

◆ unpack_result

template<typename FieldT >
std::shared_ptr<packing_gadget<FieldT> > libsnark::bar_gadget< FieldT >::unpack_result

Definition at line 46 of file bar_gadget.hpp.

◆ unpacked_result

template<typename FieldT >
pb_variable_array<FieldT> libsnark::bar_gadget< FieldT >::unpacked_result

Definition at line 44 of file bar_gadget.hpp.

◆ width

template<typename FieldT >
size_t libsnark::bar_gadget< FieldT >::width

Definition at line 49 of file bar_gadget.hpp.

◆ X

template<typename FieldT >
pb_linear_combination_array<FieldT> libsnark::bar_gadget< FieldT >::X

Definition at line 35 of file bar_gadget.hpp.

◆ Y

template<typename FieldT >
pb_linear_combination_array<FieldT> libsnark::bar_gadget< FieldT >::Y

Definition at line 37 of file bar_gadget.hpp.

◆ Z_bits

template<typename FieldT >
pb_variable_array<FieldT> libsnark::bar_gadget< FieldT >::Z_bits

Definition at line 40 of file bar_gadget.hpp.

◆ Z_packed

template<typename FieldT >
pb_linear_combination<FieldT> libsnark::bar_gadget< FieldT >::Z_packed

Definition at line 39 of file bar_gadget.hpp.


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