nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType > Struct Template Reference

#include <commitment.hpp>

+ Collaboration diagram for nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >:

Public Types

typedef group_type::curve_type curve_type
 
typedef curve_type::scalar_field_type field_type
 
typedef field_type::value_type field_value_type
 
typedef GroupType group_type
 
typedef group_type::value_type group_value_type
 

Public Member Functions

r1cs_gg_ppzksnark_ipp2_commitment_key< group_typecompress (const r1cs_gg_ppzksnark_ipp2_commitment_key< group_type > &right, const field_value_type &scale) const
 
std::pair< group_value_type, group_value_typefirst () const
 
bool has_correct_len (std::size_t n) const
 
template<typename InputIterator , typename ValueType = typename std::iterator_traits<InputIterator>::value_type, typename std::enable_if< std::is_same< field_value_type, ValueType >::value, bool >::type = true>
r1cs_gg_ppzksnark_ipp2_commitment_key< group_typescale (InputIterator s_first, InputIterator s_last) const
 
std::pair< r1cs_gg_ppzksnark_ipp2_commitment_key< group_type >, r1cs_gg_ppzksnark_ipp2_commitment_key< group_type > > split (std::size_t at) const
 Returns the left and right commitment key part. It makes copy. More...
 

Public Attributes

std::vector< group_value_typea
 Exponent is a. More...
 
std::vector< group_value_typeb
 Exponent is b. More...
 

Detailed Description

template<typename GroupType>
struct nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >

Key is a generic commitment key that is instantiated with g and h as basis, and a and b as powers.

Member Typedef Documentation

◆ curve_type

template<typename GroupType >
typedef group_type::curve_type nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >::curve_type

◆ field_type

template<typename GroupType >
typedef curve_type::scalar_field_type nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >::field_type

◆ field_value_type

template<typename GroupType >
typedef field_type::value_type nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >::field_value_type

◆ group_type

template<typename GroupType >
typedef GroupType nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >::group_type

◆ group_value_type

template<typename GroupType >
typedef group_type::value_type nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >::group_value_type

Member Function Documentation

◆ compress()

template<typename GroupType >
r1cs_gg_ppzksnark_ipp2_commitment_key<group_type> nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >::compress ( const r1cs_gg_ppzksnark_ipp2_commitment_key< group_type > &  right,
const field_value_type scale 
) const
inline

Takes a left and right commitment key and returns a commitment key $left \circ right^{scale} = (left_i*right_i^{scale} ...)$. This is required step during GIPA recursion.

◆ first()

template<typename GroupType >
std::pair<group_value_type, group_value_type> nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >::first ( ) const
inline

Returns the first values in the vector of v1 and v2 (respectively w1 and w2). When commitment key is of size one, it's a proxy to get the final values.

◆ has_correct_len()

template<typename GroupType >
bool nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >::has_correct_len ( std::size_t  n) const
inline

Returns true if commitment keys have the exact required length. It is necessary for the IPP scheme to work that commitment key have the exact same number of arguments as the number of proofs to aggregate.

◆ scale()

template<typename GroupType >
template<typename InputIterator , typename ValueType = typename std::iterator_traits<InputIterator>::value_type, typename std::enable_if< std::is_same< field_value_type, ValueType >::value, bool >::type = true>
r1cs_gg_ppzksnark_ipp2_commitment_key<group_type> nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >::scale ( InputIterator  s_first,
InputIterator  s_last 
) const
inline

$

◆ split()

template<typename GroupType >
std::pair<r1cs_gg_ppzksnark_ipp2_commitment_key<group_type>, r1cs_gg_ppzksnark_ipp2_commitment_key<group_type> > nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >::split ( std::size_t  at) const
inline

Returns the left and right commitment key part. It makes copy.

Member Data Documentation

◆ a

template<typename GroupType >
std::vector<group_value_type> nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >::a

Exponent is a.

◆ b

template<typename GroupType >
std::vector<group_value_type> nil::crypto3::zk::snark::r1cs_gg_ppzksnark_ipp2_commitment_key< GroupType >::b

Exponent is b.


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