Merge branch '453-fork-referral-percent' into develop
This commit is contained in:
commit
0735a8722e
2 changed files with 38 additions and 2 deletions
|
|
@ -20,10 +20,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <fc/smart_ref_impl.hpp>
|
#include <fc/smart_ref_impl.hpp>
|
||||||
|
|
||||||
|
#include <graphene/chain/account_evaluator.hpp>
|
||||||
#include <graphene/chain/database.hpp>
|
#include <graphene/chain/database.hpp>
|
||||||
#include <graphene/chain/exceptions.hpp>
|
#include <graphene/chain/exceptions.hpp>
|
||||||
|
#include <graphene/chain/hardfork.hpp>
|
||||||
#include <graphene/chain/internal_exceptions.hpp>
|
#include <graphene/chain/internal_exceptions.hpp>
|
||||||
#include <graphene/chain/account_evaluator.hpp>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
namespace graphene { namespace chain {
|
namespace graphene { namespace chain {
|
||||||
|
|
@ -95,6 +98,26 @@ void_result account_create_evaluator::do_evaluate( const account_create_operatio
|
||||||
|
|
||||||
object_id_type account_create_evaluator::do_apply( const account_create_operation& o )
|
object_id_type account_create_evaluator::do_apply( const account_create_operation& o )
|
||||||
{ try {
|
{ try {
|
||||||
|
|
||||||
|
uint16_t referrer_percent = o.referrer_percent;
|
||||||
|
bool has_small_percent = (
|
||||||
|
(db().head_block_time() <= HARDFORK_453_TIME)
|
||||||
|
&& (o.referrer != o.registrar )
|
||||||
|
&& (o.referrer_percent != 0 )
|
||||||
|
&& (o.referrer_percent <= 0x100)
|
||||||
|
);
|
||||||
|
|
||||||
|
if( has_small_percent )
|
||||||
|
{
|
||||||
|
if( referrer_percent >= 100 )
|
||||||
|
{
|
||||||
|
wlog( "between 100% and 0x100%: ${o}", ("o", o) );
|
||||||
|
}
|
||||||
|
referrer_percent = referrer_percent*100;
|
||||||
|
if( referrer_percent > GRAPHENE_100_PERCENT )
|
||||||
|
referrer_percent = GRAPHENE_100_PERCENT;
|
||||||
|
}
|
||||||
|
|
||||||
const auto& new_acnt_object = db().create<account_object>( [&]( account_object& obj ){
|
const auto& new_acnt_object = db().create<account_object>( [&]( account_object& obj ){
|
||||||
obj.registrar = o.registrar;
|
obj.registrar = o.registrar;
|
||||||
obj.referrer = o.referrer;
|
obj.referrer = o.referrer;
|
||||||
|
|
@ -103,7 +126,7 @@ object_id_type account_create_evaluator::do_apply( const account_create_operatio
|
||||||
auto& params = db().get_global_properties().parameters;
|
auto& params = db().get_global_properties().parameters;
|
||||||
obj.network_fee_percentage = params.network_percent_of_fee;
|
obj.network_fee_percentage = params.network_percent_of_fee;
|
||||||
obj.lifetime_referrer_fee_percentage = params.lifetime_referrer_percent_of_fee;
|
obj.lifetime_referrer_fee_percentage = params.lifetime_referrer_percent_of_fee;
|
||||||
obj.referrer_rewards_percentage = o.referrer_percent;
|
obj.referrer_rewards_percentage = referrer_percent;
|
||||||
|
|
||||||
obj.name = o.name;
|
obj.name = o.name;
|
||||||
obj.owner = o.owner;
|
obj.owner = o.owner;
|
||||||
|
|
@ -112,6 +135,15 @@ object_id_type account_create_evaluator::do_apply( const account_create_operatio
|
||||||
obj.statistics = db().create<account_statistics_object>([&](account_statistics_object& s){s.owner = obj.id;}).id;
|
obj.statistics = db().create<account_statistics_object>([&](account_statistics_object& s){s.owner = obj.id;}).id;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if( has_small_percent )
|
||||||
|
{
|
||||||
|
wlog( "Account affected by #453 registered in block ${n}: ${na} reg=${reg} ref=${ref}:${refp} ltr=${ltr}:${ltrp}",
|
||||||
|
("n", db().head_block_num()) ("na", new_acnt_object.id)
|
||||||
|
("reg", o.registrar) ("ref", o.referrer) ("ltr", new_acnt_object.lifetime_referrer)
|
||||||
|
("refp", new_acnt_object.referrer_rewards_percentage) ("ltrp", new_acnt_object.lifetime_referrer_fee_percentage) );
|
||||||
|
wlog( "Affected account object is ${o}", ("o", new_acnt_object) );
|
||||||
|
}
|
||||||
|
|
||||||
const auto& dynamic_properties = db().get_dynamic_global_properties();
|
const auto& dynamic_properties = db().get_dynamic_global_properties();
|
||||||
db().modify(dynamic_properties, [](dynamic_global_property_object& p) {
|
db().modify(dynamic_properties, [](dynamic_global_property_object& p) {
|
||||||
++p.accounts_registered_this_interval;
|
++p.accounts_registered_this_interval;
|
||||||
|
|
|
||||||
|
|
@ -32,3 +32,7 @@
|
||||||
// #445 Refund create order fees on cancel
|
// #445 Refund create order fees on cancel
|
||||||
// 2015-12-02 17:00:00 UTC / 12:00:00 EST
|
// 2015-12-02 17:00:00 UTC / 12:00:00 EST
|
||||||
#define HARDFORK_445_TIME (fc::time_point_sec( 1449075600 ))
|
#define HARDFORK_445_TIME (fc::time_point_sec( 1449075600 ))
|
||||||
|
|
||||||
|
// #453 Hardfork to retroactively correct referral percentages
|
||||||
|
// 2015-12-02 17:00:00 UTC / 12:00:00 EST
|
||||||
|
#define HARDFORK_453_TIME (fc::time_point_sec( 1449075600 ))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue