Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
Go to the documentation of this file.
36 #ifndef LIBSNARK_GADGETLIB2_INCLUDE_GADGETLIB2_GADGET_HPP_
37 #define LIBSNARK_GADGETLIB2_INCLUDE_GADGETLIB2_GADGET_HPP_
84 DISALLOW_COPY_AND_ASSIGN(
Gadget);
91 virtual void init() = 0;
107 const ::std::string &name);
114 return pb_->flagIsSet(flag);
118 typedef ::std::shared_ptr<Gadget>
156 const ::std::string &name);
159 virtual void init() = 0;
184 void generateConstraints();
185 void generateWitness();
200 :
public AND_GadgetBase
264 void generateConstraints();
265 void generateWitness();
280 :
public OR_GadgetBase
333 :
public InnerProduct_GadgetBase
390 virtual void init() = 0;
400 ::std::vector<GadgetPtr> computeResult_;
462 :
public CompressionPacking_GadgetBase
486 CompressionPacking_Gadget,
512 :
public IntegerPacking_GadgetBase
537 IntegerPacking_Gadget,
568 :
public EqualsConst_GadgetBase
649 ::std::vector<GadgetPtr> packingGadgets_;
697 virtual void init() {}
742 virtual void init() {}
783 virtual void init() {}
812 :
public Comparison_GadgetBase
816 const size_t wordBitSize_;
829 const size_t &wordBitSize,
839 const size_t &wordBitSize,
872 #endif // LIBSNARK_GADGETLIB2_INCLUDE_GADGETLIB2_GADGET_HPP_
Holds both representations of a word, both multipacked and unpacked.
friend class EqualsConst_Gadget
const VariableArray unpacked_
bool flagIsSet(const FlagVariable &flag) const
static GadgetPtr create(ProtoboardPtr pb, const VariableArray &input, const Variable &result)
FElem val(const LinearCombination &lc)
const VariableArray input_
static GadgetPtr create(ProtoboardPtr pb, const size_t &wordBitSize, const PackedWord &lhs, const PackedWord &rhs, const FlagVariable &less, const FlagVariable &lessOrEqual)
Specific case for and AND with two inputs. Field agnostic.
void generateConstraints()
friend class InnerProduct_Gadget
virtual void generateWitness()
const VariableArray packed_
virtual ~LooseMUX_GadgetBase()=0
CREATE_GADGET_FACTORY_CLASS_5(Comparison_Gadget, size_t, wordBitSize, PackedWord, lhs, PackedWord, rhs, FlagVariable, less, FlagVariable, lessOrEqual)
void generateConstraints()
LooseMUX_GadgetBase(ProtoboardPtr pb)
void generateConstraints()
friend class IntegerPacking_Gadget
::std::vector< MultiPackedWord > MultiPackedWordArray
const VariableArray unpacked_
const Variable successFlag_
void generateConstraints()
void generateConstraints()
friend class CompressionPacking_Gadget
virtual void addRank1Constraint(const LinearCombination &a, const LinearCombination &b, const LinearCombination &c, const ::std::string &name)
static GadgetPtr create(ProtoboardPtr pb, const LinearCombination &condition, const FlagVariable &flag)
void addRank1Constraint(const LinearCombination &a, const LinearCombination &b, const LinearCombination &c, const ::std::string &name)
Specific case for and OR with two inputs. Field agnostic.
static GadgetPtr create(ProtoboardPtr pb, const MultiPackedWordArray &inputs, const Variable &index, const VariableArray &output, const Variable &successFlag)
virtual VariableArray indicatorVariables() const
FElem & val(const Variable &var)
void generateConstraints()
void generateConstraints()
MultiPackedWordArray inputs_
virtual VariableArray indicatorVariables() const =0
static GadgetPtr create(ProtoboardPtr pb, const FlagVariable &toggle, const LinearCombination &zeroValue, const LinearCombination &oneValue, const Variable &result)
static GadgetPtr create(ProtoboardPtr pb, const DualWord &var, PackingMode packingMode)
::std::shared_ptr< Gadget > GadgetPtr
#define DISALLOW_COPY_AND_ASSIGN(TypeName)
static GadgetPtr create(ProtoboardPtr pb, const DualWordArray &vars, PackingMode packingMode)
CREATE_GADGET_FACTORY_CLASS_3(InnerProduct_Gadget, VariableArray, A, VariableArray, B, Variable, result)
void generateConstraints()
CREATE_GADGET_BASE_CLASS(AND_GadgetBase)
virtual void generateConstraints()=0
void enforceBooleanity(const Variable &var)
void generateConstraints()
R1P_Gadget(ProtoboardPtr pb)
void generateConstraints()
void addUnaryConstraint(const LinearCombination &a, const ::std::string &name)
const LinearCombination input_
friend class Comparison_Gadget
const VariableArray output_
A formal variable, field agnostic.
static GadgetPtr create(ProtoboardPtr pb, const LinearCombination &condition, const FlagVariable &flag)
::std::shared_ptr< Protoboard > ProtoboardPtr
void generateConstraints()
void generateConstraints()
FieldType fieldType() const
static GadgetPtr create(ProtoboardPtr pb, const VariableArray &input, const Variable &result)
void generateConstraints()
const VariableArray packed_