Zeth - Zerocash on Ethereum
0.8
Reference implementation of the Zeth protocol by Clearmatics
|
Go to the documentation of this file.
5 #ifndef __ZETH_MPC_GROTH16_PHASE2_HPP__
6 #define __ZETH_MPC_GROTH16_PHASE2_HPP__
33 template<
typename ppT>
class srs_powersoftau;
34 template<
typename ppT>
class srs_mpc_layer_L1;
54 libff::G1_vector<ppT>
H_g1;
57 libff::G1_vector<ppT>
L_g1;
63 libff::G1_vector<ppT> &&
H_g1,
64 libff::G1_vector<ppT> &&
L_g1);
68 void write(std::ostream &out)
const;
97 const libff::G1<ppT> &
s_g1,
103 void write(std::ostream &out)
const;
122 void write(std::ostream &out)
const;
140 void write(std::ostream &out)
const;
146 template<mp_
size_t n, const libff::big
int<n> &modulus>
148 const mpc_hash_t transcript_digest, libff::Fp_model<n, modulus> &out_fr);
150 template<
typename ppT>
156 template<
typename ppT>
164 template<
typename ppT>
167 const libff::G1<ppT> &last_delta,
168 const libff::Fr<ppT> &secret);
174 template<
typename ppT>
176 const libff::G1<ppT> last_delta_g1,
182 template<
typename ppT>
185 const libff::Fr<ppT> &delta_j);
195 template<
typename ppT>
206 template<
typename ppT>
214 template<
typename ppT>
222 template<
typename ppT>
225 const libff::Fr<ppT> &delta_j);
230 template<
typename ppT>
239 template<
typename ppT>
258 template<
typename ppT,
bool enable_contribution_check = true>
261 const libff::G1<ppT> &initial_delta,
263 std::istream &transcript_stream,
264 libff::G1<ppT> &out_final_delta,
266 bool &out_contribution_found);
270 template<
typename ppT>
273 const libff::G1<ppT> &initial_delta,
274 std::istream &transcript_stream,
275 libff::G1<ppT> &out_final_delta,
282 template<
typename ppT>
285 const libff::Fr<ppT> &delta,
296 libff::multi_exp_base_form BaseForm = libff::multi_exp_base_form_normal>
301 libsnark::r1cs_constraint_system<libff::Fr<ppT>> &&cs,
302 const libsnark::qap_instance<libff::Fr<ppT>> &qap);
308 #endif // __ZETH_MPC_GROTH16_PHASE2_HPP__
libff::G2< ppT > delta_g2
srs_mpc_phase2_accumulator< ppT > srs_mpc_phase2_begin(const mpc_hash_t cs_hash, const srs_mpc_layer_L1< ppT > &layer_L1, size_t num_inputs)
static srs_mpc_phase2_response< ppT > read(std::istream &in)
bool operator==(const srs_mpc_phase2_response< ppT > &other) const
void write(std::ostream &out) const
srs_mpc_phase2_publickey< ppT > srs_mpc_phase2_compute_public_key(const mpc_hash_t transcript_digest, const libff::G1< ppT > &last_delta, const libff::Fr< ppT > &secret)
void write_compressed(std::ostream &out) const
bool srs_mpc_phase2_verify_publickey(const libff::G1< ppT > last_delta_g1, const srs_mpc_phase2_publickey< ppT > &publickey)
srs_mpc_phase2_accumulator< ppT > accumulator
libsnark::r1cs_gg_ppzksnark_keypair< ppT > mpc_create_key_pair(srs_powersoftau< ppT > &&pot, srs_mpc_layer_L1< ppT > &&layer1, srs_mpc_phase2_accumulator< ppT > &&layer2, libsnark::r1cs_constraint_system< libff::Fr< ppT >> &&cs, const libsnark::qap_instance< libff::Fr< ppT >> &qap)
libff::G1_vector< ppT > H_g1
void write(std::ostream &out) const
bool srs_mpc_phase2_verify_transcript(const mpc_hash_t initial_transcript_digest, const libff::G1< ppT > &initial_delta, const mpc_hash_t check_for_contribution, std::istream &transcript_stream, libff::G1< ppT > &out_final_delta, mpc_hash_t out_final_transcript_digest, bool &out_contribution_found)
libff::G1< ppT > s_delta_j_g1
libff::G1_vector< ppT > L_g1
bool is_well_formed() const
void srs_mpc_digest_to_fp(const mpc_hash_t transcript_digest, libff::Fp_model< n, modulus > &out_fr)
mpc_hash_t transcript_digest
libff::G1< ppT > delta_g1
bool is_well_formed() const
libff::G2< ppT > srs_mpc_digest_to_g2(const mpc_hash_t digest)
srs_mpc_phase2_accumulator< ppT > srs_mpc_phase2_update_accumulator(const srs_mpc_phase2_accumulator< ppT > &last_accum, const libff::Fr< ppT > &delta_j)
static srs_mpc_phase2_challenge< ppT > read(std::istream &in)
srs_mpc_phase2_accumulator(const mpc_hash_t cs_hash, const libff::G1< ppT > &delta_g1, const libff::G2< ppT > &delta_g2, libff::G1_vector< ppT > &&H_g1, libff::G1_vector< ppT > &&L_g1)
bool is_well_formed() const
static srs_mpc_phase2_accumulator< ppT > read(std::istream &in)
static srs_mpc_phase2_accumulator< ppT > read_compressed(std::istream &in)
bool operator==(const srs_mpc_phase2_publickey< ppT > &other) const
bool srs_mpc_phase2_verify_update(const srs_mpc_phase2_accumulator< ppT > &last, const srs_mpc_phase2_accumulator< ppT > &updated, const srs_mpc_phase2_publickey< ppT > &publickey)
bool is_well_formed() const
bool operator==(const srs_mpc_phase2_accumulator< ppT > &other) const
size_t[MPC_HASH_ARRAY_LENGTH] mpc_hash_t
srs_mpc_phase2_response< ppT > srs_mpc_phase2_compute_response(const srs_mpc_phase2_challenge< ppT > &challenge, const libff::Fr< ppT > &delta_j)
bool srs_mpc_phase2_verify_response(const srs_mpc_phase2_challenge< ppT > &challenge, const srs_mpc_phase2_response< ppT > &response)
srs_mpc_phase2_publickey(const mpc_hash_t transcript_digest, const libff::G1< ppT > &new_delta_g1, const libff::G1< ppT > &s_g1, const libff::G1< ppT > &s_delta_j_g1, const libff::G2< ppT > &r_delta_j_g2)
static srs_mpc_phase2_publickey< ppT > read(std::istream &in)
void write(std::ostream &out) const
srs_mpc_phase2_accumulator< ppT > new_accumulator
mpc_hash_t transcript_digest
srs_mpc_phase2_challenge< ppT > srs_mpc_phase2_initial_challenge(srs_mpc_phase2_accumulator< ppT > &&initial_accumulator)
srs_mpc_phase2_challenge< ppT > srs_mpc_phase2_compute_challenge(srs_mpc_phase2_response< ppT > &&response)
srs_mpc_phase2_publickey< ppT > publickey
srs_mpc_phase2_challenge< ppT > srs_mpc_dummy_phase2(const srs_mpc_layer_L1< ppT > &layer1, const libff::Fr< ppT > &delta, size_t num_inputs)
libff::G1< ppT > new_delta_g1
srs_mpc_phase2_response(srs_mpc_phase2_accumulator< ppT > &&new_accumulator, srs_mpc_phase2_publickey< ppT > &&publickey)
srs_mpc_phase2_challenge(const mpc_hash_t transcript_digest, srs_mpc_phase2_accumulator< ppT > &&accumulator)
void write(std::ostream &out) const
bool srs_mpc_phase2_update_is_consistent(const srs_mpc_phase2_accumulator< ppT > &last, const srs_mpc_phase2_accumulator< ppT > &updated)
libff::G2< ppT > r_delta_j_g2
bool operator==(const srs_mpc_phase2_challenge< ppT > &other) const
void compute_digest(mpc_hash_t out_digest) const