nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier > Class Template Reference
ppzkSNARK for R1CS More...
#include <r1cs_ppzksnark.hpp>
Collaboration diagram for nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >:
Public Types | |
typedef policy_type::auxiliary_input_type | auxiliary_input_type |
typedef policy_type::constraint_system_type | constraint_system_type |
typedef Generator | generator_type |
typedef policy_type::keypair_type | keypair_type |
typedef policy_type::primary_input_type | primary_input_type |
typedef policy_type::processed_verification_key_type | processed_verification_key_type |
typedef policy_type::proof_type | proof_type |
typedef Prover | prover_type |
typedef policy_type::proving_key_type | proving_key_type |
typedef policy_type::verification_key_type | verification_key_type |
typedef Verifier | verifier_type |
Static Public Member Functions | |
static keypair_type | generate (const constraint_system_type &constraint_system) |
static proof_type | prove (const proving_key_type &pk, const primary_input_type &primary_input, const auxiliary_input_type &auxiliary_input) |
static bool | verify (const typename Verifier::processed_verification_key_type &pvk, const primary_input_type &primary_input, const proof_type &proof) |
static bool | verify (const typename Verifier::verification_key_type &vk, const primary_input_type &primary_input, const proof_type &proof) |
Detailed Description
template<typename CurveType, typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
class nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >
ppzkSNARK for R1CS
- Template Parameters
-
CurveType Generator Prover Verifier The implementation instantiates (a modification of) the protocol of [PGHR13], by following extending, and optimizing the approach described in [BCTV14].
Acronyms:
- R1CS = "Rank-1 Constraint Systems"
- ppzkSNARK = "PreProcessing Zero-Knowledge Succinct Non-interactive ARgument of Knowledge"
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
[PGHR13]: "Pinocchio: Nearly practical verifiable computation", Bryan Parno, Craig Gentry, Jon Howell, Mariana Raykova, IEEE S&P 2013, https://eprint.iacr.org/2013/279
Member Typedef Documentation
◆ auxiliary_input_type
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
typedef policy_type::auxiliary_input_type nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >::auxiliary_input_type |
◆ constraint_system_type
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
typedef policy_type::constraint_system_type nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >::constraint_system_type |
◆ generator_type
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
typedef Generator nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >::generator_type |
◆ keypair_type
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
typedef policy_type::keypair_type nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >::keypair_type |
◆ primary_input_type
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
typedef policy_type::primary_input_type nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >::primary_input_type |
◆ processed_verification_key_type
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
typedef policy_type::processed_verification_key_type nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >::processed_verification_key_type |
◆ proof_type
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
typedef policy_type::proof_type nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >::proof_type |
◆ prover_type
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
typedef Prover nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >::prover_type |
◆ proving_key_type
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
typedef policy_type::proving_key_type nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >::proving_key_type |
◆ verification_key_type
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
typedef policy_type::verification_key_type nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >::verification_key_type |
◆ verifier_type
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
typedef Verifier nil::crypto3::zk::snark::r1cs_ppzksnark< CurveType, Generator, Prover, Verifier >::verifier_type |
Member Function Documentation
◆ generate()
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
|
inlinestatic |
◆ prove()
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
|
inlinestatic |
◆ verify() [1/2]
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
|
inlinestatic |
◆ verify() [2/2]
template<typename CurveType , typename Generator = r1cs_ppzksnark_generator<CurveType>, typename Prover = r1cs_ppzksnark_prover<CurveType>, typename Verifier = r1cs_ppzksnark_verifier_strong_input_consistency<CurveType>>
|
inlinestatic |
The documentation for this class was generated from the following file: