Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Public Types | Public Member Functions | Public Attributes | List of all members
libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT > Class Template Reference

#include <scalar_multiplication.hpp>

Inheritance diagram for libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >:
Inheritance graph
[legend]
Collaboration diagram for libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >:
Collaboration graph
[legend]

Public Types

using FieldT = libff::Fr< ppT >
 
using variableOrIdentity = variable_or_identity< ppT, groupT, variableT >
 

Public Member Functions

 add_variable_or_identity (protoboard< FieldT > &pb, const variableOrIdentity &A, const variableOrIdentity &B, const variableOrIdentity &result, const std::string &annotation_prefix)
 
void generate_r1cs_constraints ()
 
void generate_r1cs_witness ()
 
- Public Member Functions inherited from libsnark::gadget< libff::Fr< ppT > >
 gadget (protoboard< libff::Fr< ppT > > &pb, const std::string &annotation_prefix)
 

Public Attributes

variableT add_result
 
addGadgetT add
 
variableT A_not_identity_result
 
variableSelectorT selector_A_not_identity
 
variableSelectorT selector_A
 
variableOrIdentity result
 

Additional Inherited Members

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

Detailed Description

template<typename ppT, typename groupT, typename variableT, typename variableSelectorT, typename addGadgetT>
class libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >

Wrap an add gadget, extending it to support adding variable_or_identity elements. At most one element may be the identity, otherwise witness generation fails due to the implementation of the underlying add gadgets.

Definition at line 151 of file scalar_multiplication.hpp.

Member Typedef Documentation

◆ FieldT

template<typename ppT , typename groupT , typename variableT , typename variableSelectorT , typename addGadgetT >
using libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >::FieldT = libff::Fr<ppT>

Definition at line 154 of file scalar_multiplication.hpp.

◆ variableOrIdentity

template<typename ppT , typename groupT , typename variableT , typename variableSelectorT , typename addGadgetT >
using libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >::variableOrIdentity = variable_or_identity<ppT, groupT, variableT>

Definition at line 155 of file scalar_multiplication.hpp.

Constructor & Destructor Documentation

◆ add_variable_or_identity()

template<typename ppT , typename groupT , typename variableT , typename variableSelectorT , typename addGadgetT >
libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >::add_variable_or_identity ( protoboard< FieldT > &  pb,
const variableOrIdentity A,
const variableOrIdentity B,
const variableOrIdentity result,
const std::string &  annotation_prefix 
)

Member Function Documentation

◆ generate_r1cs_constraints()

template<typename ppT , typename groupT , typename variableT , typename variableSelectorT , typename addGadgetT >
void libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >::generate_r1cs_constraints ( )

◆ generate_r1cs_witness()

template<typename ppT , typename groupT , typename variableT , typename variableSelectorT , typename addGadgetT >
void libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >::generate_r1cs_witness ( )

Member Data Documentation

◆ A_not_identity_result

template<typename ppT , typename groupT , typename variableT , typename variableSelectorT , typename addGadgetT >
variableT libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >::A_not_identity_result

Definition at line 195 of file scalar_multiplication.hpp.

◆ add

template<typename ppT , typename groupT , typename variableT , typename variableSelectorT , typename addGadgetT >
addGadgetT libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >::add

Definition at line 191 of file scalar_multiplication.hpp.

◆ add_result

template<typename ppT , typename groupT , typename variableT , typename variableSelectorT , typename addGadgetT >
variableT libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >::add_result

Definition at line 190 of file scalar_multiplication.hpp.

◆ result

template<typename ppT , typename groupT , typename variableT , typename variableSelectorT , typename addGadgetT >
variableOrIdentity libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >::result

Definition at line 202 of file scalar_multiplication.hpp.

◆ selector_A

template<typename ppT , typename groupT , typename variableT , typename variableSelectorT , typename addGadgetT >
variableSelectorT libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >::selector_A

Definition at line 200 of file scalar_multiplication.hpp.

◆ selector_A_not_identity

template<typename ppT , typename groupT , typename variableT , typename variableSelectorT , typename addGadgetT >
variableSelectorT libsnark::add_variable_or_identity< ppT, groupT, variableT, variableSelectorT, addGadgetT >::selector_A_not_identity

Definition at line 196 of file scalar_multiplication.hpp.


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