Scorum
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
rewards_initializator.cpp
Go to the documentation of this file.
4 
11 
16 
18 
19 namespace scorum {
20 namespace chain {
21 namespace genesis {
22 
24 {
25  FC_ASSERT(ctx.genesis_state().rewards_supply.symbol() == SCORUM_SYMBOL);
26 
27  create_scr_reward_fund(ctx);
28  create_sp_reward_fund(ctx);
29  create_balancers(ctx);
30  create_fund_budget(ctx);
31  create_witness_reward_in_sp_migration(ctx);
32 }
33 
34 void rewards_initializator_impl::create_scr_reward_fund(initializator_context& ctx)
35 {
36  content_reward_fund_scr_service_i& reward_fund_service = ctx.services().content_reward_fund_scr_service();
37  dynamic_global_property_service_i& dgp_service = ctx.services().dynamic_global_property_service();
38 
39  FC_ASSERT(!reward_fund_service.is_exists());
40 
41  reward_fund_service.create([&](content_reward_fund_scr_object& rfo) {
42  rfo.last_update = dgp_service.head_block_time();
43  rfo.author_reward_curve = curve_id::linear;
44  rfo.curation_reward_curve = curve_id::square_root;
45  });
46 }
47 
48 void rewards_initializator_impl::create_sp_reward_fund(initializator_context& ctx)
49 {
50  content_reward_fund_sp_service_i& reward_fund_service = ctx.services().content_reward_fund_sp_service();
51  dynamic_global_property_service_i& dgp_service = ctx.services().dynamic_global_property_service();
52 
53  FC_ASSERT(!reward_fund_service.is_exists());
54 
55  reward_fund_service.create([&](content_reward_fund_sp_object& rfo) {
56  rfo.last_update = dgp_service.head_block_time();
57  rfo.author_reward_curve = curve_id::linear;
58  rfo.curation_reward_curve = curve_id::square_root;
59  });
60 }
61 
62 void rewards_initializator_impl::create_balancers(initializator_context& ctx)
63 {
64  content_reward_scr_service_i& content_reward_service = ctx.services().content_reward_scr_service();
65  voters_reward_scr_service_i& voters_reward_scr_service = ctx.services().voters_reward_scr_service();
66  voters_reward_sp_service_i& voters_reward_sp_service = ctx.services().voters_reward_sp_service();
67 
68  FC_ASSERT(!content_reward_service.is_exists());
69  FC_ASSERT(!voters_reward_scr_service.is_exists());
70  FC_ASSERT(!voters_reward_sp_service.is_exists());
71 
72  content_reward_service.create([&](content_reward_balancer_scr_object&) {});
73  voters_reward_scr_service.create([&](voters_reward_balancer_scr_object&) {});
74  voters_reward_sp_service.create([&](voters_reward_balancer_sp_object&) {});
75 }
76 
77 void rewards_initializator_impl::create_fund_budget(initializator_context& ctx)
78 {
79  fund_budget_service_i& budget_service = ctx.services().fund_budget_service();
80  dba::db_accessor<chain_property_object>& chain_dba = ctx.dba_factory().get_dba<chain_property_object>();
81 
82  FC_ASSERT(!budget_service.is_exists());
83 
84  auto balance = asset(ctx.genesis_state().rewards_supply.amount, SP_SYMBOL);
85 
86  time_point_sec start_date = chain_dba.get().genesis_time;
87  fc::time_point deadline = start_date + fc::days(SCORUM_REWARDS_INITIAL_SUPPLY_PERIOD_IN_DAYS);
88 
89  budget_service.create_budget(balance, start_date, deadline);
90 }
91 
92 void rewards_initializator_impl::create_witness_reward_in_sp_migration(initializator_context& ctx)
93 {
94  witness_reward_in_sp_migration_service_i& witness_reward_in_sp_migration_service
95  = ctx.services().witness_reward_in_sp_migration_service();
96 
97  FC_ASSERT(!witness_reward_in_sp_migration_service.is_exists());
98 
99  witness_reward_in_sp_migration_service.create([&](witness_reward_in_sp_migration_object&) {});
100 }
101 }
102 }
103 }
const genesis_state_type & genesis_state() const
data_service_factory_i & services() const
#define SP_SYMBOL
Definition: config.hpp:104
#define SCORUM_SYMBOL
Definition: config.hpp:102
#define SCORUM_REWARDS_INITIAL_SUPPLY_PERIOD_IN_DAYS
Definition: config.hpp:142
reward_balancer_object< content_reward_balancer_scr_object_type, SCORUM_SYMBOL > content_reward_balancer_scr_object
reward_fund_object< content_reward_fund_sp_object_type, SP_SYMBOL > content_reward_fund_sp_object
reward_balancer_object< voters_reward_balancer_sp_object_type, SP_SYMBOL > voters_reward_balancer_sp_object
reward_balancer_object< voters_reward_balancer_scr_object_type, SCORUM_SYMBOL > voters_reward_balancer_scr_object
Definition: asset.cpp:15
virtual bool is_exists() const =0
virtual const object_type & create(const modifier_type &modifier)=0
virtual fc::time_point_sec head_block_time() const =0
asset_symbol_type symbol() const
Definition: asset.hpp:32