From 2e3cd4a75cd684cf71bea30468e460f2ca562166 Mon Sep 17 00:00:00 2001 From: Roman Olearski Date: Sat, 8 Oct 2016 22:25:18 +0200 Subject: [PATCH] Improving genesis block for PeerPlays according http://syncad.storm.pl:56780/blocktrades/graphene/ improving, refactoring code - resigning from unsafe static_cast, implementing constructor copiny from base class --- .../generate_genesis/generate_genesis.cpp | 19 ++----------------- .../generate_genesis_plugin.hpp | 12 ++++++++++++ 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/libraries/plugins/generate_genesis/generate_genesis.cpp b/libraries/plugins/generate_genesis/generate_genesis.cpp index e11e89a6..e4842828 100644 --- a/libraries/plugins/generate_genesis/generate_genesis.cpp +++ b/libraries/plugins/generate_genesis/generate_genesis.cpp @@ -119,15 +119,6 @@ bool is_exchange(const std::string& account_name) account_name == "btc38btsxwithdrawal"; } -class my_account_balance_object : public graphene::chain::account_balance_object -{ -public: - graphene::chain::share_type initial_balance; - graphene::chain::share_type orders; - graphene::chain::share_type collaterals; - graphene::chain::share_type sharedrop; -}; - void generate_genesis_plugin::generate_snapshot() { ilog("generate genesis plugin: generating snapshot now"); @@ -144,8 +135,8 @@ void generate_genesis_plugin::generate_snapshot() for (auto balance_iter = balance_index.begin(); balance_iter != balance_index.end() && balance_iter->asset_type == graphene::chain::asset_id_type(); ++balance_iter) if (!is_special_account(balance_iter->owner) && !is_exchange(balance_iter->owner(d).name)) { - // todo : can static cast be dangerous : consider using CRTP idiom - db_balances.emplace_back(static_cast(*balance_iter)); + // it is possible due to constructor + db_balances.emplace_back(*balance_iter); } // walk through the balances; this index has the largest BTS balances first @@ -210,12 +201,6 @@ void generate_genesis_plugin::generate_snapshot() effective_total_bts_balance += balance_iter->balance; } - // cosmetic, otherwise mess in tail of log - for (auto iter = balance_iter; iter != db_balances.end(); ++iter) - { - iter->sharedrop = 0; - } - // our iterator is just after the smallest balance we will process, // walk it backwards towards the larger balances, distributing the sharedrop as we go graphene::chain::share_type remaining_amount_to_distribute = total_amount_to_distribute; diff --git a/libraries/plugins/generate_genesis/include/graphene/generate_genesis/generate_genesis_plugin.hpp b/libraries/plugins/generate_genesis/include/graphene/generate_genesis/generate_genesis_plugin.hpp index d91dd900..ffa84411 100644 --- a/libraries/plugins/generate_genesis/include/graphene/generate_genesis/generate_genesis_plugin.hpp +++ b/libraries/plugins/generate_genesis/include/graphene/generate_genesis/generate_genesis_plugin.hpp @@ -56,4 +56,16 @@ private: std::string _genesis_filename; }; +class my_account_balance_object : public graphene::chain::account_balance_object +{ +public: + // constructor copying from base class + my_account_balance_object(const graphene::chain::account_balance_object& abo) : graphene::chain::account_balance_object(abo) {} + + graphene::chain::share_type initial_balance; + graphene::chain::share_type orders; + graphene::chain::share_type collaterals; + graphene::chain::share_type sharedrop; +}; + } } //graphene::generate_genesis_plugin