Decentralised Art Server
High-performance C++ backend that exposes HTML interface and a secure REST API for managing Performative Transactions entities
 
Loading...
Searching...
No Matches
format_hash.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <cstdint>
5#include <string>
6#include <string_view>
7#include <vector>
8
9#ifdef interface
10 #undef interface
11#endif
12#include <evmc/evmc.hpp>
13#ifndef interface
14 #define interface __STRUCT__
15#endif
16
17namespace dcn::chain
18{
20 {
21 evmc::bytes32 scalar_hash;
22 evmc::bytes32 path_hash;
23 };
24
26 {
27 std::string scalar;
28 evmc::bytes32 path_hash;
29 std::uint32_t tail_id;
30 };
31
33 {
34 std::vector<ScalarHashEntry> hash_entries;
35 std::vector<ScalarLabel> display_entries;
36 };
37
38 bool equalBytes32(const evmc::bytes32 & lhs, const evmc::bytes32 & rhs);
39
40 bool lessBytes32(const evmc::bytes32 & lhs, const evmc::bytes32 & rhs);
41
42 evmc::bytes32 keccakBytes(const std::uint8_t * data, std::size_t size);
43
44 evmc::bytes32 keccakString(std::string_view value);
45
46 evmc::bytes32 composeFormatHash(const evmc::bytes32 & lhs, const evmc::bytes32 & rhs);
47
48 evmc::bytes32 dimPathHash(std::uint32_t dim_id);
49
50 evmc::bytes32 concatPathHash(const evmc::bytes32 & left, const evmc::bytes32 & right);
51
52 evmc::bytes32 scalarPathLabelHash(const evmc::bytes32 & scalar_hash, const evmc::bytes32 & path_hash);
53
54 evmc::bytes32 labelHashToFormatHash(const evmc::bytes32 & label_hash);
55
56 evmc::bytes32 computeFormatHashFromLabelHashes(const std::vector<evmc::bytes32> & label_hashes);
57
58 evmc::bytes32 computeFormatHash(const std::vector<ScalarHashEntry> & hash_entries);
59
60 std::vector<ScalarLabel> canonicalizeScalarLabels(const std::vector<ScalarLabel> & labels);
61
62 bool scalarLabelsEqual(const std::vector<ScalarLabel> & lhs, const std::vector<ScalarLabel> & rhs);
63}
Definition address.hpp:17
evmc::bytes32 keccakBytes(const std::uint8_t *data, std::size_t size)
Definition format_hash.cpp:50
bool lessBytes32(const evmc::bytes32 &lhs, const evmc::bytes32 &rhs)
Definition format_hash.cpp:45
evmc::bytes32 concatPathHash(const evmc::bytes32 &left, const evmc::bytes32 &right)
Definition format_hash.cpp:93
bool equalBytes32(const evmc::bytes32 &lhs, const evmc::bytes32 &rhs)
Definition format_hash.cpp:40
evmc::bytes32 scalarPathLabelHash(const evmc::bytes32 &scalar_hash, const evmc::bytes32 &path_hash)
Definition format_hash.cpp:102
evmc::bytes32 computeFormatHash(const std::vector< ScalarHashEntry > &hash_entries)
Definition format_hash.cpp:146
evmc::bytes32 keccakString(std::string_view value)
Definition format_hash.cpp:57
bool scalarLabelsEqual(const std::vector< ScalarLabel > &lhs, const std::vector< ScalarLabel > &rhs)
Definition format_hash.cpp:214
evmc::bytes32 computeFormatHashFromLabelHashes(const std::vector< evmc::bytes32 > &label_hashes)
Definition format_hash.cpp:132
std::vector< ScalarLabel > canonicalizeScalarLabels(const std::vector< ScalarLabel > &labels)
Definition format_hash.cpp:166
evmc::bytes32 dimPathHash(std::uint32_t dim_id)
Definition format_hash.cpp:85
evmc::bytes32 labelHashToFormatHash(const evmc::bytes32 &label_hash)
Definition format_hash.cpp:111
evmc::bytes32 composeFormatHash(const evmc::bytes32 &lhs, const evmc::bytes32 &rhs)
Definition format_hash.cpp:64
Definition format_hash.hpp:33
std::vector< ScalarLabel > display_entries
Definition format_hash.hpp:35
std::vector< ScalarHashEntry > hash_entries
Definition format_hash.hpp:34
Definition format_hash.hpp:20
evmc::bytes32 scalar_hash
Definition format_hash.hpp:21
evmc::bytes32 path_hash
Definition format_hash.hpp:22
Definition format_hash.hpp:26
evmc::bytes32 path_hash
Definition format_hash.hpp:28
std::string scalar
Definition format_hash.hpp:27
std::uint32_t tail_id
Definition format_hash.hpp:29