|
COOPENOMICS
v1
Кооперативная Экономика
|
Классы | |
| struct | LevelProgress |
Функции | |
| uint64_t | calculate_level_requirement (uint32_t level, const Capital::config &config) |
| Рассчитывает требуемую сумму вкладов для достижения указанного уровня Подробнее... | |
| double | calculate_energy_gain (eosio::asset contribution_amount, uint32_t current_level, const Capital::config &config) |
| Рассчитывает прирост энергии от вклада Подробнее... | |
| LevelProgress | apply_contribution_to_levels (double amount_minor, uint32_t start_level, double start_energy, const Capital::config &config) |
| Разносит вклад по уровням, СПИСЫВАЯ требование каждого пройденного. Подробнее... | |
| void | update_energy_with_decay (eosio::name coopname, uint64_t contributor_id) |
| Обновляет энергию участника с учетом естественного снижения (decay) Подробнее... | |
| void | add_contribution_and_check_levelup (eosio::name coopname, uint64_t contributor_id, double amount_minor) |
| Начисляет вклад участнику, разнося его по уровням. Подробнее... | |
| void | update_gamification_from_segment (eosio::name coopname, uint64_t contributor_id, const Capital::Segments::segment &segment) |
| Обновляет геймификацию (уровень и энергию) на основе вкладов из сегмента Подробнее... | |
Переменные | |
| static constexpr double | ENERGY_PER_LEVEL = 100.0 |
| Энергия, необходимая для перехода на следующий уровень Подробнее... | |
|
inline |
Начисляет вклад участнику, разнося его по уровням.
Начисляет вклад участнику и проверяет переход на новые уровни
Пришло на смену add_energy_and_check_levelup(energy_gain): та считала начисление один раз от требования стартового уровня и делила накопленную энергию на сотню линейно, из-за чего коэффициент роста не работал и один крупный вклад давал кратно больше уровней, чем положено.
| amount_minor | Сумма вклада в минорных единицах |
| coopname | Имя кооператива |
| contributor_id | ID участника |
| amount_minor | Сумма вклада в минорных единицах |
|
inline |
Разносит вклад по уровням, СПИСЫВАЯ требование каждого пройденного.
Разносит вклад по уровням, списывая требование каждого пройденного
Раньше начисление считалось один раз от требования стартового уровня, а накопленная энергия делилась на сотню линейно: уровни росли так, будто требование не меняется. Из-за этого один крупный вклад давал кратно больше уровней, чем положено — при базе 10 000 ₽ и коэффициенте роста 1.5 взнос в миллион поднимал на сотню уровней вместо десяти, и коэффициент роста фактически не работал вовсе.
Теперь вклад расходуется последовательно: сперва добирается текущий уровень, затем каждый следующий по своему — уже большему — требованию.
| amount_minor | Сумма вклада в минорных единицах (после коэффициента прироста) |
| start_level | Уровень до начисления (нумерация с единицы) |
| start_energy | Накопленная энергия на этом уровне (0..100) |
| amount_minor | Сумма вклада в минорных единицах |
| start_level | Уровень до начисления |
| start_energy | Накопленная энергия на этом уровне (0..100) |
| config | Конфигурация контракта с параметрами геймификации |
|
inline |
Рассчитывает прирост энергии от вклада
| contribution_amount | Сумма вклада |
| current_level | Текущий уровень участника |
| config | Конфигурация контракта с параметрами геймификации |
|
inline |
Рассчитывает требуемую сумму вкладов для достижения указанного уровня
| level | Уровень, для которого нужно рассчитать требования |
| config | Конфигурация контракта с параметрами геймификации |
|
inline |
Обновляет энергию участника с учетом естественного снижения (decay)
| coopname | Имя кооператива |
| contributor_id | ID участника |
|
inline |
Обновляет геймификацию (уровень и энергию) на основе вкладов из сегмента
| coopname | Имя кооператива |
| contributor_id | ID участника |
| segment | Сегмент с данными о вкладах участника |
|
staticconstexpr |
Энергия, необходимая для перехода на следующий уровень
Энергия измеряется в процентах пути до уровня: вклад размером level_requirement закрывает уровень целиком.