diff --git a/rai/core/core.cpp b/rai/core/core.cpp index d5ed9a21..1ef0ccd3 100644 --- a/rai/core/core.cpp +++ b/rai/core/core.cpp @@ -822,8 +822,7 @@ bootstrap (*service_a, port_a, *this), processor (*this), transactions (*this), peers (network.endpoint ()), -service (processor_a), -scale ("100000000000000000000") +service (processor_a) { if (!init_a.error ()) { @@ -3828,16 +3827,6 @@ bool rai::publish_req::operator == (rai::publish_req const & other_a) const return work == other_a.work && *block == *other_a.block; } -uint64_t rai::client::scale_down (rai::uint128_t const & amount_a) -{ - return (amount_a / scale).convert_to (); -} - -rai::uint128_t rai::client::scale_up (uint64_t amount_a) -{ - return scale * amount_a; -} - rai::work::work () : entry_requirement (8 * 1024), iteration_requirement (8 * 1024) diff --git a/rai/core/core.hpp b/rai/core/core.hpp index ee7359e4..4746b6ec 100644 --- a/rai/core/core.hpp +++ b/rai/core/core.hpp @@ -603,8 +603,6 @@ namespace rai { std::shared_ptr shared (); bool is_representative (); void representative_vote (rai::election &, rai::block const &); - uint64_t scale_down (rai::uint128_t const &); - rai::uint128_t scale_up (uint64_t); rai::log log; rai::address representative; rai::block_store store; @@ -618,7 +616,6 @@ namespace rai { rai::transactions transactions; rai::peer_container peers; rai::processor_service & service; - rai::uint128_t scale; }; class system { diff --git a/rai/qt/qt.cpp b/rai/qt/qt.cpp index 421ea2dc..0b4c5ae1 100644 --- a/rai/qt/qt.cpp +++ b/rai/qt/qt.cpp @@ -65,7 +65,8 @@ peers_layout (new QVBoxLayout), peers_model (new QStringListModel), peers_view (new QListView), peers_refresh (new QPushButton ("Refresh")), -peers_back (new QPushButton ("Back")) +peers_back (new QPushButton ("Back")), +scale ("100000000000000000000") { send_blocks_layout->addWidget (send_address_label); send_blocks_layout->addWidget (send_address); @@ -276,8 +277,8 @@ peers_back (new QPushButton ("Back")) try { auto scaled (std::stoull (coins_text_narrow)); - rai::uint128_t coins (client_m.scale_up (scaled)); - if (coins / client_m.scale == scaled) + rai::uint128_t coins (scale_up (scaled)); + if (coins / scale == scaled) { QPalette palette; palette.setColor (QPalette::Text, Qt::black); @@ -393,7 +394,7 @@ void rai_qt::client::refresh_ledger () std::string account; i->first.encode_base58check (account); items.push_back (new QStandardItem (QString (account.c_str ()))); - items.push_back (new QStandardItem (QString (std::to_string (client_m.scale_down (client_m.ledger.balance (i->second.hash))).c_str ()))); + items.push_back (new QStandardItem (QString (std::to_string (scale_down (client_m.ledger.balance (i->second.hash))).c_str ()))); std::string block_hash; i->second.hash.encode_hex (block_hash); items.push_back (new QStandardItem (QString (block_hash.c_str ()))); @@ -414,11 +415,11 @@ void rai_qt::client::refresh_wallet () items.push_back (new QStandardItem (QString (account.c_str ()))); auto account_balance (client_m.ledger.account_balance (key)); balance += account_balance; - auto balance (std::to_string (client_m.scale_down (account_balance))); + auto balance (std::to_string (scale_down (account_balance))); items.push_back (new QStandardItem (balance.c_str ())); wallet_model->appendRow (items); } - balance_label->setText (QString ((std::string ("Balance: ") + std::to_string (client_m.scale_down (balance))).c_str ())); + balance_label->setText (QString ((std::string ("Balance: ") + std::to_string (scale_down (balance))).c_str ())); } rai_qt::client::~client () @@ -543,4 +544,14 @@ void rai_qt::enter_password::update_label () valid->setStyleSheet ("QLabel { color: red }"); valid->setText ("Password: INVALID"); } +} + +uint64_t rai_qt::client::scale_down (rai::uint128_t const & amount_a) +{ + return (amount_a / scale).convert_to (); +} + +rai::uint128_t rai_qt::client::scale_up (uint64_t amount_a) +{ + return scale * amount_a; } \ No newline at end of file diff --git a/rai/qt/qt.hpp b/rai/qt/qt.hpp index 020cb407..997ab2f9 100644 --- a/rai/qt/qt.hpp +++ b/rai/qt/qt.hpp @@ -117,6 +117,9 @@ namespace rai_qt { void pop_main_stack (); void push_main_stack (QWidget *); + rai::uint128_t const scale; + uint64_t scale_down (rai::uint128_t const &); + rai::uint128_t scale_up (uint64_t); private: void refresh_wallet (); void refresh_ledger (); diff --git a/rai/qt_test/qt.cpp b/rai/qt_test/qt.cpp index f10d7b0c..46e030d3 100644 --- a/rai/qt_test/qt.cpp +++ b/rai/qt_test/qt.cpp @@ -127,7 +127,7 @@ TEST (client, send) system.service->poll_one (); system.processor.poll_one (); } - ASSERT_EQ (2 * client.client_m.scale, client.client_m.ledger.account_balance (key1.pub)); + ASSERT_EQ (2 * client.scale, client.client_m.ledger.account_balance (key1.pub)); QTest::mouseClick (client.send_blocks_back, Qt::LeftButton); QTest::mouseClick (client.show_ledger, Qt::LeftButton); QTest::mouseClick (client.ledger_refresh, Qt::LeftButton); @@ -135,4 +135,30 @@ TEST (client, send) ASSERT_EQ (3, client.ledger_model->columnCount ()); auto item (client.ledger_model->itemFromIndex (client.ledger_model->index (1, 1))); ASSERT_EQ ("2", item->text ().toStdString ()); +} + +TEST (client, scaling) +{ + rai::system system (24000, 1); + int argc (0); + QApplication application (argc, nullptr); + rai_qt::client client (application, *system.clients [0]); + auto max (std::numeric_limits ::max ()); + auto down (client.scale_down (max)); + auto up1 (client.scale_up (down)); + auto up2 (client.scale_up (down - 1)); + ASSERT_LT (up2, up1); + ASSERT_EQ (up1 - up2, client.scale); +} + +TEST (client, scale_num) +{ + rai::system system (24000, 1); + int argc (0); + QApplication application (argc, nullptr); + rai_qt::client client (application, *system.clients [0]); + rai::uint128_t num ("100000000000000000000000000000000000000"); + auto down (client.scale_down (num)); + auto up (client.scale_up (down)); + ASSERT_EQ (num, up); } \ No newline at end of file diff --git a/rai/test/client.cpp b/rai/test/client.cpp index eb99b6f3..61e2ce89 100644 --- a/rai/test/client.cpp +++ b/rai/test/client.cpp @@ -172,26 +172,6 @@ TEST (client, multi_account_send_atomicness) system.clients [0]->transactions.send (key1.pub, std::numeric_limits::max () / 2 + std::numeric_limits::max () / 4); } -TEST (client, scaling) -{ - rai::system system (24000, 1); - auto max (std::numeric_limits ::max ()); - auto down (system.clients [0]->scale_down (max)); - auto up1 (system.clients [0]->scale_up (down)); - auto up2 (system.clients [0]->scale_up (down - 1)); - ASSERT_LT (up2, up1); - ASSERT_EQ (up1 - up2, system.clients [0]->scale); -} - -TEST (client, scale_num) -{ - rai::system system (24000, 1); - rai::uint128_t num ("100000000000000000000000000000000000000"); - auto down (system.clients [0]->scale_down (num)); - auto up (system.clients [0]->scale_up (down)); - ASSERT_EQ (num, up); -} - TEST (client, receive_gap) { rai::system system (24000, 1);