COOPENOMICS  v1
Кооперативная Экономика
global_state.hpp
См. документацию.
1#pragma once
2
3using namespace eosio;
4using std::string;
5
6namespace Capital {
7
11 struct config {
13 double expense_pool_percent = 100;
15 uint32_t voting_period_in_days = 7;
16 double authors_voting_percent = 38.2;
18
19 // Параметры геймификации
21 uint64_t level_depth_base = 10000000000;
24 };
25
34 struct [[eosio::table, eosio::contract(CAPITAL)]] global_state {
35 eosio::name coopname;
36 asset global_available_invest_pool = asset(0, _root_govern_symbol);
37 asset program_membership_funded = asset(0, _root_govern_symbol);
38 asset program_membership_available = asset(0, _root_govern_symbol);
39 asset program_membership_distributed = asset(0, _root_govern_symbol);
41
43
44 uint64_t primary_key() const { return coopname.value; }
45 };
46
47 typedef eosio::multi_index<"state"_n, global_state> global_state_table;
48
49
50
51
52namespace State {
58inline void update_global_state(const global_state& gs){
59 global_state_table global_state_inst(_capital, _capital.value);
60 auto itr = global_state_inst.find(gs.coopname.value);
61 check(itr != global_state_inst.end(), "Глобальное состояние не найдено");
62 global_state_inst.modify(itr, _capital, [&](auto& s) {
63 s = gs;
64 });
65}
66
72inline global_state get_global_state(name coopname) {
73 global_state_table global_state_inst(_capital, _capital.value);
74 auto itr = global_state_inst.find(coopname.value);
75 eosio::check(itr != global_state_inst.end(), "Контракт не инициализирован");
76 return global_state(*itr);
77}
78
84inline void is_initialized(name coopname) {
85 global_state_table global_state_inst(_capital, _capital.value);
86 auto itr = global_state_inst.find(coopname.value);
87 eosio::check(itr != global_state_inst.end(), "Контракт не инициализирован");
88}
89}// namespace State
90
91}// namespace Capital
static constexpr eosio::name _capital
Definition: consts.hpp:150
static constexpr eosio::symbol _root_govern_symbol
Definition: consts.hpp:209
contract
Definition: eosio.msig_tests.cpp:977
global_state get_global_state(name coopname)
Получает текущее глобальное состояние.
Definition: global_state.hpp:72
void is_initialized(name coopname)
Проверяет что контракт инициализирован.
Definition: global_state.hpp:84
void update_global_state(const global_state &gs)
Обновляет глобальное состояние новыми значениями.
Definition: global_state.hpp:58
Definition: balances.cpp:6
eosio::multi_index<"state"_n, global_state > global_state_table
Таблица для хранения глобального состояния.
Definition: global_state.hpp:47
Definition: eosio.msig.hpp:34
Конфигурация контракта, управляемая пользователем.
Definition: global_state.hpp:11
double energy_decay_rate_per_day
Скорость уменьшения энергии в день (по умолчанию 1.11% для снижения за 90 дней)
Definition: global_state.hpp:20
uint32_t voting_period_in_days
Период голосования в днях (по умолчанию 7)
Definition: global_state.hpp:15
double creators_voting_percent
Процент премий создателей для голосования (по умолчанию)
Definition: global_state.hpp:17
double authors_voting_percent
Процент премий авторов для голосования (по умолчанию)
Definition: global_state.hpp:16
double coordinator_bonus_percent
Процент премий координатора от инвестиций (по умолчанию 4%)
Definition: global_state.hpp:12
double expense_pool_percent
Процент инвестиций в пул расходов (по умолчанию 1.0)
Definition: global_state.hpp:13
double energy_gain_coefficient
Коэффициент прироста энергии от вкладов (по умолчанию 10.0)
Definition: global_state.hpp:23
uint32_t coordinator_invite_validity_days
Срок действия приглашения координатора (по умолчанию 30 дней)
Definition: global_state.hpp:14
uint64_t level_depth_base
Базовая сумма вкладов для уровня 1 (по умолчанию 10000 RUB = 10000000000 микротокенов)
Definition: global_state.hpp:21
double level_growth_coefficient
Коэффициент роста требований для следующих уровней (по умолчанию 1.5)
Definition: global_state.hpp:22
Таблица глобального состояния хранит общие данные контракта благороста.
Definition: global_state.hpp:34
eosio::name coopname
Имя кооператива
Definition: global_state.hpp:35
double program_membership_cumulative_reward_per_share
Накопительное вознаграждение на долю в членских взносах
Definition: global_state.hpp:40
config config
Управляемая конфигурация контракта
Definition: global_state.hpp:42
uint64_t primary_key() const
Первичный ключ (1)
Definition: global_state.hpp:44