Zeth - Zerocash on Ethereum  0.8
Reference implementation of the Zeth protocol by Clearmatics
merkle_tree_field.hpp
Go to the documentation of this file.
1 // DISCLAIMER:
2 // Content taken and adapted from:
3 // https://github.com/scipr-lab/libsnark/blob/master/libsnark/common/data_structures/merkle_tree.hpp
4 
5 #ifndef __ZETH_CORE_MERKLE_TREE_FIELD_HPP__
6 #define __ZETH_CORE_MERKLE_TREE_FIELD_HPP__
7 
9 
10 #include <libff/common/utils.hpp>
11 #include <map>
12 #include <vector>
13 
14 namespace libzeth
15 {
16 
29 template<typename FieldT, typename HashTreeT> class merkle_tree_field
30 {
31 
32 public:
33  std::vector<FieldT> hash_defaults;
34  std::map<size_t, FieldT> values;
35  std::map<size_t, FieldT> hashes;
36  size_t depth;
37 
38  merkle_tree_field(const size_t depth);
40  const size_t depth, const std::vector<FieldT> &contents_as_vector);
42  const size_t depth, const std::map<size_t, FieldT> &contents);
43 
44  FieldT get_value(const size_t address) const;
45  void set_value(const size_t address, const FieldT &value);
46 
47  FieldT get_root() const;
48  std::vector<FieldT> get_path(const size_t address) const;
49 
50  void dump() const;
51 };
52 
53 } // namespace libzeth
54 
56 
57 #endif // __ZETH_CORE_MERKLE_TREE_FIELD_HPP__
libzeth::merkle_tree_field::get_value
FieldT get_value(const size_t address) const
libzeth::merkle_tree_field::depth
size_t depth
Definition: merkle_tree_field.hpp:36
include_libff.hpp
libzeth
Definition: binary_operation.hpp:15
libzeth::merkle_tree_field::get_root
FieldT get_root() const
libzeth::merkle_tree_field::dump
void dump() const
libzeth::merkle_tree_field::get_path
std::vector< FieldT > get_path(const size_t address) const
libzeth::merkle_tree_field::merkle_tree_field
merkle_tree_field(const size_t depth)
merkle_tree_field.tcc
libzeth::merkle_tree_field
Definition: merkle_tree_field.hpp:29
libzeth::merkle_tree_field::hashes
std::map< size_t, FieldT > hashes
Definition: merkle_tree_field.hpp:35
libzeth::merkle_tree_field::values
std::map< size_t, FieldT > values
Definition: merkle_tree_field.hpp:34
libzeth::merkle_tree_field::set_value
void set_value(const size_t address, const FieldT &value)
libzeth::merkle_tree_field::hash_defaults
std::vector< FieldT > hash_defaults
Definition: merkle_tree_field.hpp:33