Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
ram_ppzksnark.hpp
Go to the documentation of this file.
1 
47 #ifndef RAM_PPZKSNARK_HPP_
48 #define RAM_PPZKSNARK_HPP_
49 
53 #include <memory>
54 
55 namespace libsnark
56 {
57 
58 /******************************** Proving key ********************************/
59 
60 template<typename ram_ppzksnark_ppT> class ram_ppzksnark_proving_key;
61 
62 template<typename ram_ppzksnark_ppT>
63 std::ostream &operator<<(
64  std::ostream &out, const ram_ppzksnark_proving_key<ram_ppzksnark_ppT> &pk);
65 
66 template<typename ram_ppzksnark_ppT>
67 std::istream &operator>>(
68  std::istream &in, ram_ppzksnark_proving_key<ram_ppzksnark_ppT> &pk);
69 
73 template<typename ram_ppzksnark_ppT> class ram_ppzksnark_proving_key
74 {
75 public:
77 
81  size_t time_bound;
82 
85  const ram_ppzksnark_proving_key<ram_ppzksnark_ppT> &other) = default;
91  const size_t primary_input_size_bound,
92  const size_t time_bound)
93  : r1cs_pk(std::move(r1cs_pk))
94  , ap(ap)
97  {
98  }
99 
101  const ram_ppzksnark_proving_key<ram_ppzksnark_ppT> &other) = default;
102 
103  bool operator==(
105  friend std::ostream &operator<<<ram_ppzksnark_ppT>(
106  std::ostream &out,
108  friend std::istream &operator>><ram_ppzksnark_ppT>(
109  std::istream &in, ram_ppzksnark_proving_key<ram_ppzksnark_ppT> &pk);
110 };
111 
112 /******************************* Verification key ****************************/
113 
114 template<typename ram_ppzksnark_ppT> class ram_ppzksnark_verification_key;
115 
116 template<typename ram_ppzksnark_ppT>
117 std::ostream &operator<<(
118  std::ostream &out,
120 
121 template<typename ram_ppzksnark_ppT>
122 std::istream &operator>>(
124 
128 template<typename ram_ppzksnark_ppT> class ram_ppzksnark_verification_key
129 {
130 public:
132 
136  size_t time_bound;
137 
139 
140  ram_ppzksnark_verification_key() = default;
143  default;
149  const size_t primary_input_size_bound,
150  const size_t time_bound)
151  : r1cs_vk(r1cs_vk)
152  , ap(ap)
155  {
156  }
157 
160  default;
161 
164  const;
165 
166  bool operator==(
168  friend std::ostream &operator<<<ram_ppzksnark_ppT>(
169  std::ostream &out,
171  friend std::istream &operator>><ram_ppzksnark_ppT>(
172  std::istream &in,
174 };
175 
176 /********************************** Key pair *********************************/
177 
182 template<typename ram_ppzksnark_ppT> struct ram_ppzksnark_keypair {
183 public:
186 
187  ram_ppzksnark_keypair() = default;
189  default;
191  const ram_ppzksnark_keypair<ram_ppzksnark_ppT> &other) = default;
195  : pk(std::move(pk)), vk(std::move(vk))
196  {
197  }
198 };
199 
200 /*********************************** Proof ***********************************/
201 
205 template<typename ram_ppzksnark_ppT>
206 using ram_ppzksnark_proof =
208 
209 /***************************** Main algorithms *******************************/
210 
218 template<typename ram_ppzksnark_ppT>
221  const size_t primary_input_size_bound,
222  const size_t time_bound);
223 
235 template<typename ram_ppzksnark_ppT>
239  const ram_ppzksnark_auxiliary_input<ram_ppzksnark_ppT> &auxiliary_input);
240 
248 template<typename ram_ppzksnark_ppT>
253 
254 } // namespace libsnark
255 
257 
258 #endif // RAM_PPZKSNARK_HPP_
libsnark::ram_ppzksnark_verification_key::ram_ppzksnark_verification_key
ram_ppzksnark_verification_key()=default
libsnark::ram_ppzksnark_proving_key::primary_input_size_bound
size_t primary_input_size_bound
Definition: ram_ppzksnark.hpp:80
libsnark::ram_ppzksnark_proving_key::time_bound
size_t time_bound
Definition: ram_ppzksnark.hpp:81
libsnark::ram_ppzksnark_keypair::ram_ppzksnark_keypair
ram_ppzksnark_keypair(ram_ppzksnark_proving_key< ram_ppzksnark_ppT > &&pk, ram_ppzksnark_verification_key< ram_ppzksnark_ppT > &&vk)
Definition: ram_ppzksnark.hpp:192
libsnark::ram_ppzksnark_verification_key::operator=
ram_ppzksnark_verification_key< ram_ppzksnark_ppT > & operator=(const ram_ppzksnark_verification_key< ram_ppzksnark_ppT > &other)=default
libsnark
Definition: accumulation_vector.hpp:18
libsnark::operator<<
std::ostream & operator<<(std::ostream &out, const accumulation_vector< T > &v)
libsnark::ram_ppzksnark_keypair::pk
ram_ppzksnark_proving_key< ram_ppzksnark_ppT > pk
Definition: ram_ppzksnark.hpp:184
libsnark::ram_ppzksnark_verification_key
Definition: ram_ppzksnark.hpp:114
libsnark::ram_ppzksnark_proving_key::operator=
ram_ppzksnark_proving_key< ram_ppzksnark_ppT > & operator=(const ram_ppzksnark_proving_key< ram_ppzksnark_ppT > &other)=default
libsnark::ram_ppzksnark_verification_key::snark_ppT
ram_ppzksnark_snark_pp< ram_ppzksnark_ppT > snark_ppT
Definition: ram_ppzksnark.hpp:131
libsnark::ram_ppzksnark_proving_key::ap
ram_ppzksnark_architecture_params< ram_ppzksnark_ppT > ap
Definition: ram_ppzksnark.hpp:79
libsnark::ram_ppzksnark_proving_key::r1cs_pk
r1cs_ppzksnark_proving_key< snark_ppT > r1cs_pk
Definition: ram_ppzksnark.hpp:78
libsnark::ram_ppzksnark_proving_key::operator==
bool operator==(const ram_ppzksnark_proving_key< ram_ppzksnark_ppT > &other) const
libsnark::ram_ppzksnark_proving_key::ram_ppzksnark_proving_key
ram_ppzksnark_proving_key(r1cs_ppzksnark_proving_key< snark_ppT > &&r1cs_pk, const ram_ppzksnark_architecture_params< ram_ppzksnark_ppT > &ap, const size_t primary_input_size_bound, const size_t time_bound)
Definition: ram_ppzksnark.hpp:88
libsnark::r1cs_ppzksnark_proving_key< snark_ppT >
libsnark::ram_ppzksnark_verification_key::bound_primary_input_locations
std::set< size_t > bound_primary_input_locations
Definition: ram_ppzksnark.hpp:138
libsnark::ram_ppzksnark_verification_key::primary_input_size_bound
size_t primary_input_size_bound
Definition: ram_ppzksnark.hpp:135
libsnark::r1cs_ppzksnark_proof
Definition: r1cs_ppzksnark.hpp:298
libsnark::r1cs_ppzksnark_verification_key< snark_ppT >
libsnark::ram_ppzksnark_keypair
Definition: ram_ppzksnark.hpp:182
libsnark::ram_ppzksnark_verification_key::bind_primary_input
ram_ppzksnark_verification_key< ram_ppzksnark_ppT > bind_primary_input(const ram_ppzksnark_primary_input< ram_ppzksnark_ppT > &primary_input) const
r1cs_ppzksnark.hpp
libsnark::ram_ppzksnark_proving_key::ram_ppzksnark_proving_key
ram_ppzksnark_proving_key()
Definition: ram_ppzksnark.hpp:83
ram_ppzksnark.tcc
libsnark::ram_ppzksnark_verification_key::ram_ppzksnark_verification_key
ram_ppzksnark_verification_key(const r1cs_ppzksnark_verification_key< snark_ppT > &r1cs_vk, const ram_ppzksnark_architecture_params< ram_ppzksnark_ppT > &ap, const size_t primary_input_size_bound, const size_t time_bound)
Definition: ram_ppzksnark.hpp:146
libsnark::ram_ppzksnark_verifier
bool 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)
libsnark::ram_ppzksnark_verification_key::time_bound
size_t time_bound
Definition: ram_ppzksnark.hpp:136
libsnark::ram_ppzksnark_verification_key::r1cs_vk
r1cs_ppzksnark_verification_key< snark_ppT > r1cs_vk
Definition: ram_ppzksnark.hpp:133
libsnark::ram_ppzksnark_prover
ram_ppzksnark_proof< ram_ppzksnark_ppT > 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)
libsnark::memory_store_trace
Definition: memory_store_trace.hpp:29
libsnark::operator>>
std::istream & operator>>(std::istream &in, accumulation_vector< T > &v)
ram_ppzksnark_params.hpp
libsnark::ram_ppzksnark_generator
ram_ppzksnark_keypair< ram_ppzksnark_ppT > ram_ppzksnark_generator(const ram_ppzksnark_architecture_params< ram_ppzksnark_ppT > &ap, const size_t primary_input_size_bound, const size_t time_bound)
libsnark::ram_ppzksnark_proving_key
Definition: ram_ppzksnark.hpp:60
libsnark::ram_ppzksnark_verification_key::ap
ram_ppzksnark_architecture_params< ram_ppzksnark_ppT > ap
Definition: ram_ppzksnark.hpp:134
libsnark::ram_ppzksnark_architecture_params
ram_architecture_params< ram_ppzksnark_machine_pp< ram_ppzksnark_ppT > > ram_ppzksnark_architecture_params
Definition: ram_ppzksnark_params.hpp:68
libsnark::ram_ppzksnark_snark_pp
typename ram_ppzksnark_ppT::snark_pp ram_ppzksnark_snark_pp
Definition: ram_ppzksnark_params.hpp:61
libsnark::ram_ppzksnark_proof
r1cs_ppzksnark_proof< ram_ppzksnark_snark_pp< ram_ppzksnark_ppT > > ram_ppzksnark_proof
Definition: ram_ppzksnark.hpp:207
libsnark::ram_ppzksnark_verification_key::operator==
bool operator==(const ram_ppzksnark_verification_key< ram_ppzksnark_ppT > &other) const
libsnark::ram_ppzksnark_keypair::ram_ppzksnark_keypair
ram_ppzksnark_keypair()=default
libsnark::ram_ppzksnark_proving_key::snark_ppT
ram_ppzksnark_snark_pp< ram_ppzksnark_ppT > snark_ppT
Definition: ram_ppzksnark.hpp:76
ram_to_r1cs.hpp
libsnark::ram_ppzksnark_auxiliary_input
ram_input_tape< ram_ppzksnark_machine_pp< ram_ppzksnark_ppT > > ram_ppzksnark_auxiliary_input
Definition: ram_ppzksnark_params.hpp:76
libsnark::ram_ppzksnark_keypair::vk
ram_ppzksnark_verification_key< ram_ppzksnark_ppT > vk
Definition: ram_ppzksnark.hpp:185