| 
    Clearmatics Libsnark
    0.1
    
   C++ library for zkSNARK proofs 
   | 
 
 
 
 
Go to the documentation of this file.
   47 #ifndef USCS_PPZKSNARK_HPP_ 
   48 #define USCS_PPZKSNARK_HPP_ 
   50 #include <libff/algebra/curves/public_params.hpp> 
   64 template<
typename ppT>
 
   68 template<
typename ppT>
 
  116         return libff::G1<ppT>::size_in_bits() * 
G1_size() +
 
  117                libff::G2<ppT>::size_in_bits() * 
G2_size();
 
  122         libff::print_indent();
 
  123         printf(
"* G1 elements in PK: %zu\n", this->
G1_size());
 
  124         libff::print_indent();
 
  125         printf(
"* Non-zero G1 elements in PK: %zu\n", this->
G1_sparse_size());
 
  126         libff::print_indent();
 
  127         printf(
"* G2 elements in PK: %zu\n", this->
G2_size());
 
  128         libff::print_indent();
 
  129         printf(
"* Non-zero G2 elements in PK: %zu\n", this->
G2_sparse_size());
 
  130         libff::print_indent();
 
  131         printf(
"* PK size in bits: %zu\n", this->
size_in_bits());
 
  135     friend std::ostream &operator<<<ppT>(
 
  137     friend std::istream &
operator>>
 
  145 template<
typename ppT>
 
  149 template<
typename ppT>
 
  169         const libff::G2<ppT> &
Z_g2,
 
  183                3 * libff::G2<ppT>::size_in_bits();
 
  188         libff::print_indent();
 
  189         printf(
"* G1 elements in VK: %zu\n", this->
G1_size());
 
  190         libff::print_indent();
 
  191         printf(
"* G2 elements in VK: %zu\n", this->
G2_size());
 
  192         libff::print_indent();
 
  193         printf(
"* VK size in bits: %zu\n", this->
size_in_bits());
 
  197     friend std::ostream &operator<<<ppT>(
 
  199     friend std::istream &
operator>>
 
  203         const size_t input_size);
 
  210 template<
typename ppT>
 
  215 template<
typename ppT>
 
  240     friend std::ostream &operator<<<ppT>(
 
  243     friend std::istream &
operator>><ppT>(
 
  263         : 
pk(std::move(
pk)), 
vk(std::move(
vk))
 
  274 template<
typename ppT>
 
  278 template<
typename ppT>
 
  299         this->V_g1 = libff::G1<ppT>::one();
 
  300         this->alpha_V_g1 = libff::G1<ppT>::one();
 
  301         this->H_g1 = libff::G1<ppT>::one();
 
  302         this->V_g2 = libff::G2<ppT>::one();
 
  305         libff::G1<ppT> &&
V_g1,
 
  307         libff::G1<ppT> &&
H_g1,
 
  308         libff::G2<ppT> &&
V_g2)
 
  320         return G1_size() * libff::G1<ppT>::size_in_bits() +
 
  321                G2_size() * libff::G2<ppT>::size_in_bits();
 
  326         libff::print_indent();
 
  327         printf(
"* G1 elements in proof: %zu\n", this->
G1_size());
 
  328         libff::print_indent();
 
  329         printf(
"* G2 elements in proof: %zu\n", this->
G2_size());
 
  330         libff::print_indent();
 
  331         printf(
"* Proof size in bits: %zu\n", this->
size_in_bits());
 
  337             V_g1.is_well_formed() && 
alpha_V_g1.is_well_formed() &&
 
  338             H_g1.is_well_formed() && 
V_g2.is_well_formed());
 
  342     friend std::ostream &operator<<<ppT>(
 
  344     friend std::istream &
operator>>
 
  358     libff::multi_exp_base_form BaseForm = libff::multi_exp_base_form_normal>
 
  360     const uscs_ppzksnark_constraint_system<ppT> &cs);
 
  373     libff::multi_exp_method Method = libff::multi_exp_method_BDLO12,
 
  374     libff::multi_exp_base_form BaseForm = libff::multi_exp_base_form_normal>
 
  376     const uscs_ppzksnark_proving_key<ppT> &pk,
 
  377     const uscs_ppzksnark_primary_input<ppT> &primary_input,
 
  378     const uscs_ppzksnark_auxiliary_input<ppT> &auxiliary_input);
 
  401 template<
typename ppT>
 
  403     const uscs_ppzksnark_verification_key<ppT> &vk,
 
  404     const uscs_ppzksnark_primary_input<ppT> &primary_input,
 
  405     const uscs_ppzksnark_proof<ppT> &proof);
 
  412 template<
typename ppT>
 
  414     const uscs_ppzksnark_verification_key<ppT> &vk,
 
  415     const uscs_ppzksnark_primary_input<ppT> &primary_input,
 
  416     const uscs_ppzksnark_proof<ppT> &proof);
 
  421 template<
typename ppT>
 
  423     const uscs_ppzksnark_verification_key<ppT> &vk);
 
  430 template<
typename ppT>
 
  432     const uscs_ppzksnark_processed_verification_key<ppT> &pvk,
 
  433     const uscs_ppzksnark_primary_input<ppT> &primary_input,
 
  434     const uscs_ppzksnark_proof<ppT> &proof);
 
  441 template<
typename ppT>
 
  443     const uscs_ppzksnark_processed_verification_key<ppT> &pvk,
 
  444     const uscs_ppzksnark_primary_input<ppT> &primary_input,
 
  445     const uscs_ppzksnark_proof<ppT> &proof);
 
  451 #endif // USCS_PPZKSNARK_HPP_ 
  
bool uscs_ppzksnark_verifier_strong_IC(const uscs_ppzksnark_verification_key< ppT > &vk, const uscs_ppzksnark_primary_input< ppT > &primary_input, const uscs_ppzksnark_proof< ppT > &proof)
 
libff::G1_vector< ppT > H_g1_query
 
static uscs_ppzksnark_verification_key< ppT > dummy_verification_key(const size_t input_size)
 
size_t G1_sparse_size() const
 
bool uscs_ppzksnark_verifier_weak_IC(const uscs_ppzksnark_verification_key< ppT > &vk, const uscs_ppzksnark_primary_input< ppT > &primary_input, const uscs_ppzksnark_proof< ppT > &proof)
 
accumulation_vector< libff::G1< ppT > > encoded_IC_query
 
bool operator==(const uscs_ppzksnark_verification_key< ppT > &other) const
 
uscs_ppzksnark_proving_key< ppT > pk
 
uscs_ppzksnark_constraint_system< ppT > constraint_system
 
std::ostream & operator<<(std::ostream &out, const accumulation_vector< T > &v)
 
libff::G2< ppT > alpha_tilde_g2
 
bool operator==(const uscs_ppzksnark_processed_verification_key &other) const
 
bool uscs_ppzksnark_online_verifier_weak_IC(const uscs_ppzksnark_processed_verification_key< ppT > &pvk, const uscs_ppzksnark_primary_input< ppT > &primary_input, const uscs_ppzksnark_proof< ppT > &proof)
 
libff::G1< ppT > alpha_V_g1
 
uscs_ppzksnark_verification_key(const libff::G2< ppT > &tilde_g2, const libff::G2< ppT > &alpha_tilde_g2, const libff::G2< ppT > &Z_g2, const accumulation_vector< libff::G1< ppT >> &eIC)
 
libff::G2_vector< ppT > V_g2_query
 
libff::G1_vector< ppT > alpha_V_g1_query
 
uscs_ppzksnark_verification_key()=default
 
size_t size_in_bits() const
 
size_t G2_sparse_size() const
 
libff::G2_precomp< ppT > vk_alpha_tilde_g2_precomp
 
uscs_ppzksnark_proving_key< ppT > & operator=(const uscs_ppzksnark_proving_key< ppT > &other)=default
 
size_t size_in_bits() const
 
libff::G2_precomp< ppT > vk_tilde_g2_precomp
 
libff::G1_vector< ppT > V_g1_query
 
uscs_ppzksnark_proof(libff::G1< ppT > &&V_g1, libff::G1< ppT > &&alpha_V_g1, libff::G1< ppT > &&H_g1, libff::G2< ppT > &&V_g2)
 
bool operator==(const uscs_ppzksnark_proof< ppT > &other) const
 
uscs_ppzksnark_proving_key(libff::G1_vector< ppT > &&V_g1_query, libff::G1_vector< ppT > &&alpha_V_g1_query, libff::G1_vector< ppT > &&H_g1_query, libff::G2_vector< ppT > &&V_g2_query, uscs_ppzksnark_constraint_system< ppT > &&constraint_system)
 
size_t size_in_bits() const
 
uscs_ppzksnark_keypair(uscs_ppzksnark_proving_key< ppT > &&pk, uscs_ppzksnark_verification_key< ppT > &&vk)
 
libff::G2< ppT > tilde_g2
 
bool uscs_ppzksnark_online_verifier_strong_IC(const uscs_ppzksnark_processed_verification_key< ppT > &pvk, const uscs_ppzksnark_primary_input< ppT > &primary_input, const uscs_ppzksnark_proof< ppT > &proof)
 
uscs_ppzksnark_processed_verification_key< ppT > uscs_ppzksnark_verifier_process_vk(const uscs_ppzksnark_verification_key< ppT > &vk)
 
libff::G2_precomp< ppT > pp_G2_one_precomp
 
std::istream & operator>>(std::istream &in, accumulation_vector< T > &v)
 
uscs_ppzksnark_proof< ppT > uscs_ppzksnark_prover(const uscs_ppzksnark_proving_key< ppT > &pk, const uscs_ppzksnark_primary_input< ppT > &primary_input, const uscs_ppzksnark_auxiliary_input< ppT > &auxiliary_input)
 
libff::G1_precomp< ppT > pp_G1_one_precomp
 
size_t size_in_bits() const
 
accumulation_vector< libff::G1< ppT > > encoded_IC_query
 
uscs_ppzksnark_verification_key< ppT > vk
 
uscs_ppzksnark_proving_key()
 
libff::G2_precomp< ppT > vk_Z_g2_precomp
 
bool is_well_formed() const
 
libff::GT< ppT > pairing_of_g1_and_g2
 
uscs_ppzksnark_keypair< ppT > uscs_ppzksnark_generator(const uscs_ppzksnark_constraint_system< ppT > &cs)
 
bool operator==(const uscs_ppzksnark_proving_key< ppT > &other) const