| 
    Clearmatics Libsnark
    0.1
    
   C++ library for zkSNARK proofs 
   | 
 
 
 
 
Go to the documentation of this file.
   46 #ifndef R1CS_GG_PPZKSNARK_HPP_ 
   47 #define R1CS_GG_PPZKSNARK_HPP_ 
   49 #include <libff/algebra/curves/public_params.hpp> 
   63 template<
typename ppT>
 
   67 template<
typename ppT>
 
  104         libff::G1_vector<ppT> &&
A_query,
 
  106         libff::G1_vector<ppT> &&
H_query,
 
  107         libff::G1_vector<ppT> &&
L_query,
 
  131         return 1 + 1 + 
B_query.domain_size();
 
  147             1 * libff::G1<ppT>::size_in_bits() +
 
  148             1 * libff::G2<ppT>::size_in_bits());
 
  153         libff::print_indent();
 
  154         printf(
"* G1 elements in PK: %zu\n", this->
G1_size());
 
  155         libff::print_indent();
 
  156         printf(
"* Non-zero G1 elements in PK: %zu\n", this->
G1_sparse_size());
 
  157         libff::print_indent();
 
  158         printf(
"* G2 elements in PK: %zu\n", this->
G2_size());
 
  159         libff::print_indent();
 
  160         printf(
"* Non-zero G2 elements in PK: %zu\n", this->
G2_sparse_size());
 
  161         libff::print_indent();
 
  162         printf(
"* PK size in bits: %zu\n", this->
size_in_bits());
 
  166     friend std::ostream &operator<<<ppT>(
 
  168     friend std::istream &
operator>>
 
  176 template<
typename ppT>
 
  180 template<
typename ppT>
 
  216             libff::G1<ppT>::size_in_bits());
 
  221         libff::print_indent();
 
  222         printf(
"* G1 elements in VK: %zu\n", this->
G1_size());
 
  223         libff::print_indent();
 
  224         printf(
"* G2 elements in VK: %zu\n", this->
G2_size());
 
  225         libff::print_indent();
 
  226         printf(
"* VK size in bits: %zu\n", this->
size_in_bits());
 
  230     friend std::ostream &operator<<<ppT>(
 
  232     friend std::istream &
operator>>
 
  236         const size_t input_size);
 
  243 template<
typename ppT>
 
  248 template<
typename ppT>
 
  271     friend std::ostream &operator<<<ppT>(
 
  274     friend std::istream &
operator>><ppT>(
 
  297         : 
pk(std::move(
pk)), 
vk(std::move(
vk))
 
  308 template<
typename ppT>
 
  312 template<
typename ppT>
 
  332         this->g_A = libff::G1<ppT>::one();
 
  333         this->g_B = libff::G2<ppT>::one();
 
  334         this->g_C = libff::G1<ppT>::one();
 
  337         libff::G1<ppT> &&
g_A, libff::G2<ppT> &&
g_B, libff::G1<ppT> &&
g_C)
 
  346         return G1_size() * libff::G1<ppT>::size_in_bits() +
 
  347                G2_size() * libff::G2<ppT>::size_in_bits();
 
  352         libff::print_indent();
 
  353         printf(
"* G1 elements in proof: %zu\n", this->
G1_size());
 
  354         libff::print_indent();
 
  355         printf(
"* G2 elements in proof: %zu\n", this->
G2_size());
 
  356         libff::print_indent();
 
  357         printf(
"* Proof size in bits: %zu\n", this->
size_in_bits());
 
  363             g_A.is_well_formed() && 
g_B.is_well_formed() &&
 
  364             g_C.is_well_formed());
 
  368     friend std::ostream &operator<<<ppT>(
 
  370     friend std::istream &
operator>>
 
  385     libff::multi_exp_base_form BaseForm = libff::multi_exp_base_form_special>
 
  387     const r1cs_gg_ppzksnark_constraint_system<ppT> &cs,
 
  388     const libff::Fr<ppT> &t,
 
  389     const libff::Fr<ppT> &alpha,
 
  390     const libff::Fr<ppT> &beta,
 
  391     const libff::Fr<ppT> &delta,
 
  392     const libff::G1<ppT> &g1_generator,
 
  393     const libff::G2<ppT> &g2_generator,
 
  394     bool force_pow_2_domain = 
false);
 
  404     libff::multi_exp_base_form BaseForm = libff::multi_exp_base_form_special>
 
  406     const r1cs_gg_ppzksnark_constraint_system<ppT> &cs,
 
  407     bool force_pow_2_domain = 
