Zeth - Zerocash on Ethereum  0.8
Reference implementation of the Zeth protocol by Clearmatics
mimc_mp.hpp
Go to the documentation of this file.
1 // DISCLAIMER:
2 // Content taken and adapted from:
3 // https://github.com/HarryR/ethsnarks/blob/master/src/gadgets/mimc.hpp
4 
5 #ifndef __ZETH_CIRCUITS_MIMC_MP_HPP__
6 #define __ZETH_CIRCUITS_MIMC_MP_HPP__
7 
9 
10 namespace libzeth
11 {
12 
30 template<typename FieldT, typename PermutationT> class MiMC_mp_gadget
31 {
32 private:
33  std::shared_ptr<PermutationT> permutation_gadget;
34 
35 public:
37  libsnark::protoboard<FieldT> &pb,
38  const libsnark::pb_linear_combination<FieldT> &x,
39  const libsnark::pb_linear_combination<FieldT> &y,
40  const libsnark::pb_variable<FieldT> &result,
41  const std::string &annotation_prefix = "MiMC_mp_gadget");
42 
44  void generate_r1cs_witness() const;
45 
46  // Returns the hash (field element)
47  static FieldT get_hash(const FieldT x, FieldT y);
48 };
49 
50 } // namespace libzeth
51 
53 
54 #endif // __ZETH_CIRCUITS_MIMC_MP_HPP__
libzeth::MiMC_mp_gadget::get_hash
static FieldT get_hash(const FieldT x, FieldT y)
libzeth
Definition: binary_operation.hpp:15
libzeth::MiMC_mp_gadget::MiMC_mp_gadget
MiMC_mp_gadget(libsnark::protoboard< FieldT > &pb, const libsnark::pb_linear_combination< FieldT > &x, const libsnark::pb_linear_combination< FieldT > &y, const libsnark::pb_variable< FieldT > &result, const std::string &annotation_prefix="MiMC_mp_gadget")
mimc_permutation.hpp
libzeth::MiMC_mp_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libzeth::MiMC_mp_gadget::generate_r1cs_witness
void generate_r1cs_witness() const
mimc_mp.tcc
libzeth::MiMC_mp_gadget
Definition: mimc_mp.hpp:30