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_POWERSOFTAU_UTILS_HPP__
6 #define __ZETH_MPC_GROTH16_POWERSOFTAU_UTILS_HPP__
18 template<
typename ppT>
class srs_powersoftau
40 libff::G1_vector<ppT> &&beta_tau_g1,
73 void write(std::ostream &out)
const;
79 template<
typename ppT>
81 const libff::Fr<ppT> &tau,
82 const libff::Fr<ppT> &alpha,
83 const libff::Fr<ppT> &beta,
93 template<
typename ppT>
95 template<
typename ppT>
97 template<
typename ppT>
100 template<
typename ppT>
102 template<
typename ppT>
104 template<
typename ppT>
112 template<
typename ppT>
117 template<
typename ppT>
123 template<
typename ppT>
125 const libff::G1<ppT> &a1,
126 const libff::G1<ppT> &b1,
127 const libff::G2<ppT> &a2,
128 const libff::G2<ppT> &b2);
139 template<
typename ppT>
141 const std::vector<libff::G1<ppT>> &a1s,
142 const std::vector<libff::G1<ppT>> &b1s,
143 const libff::G2<ppT> &a2,
144 const libff::G2<ppT> &b2);
147 template<
typename ppT>
149 const libff::G1<ppT> &a1,
150 const libff::G1<ppT> &b1,
151 const std::vector<libff::G2<ppT>> &a2s,
152 const std::vector<libff::G2<ppT>> &b2s);
156 template<
typename ppT>
158 const std::vector<libff::G1<ppT>> &a1s,
159 const libff::G2<ppT> &a2,
160 const libff::G2<ppT> &b2);
163 template<
typename ppT>
165 const libff::G1<ppT> &a1,
166 const libff::G1<ppT> &b1,
167 const std::vector<libff::G2<ppT>> &a2s);
170 template<
typename ppT>
176 template<
typename ppT>
184 #endif // __ZETH_MPC_GROTH16_POWERSOFTAU_UTILS_HPP__
bool is_well_formed() const
srs_powersoftau< ppT > dummy_powersoftau(size_t n)
bool same_ratio_consecutive(const std::vector< libff::G1< ppT >> &a1s, const libff::G2< ppT > &a2, const libff::G2< ppT > &b2)
const libff::G1_vector< ppT > alpha_tau_powers_g1
{ [ alpha . x^i ]_1 } i = 0 .. n-1
const libff::G2_vector< ppT > tau_powers_g2
{ [ x^i ]_2 } i = 0 .. n-1
const libff::G1_vector< ppT > tau_powers_g1
{ [ x^i ]_1 } i = 0 .. 2n-2
void read_powersoftau_fr(std::istream &in, libff::Fr< ppT > &fr_out)
std::vector< libff::G1< ppT > > alpha_lagrange_g1
${ [ alpha . L_i(x) ]_1 }"$
void read_powersoftau_g2(std::istream &in, libff::G2< ppT > &out)
srs_powersoftau< ppT > powersoftau_load(std::istream &in, size_t n)
std::vector< libff::G1< ppT > > lagrange_g1
${ [ L_i(x) ]_1 }_i$
void read_powersoftau_g1(std::istream &in, libff::G1< ppT > &out)
bool same_ratio(const libff::G1< ppT > &a1, const libff::G1< ppT > &b1, const libff::G2< ppT > &a2, const libff::G2< ppT > &b2)
srs_powersoftau(libff::G1_vector< ppT > &&tau_powers_g1, libff::G2_vector< ppT > &&tau_powers_g2, libff::G1_vector< ppT > &&alpha_tau_powers_g1, libff::G1_vector< ppT > &&beta_tau_g1, const libff::G2< ppT > &beta_g2)
std::vector< libff::G2< ppT > > lagrange_g2
${ [ L_i(x) ]_2 }_i$
const libff::G1_vector< ppT > beta_tau_powers_g1
{ [ beta . x^i ]_1 } i = 0 .. n-1
std::vector< libff::G1< ppT > > beta_lagrange_g1
${ [ beta . L_i(x) ]_1 }"$
srs_powersoftau< ppT > dummy_powersoftau_from_secrets(const libff::Fr< ppT > &tau, const libff::Fr< ppT > &alpha, const libff::Fr< ppT > &beta, size_t n)
bool is_well_formed() const
srs_lagrange_evaluations(size_t degree, std::vector< libff::G1< ppT >> &&lagrange_g1, std::vector< libff::G2< ppT >> &&lagrange_g2, std::vector< libff::G1< ppT >> &&alpha_lagrange_g1, std::vector< libff::G1< ppT >> &&beta_lagrange_g1)
void write_powersoftau_g2(std::ostream &out, const libff::G2< ppT > &g2)
void write_powersoftau_g1(std::ostream &out, const libff::G1< ppT > &g1)
static srs_lagrange_evaluations read(std::istream &in)
void write_powersoftau_fr(std::ostream &out, const libff::Fr< ppT > &fr)
srs_lagrange_evaluations< ppT > powersoftau_compute_lagrange_evaluations(const srs_powersoftau< ppT > &pot, const size_t n)
void powersoftau_write(std::ostream &out, const srs_powersoftau< ppT > &pot)
bool powersoftau_is_well_formed(const srs_powersoftau< ppT > &pot)
Verify that the pot data is well formed.
void write(std::ostream &out) const
bool same_ratio_vectors(const std::vector< libff::G1< ppT >> &a1s, const std::vector< libff::G1< ppT >> &b1s, const libff::G2< ppT > &a2, const libff::G2< ppT > &b2)
const libff::G2< ppT > beta_g2
[ beta ]_2