Paweł Bylica
8 years ago
5 changed files with 1 additions and 344 deletions
@ -1,142 +0,0 @@ |
|||
/*
|
|||
This file is part of cpp-ethereum. |
|||
|
|||
cpp-ethereum is free software: you can redistribute it and/or modify |
|||
it under the terms of the GNU General Public License as published by |
|||
the Free Software Foundation, either version 3 of the License, or |
|||
(at your option) any later version. |
|||
|
|||
cpp-ethereum is distributed in the hope that it will be useful, |
|||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
GNU General Public License for more details. |
|||
|
|||
You should have received a copy of the GNU General Public License |
|||
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
/** @file Common.cpp
|
|||
* @author Gav Wood <i@gavwood.com> |
|||
* @date 2014 |
|||
*/ |
|||
|
|||
#include "Common.h" |
|||
#include <boost/algorithm/string/case_conv.hpp> |
|||
#include <libdevcore/Terminal.h> |
|||
#include <libdevcore/CommonData.h> |
|||
#include <libdevcore/CommonIO.h> |
|||
#include <libdevcore/Log.h> |
|||
#include <libdevcore/SHA3.h> |
|||
#include "Exceptions.h" |
|||
#include "Params.h" |
|||
#include "BlockInfo.h" |
|||
using namespace std; |
|||
using namespace dev; |
|||
using namespace dev::eth; |
|||
|
|||
namespace dev |
|||
{ |
|||
namespace eth |
|||
{ |
|||
|
|||
const unsigned c_protocolVersion = 61; |
|||
const unsigned c_minorProtocolVersion = 2; |
|||
const unsigned c_databaseBaseVersion = 9; |
|||
const unsigned c_databaseVersionModifier = 0; |
|||
|
|||
const unsigned c_databaseVersion = c_databaseBaseVersion + (c_databaseVersionModifier << 8) + (23 << 9); |
|||
|
|||
Address toAddress(std::string const& _s) |
|||
{ |
|||
try |
|||
{ |
|||
auto b = fromHex(_s.substr(0, 2) == "0x" ? _s.substr(2) : _s, WhenError::Throw); |
|||
if (b.size() == 20) |
|||
return Address(b); |
|||
} |
|||
catch (BadHexCharacter&) {} |
|||
BOOST_THROW_EXCEPTION(InvalidAddress()); |
|||
} |
|||
|
|||
|
|||
vector<pair<u256, string>> const& units() |
|||
{ |
|||
static const vector<pair<u256, string>> s_units = |
|||
{ |
|||
{exp10<54>(), "Uether"}, |
|||
{exp10<51>(), "Vether"}, |
|||
{exp10<48>(), "Dether"}, |
|||
{exp10<45>(), "Nether"}, |
|||
{exp10<42>(), "Yether"}, |
|||
{exp10<39>(), "Zether"}, |
|||
{exp10<36>(), "Eether"}, |
|||
{exp10<33>(), "Pether"}, |
|||
{exp10<30>(), "Tether"}, |
|||
{exp10<27>(), "Gether"}, |
|||
{exp10<24>(), "Mether"}, |
|||
{exp10<21>(), "grand"}, |
|||
{exp10<18>(), "ether"}, |
|||
{exp10<15>(), "finney"}, |
|||
{exp10<12>(), "szabo"}, |
|||
{exp10<9>(), "Gwei"}, |
|||
{exp10<6>(), "Mwei"}, |
|||
{exp10<3>(), "Kwei"}, |
|||
{exp10<0>(), "wei"} |
|||
}; |
|||
|
|||
return s_units; |
|||
} |
|||
|
|||
std::string formatBalance(bigint const& _b) |
|||
{ |
|||
ostringstream ret; |
|||
u256 b; |
|||
if (_b < 0) |
|||
{ |
|||
ret << "-"; |
|||
b = (u256)-_b; |
|||
} |
|||
else |
|||
b = (u256)_b; |
|||
|
|||
if (b > units()[0].first * 1000) |
|||
{ |
|||
ret << (b / units()[0].first) << " " << units()[0].second; |
|||
return ret.str(); |
|||
} |
|||
ret << setprecision(5); |
|||
for (auto const& i: units()) |
|||
if (i.first != 1 && b >= i.first * 1) |
|||
{ |
|||
ret << (double(b / (i.first / 1000)) / 1000.0) << " " << i.second; |
|||
return ret.str(); |
|||
} |
|||
ret << b << " wei"; |
|||
return ret.str(); |
|||
} |
|||
|
|||
static void badBlockInfo(BlockInfo const& _bi, string const& _err) |
|||
{ |
|||
string const c_line = EthReset EthOnMaroon + string(80, ' ') + EthReset; |
|||
string const c_border = EthReset EthOnMaroon + string(2, ' ') + EthReset EthMaroonBold; |
|||
string const c_space = c_border + string(76, ' ') + c_border + EthReset; |
|||
stringstream ss; |
|||
ss << c_line << endl; |
|||
ss << c_space << endl; |
|||
ss << c_border + " Import Failure " + _err + string(max<int>(0, 53 - _err.size()), ' ') + " " + c_border << endl; |
|||
ss << c_space << endl; |
|||
string bin = toString(_bi.number()); |
|||
ss << c_border + (" Guru Meditation #" + string(max<int>(0, 8 - bin.size()), '0') + bin + "." + _bi.hash().abridged() + " ") + c_border << endl; |
|||
ss << c_space << endl; |
|||
ss << c_line; |
|||
cwarn << "\n" + ss.str(); |
|||
} |
|||
|
|||
void badBlock(bytesConstRef _block, string const& _err) |
|||
{ |
|||
BlockInfo bi; |
|||
DEV_IGNORE_EXCEPTIONS(bi = BlockInfo(_block, CheckNothing)); |
|||
badBlockInfo(bi, _err); |
|||
} |
|||
|
|||
} |
|||
} |
Loading…
Reference in new issue