14#include <unordered_map>
17#pragma GCC diagnostic push
18#pragma GCC diagnostic ignored "-Wunused-parameter"
19#include <boost/multiprecision/cpp_int.hpp>
21#pragma GCC diagnostic pop
27#define DEV_IGNORE_EXCEPTIONS(X) \
33#define DEV_IF_THROWS(X) \
39using namespace boost::multiprecision::literals;
46using bytes = std::vector<::byte>;
63 if (&
_c ==
this)
return *
this;
92using bigint = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<>>;
93using u64 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
94 64, 64, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked,
void>>;
95using u128 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
96 128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked,
void>>;
97using u256 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
98 256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked,
void>>;
99using s256 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
100 256, 256, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked,
void>>;
101using u160 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
102 160, 160, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked,
void>>;
103using s160 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
104 160, 160, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked,
void>>;
105using u512 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
106 512, 512, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked,
void>>;
107using s512 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
108 512, 512, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked,
void>>;
158 std::chrono::high_resolution_clock::time_point
m_t;
167 std::chrono::high_resolution_clock::duration
duration()
const {
168 return std::chrono::high_resolution_clock::now() -
m_t;
171 return std::chrono::duration_cast<std::chrono::microseconds>(
duration()).count() / 1000000.0;
173 void restart() {
m_t = std::chrono::high_resolution_clock::now(); }
176 std::chrono::high_resolution_clock::time_point
m_t;
179#define DEV_TIMED(S) \
180 for (::std::pair<::dev::TimerHelper, bool> __eth_t(S, true); __eth_t.second; __eth_t.second = false)
181#define DEV_TIMED_SCOPE(S) ::dev::TimerHelper __eth_t(S)
183#define DEV_TIMED_FUNCTION DEV_TIMED_SCOPE(__FUNCSIG__)
185#define DEV_TIMED_FUNCTION DEV_TIMED_SCOPE(__PRETTY_FUNCTION__)
188#define DEV_TIMED_ABOVE(S, MS) \
189 for (::std::pair<::dev::TimerHelper, bool> __eth_t(::dev::TimerHelper(S, MS), true); __eth_t.second; \
190 __eth_t.second = false)
191#define DEV_TIMED_SCOPE_ABOVE(S, MS) ::dev::TimerHelper __eth_t(S, MS)
193#define DEV_TIMED_FUNCTION_ABOVE(MS) DEV_TIMED_SCOPE_ABOVE(__FUNCSIG__, MS)
195#define DEV_TIMED_FUNCTION_ABOVE(MS) DEV_TIMED_SCOPE_ABOVE(__PRETTY_FUNCTION__, MS)
198#define DEV_UNUSED __attribute__((unused))
RAII utility class whose destructor calls a given function.
Definition Common.h:141
ScopeGuard(std::function< void(void)> _f)
Definition Common.h:143
std::function< void(void)> m_f
Definition Common.h:147
~ScopeGuard()
Definition Common.h:144
Simple scope-based timer helper.
Definition Common.h:151
std::chrono::high_resolution_clock::time_point m_t
Definition Common.h:158
TimerHelper(std::string const &_id, unsigned _msReportWhenGreater=0)
Definition Common.h:153
std::string m_id
Definition Common.h:159
~TimerHelper()
Definition Common.cpp:20
unsigned m_ms
Definition Common.h:160
Timer()
Definition Common.h:165
double elapsed() const
Definition Common.h:170
std::chrono::high_resolution_clock::duration duration() const
Definition Common.h:167
std::chrono::high_resolution_clock::time_point m_t
Definition Common.h:176
void restart()
Definition Common.h:173
secure_vector(size_t _size)
Definition Common.h:55
std::vector< T > const & makeInsecure() const
Definition Common.h:73
bool empty() const
Definition Common.h:81
vector_ref< T > ref()
Definition Common.h:77
secure_vector(size_t _size, T _item)
Definition Common.h:56
void swap(secure_vector< T > &io_other)
Definition Common.h:83
void clear()
Definition Common.h:75
std::vector< T > m_data
Definition Common.h:86
std::vector< T > & writable()
Definition Common.h:69
secure_vector(secure_vector< T > const &)=default
secure_vector(std::vector< T > const &_c)
Definition Common.h:57
secure_vector(vector_ref< T > _c)
Definition Common.h:58
secure_vector()
Definition Common.h:53
size_t size() const
Definition Common.h:80
vector_ref< T const > ref() const
Definition Common.h:78
secure_vector(vector_ref< const T > _c)
Definition Common.h:59
~secure_vector()
Definition Common.h:60
secure_vector< T > & operator=(secure_vector< T > const &_c)
Definition Common.h:62
Definition vector_ref.h:23
uint8_t byte
Definition Common.h:25
u256 exp10< 0 >()
Definition Common.h:136
std::vector< std::string > strings
Definition Common.h:125
void assertThrowAux(bool _condition, ::std::string const &_errorDescription, unsigned _line, char const *_file, char const *_function)
Definition Assertions.h:53
std::map< bytes, bytes > BytesMap
Definition Common.h:116
std::map< u256, u256 > u256Map
Definition Common.h:117
std::set< u256 > u256Set
Definition Common.h:111
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u128
Definition Common.h:96
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 512, 512, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void > > s512
Definition Common.h:108
std::map< std::string, std::string > StringMap
Definition Common.h:115
std::string const EmptyString
Definition Common.cpp:18
std::vector<::byte > bytes
Definition Common.h:46
std::unordered_map< u256, u256 > u256HashMap
Definition Common.h:122
std::set< u160 > u160Set
Definition Common.h:112
std::vector< u256 > u256s
Definition Common.h:109
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 256, 256, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void > > s256
Definition Common.h:100
std::map< bytes, bytes > HexMap
Definition Common.h:118
boost::multiprecision::number< boost::multiprecision::cpp_int_backend<> > bigint
Definition Common.h:92
int64_t utcTime()
Get the current time in seconds since the epoch in UTC.
Definition Common.cpp:27
std::vector< u160 > u160s
Definition Common.h:110
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 64, 64, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u64
Definition Common.h:94
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u256
Definition Common.h:98
u256 exp10()
Definition Common.h:131
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 160, 160, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u160
Definition Common.h:102
std::unordered_map< std::string, std::string > StringHashMap
Definition Common.h:121
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 512, 512, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u512
Definition Common.h:106
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 160, 160, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void > > s160
Definition Common.h:104
static const auto c_steadyClockMin
Definition Common.h:203
bytes const NullBytes
Definition Common.cpp:17
std::hash for asio::adress
Definition FixedHash.h:483