Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
#include <libsnark/reductions/ram_to_r1cs/ram_to_r1cs.hpp>
#include <libsnark/zk_proof_systems/ppzksnark/r1cs_ppzksnark/r1cs_ppzksnark.hpp>
#include <libsnark/zk_proof_systems/ppzksnark/ram_ppzksnark/ram_ppzksnark_params.hpp>
#include <memory>
#include <libsnark/zk_proof_systems/ppzksnark/ram_ppzksnark/ram_ppzksnark.tcc>
Go to the source code of this file.
Namespaces | |
libsnark | |
Typedefs | |
template<typename ram_ppzksnark_ppT > | |
using | libsnark::ram_ppzksnark_proof = r1cs_ppzksnark_proof< ram_ppzksnark_snark_pp< ram_ppzksnark_ppT > > |
Functions | |
template<typename ram_ppzksnark_ppT > | |
std::ostream & | libsnark::operator<< (std::ostream &out, const ram_ppzksnark_proving_key< ram_ppzksnark_ppT > &pk) |
template<typename ram_ppzksnark_ppT > | |
std::istream & | libsnark::operator>> (std::istream &in, ram_ppzksnark_proving_key< ram_ppzksnark_ppT > &pk) |
template<typename ram_ppzksnark_ppT > | |
std::ostream & | libsnark::operator<< (std::ostream &out, const ram_ppzksnark_verification_key< ram_ppzksnark_ppT > &vk) |
template<typename ram_ppzksnark_ppT > | |
std::istream & | libsnark::operator>> (std::istream &in, ram_ppzksnark_verification_key< ram_ppzksnark_ppT > &vk) |
template<typename ram_ppzksnark_ppT > | |
ram_ppzksnark_keypair< ram_ppzksnark_ppT > | libsnark::ram_ppzksnark_generator (const ram_ppzksnark_architecture_params< ram_ppzksnark_ppT > &ap, const size_t primary_input_size_bound, const size_t time_bound) |
template<typename ram_ppzksnark_ppT > | |
ram_ppzksnark_proof< ram_ppzksnark_ppT > | libsnark::ram_ppzksnark_prover (const ram_ppzksnark_proving_key< ram_ppzksnark_ppT > &pk, const ram_ppzksnark_primary_input< ram_ppzksnark_ppT > &primary_input, const ram_ppzksnark_auxiliary_input< ram_ppzksnark_ppT > &auxiliary_input) |
template<typename ram_ppzksnark_ppT > | |
bool | libsnark::ram_ppzksnark_verifier (const ram_ppzksnark_verification_key< ram_ppzksnark_ppT > &vk, const ram_ppzksnark_primary_input< ram_ppzksnark_ppT > &primary_input, const ram_ppzksnark_proof< ram_ppzksnark_ppT > &proof) |
Declaration of interfaces for a ppzkSNARK for RAM.
This includes:
The implementation follows, extends, and optimizes the approach described in [BCTV14] (itself building on [BCGTV13]). In particular, the ppzkSNARK for RAM is constructed from a ppzkSNARK for R1CS.
Acronyms:
"R1CS" = "Rank-1 Constraint Systems" "RAM" = "Random-Access Machines" "ppzkSNARK" = "Pre-Processing Zero-Knowledge Succinct Non-interactive ARgument of Knowledge"
References:
[BCGTV13]: "SNARKs for C: verifying program executions succinctly and in zero knowledge", Eli Ben-Sasson, Alessandro Chiesa, Daniel Genkin, Eran Tromer, Madars Virza, CRYPTO 2014, http://eprint.iacr.org/2013/507
[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
Definition in file ram_ppzksnark.hpp.