Zeth - Zerocash on Ethereum
0.8
Reference implementation of the Zeth protocol by Clearmatics
libzeth
core
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
8
#include "
libzeth/core/include_libff.hpp
"
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
);
39
merkle_tree_field
(
40
const
size_t
depth
,
const
std::vector<FieldT> &contents_as_vector);
41
merkle_tree_field
(
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
55
#include "
libzeth/core/merkle_tree_field.tcc
"
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
Generated on Mon Nov 28 2022 10:29:03 for Zeth - Zerocash on Ethereum by
1.8.17