Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
knowledge_commitment.hpp
Go to the documentation of this file.
1 
14 #ifndef KNOWLEDGE_COMMITMENT_HPP_
15 #define KNOWLEDGE_COMMITMENT_HPP_
16 
17 #include <libff/algebra/fields/fp.hpp>
19 
20 namespace libsnark
21 {
22 
23 /********************** Knowledge commitment *********************************/
24 
34 template<typename T1, typename T2> struct knowledge_commitment {
35 
36  T1 g;
37  T2 h;
38 
39  knowledge_commitment<T1, T2>(const T1 &g, const T2 &h);
40  knowledge_commitment<T1, T2>() = default;
42  default;
44  default;
46  const knowledge_commitment<T1, T2> &other) = default;
48  knowledge_commitment<T1, T2> &&other) = default;
49 
51  const knowledge_commitment<T1, T2> &other) const;
53  const knowledge_commitment<T1, T2> &other) const;
55 
57  const knowledge_commitment<T1, T2> &other) const;
59 
60  void to_special();
61  bool is_special() const;
62 
63  bool is_zero() const;
64  bool operator==(const knowledge_commitment<T1, T2> &other) const;
65  bool operator!=(const knowledge_commitment<T1, T2> &other) const;
66 
69 
70  void print() const;
71 
72  static size_t size_in_bits();
73 
75  std::vector<knowledge_commitment<T1, T2>> &vec);
76 };
77 
78 template<typename T1, typename T2, mp_size_t m>
80  const libff::bigint<m> &lhs, const knowledge_commitment<T1, T2> &rhs);
81 
82 template<
83  typename T1,
84  typename T2,
85  mp_size_t m,
86  const libff::bigint<m> &modulus_p>
88  const libff::Fp_model<m, modulus_p> &lhs,
89  const knowledge_commitment<T1, T2> &rhs);
90 
91 template<typename T1, typename T2>
92 std::ostream &operator<<(
93  std::ostream &out, const knowledge_commitment<T1, T2> &kc);
94 
95 template<typename T1, typename T2>
96 std::istream &operator>>(std::istream &in, knowledge_commitment<T1, T2> &kc);
97 
98 /******************** Knowledge commitment vector ****************************/
99 
103 template<typename T1, typename T2>
105 
106 } // namespace libsnark
107 
109 
110 #endif // KNOWLEDGE_COMMITMENT_HPP_
libsnark::knowledge_commitment::g
T1 g
Definition: knowledge_commitment.hpp:36
libsnark::knowledge_commitment::mixed_add
knowledge_commitment< T1, T2 > mixed_add(const knowledge_commitment< T1, T2 > &other) const
libsnark
Definition: accumulation_vector.hpp:18
libsnark::operator<<
std::ostream & operator<<(std::ostream &out, const accumulation_vector< T > &v)
libsnark::knowledge_commitment::print
void print() const
libsnark::knowledge_commitment::add
knowledge_commitment< T1, T2 > add(const knowledge_commitment< T1, T2 > &other) const
libsnark::knowledge_commitment::size_in_bits
static size_t size_in_bits()
libsnark::knowledge_commitment
Definition: knowledge_commitment.hpp:34
libsnark::knowledge_commitment::is_zero
bool is_zero() const
libsnark::knowledge_commitment::is_special
bool is_special() const
sparse_vector.hpp
libsnark::knowledge_commitment::operator!=
bool operator!=(const knowledge_commitment< T1, T2 > &other) const
libsnark::knowledge_commitment::batch_to_special_all_non_zeros
static void batch_to_special_all_non_zeros(std::vector< knowledge_commitment< T1, T2 >> &vec)
libsnark::operator*
knowledge_commitment< T1, T2 > operator*(const libff::bigint< m > &lhs, const knowledge_commitment< T1, T2 > &rhs)
libsnark::knowledge_commitment::operator==
bool operator==(const knowledge_commitment< T1, T2 > &other) const
libsnark::knowledge_commitment::operator=
knowledge_commitment< T1, T2 > & operator=(const knowledge_commitment< T1, T2 > &other)=default
knowledge_commitment.tcc
libsnark::operator>>
std::istream & operator>>(std::istream &in, accumulation_vector< T > &v)
libsnark::knowledge_commitment::h
T2 h
Definition: knowledge_commitment.hpp:37
libsnark::knowledge_commitment::operator-
knowledge_commitment< T1, T2 > operator-() const
libsnark::knowledge_commitment::operator+
knowledge_commitment< T1, T2 > operator+(const knowledge_commitment< T1, T2 > &other) const
libsnark::knowledge_commitment::to_special
void to_special()
libsnark::sparse_vector
Definition: sparse_vector.hpp:21
libsnark::knowledge_commitment::zero
static knowledge_commitment< T1, T2 > zero()
libsnark::knowledge_commitment::one
static knowledge_commitment< T1, T2 > one()
libsnark::knowledge_commitment::dbl
knowledge_commitment< T1, T2 > dbl() const