Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
Go to the documentation of this file.
48 #ifndef R1CS_SE_PPZKSNARK_HPP_
49 #define R1CS_SE_PPZKSNARK_HPP_
51 #include <libff/algebra/curves/public_params.hpp>
65 template<
typename ppT>
69 template<
typename ppT>
117 libff::G1_vector<ppT> &&
A_query,
118 libff::G2_vector<ppT> &&
B_query,
148 return G1_size() * libff::G1<ppT>::size_in_bits() +
149 G2_size() * libff::G2<ppT>::size_in_bits();
154 libff::print_indent();
155 printf(
"* G1 elements in PK: %zu\n", this->
G1_size());
156 libff::print_indent();
157 printf(
"* G2 elements in PK: %zu\n", this->
G2_size());
158 libff::print_indent();
159 printf(
"* PK size in bits: %zu\n", this->
size_in_bits());
163 friend std::ostream &operator<<<ppT>(
165 friend std::istream &
operator>>
173 template<
typename ppT>
177 template<
typename ppT>
208 const libff::G2<ppT> &
H,
210 const libff::G2<ppT> &
H_beta,
213 libff::G1_vector<ppT> &&
query)
228 G1_size() * libff::G1<ppT>::size_in_bits() +
229 G2_size() * libff::G2<ppT>::size_in_bits());
234 libff::print_indent();
235 printf(
"* G1 elements in VK: %zu\n", this->
G1_size());
236 libff::print_indent();
237 printf(
"* G2 elements in VK: %zu\n", this->
G2_size());
238 libff::print_indent();
239 printf(
"* VK size in bits: %zu\n", this->
size_in_bits());
243 friend std::ostream &operator<<<ppT>(
245 friend std::istream &
operator>>
249 const size_t input_size);
256 template<
typename ppT>
261 template<
typename ppT>
286 friend std::ostream &operator<<<ppT>(
289 friend std::istream &
operator>><ppT>(
312 :
pk(std::move(
pk)),
vk(std::move(
vk))
323 template<
typename ppT>
327 template<
typename ppT>
346 libff::G1<ppT> &&
A, libff::G2<ppT> &&
B, libff::G1<ppT> &&
C)
347 :
A(std::move(
A)),
B(std::move(
B)),
C(std::move(
C)){};
355 return G1_size() * libff::G1<ppT>::size_in_bits() +
356 G2_size() * libff::G2<ppT>::size_in_bits();
361 libff::print_indent();
362 printf(
"* G1 elements in proof: %zu\n", this->
G1_size());
363 libff::print_indent();
364 printf(
"* G2 elements in proof: %zu\n", this->
G2_size());
365 libff::print_indent();
366 printf(
"* Proof size in bits: %zu\n", this->
size_in_bits());
371 return (A.is_well_formed() &&
B.is_well_formed() &&
C.is_well_formed());
375 friend std::ostream &operator<<<ppT>(
377 friend std::istream &
operator>>
391 libff::multi_exp_base_form BaseForm = libff::multi_exp_base_form_normal>
393 const r1cs_se_ppzksnark_constraint_system<ppT> &cs);
406 libff::multi_exp_method Method = libff::multi_exp_method_BDLO12,
407 libff::multi_exp_base_form BaseForm = libff::multi_exp_base_form_normal>
409 const r1cs_se_ppzksnark_proving_key<ppT> &pk,
410 const r1cs_se_ppzksnark_primary_input<ppT> &primary_input,
411 const r1cs_se_ppzksnark_auxiliary_input<ppT> &auxiliary_input);
434 template<
typename ppT>
436 const r1cs_se_ppzksnark_verification_key<ppT> &vk,
437 const r1cs_se_ppzksnark_primary_input<ppT> &primary_input,
438 const r1cs_se_ppzksnark_proof<ppT> &proof);
445 template<
typename ppT>
447 const r1cs_se_ppzksnark_verification_key<ppT> &vk,
448 const r1cs_se_ppzksnark_primary_input<ppT> &primary_input,
449 const r1cs_se_ppzksnark_proof<ppT> &proof);
454 template<
typename ppT>
455 r1cs_se_ppzksnark_processed_verification_key<ppT>
457 const r1cs_se_ppzksnark_verification_key<ppT> &vk);
464 template<
typename ppT>
466 const r1cs_se_ppzksnark_processed_verification_key<ppT> &pvk,
467 const r1cs_se_ppzksnark_primary_input<ppT> &input,
468 const r1cs_se_ppzksnark_proof<ppT> &proof);
475 template<
typename ppT>
477 const r1cs_se_ppzksnark_processed_verification_key<ppT> &pvk,
478 const r1cs_se_ppzksnark_primary_input<ppT> &primary_input,
479 const r1cs_se_ppzksnark_proof<ppT> &proof);
485 #endif // R1CS_SE_PPZKSNARK_HPP_
libff::G2_precomp< ppT > H_pc
r1cs_se_ppzksnark_verification_key()=default
libff::G1_vector< ppT > G_gamma2_Z_t
r1cs_se_ppzksnark_constraint_system< ppT > constraint_system
r1cs_se_ppzksnark_proving_key< ppT > pk
libff::G1_vector< ppT > query
std::ostream & operator<<(std::ostream &out, const accumulation_vector< T > &v)
static r1cs_se_ppzksnark_verification_key< ppT > dummy_verification_key(const size_t input_size)
libff::G1< ppT > G_gamma_Z
r1cs_se_ppzksnark_proving_key< ppT > & operator=(const r1cs_se_ppzksnark_proving_key< ppT > &other)=default
libff::G1_vector< ppT > A_query
r1cs_se_ppzksnark_proving_key(libff::G1_vector< ppT > &&A_query, libff::G2_vector< ppT > &&B_query, libff::G1_vector< ppT > &&C_query_1, libff::G1_vector< ppT > &&C_query_2, libff::G1< ppT > &G_gamma_Z, libff::G2< ppT > &H_gamma_Z, libff::G1< ppT > &G_ab_gamma_Z, libff::G1< ppT > &G_gamma2_Z2, libff::G1_vector< ppT > &&G_gamma2_Z_t, r1cs_se_ppzksnark_constraint_system< ppT > &&constraint_system)
r1cs_se_ppzksnark_verification_key(const libff::G2< ppT > &H, const libff::G1< ppT > &G_alpha, const libff::G2< ppT > &H_beta, const libff::G1< ppT > &G_gamma, const libff::G2< ppT > &H_gamma, libff::G1_vector< ppT > &&query)
r1cs_se_ppzksnark_proof(libff::G1< ppT > &&A, libff::G2< ppT > &&B, libff::G1< ppT > &&C)
r1cs_se_ppzksnark_processed_verification_key< ppT > r1cs_se_ppzksnark_verifier_process_vk(const r1cs_se_ppzksnark_verification_key< ppT > &vk)
bool operator==(const r1cs_se_ppzksnark_verification_key< ppT > &other) const
libff::G1< ppT > G_ab_gamma_Z
libff::G2_vector< ppT > B_query
libff::G1_vector< ppT > query
r1cs_se_ppzksnark_proof()
bool r1cs_se_ppzksnark_verifier_weak_IC(const r1cs_se_ppzksnark_verification_key< ppT > &vk, const r1cs_se_ppzksnark_primary_input< ppT > &primary_input, const r1cs_se_ppzksnark_proof< ppT > &proof)
bool r1cs_se_ppzksnark_verifier_strong_IC(const r1cs_se_ppzksnark_verification_key< ppT > &vk, const r1cs_se_ppzksnark_primary_input< ppT > &primary_input, const r1cs_se_ppzksnark_proof< ppT > &proof)
bool is_well_formed() const
libff::G1_vector< ppT > C_query_1
r1cs_se_ppzksnark_keypair()=default
libff::G2< ppT > H_gamma_Z
r1cs_se_ppzksnark_proof< ppT > r1cs_se_ppzksnark_prover(const r1cs_se_ppzksnark_proving_key< ppT > &pk, const r1cs_se_ppzksnark_primary_input< ppT > &primary_input, const r1cs_se_ppzksnark_auxiliary_input< ppT > &auxiliary_input)
std::istream & operator>>(std::istream &in, accumulation_vector< T > &v)
libff::G1< ppT > G_gamma2_Z2
bool operator==(const r1cs_se_ppzksnark_processed_verification_key &other) const
r1cs_se_ppzksnark_verification_key< ppT > vk
libff::G1_precomp< ppT > G_gamma_pc
r1cs_se_ppzksnark_keypair(r1cs_se_ppzksnark_proving_key< ppT > &&pk, r1cs_se_ppzksnark_verification_key< ppT > &&vk)
r1cs_se_ppzksnark_proving_key()
bool operator==(const r1cs_se_ppzksnark_proving_key< ppT > &other) const
libff::G2_precomp< ppT > H_gamma_pc
bool operator==(const r1cs_se_ppzksnark_proof< ppT > &other) const
size_t size_in_bits() const
size_t size_in_bits() const
size_t size_in_bits() const
bool r1cs_se_ppzksnark_online_verifier_weak_IC(const r1cs_se_ppzksnark_processed_verification_key< ppT > &pvk, const r1cs_se_ppzksnark_primary_input< ppT > &input, const r1cs_se_ppzksnark_proof< ppT > &proof)
bool r1cs_se_ppzksnark_online_verifier_strong_IC(const r1cs_se_ppzksnark_processed_verification_key< ppT > &pvk, const r1cs_se_ppzksnark_primary_input< ppT > &primary_input, const r1cs_se_ppzksnark_proof< ppT > &proof)
libff::Fqk< ppT > G_alpha_H_beta_ml
r1cs_se_ppzksnark_keypair< ppT > r1cs_se_ppzksnark_generator(const r1cs_se_ppzksnark_constraint_system< ppT > &cs)
libff::G1_vector< ppT > C_query_2