Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
bdfg21.hpp
Go to the documentation of this file.
1 
9 #ifndef __LIBSNARK_POLYNOMIAL_COMMITMENTS_BDFG21_HPP__
10 #define __LIBSNARK_POLYNOMIAL_COMMITMENTS_BDFG21_HPP__
11 
13 
19 
20 namespace libsnark
21 {
22 
29 template<typename ppT> class bdfg21
30 {
31 public:
32  using Field = libff::Fr<ppT>;
33 
36  using srs = typename kzg10<ppT>::srs;
37 
39 
66 
68  using evaluations = std::vector<std::vector<Field>>;
69 
70  using evaluation_witness_phase_1 = libff::G1<ppT>;
71 
76  {
77  public:
78  libff::G1<ppT> public_witness_phase_1;
80 
82  const libff::G1<ppT> &witness_phase_1,
83  polynomial<Field> &&f_over_Z_T_polynomial);
84  };
85 
89  {
90  public:
91  libff::G1<ppT> W;
92  libff::G1<ppT> W_prime;
93 
95  const libff::G1<ppT> &W, const libff::G1<ppT> &W_prime);
96  };
97 
99  const std::vector<std::vector<polynomial<Field>>> &f_sets,
100  const std::vector<Field> z_s);
101 
105  const std::vector<std::vector<polynomial<Field>>> &f_sets,
106  const std::vector<Field> &T,
107  const evaluations &evaluations,
108  const srs &srs,
109  const Field &gamma);
110 
114  const std::vector<std::vector<polynomial<Field>>> &f_sets,
115  const std::vector<Field> &T,
116  const evaluations &evaluations,
117  const srs &srs,
118  const Field &gamma,
119  const phase_1_output &witness_phase_1,
120  const Field &z);
121 
126  static bool verify_evaluations(
127  const std::vector<Field> &T,
128  const evaluations &evaluations,
129  const srs &srs,
130  const Field &gamma,
131  const Field &z,
132  const evaluation_witness &witness,
133  const std::vector<std::vector<commitment>> &cm_sets);
134 };
135 
136 } // namespace libsnark
137 
139 
140 #endif // __LIBSNARK_POLYNOMIAL_COMMITMENTS_BDFG21_HPP__
libsnark::bdfg21::evaluation_witness_phase_1
libff::G1< ppT > evaluation_witness_phase_1
Definition: bdfg21.hpp:70
libsnark::bdfg21::evaluation_witness::W
libff::G1< ppT > W
Definition: bdfg21.hpp:91
libsnark
Definition: accumulation_vector.hpp:18
libsnark::bdfg21::phase_1_output::phase_1_output
phase_1_output(const libff::G1< ppT > &witness_phase_1, polynomial< Field > &&f_over_Z_T_polynomial)
libsnark::bdfg21::create_evaluation_witness
static evaluation_witness create_evaluation_witness(const std::vector< std::vector< polynomial< Field >>> &f_sets, const std::vector< Field > &T, const evaluations &evaluations, const srs &srs, const Field &gamma, const phase_1_output &witness_phase_1, const Field &z)
libsnark::bdfg21::evaluations
std::vector< std::vector< Field > > evaluations
The i-th entry is evaluations of polynomials in f_sets[i] at z_i.
Definition: bdfg21.hpp:68
libsnark::bdfg21::srs
typename kzg10< ppT >::srs srs
Definition: bdfg21.hpp:36
bdfg21.tcc
libsnark::bdfg21::verify_evaluations
static bool verify_evaluations(const std::vector< Field > &T, const evaluations &evaluations, const srs &srs, const Field &gamma, const Field &z, const evaluation_witness &witness, const std::vector< std::vector< commitment >> &cm_sets)
libsnark::bdfg21::evaluation_witness::evaluation_witness
evaluation_witness(const libff::G1< ppT > &W, const libff::G1< ppT > &W_prime)
kzg10.hpp
libsnark::polynomial
std::vector< FieldT > polynomial
Definition: polynomial.hpp:17
libsnark::bdfg21
Definition: bdfg21.hpp:29
libsnark::bdfg21::evaluation_witness
Definition: bdfg21.hpp:88
libsnark::bdfg21::create_evaluation_witness_phase_1
static phase_1_output create_evaluation_witness_phase_1(const std::vector< std::vector< polynomial< Field >>> &f_sets, const std::vector< Field > &T, const evaluations &evaluations, const srs &srs, const Field &gamma)
libsnark::bdfg21::phase_1_output
Definition: bdfg21.hpp:75
libsnark::bdfg21::commitment
typename kzg10< ppT >::commitment commitment
Definition: bdfg21.hpp:38
libsnark::kzg10::commitment
libff::G1< ppT > commitment
Definition: kzg10.hpp:51
libsnark::bdfg21::phase_1_output::private_f_over_Z_T_polynomial
polynomial< Field > private_f_over_Z_T_polynomial
Definition: bdfg21.hpp:79
libsnark::bdfg21::evaluate_polynomials
static evaluations evaluate_polynomials(const std::vector< std::vector< polynomial< Field >>> &f_sets, const std::vector< Field > z_s)
libsnark::kzg10::srs
Definition: kzg10.hpp:37
libsnark::bdfg21::phase_1_output::public_witness_phase_1
libff::G1< ppT > public_witness_phase_1
Definition: bdfg21.hpp:78
libsnark::bdfg21::Field
libff::Fr< ppT > Field
Definition: bdfg21.hpp:32
libsnark::bdfg21::evaluation_witness::W_prime
libff::G1< ppT > W_prime
Definition: bdfg21.hpp:92