nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 > Struct Template Reference

#include <element_knowledge_commitment.hpp>

+ Collaboration diagram for nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >:

Public Member Functions

element_kc doubled () const
 
 element_kc ()=default
 
 element_kc (const element_kc &other)=default
 
 element_kc (const typename Type1::value_type &g, const typename Type2::value_type &h)
 
 element_kc (element_kc &&other)=default
 
bool is_special () const
 
bool is_zero () const
 
element_kc mixed_add (const element_kc &other) const
 
bool operator!= (const element_kc &other) const
 
element_kc operator+ (const element_kc &other) const
 
element_kcoperator= (const element_kc &other)=default
 
element_kcoperator= (element_kc &&other) noexcept=default
 
bool operator== (const element_kc &other) const
 
element_kc to_projective ()
 

Static Public Member Functions

static void batch_to_special_all_non_zeros (std::vector< element_kc > &vec)
 
static element_kc one ()
 
static element_kc zero ()
 

Public Attributes

Type1::value_type g
 
Type2::value_type h
 

Detailed Description

template<typename Type1, typename Type2>
struct nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >

A knowledge commitment element is a pair (g,h) where g is in Type1 and h in Type2, and Type1 and Type2 are groups (written additively).

Such pairs form a group by defining:

  • "zero" = (0,0)
  • "one" = (1,1)
  • a * (g,h) + b * (g',h') := ( a * g + b * g', a * h + b * h').

Constructor & Destructor Documentation

◆ element_kc() [1/4]

template<typename Type1 , typename Type2 >
nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::element_kc ( )
default

◆ element_kc() [2/4]

template<typename Type1 , typename Type2 >
nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::element_kc ( const element_kc< Type1, Type2 > &  other)
default

◆ element_kc() [3/4]

template<typename Type1 , typename Type2 >
nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::element_kc ( element_kc< Type1, Type2 > &&  other)
default

◆ element_kc() [4/4]

template<typename Type1 , typename Type2 >
nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::element_kc ( const typename Type1::value_type &  g,
const typename Type2::value_type &  h 
)
inline

Member Function Documentation

◆ batch_to_special_all_non_zeros()

template<typename Type1 , typename Type2 >
static void nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::batch_to_special_all_non_zeros ( std::vector< element_kc< Type1, Type2 > > &  vec)
inlinestatic

◆ doubled()

template<typename Type1 , typename Type2 >
element_kc nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::doubled ( ) const
inline

◆ is_special()

template<typename Type1 , typename Type2 >
bool nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::is_special ( ) const
inline

◆ is_zero()

template<typename Type1 , typename Type2 >
bool nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::is_zero ( ) const
inline

◆ mixed_add()

template<typename Type1 , typename Type2 >
element_kc nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::mixed_add ( const element_kc< Type1, Type2 > &  other) const
inline

◆ one()

template<typename Type1 , typename Type2 >
static element_kc nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::one ( )
inlinestatic

◆ operator!=()

template<typename Type1 , typename Type2 >
bool nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::operator!= ( const element_kc< Type1, Type2 > &  other) const
inline

◆ operator+()

template<typename Type1 , typename Type2 >
element_kc nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::operator+ ( const element_kc< Type1, Type2 > &  other) const
inline

◆ operator=() [1/2]

template<typename Type1 , typename Type2 >
element_kc& nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::operator= ( const element_kc< Type1, Type2 > &  other)
default

◆ operator=() [2/2]

template<typename Type1 , typename Type2 >
element_kc& nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::operator= ( element_kc< Type1, Type2 > &&  other)
defaultnoexcept

◆ operator==()

template<typename Type1 , typename Type2 >
bool nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::operator== ( const element_kc< Type1, Type2 > &  other) const
inline

◆ to_projective()

template<typename Type1 , typename Type2 >
element_kc nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::to_projective ( )
inline

◆ zero()

template<typename Type1 , typename Type2 >
static element_kc nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::zero ( )
inlinestatic

Member Data Documentation

◆ g

template<typename Type1 , typename Type2 >
Type1::value_type nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::g

◆ h

template<typename Type1 , typename Type2 >
Type2::value_type nil::crypto3::zk::snark::detail::element_kc< Type1, Type2 >::h

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