false);
 
  420     libff::multi_exp_method Method = libff::multi_exp_method_BDLO12_signed,
 
  421     libff::multi_exp_base_form BaseForm = libff::multi_exp_base_form_special>
 
  423     const r1cs_gg_ppzksnark_proving_key<ppT> &pk,
 
  424     const r1cs_gg_ppzksnark_primary_input<ppT> &primary_input,
 
  425     const r1cs_gg_ppzksnark_auxiliary_input<ppT> &auxiliary_input,
 
  426     bool force_pow_2_domain = 
false);
 
  449 template<
typename ppT>
 
  451     const r1cs_gg_ppzksnark_verification_key<ppT> &vk,
 
  452     const r1cs_gg_ppzksnark_primary_input<ppT> &primary_input,
 
  453     const r1cs_gg_ppzksnark_proof<ppT> &proof);
 
  460 template<
typename ppT>
 
  462     const r1cs_gg_ppzksnark_verification_key<ppT> &vk,
 
  463     const r1cs_gg_ppzksnark_primary_input<ppT> &primary_input,
 
  464     const r1cs_gg_ppzksnark_proof<ppT> &proof);
 
  469 template<
typename ppT>
 
  470 r1cs_gg_ppzksnark_processed_verification_key<ppT>
 
  472     const r1cs_gg_ppzksnark_verification_key<ppT> &vk);
 
  479 template<
typename ppT>
 
  481     const r1cs_gg_ppzksnark_processed_verification_key<ppT> &pvk,
 
  482     const r1cs_gg_ppzksnark_primary_input<ppT> &input,
 
  483     const r1cs_gg_ppzksnark_proof<ppT> &proof);
 
  490 template<
typename ppT>
 
  492     const r1cs_gg_ppzksnark_processed_verification_key<ppT> &pvk,
 
  493     const r1cs_gg_ppzksnark_primary_input<ppT> &primary_input,
 
  494     const r1cs_gg_ppzksnark_proof<ppT> &proof);
 
  507 template<
typename ppT>
 
  509     const r1cs_gg_ppzksnark_verification_key<ppT> &vk,
 
  510     const r1cs_gg_ppzksnark_primary_input<ppT> &primary_input,
 
  511     const r1cs_gg_ppzksnark_proof<ppT> &proof);
 
  517 #endif // R1CS_GG_PPZKSNARK_HPP_ 
  
libff::G2< ppT > delta_g2
 
libff::G2_precomp< ppT > vk_generator_g2_precomp
 
r1cs_gg_ppzksnark_processed_verification_key< ppT > r1cs_gg_ppzksnark_verifier_process_vk(const r1cs_gg_ppzksnark_verification_key< ppT > &vk)
 
r1cs_gg_ppzksnark_keypair()=default
 
std::ostream & operator<<(std::ostream &out, const accumulation_vector< T > &v)
 
bool operator==(const r1cs_gg_ppzksnark_processed_verification_key &other) const
 
size_t G1_sparse_size() const
 
libff::G1_vector< ppT > L_query
 
libff::G2_precomp< ppT > vk_beta_g2_precomp
 
r1cs_gg_ppzksnark_keypair< ppT > r1cs_gg_ppzksnark_generator(const r1cs_gg_ppzksnark_constraint_system< ppT > &cs, bool force_pow_2_domain=false)
 
r1cs_gg_ppzksnark_proving_key< ppT > & operator=(const r1cs_gg_ppzksnark_proving_key< ppT > &other)=default
 
bool r1cs_gg_ppzksnark_verifier_weak_IC(const r1cs_gg_ppzksnark_verification_key< ppT > &vk, const r1cs_gg_ppzksnark_primary_input< ppT > &primary_input, const r1cs_gg_ppzksnark_proof< ppT > &proof)
 
r1cs_gg_ppzksnark_proof(libff::G1< ppT > &&g_A, libff::G2< ppT > &&g_B, libff::G1< ppT > &&g_C)
 
bool is_well_formed() const
 
r1cs_gg_ppzksnark_keypair(r1cs_gg_ppzksnark_proving_key< ppT > &&pk, r1cs_gg_ppzksnark_verification_key< ppT > &&vk)
 
r1cs_gg_ppzksnark_verification_key(const libff::G1< ppT > &alpha_g1, const libff::G2< ppT > &beta_g2, const libff::G2< ppT > &delta_g2, const accumulation_vector< libff::G1< ppT >> &ABC_g1)
 
accumulation_vector< libff::G1< ppT > > ABC_g1
 
size_t size_in_bits() const
 
size_t size_in_bits() const
 
r1cs_gg_ppzksnark_verification_key()=default
 
libff::G1< ppT > delta_g1
 
accumulation_vector< libff::G1< ppT > > ABC_g1
 
size_t size_in_bits() const
 
r1cs_gg_ppzksnark_proving_key< ppT > pk
 
bool operator==(const r1cs_gg_ppzksnark_proof< ppT > &other) const
 
bool r1cs_gg_ppzksnark_verifier_strong_IC(const r1cs_gg_ppzksnark_verification_key< ppT > &vk, const r1cs_gg_ppzksnark_primary_input< ppT > &primary_input, const r1cs_gg_ppzksnark_proof< ppT > &proof)
 
bool r1cs_gg_ppzksnark_online_verifier_strong_IC(const r1cs_gg_ppzksnark_processed_verification_key< ppT > &pvk, const r1cs_gg_ppzksnark_primary_input< ppT > &primary_input, const r1cs_gg_ppzksnark_proof< ppT > &proof)
 
bool r1cs_gg_ppzksnark_affine_verifier_weak_IC(const r1cs_gg_ppzksnark_verification_key< ppT > &vk, const r1cs_gg_ppzksnark_primary_input< ppT > &primary_input, const r1cs_gg_ppzksnark_proof< ppT > &proof)
 
r1cs_gg_ppzksnark_constraint_system< ppT > constraint_system
 
std::istream & operator>>(std::istream &in, accumulation_vector< T > &v)
 
r1cs_gg_ppzksnark_proving_key()
 
bool operator==(const r1cs_gg_ppzksnark_verification_key< ppT > &other) const
 
bool operator==(const r1cs_gg_ppzksnark_proving_key< ppT > &other) const
 
libff::G1< ppT > alpha_g1
 
r1cs_gg_ppzksnark_proof< ppT > r1cs_gg_ppzksnark_prover(const r1cs_gg_ppzksnark_proving_key< ppT > &pk, const r1cs_gg_ppzksnark_primary_input< ppT > &primary_input, const r1cs_gg_ppzksnark_auxiliary_input< ppT > &auxiliary_input, bool force_pow_2_domain=false)
 
r1cs_gg_ppzksnark_verification_key< ppT > vk
 
static r1cs_gg_ppzksnark_verification_key< ppT > dummy_verification_key(const size_t input_size)
 
r1cs_gg_ppzksnark_proof()
 
libff::G1< ppT > alpha_g1
 
knowledge_commitment_vector< libff::G2< ppT >, libff::G1< ppT > > B_query
 
libff::G2_precomp< ppT > vk_delta_g2_precomp
 
libff::G2< ppT > delta_g2
 
size_t size_in_bits() const
 
libff::G1_vector< ppT > H_query
 
libff::G1_vector< ppT > A_query
 
bool r1cs_gg_ppzksnark_online_verifier_weak_IC(const r1cs_gg_ppzksnark_processed_verification_key< ppT > &pvk, const r1cs_gg_ppzksnark_primary_input< ppT > &input, const r1cs_gg_ppzksnark_proof< ppT > &proof)
 
r1cs_gg_ppzksnark_keypair< ppT > r1cs_gg_ppzksnark_generator_from_secrets(const r1cs_gg_ppzksnark_constraint_system< ppT > &cs, const libff::Fr< ppT > &t, const libff::Fr< ppT > &alpha, const libff::Fr< ppT > &beta, const libff::Fr< ppT > &delta, const libff::G1< ppT > &g1_generator, const libff::G2< ppT > &g2_generator, bool force_pow_2_domain=false)
 
libff::G1_precomp< ppT > vk_alpha_g1_precomp
 
size_t G2_sparse_size() const
 
r1cs_gg_ppzksnark_proving_key(libff::G1< ppT > &&alpha_g1, libff::G1< ppT > &&beta_g1, libff::G2< ppT > &&beta_g2, libff::G1< ppT > &&delta_g1, libff::G2< ppT > &&delta_g2, libff::G1_vector< ppT > &&A_query, knowledge_commitment_vector< libff::G2< ppT >, libff::G1< ppT >> &&B_query, libff::G1_vector< ppT > &&H_query, libff::G1_vector< ppT > &&L_query, r1cs_gg_ppzksnark_constraint_system< ppT > &&constraint_system)