Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Public Types | Public Member Functions | Public Attributes | Static Protected Member Functions | List of all members
libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT > Class Template Reference

#include <scalar_multiplication.hpp>

Inheritance diagram for libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >:
Inheritance graph
[legend]
Collaboration diagram for libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >:
Collaboration graph
[legend]

Public Types

using Field = libff::Fr< ppT >
 
using nFr = libff::Fr< other_curve< ppT > >
 
using groupVarOrIdentity = variable_or_identity< ppT, groupT, groupVarT >
 
using selectVarOrVarIdentityGadget = variable_and_variable_or_identity_selector< ppT, groupT, groupVarT, selectorGadgetT >
 
using addVarAndVarOrIdentityGadget = add_variable_and_variable_or_identity< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT >
 
using dblVarOrIdentityGadget = dbl_variable_or_identity< ppT, groupT, groupVarT, dblGadgetT >
 

Public Member Functions

 point_mul_by_scalar_gadget (protoboard< Field > &pb, const pb_linear_combination< Field > &scalar, const groupVarT &P, const groupVarOrIdentity &result, const std::string &annotation_prefix)
 
void generate_r1cs_constraints ()
 
void generate_r1cs_witness ()
 
const groupVarOrIdentityresult () const
 
- Public Member Functions inherited from libsnark::gadget< groupT::base_field >
 gadget (protoboard< groupT::base_field > &pb, const std::string &annotation_prefix)
 

Public Attributes

packing_gadget< Fieldscalar_unpacked
 
std::vector< dblVarOrIdentityGadgetdbl_gadgets
 
std::vector< addVarAndVarOrIdentityGadgetadd_gadgets
 
std::vector< selectVarOrVarIdentityGadgetselector_gadgets
 
std::shared_ptr< selectVarOrVarIdentityGadgetfinal_add_input_left
 
std::shared_ptr< selectorGadgetT > final_add_input_right
 

Static Protected Member Functions

static pb_variable_array< Fieldcreate_variable_array_for_bits (protoboard< Field > &pb, const std::string &annotation_prefix)
 

Additional Inherited Members

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

Detailed Description

template<typename ppT, typename groupT, typename groupVarT, typename selectorGadgetT, typename addGadgetT, typename dblGadgetT>
class libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >

Generic gadget to perform scalar multiplication of group variables by variables. Used by the individual group element implementations.

Definition at line 342 of file scalar_multiplication.hpp.

Member Typedef Documentation

◆ addVarAndVarOrIdentityGadget

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
using libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::addVarAndVarOrIdentityGadget = add_variable_and_variable_or_identity< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT>

Definition at line 359 of file scalar_multiplication.hpp.

◆ dblVarOrIdentityGadget

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
using libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::dblVarOrIdentityGadget = dbl_variable_or_identity<ppT, groupT, groupVarT, dblGadgetT>

Definition at line 361 of file scalar_multiplication.hpp.

◆ Field

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
using libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::Field = libff::Fr<ppT>

Definition at line 345 of file scalar_multiplication.hpp.

◆ groupVarOrIdentity

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
using libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::groupVarOrIdentity = variable_or_identity<ppT, groupT, groupVarT>

Definition at line 347 of file scalar_multiplication.hpp.

◆ nFr

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
using libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::nFr = libff::Fr<other_curve<ppT> >

Definition at line 346 of file scalar_multiplication.hpp.

◆ selectVarOrVarIdentityGadget

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
using libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::selectVarOrVarIdentityGadget = variable_and_variable_or_identity_selector< ppT, groupT, groupVarT, selectorGadgetT>

Definition at line 353 of file scalar_multiplication.hpp.

Constructor & Destructor Documentation

◆ point_mul_by_scalar_gadget()

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::point_mul_by_scalar_gadget ( protoboard< Field > &  pb,
const pb_linear_combination< Field > &  scalar,
const groupVarT &  P,
const groupVarOrIdentity result,
const std::string &  annotation_prefix 
)

Member Function Documentation

◆ create_variable_array_for_bits()

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
static pb_variable_array<Field> libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::create_variable_array_for_bits ( protoboard< Field > &  pb,
const std::string &  annotation_prefix 
)
staticprotected

◆ generate_r1cs_constraints()

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
void libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::generate_r1cs_constraints ( )

◆ generate_r1cs_witness()

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
void libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::generate_r1cs_witness ( )

◆ result()

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
const groupVarOrIdentity& libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::result ( ) const

Member Data Documentation

◆ add_gadgets

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
std::vector<addVarAndVarOrIdentityGadget> libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::add_gadgets

Definition at line 365 of file scalar_multiplication.hpp.

◆ dbl_gadgets

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
std::vector<dblVarOrIdentityGadget> libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::dbl_gadgets

Definition at line 364 of file scalar_multiplication.hpp.

◆ final_add_input_left

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
std::shared_ptr<selectVarOrVarIdentityGadget> libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::final_add_input_left

Definition at line 385 of file scalar_multiplication.hpp.

◆ final_add_input_right

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
std::shared_ptr<selectorGadgetT> libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::final_add_input_right

Definition at line 386 of file scalar_multiplication.hpp.

◆ scalar_unpacked

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
packing_gadget<Field> libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::scalar_unpacked

Definition at line 363 of file scalar_multiplication.hpp.

◆ selector_gadgets

template<typename ppT , typename groupT , typename groupVarT , typename selectorGadgetT , typename addGadgetT , typename dblGadgetT >
std::vector<selectVarOrVarIdentityGadget> libsnark::point_mul_by_scalar_gadget< ppT, groupT, groupVarT, selectorGadgetT, addGadgetT, dblGadgetT >::selector_gadgets

Definition at line 366 of file scalar_multiplication.hpp.


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