Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Classes | Namespaces | Functions
r1cs_mp_ppzkpcd.hpp File Reference
#include <libsnark/common/data_structures/set_commitment.hpp>
#include <libsnark/zk_proof_systems/pcd/r1cs_pcd/ppzkpcd_compliance_predicate.hpp>
#include <libsnark/zk_proof_systems/pcd/r1cs_pcd/r1cs_mp_ppzkpcd/r1cs_mp_ppzkpcd_params.hpp>
#include <libsnark/zk_proof_systems/ppzksnark/r1cs_ppzksnark/r1cs_ppzksnark.hpp>
#include <memory>
#include <vector>
#include <libsnark/zk_proof_systems/pcd/r1cs_pcd/r1cs_mp_ppzkpcd/r1cs_mp_ppzkpcd.tcc>
Include dependency graph for r1cs_mp_ppzkpcd.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  libsnark::r1cs_mp_ppzkpcd_proving_key< PCD_ppT >
 
class  libsnark::r1cs_mp_ppzkpcd_proving_key< PCD_ppT >
 
class  libsnark::r1cs_mp_ppzkpcd_verification_key< PCD_ppT >
 
class  libsnark::r1cs_mp_ppzkpcd_verification_key< PCD_ppT >
 
class  libsnark::r1cs_mp_ppzkpcd_processed_verification_key< PCD_ppT >
 
class  libsnark::r1cs_mp_ppzkpcd_processed_verification_key< PCD_ppT >
 
class  libsnark::r1cs_mp_ppzkpcd_keypair< PCD_ppT >
 
class  libsnark::r1cs_mp_ppzkpcd_proof< PCD_ppT >
 
class  libsnark::r1cs_mp_ppzkpcd_proof< PCD_ppT >
 

Namespaces

 libsnark
 

Functions

template<typename PCD_ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const r1cs_mp_ppzkpcd_proving_key< PCD_ppT > &pk)
 
template<typename PCD_ppT >
std::istream & libsnark::operator>> (std::istream &in, r1cs_mp_ppzkpcd_proving_key< PCD_ppT > &pk)
 
template<typename PCD_ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const r1cs_mp_ppzkpcd_verification_key< PCD_ppT > &vk)
 
template<typename PCD_ppT >
std::istream & libsnark::operator>> (std::istream &in, r1cs_mp_ppzkpcd_verification_key< PCD_ppT > &vk)
 
template<typename PCD_ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const r1cs_mp_ppzkpcd_processed_verification_key< PCD_ppT > &pvk)
 
template<typename PCD_ppT >
std::istream & libsnark::operator>> (std::istream &in, r1cs_mp_ppzkpcd_processed_verification_key< PCD_ppT > &pvk)
 
template<typename ppT >
std::ostream & libsnark::operator<< (std::ostream &out, const r1cs_mp_ppzkpcd_proof< ppT > &proof)
 
template<typename ppT >
std::istream & libsnark::operator>> (std::istream &in, r1cs_mp_ppzkpcd_proof< ppT > &proof)
 
template<typename PCD_ppT >
r1cs_mp_ppzkpcd_keypair< PCD_ppT > libsnark::r1cs_mp_ppzkpcd_generator (const std::vector< r1cs_mp_ppzkpcd_compliance_predicate< PCD_ppT >> &compliance_predicates)
 
template<typename PCD_ppT >
r1cs_mp_ppzkpcd_proof< PCD_ppT > libsnark::r1cs_mp_ppzkpcd_prover (const r1cs_mp_ppzkpcd_proving_key< PCD_ppT > &pk, const size_t compliance_predicate_name, const r1cs_mp_ppzkpcd_primary_input< PCD_ppT > &primary_input, const r1cs_mp_ppzkpcd_auxiliary_input< PCD_ppT > &auxiliary_input, const std::vector< r1cs_mp_ppzkpcd_proof< PCD_ppT >> &incoming_proofs)
 
template<typename PCD_ppT >
bool libsnark::r1cs_mp_ppzkpcd_verifier (const r1cs_mp_ppzkpcd_verification_key< PCD_ppT > &vk, const r1cs_mp_ppzkpcd_primary_input< PCD_ppT > &primary_input, const r1cs_mp_ppzkpcd_proof< PCD_ppT > &proof)
 
template<typename PCD_ppT >
r1cs_mp_ppzkpcd_processed_verification_key< PCD_ppT > libsnark::r1cs_mp_ppzkpcd_process_vk (const r1cs_mp_ppzkpcd_verification_key< PCD_ppT > &vk)
 
template<typename PCD_ppT >
bool libsnark::r1cs_mp_ppzkpcd_online_verifier (const r1cs_mp_ppzkpcd_processed_verification_key< PCD_ppT > &pvk, const r1cs_mp_ppzkpcd_primary_input< PCD_ppT > &primary_input, const r1cs_mp_ppzkpcd_proof< PCD_ppT > &proof)
 

Detailed Description

Declaration of interfaces for a multi-predicate ppzkPCD for R1CS.

This includes:

The implementation follows, extends, and optimizes the approach described in [CTV15]. Thus, PCD is constructed from two "matched" ppzkSNARKs for R1CS.

Acronyms:

"R1CS" = "Rank-1 Constraint Systems" "ppzkSNARK" = "PreProcessing Zero-Knowledge Succinct Non-interactive ARgument of Knowledge" "ppzkPCD" = "Pre-Processing Zero-Knowledge Proof-Carrying Data"

References:

[CTV15]: "Cluster Computing in Zero Knowledge", Alessandro Chiesa, Eran Tromer, Madars Virza,

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

Definition in file r1cs_mp_ppzkpcd.hpp.