Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
#include <libsnark/zk_proof_systems/pcd/r1cs_pcd/r1cs_sp_ppzkpcd/r1cs_sp_ppzkpcd_params.hpp>
#include <libsnark/zk_proof_systems/ppzksnark/r1cs_ppzksnark/r1cs_ppzksnark.hpp>
#include <memory>
#include <libsnark/zk_proof_systems/pcd/r1cs_pcd/r1cs_sp_ppzkpcd/r1cs_sp_ppzkpcd.tcc>
Go to the source code of this file.
Namespaces | |
libsnark | |
Typedefs | |
template<typename PCD_ppT > | |
using | libsnark::r1cs_sp_ppzkpcd_proof = r1cs_ppzksnark_proof< typename PCD_ppT::curve_B_pp > |
Functions | |
template<typename PCD_ppT > | |
std::ostream & | libsnark::operator<< (std::ostream &out, const r1cs_sp_ppzkpcd_proving_key< PCD_ppT > &pk) |
template<typename PCD_ppT > | |
std::istream & | libsnark::operator>> (std::istream &in, r1cs_sp_ppzkpcd_proving_key< PCD_ppT > &pk) |
template<typename PCD_ppT > | |
std::ostream & | libsnark::operator<< (std::ostream &out, const r1cs_sp_ppzkpcd_verification_key< PCD_ppT > &vk) |
template<typename PCD_ppT > | |
std::istream & | libsnark::operator>> (std::istream &in, r1cs_sp_ppzkpcd_verification_key< PCD_ppT > &vk) |
template<typename PCD_ppT > | |
std::ostream & | libsnark::operator<< (std::ostream &out, const r1cs_sp_ppzkpcd_processed_verification_key< PCD_ppT > &pvk) |
template<typename PCD_ppT > | |
std::istream & | libsnark::operator>> (std::istream &in, r1cs_sp_ppzkpcd_processed_verification_key< PCD_ppT > &pvk) |
template<typename PCD_ppT > | |
r1cs_sp_ppzkpcd_keypair< PCD_ppT > | libsnark::r1cs_sp_ppzkpcd_generator (const r1cs_sp_ppzkpcd_compliance_predicate< PCD_ppT > &compliance_predicate) |
template<typename PCD_ppT > | |
r1cs_sp_ppzkpcd_proof< PCD_ppT > | libsnark::r1cs_sp_ppzkpcd_prover (const r1cs_sp_ppzkpcd_proving_key< PCD_ppT > &pk, const r1cs_sp_ppzkpcd_primary_input< PCD_ppT > &primary_input, const r1cs_sp_ppzkpcd_auxiliary_input< PCD_ppT > &auxiliary_input, const std::vector< r1cs_sp_ppzkpcd_proof< PCD_ppT >> &incoming_proofs) |
template<typename PCD_ppT > | |
bool | libsnark::r1cs_sp_ppzkpcd_verifier (const r1cs_sp_ppzkpcd_verification_key< PCD_ppT > &vk, const r1cs_sp_ppzkpcd_primary_input< PCD_ppT > &primary_input, const r1cs_sp_ppzkpcd_proof< PCD_ppT > &proof) |
template<typename PCD_ppT > | |
r1cs_sp_ppzkpcd_processed_verification_key< PCD_ppT > | libsnark::r1cs_sp_ppzkpcd_process_vk (const r1cs_sp_ppzkpcd_verification_key< PCD_ppT > &vk) |
template<typename PCD_ppT > | |
bool | libsnark::r1cs_sp_ppzkpcd_online_verifier (const r1cs_sp_ppzkpcd_processed_verification_key< PCD_ppT > &pvk, const r1cs_sp_ppzkpcd_primary_input< PCD_ppT > &primary_input, const r1cs_sp_ppzkpcd_proof< PCD_ppT > &proof) |
Declaration of interfaces for a single-predicate ppzkPCD for R1CS.
This includes:
The implementation follows, extends, and optimizes the approach described in [BCTV14]. 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:
[BCTV14]: "Scalable Zero Knowledge via Cycles of Elliptic Curves", Eli Ben-Sasson, Alessandro Chiesa, Eran Tromer, Madars Virza, CRYPTO 2014, http://eprint.iacr.org/2014/595
Definition in file r1cs_sp_ppzkpcd.hpp.