Fabcoin Core  0.16.2
P2P Digital Currency
TrieHash.h
Go to the documentation of this file.
1 /*
2  This file is part of cpp-ethereum.
3 
4  cpp-ethereum is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  cpp-ethereum is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
16 */
22 #pragma once
23 
24 #include "Common.h"
25 #include "FixedHash.h"
26 
27 namespace dev
28 {
29 
30 bytes rlp256(BytesMap const& _s);
31 h256 hash256(BytesMap const& _s);
32 
33 h256 orderedTrieRoot(std::vector<bytes> const& _data);
34 
35 template <class T, class U> inline h256 trieRootOver(unsigned _itemCount, T const& _getKey, U const& _getValue)
36 {
37  BytesMap m;
38  for (unsigned i = 0; i < _itemCount; ++i)
39  m[_getKey(i)] = _getValue(i);
40  return hash256(m);
41 }
42 
43 h256 orderedTrieRoot(std::vector<bytesConstRef> const& _data);
44 h256 orderedTrieRoot(std::vector<bytes> const& _data);
45 
46 }
Adapted from code found on http://stackoverflow.com/questions/180947/base64-decode-snippet-in-c Origi...
Definition: Arith256.cpp:15
std::map< bytes, bytes > BytesMap
Definition: Common.h:138
#define T(i, x)
h256 hash256(BytesMap const &_s)
Definition: TrieHash.cpp:174
std::vector< byte > bytes
Definition: Common.h:75
FixedHash< 32 > h256
Definition: FixedHash.h:340
bytes rlp256(BytesMap const &_s)
Definition: TrieHash.cpp:161
h256 trieRootOver(unsigned _itemCount, T const &_getKey, U const &_getValue)
Definition: TrieHash.h:35
h256 orderedTrieRoot(std::vector< bytes > const &_data)
Definition: TrieHash.cpp:179