Scorum
accounts_initializator.cpp
Go to the documentation of this file.
3 
5 
7 
9 
10 #include <fc/exception/exception.hpp>
11 
12 namespace scorum {
13 namespace chain {
14 namespace genesis {
15 
18 
20 {
21  account_service_i& account_service = ctx.services().account_service();
22 
23  check_accounts_supply(ctx);
24 
25  for (auto& account : ctx.genesis_state().accounts)
26  {
28 
29  account_service.create_initial_account(account.name, account.public_key, account.scr_amount,
30  R"({"created_at": "GENESIS"})");
31  }
32 }
33 
34 void accounts_initializator_impl::check_accounts_supply(initializator_context& ctx)
35 {
36  asset accounts_supply = ctx.genesis_state().accounts_supply;
37 
38  FC_ASSERT(accounts_supply.symbol() == SCORUM_SYMBOL);
39 
40  for (auto& account : ctx.genesis_state().accounts)
41  {
42  FC_ASSERT(!account.name.empty(), "Account 'name' should not be empty.");
43 
44  FC_ASSERT(account.scr_amount.symbol() == SCORUM_SYMBOL, "Invalid asset symbol for '${1}'.",
45  ("1", account.name));
46 
47  accounts_supply -= account.scr_amount;
48  }
49 
50  FC_ASSERT(accounts_supply.amount == (share_value_type)0, "'accounts_supply' must be sum of all accounts supply.");
51 }
52 }
53 }
54 }
const genesis_state_type & genesis_state() const
data_service_factory_i & services() const
#define SCORUM_SYMBOL
Definition: config.hpp:102
int64_t share_value_type
Definition: types.hpp:72
void validate_account_name(const std::string &name)
Definition: base.hpp:15
Definition: asset.cpp:15
virtual const account_object & create_initial_account(const account_name_type &new_account_name, const public_key_type &memo_key, const asset &balance_in_scorums, const std::string &json_metadata)=0
std::vector< account_type > accounts
asset_symbol_type symbol() const
Definition: asset.hpp:32
share_type amount
Definition: asset.hpp:31