Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Classes | Namespaces | Functions
uscs_ppzksnark.hpp File Reference
#include <libff/algebra/curves/public_params.hpp>
#include <libsnark/common/data_structures/accumulation_vector.hpp>
#include <libsnark/knowledge_commitment/knowledge_commitment.hpp>
#include <libsnark/relations/constraint_satisfaction_problems/uscs/uscs.hpp>
#include <libsnark/zk_proof_systems/ppzksnark/uscs_ppzksnark/uscs_ppzksnark_params.hpp>
#include <memory>
#include <libsnark/zk_proof_systems/ppzksnark/uscs_ppzksnark/uscs_ppzksnark.tcc>
Include dependency graph for uscs_ppzksnark.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  libsnark::uscs_ppzksnark_proving_key< ppT >
 
class  libsnark::uscs_ppzksnark_proving_key< ppT >
 
class  libsnark::uscs_ppzksnark_verification_key< ppT >
 
class  libsnark::uscs_ppzksnark_verification_key< ppT >
 
class  libsnark::uscs_ppzksnark_processed_verification_key< ppT >
 
class  libsnark::uscs_ppzksnark_processed_verification_key< ppT >
 
class  libsnark::uscs_ppzksnark_keypair< ppT >
 
class  libsnark::uscs_ppzksnark_proof< ppT >
 
class  libsnark::uscs_ppzksnark_proof< ppT >
 

Namespaces

 libsnark
 

Functions

template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const uscs_ppzksnark_proving_key< ppT > &pk)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, uscs_ppzksnark_proving_key< ppT > &pk)
 
template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const uscs_ppzksnark_verification_key< ppT > &vk)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, uscs_ppzksnark_verification_key< ppT > &vk)
 
template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const uscs_ppzksnark_processed_verification_key< ppT > &pvk)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, uscs_ppzksnark_processed_verification_key< ppT > &pvk)
 
template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const uscs_ppzksnark_proof< ppT > &proof)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, uscs_ppzksnark_proof< ppT > &proof)
 
template<typename ppT , libff::multi_exp_base_form BaseForm = libff::multi_exp_base_form_normal>
uscs_ppzksnark_keypair< ppT > libsnark::uscs_ppzksnark_generator (const uscs_ppzksnark_constraint_system< ppT > &cs)
 
template<typename ppT , libff::multi_exp_method Method = libff::multi_exp_method_BDLO12, libff::multi_exp_base_form BaseForm = libff::multi_exp_base_form_normal>
uscs_ppzksnark_proof< ppT > libsnark::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)
 
template<typename ppT >
bool libsnark::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)
 
template<typename ppT >
bool libsnark::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)
 
template<typename ppT >
uscs_ppzksnark_processed_verification_key< ppT > libsnark::uscs_ppzksnark_verifier_process_vk (const uscs_ppzksnark_verification_key< ppT > &vk)
 
template<typename ppT >
bool libsnark::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)
 
template<typename ppT >
bool libsnark::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)
 

Detailed Description

Declaration of interfaces for a ppzkSNARK for USCS.

This includes:

The implementation instantiates the protocol of [DFGK14], by following extending, and optimizing the approach described in [BCTV14].

Acronyms:

References:

[BCTV14]: "Succinct Non-Interactive Zero Knowledge for a von Neumann Architecture", Eli Ben-Sasson, Alessandro Chiesa, Eran Tromer, Madars Virza, USENIX Security 2014, http://eprint.iacr.org/2013/879

[DFGK14]: "Square Span Programs with Applications to Succinct NIZK Arguments" George Danezis, Cedric Fournet, Jens Groth, Markulf Kohlweiss, ASIACRYPT 2014, http://eprint.iacr.org/2014/718

Author
This file is part of libsnark, developed by SCIPR Lab and contributors (see AUTHORS).

Definition in file uscs_ppzksnark.hpp.