economic fix

This commit is contained in:
Alex Ant
2025-08-27 22:03:06 +05:00
parent 49cd7a41dd
commit 44eaa9dc8b
4 changed files with 119 additions and 109 deletions
+13 -6
View File
@@ -62,12 +62,7 @@ const investAmount2 = 25000
const investAmount3 = 25000
// Хранение хэшей долгов для каждого пользователя
const userDebtHashes: { [username: string]: string[] } = {
tester1: [],
tester2: [],
tester3: [],
tester4: [],
}
let userDebtHashes: { [username: string]: string[] } = {}
beforeAll(async () => {
await blockchain.update_pass_instance()
@@ -95,6 +90,18 @@ beforeAll(async () => {
console.log('tester5: ', tester5)
await addUser(tester5)
// Инициализируем массивы хэшей долгов для каждого пользователя
userDebtHashes = {
[tester1]: [],
[tester2]: [],
[tester3]: [],
[tester4]: [],
[tester5]: [],
[investor1]: [],
[investor2]: [],
[investor3]: [],
}
investor2 = generateRandomUsername()
console.log('investor2: ', investor2)
await addUser(investor2, tester4)
@@ -100,7 +100,8 @@ void capital::pushrslt(name coopname, name username, checksum256 project_hash, c
// Суммируем общую сумму погашенных долгов
total_debt_to_settle += debt.amount;
}
print("total_debt_to_settle: ", total_debt_to_settle.amount);
print("debt_amount: ", debt_amount.amount);
// Проверяем что общая сумма погашенных долгов соответствует заявленной сумме долга
eosio::check(total_debt_to_settle == debt_amount,
"Общая сумма погашенных долгов не соответствует заявленной сумме долга");
+102 -100
View File
@@ -58,9 +58,9 @@ COOPOS - это блокчейн-платформа для кооператив
### Система квот: единица измерения ресурсов
В системе COOPOS все вычислительные ресурсы измеряются в **квотах**. Одна квота представляет собой стандартизированный пакет ресурсов (RAM, CPU, NET), который кооператив может потратить в течение срока аренды.
В системе COOPOS все вычислительные ресурсы измеряются в **квотах**. Одна квота - это стандартизированный набор ресурсов (RAM, CPU, NET), который кооператив может использовать в течение периода аренды.
Каждое действие в смарт-контракте уникально и содержит разное количество информации, которое требуется обработать, сохранить и передать. Из-за этой уникальности средняя стоимость каждой операции для кооперативов выявляется **эмпирическим путем** - через подсчет фактического использования ресурсов в квотах при выполнении реальных операций.
Каждое действие в смарт-контракте имеет уникальную сложность и объем данных для обработки, хранения и передачи. Поэтому стоимость операций для кооперативов определяется **практически** - путем расчета фактического потребления ресурсов в квотах на основе реальных операций.
### Квота как пакет ресурсов
@@ -72,11 +72,11 @@ COOPOS - это блокчейн-платформа для кооператив
## Уровни операций в системе COOPOS
На уровне блокчейна все операции складываются из отдельных **действий** (actions) в смарт-контрактах.
Каждое действие представляет собой атомарную операцию: запись данных, проверка условий, передача токенов и т.д.
На техническом уровне блокчейна все операции состоят из отдельных **действий** (actions) в смарт-контрактах.
Каждое действие - это атомарная операция: сохранение данных, проверка условий, перевод токенов и т.д.
На уровне управления кооперативом для администрации все складывается из **процессов** -
завершенных логических операций с пайщиками, которые состоят из нескольких последовательных действий.
На уровне управления кооперативом администрация работает с **процессами** -
завершенными логическими операциями с пайщиками, включающими несколько последовательных действий.
### Пример: Регистрация нового пайщика
@@ -93,7 +93,7 @@ COOPOS - это блокчейн-платформа для кооператив
Пакет документов представляет собой завершенную последовательность связанных действий в смарт-контрактах, которая составляет логически целостную операцию с точки зрения кооперативного управления.
Важно понимать, что система смарт-контрактов оперирует реальными анонимизированными электронными документами, которые передаются ИЗВНЕ. Пакет документов - это реальный набор документов, прошедший обработку через кооперативную бизнес-логику.
Важно понимать, что система смарт-контрактов оперирует реальными анонимизированными электронными документами, которые передаются извне. Пакет документов - это реальный набор документов, прошедший обработку через кооперативную бизнес-логику.
Для удобства кооперативов вся система учета строится вокруг стоимости аренды квот за пакеты документов определенных типов, а не за отдельные действия. Это обеспечивает понятное планирование затрат и прозрачное финансовое управление.
@@ -110,137 +110,139 @@ COOPOS - это блокчейн-платформа для кооператив
Если кооператив не оплачивает минимальную ежедневную квоту, его ресурсы списываются в ноль, и пайщики теряют возможность совершать любые действия в системе.
На практике процесс аренды квот происходит автоматически. На уровне клиентского программного обеспечения
(которое подключается к блокчейну) работает специальный сервис мониторинга. Этот сервис:
На практике аренда квот происходит автоматически. Клиентское программное обеспечение
(подключенное к блокчейну) включает сервис мониторинга, который:
1. <b>Постоянно отслеживает</b> состояние ресурсов всех аккаунтов кооператива в блокчейне
2. <b>Анализирует использование</b> RAM, CPU и NET в режиме реального времени
3. <b>Прогнозирует потребности</b> на основе текущей активности пайщиков
4. <b>Автоматически вызывает</b> действие @ref eosiosystem::system_contract::powerup когда:
- Подходит время продления текущих квот
- Текущих ресурсов становится недостаточно для активности кооператива
- Возникает необходимость в дополнительных квотах
1. <b>Непрерывно отслеживает</b> состояние ресурсов всех аккаунтов кооператива в блокчейне
2. <b>Анализирует потребление</b> RAM, CPU и NET в реальном времени
3. <b>Прогнозирует потребности</b> на основе активности пайщиков
4. <b>Автоматически запускает</b> действие @ref eosiosystem::system_contract::powerup когда:
- Истекает срок текущих квот
- Текущих ресурсов недостаточно для работы кооператива
- Требуются дополнительные квоты
Благодаря такой автоматизации кооперативы не должны вручную отслеживать состояние ресурсов
и беспокоиться о технических деталях их пополнения.
Благодаря автоматизации кооперативы освобождаются от необходимости вручную контролировать
состояние ресурсов и заниматься техническими деталями их пополнения.
### Процесс аренды квот через действие powerup
Когда клиентский сервис или кооператив вручную совершает платеж за аренду квот через действие @ref eosiosystem::system_contract::powerup,
происходит следующий процесс:
Когда клиентский сервис или кооператив инициирует платеж за аренду квот через действие @ref eosiosystem::system_contract::powerup,
выполняется следующая последовательность:
1. <b>Разделение платежа</b>: Поступивший платеж автоматически распределяется между
1. <b>Распределение платежа</b>: Полученный платеж автоматически делится между
тремя типами ресурсов в фиксированных пропорциях:
- 50% направляется на аренду RAM
- 25% выделяется для CPU ресурсов
- 25% резервируется для NET ресурсов
- 50% идет на аренду RAM
- 25% выделяется для CPU
- 25% резервируется для NET
2. <b>Передача ресурсов</b>: Соответствующее количество ресурсов немедленно
передается получателю (аккаунту пайщика) на указанный срок аренды
2. <b>Предоставление ресурсов</b>: Соответствующий объем ресурсов сразу же
передается получателю (аккаунту пайщика) на установленный срок аренды
3. <b>Создание арендного обязательства</b>: В системе создается запись о временном характере
предоставленных квот с указанием точного времени их возврата (обычно через 24 часа)
3. <b>Регистрация заявки</b>: В системе фиксируется временный характер
предоставленных квот с точным временем завершения (обычно через 24 часа)
4. <b>Распределение вознаграждения</b>: Делегаты сети получают свою долю от платежа
в качестве вознаграждения за предоставление ресурсов
4. <b>Выплата вознаграждения</b>: Делегаты сети получают свою часть платежа
как компенсацию за предоставление ресурсов
### Минимальные обязательства кооперативов
Для обеспечения стабильности системы и гарантии доступа пайщиков к базовым
функциям платформы, каждый кооператив обязан вносить минимальную ежемесячную
плату за аренду ресурсов. Эта сумма определяется параметром `min_powerup_fee`
Для обеспечения стабильности системы и гарантии доступа пайщиков к основным
функциям платформы каждый кооператив должен вносить минимальную ежемесячную
плату за аренду ресурсов. Размер этой суммы задается параметром `min_powerup_fee`
и покрывает базовые потребности в вычислительных ресурсах для поддержания
активности аккаунтов пайщиков.
Минимальная плата обеспечивает:
- Гарантированный доступ к основным функциям платформы для всех пайщиков
Минимальная плата гарантирует:
- Доступ ко всем основным функциям платформы для пайщиков
- Стабильный доход делегатов сети
- Предсказуемость операционных расходов для кооперативов
- Защиту от чрезмерной волатильности в использовании ресурсов
- Предсказуемость расходов для кооперативов
- Защиту от резких колебаний в потреблении ресурсов
### Механизм возврата ресурсов
Уникальной особенностью системы COOPOS является способность точно отслеживать
и возвращать арендованные ресурсы по истечении срока аренды. Это стало возможным
благодаря внедрению механизма контроля использования RAM в реальном времени,
который позволяет системе знать точное количество ресурсов, фактически
используемых каждым аккаунтом в любой момент времени.
Уникальная особенность системы COOPOS - точное отслеживание и возврат
арендованных ресурсов по истечении срока аренды. Это возможно благодаря
механизму контроля использования RAM в реальном времени, который позволяет
системе определять точное количество ресурсов, фактически используемых
каждым аккаунтом в любой момент.
Процесс возврата ресурсов выполняется действием @ref eosiosystem::system_contract::powerupexec и включает:
1. <b>Проверка истекших обязательств</b>: Система сканирует все активные
договоры аренды и выявляет те, срок которых истек
1. <b>Проверка истекших заявок</b>: Система проверяет все активные заявки
на аренду ресурсов и находит те, срок которых истек
2. <b>Расчет возвращаемых ресурсов</b>: Для каждого истекшего договора
определяется точное количество ресурсов, подлежащих возврату
2. <b>Расчет возвращаемых ресурсов</b>: Для каждой истекшей заявки
определяется точное количество ресурсов для возврата
3. <b>Обработка долговых обязательств</b>: Если аккаунт использует больше RAM,
чем позволяет новый лимит после возврата, формируется цифровое долговое обязательство
3. <b>Обработка продления аренды</b>: Если аккаунт использует больше RAM,
чем предусмотрено текущей заявкой, система рассчитывает объем продления аренды
4. <b>Физический возврат ресурсов</b>: Ресурсы возвращаются в общий пул
делегатов для последующего предоставления в аренду
4. <b>Возврат ресурсов</b>: Ресурсы возвращаются в общий пул ресурсов
делегатов для дальнейшего предоставления в аренду
## Специальные механизмы предоставления ресурсов
### Регистрация новых пайщиков
При регистрации нового пайщика в системе применяется особый механизм предоставления
ресурсов, отличающийся от стандартной аренды. Часть ресурсов, необходимых для
функционирования базового аккаунта, передается новому пайщику на бессрочной основе
в качестве «стартового капитала».
При регистрации нового пайщика применяется специальный механизм предоставления
ресурсов, отличающийся от обычной аренды. Часть ресурсов, необходимых для
работы базового аккаунта, передается новому пайщику бессрочно
как «стартовый капитал».
Этот механизм реализуется через параметр `transfer = true` в действии `powerup`
Этот механизм работает через параметр `transfer = true` в действии `powerup`
и обеспечивает:
- Гарантированный доступ к базовым функциям платформы для всех новых пайщиков
- Отсутствие необходимости в постоянных доплатах за минимальные операции
- Снижение барьеров входа в кооперативную экосистему
- Устойчивость аккаунтов к временным финансовым затруднениям
- Доступ к базовым функциям платформы для новых пайщиков
- Освобождение от постоянных платежей за минимальные операции
- Снижение порога входа в кооперативную экосистему
- Защиту аккаунтов от временных финансовых проблем
### Автоматическое продление аренды
Для активно используемых ресурсов система предусматривает механизм автоматического
продления аренды. Если ресурсы фактически используются и кооператив регулярно
вносит платежи, аренда автоматически пролонгируется на следующий период,
обеспечивая непрерывность работы без необходимости ручного вмешательства.
Для активно используемых ресурсов предусмотрен механизм автоматического
продления аренды. Если ресурсы реально используются и кооператив своевременно
вносит платежи, аренда автоматически продлевается на следующий период,
гарантируя непрерывную работу без ручного вмешательства.
Такой подход гарантирует:
- Бесперебойную работу активных аккаунтов
- Отсутствие простоев из-за технических проблем с продлением аренды
- Оптимальное использование доступных ресурсов
Этот подход обеспечивает:
- Непрерывную работу активных аккаунтов
- Отсутствие остановок из-за проблем с продлением аренды
- Эффективное использование доступных ресурсов
- Снижение административной нагрузки на кооперативы
## Система управления долгами по ресурсам
## Система управления сроками аренды ресурсов
### Природа долговых обязательств
### Природа срока аренды ресурсов
В процессе работы с арендованными ресурсами могут возникать ситуации, когда
аккаунт использует больше RAM, чем ему будет доступно после истечения аренды.
аккаунт использует больше RAM, чем предусмотрено текущей заявкой на аренду.
Это происходит, например, когда пайщик активно участвует в смарт-контрактах,
создает много записей или хранит большие объемы данных.
Система COOPOS решает эту проблему через механизм долговых обязательств,
который позволяет временно "занимать" ресурсы с последующим их возмещением
при следующих платежах за аренду.
Система COOPOS решает эту проблему через механизм автоматического продления аренды,
который позволяет продолжить использование ресурсов без прерывания работы
при условии своевременной оплаты следующего периода аренды.
### Техническая реализация долговой системы
### Техническая реализация системы продления аренды
Управление долгами реализуется через специальную таблицу @ref eosiosystem::ram_debts_table
Управление продлением аренды реализуется через специальную таблицу @ref eosiosystem::ram_debts_table
и функцию @ref eosiosystem::system_contract::update_ram_debt_table. Когда система обнаруживает превышение
лимитов RAM при возврате ресурсов, происходит следующее:
1. <b>Расчет долга</b>: Определяется точная сумма "избыточного" использования RAM
2. <b>Создание записи</b>: Долг фиксируется как отрицательное значение в таблице
1. <b>Расчет объема продления</b>: Определяется точное количество RAM,
которое фактически используется аккаунтом
2. <b>Создание записи о продлении</b>: В таблице фиксируется объем ресурсов,
который необходимо оплатить для продолжения аренды
3. <b>Корректировка лимитов</b>: Лимит RAM устанавливается равным текущему
использованию, фактически обнуляя доступную квоту
4. <b>Автоматическое погашение</b>: При следующей аренде ресурсов долг
автоматически вычитается из новых ресурсов
использованию с учетом предстоящего продления
4. <b>Автоматическое продление</b>: При следующей оплате аренды ресурсы
автоматически продлеваются на следующий период
Этот механизм обеспечивает:
- Невозможность "потери" данных из-за недостатка ресурсов
- Непрерывность работы аккаунтов без потери данных
- Справедливое распределение затрат на фактически используемые ресурсы
- Автоматическое восстановление баланса без ручного вмешательства
- Защиту от злоупотреблений системой аренды
- Автоматическое продление аренды без ручного вмешательства
- Защиту от прерываний работы из-за технических ограничений
## Математическая модель эмиссии токенов
@@ -288,7 +290,7 @@ emission_start = current_supply / (1 + emission_factor)
```
Это означает, что эмиссия активируется только когда комиссии за такт превышают
примерно 61.8% от текущего объема то
примерно 61.8% от текущего предложения токенов.
## Математическая модель эмиссии
@@ -334,9 +336,9 @@ emission_start = current_supply / (1 + emission_factor)
### Текущая схема распределения
Каждый платеж за аренду ресурсов распределяется между:
- **90% делегатам**(producers_percent) - за валидацию блоков
- **10% на счёт системных членских взносов**(fund_percent) - для последующего распределения среди пайщиков через @ref public_capital после покрытия операционных расходов системы
Каждый платеж за аренду ресурсов распределяется следующим образом:
- **90% делегатам** (producers_percent) - за поддержку работы сети и валидацию блоков
- **10% на счет системных членских взносов** (fund_percent) - для последующего распределения среди пайщиков через @ref public_capital после покрытия операционных расходов системы
### Дополнительная эмиссия
@@ -352,9 +354,9 @@ emission_start = current_supply / (1 + emission_factor)
В этой фазе происходит активный рост сети:
- Комиссии превышают порог emission_start
- Активная эмиссия дополнительных токенов
- Счёт системных членских взносов получает как 10% от стоимости оплаченных квот вычислительных ресурсов, так и всю эмиссию для последующего распределения среди пайщиков через @ref public_capital
- Делегаты получают 90% от стоимости оплаченных квот вычислительных ресурсов.
- Происходит активная эмиссия дополнительных токенов
- Счет системных членских взносов получает 10% от стоимости квот плюс всю эмиссию для распределения среди пайщиков через @ref public_capital
- Делегаты получают 90% от стоимости оплаченных квот ресурсов.
**Пример последовательного расчета для первых трех тактов:**
@@ -393,10 +395,10 @@ emission_start = current_supply / (1 + emission_factor)
### Фаза стабилизации (такты 21+)
Когда система достигает максимального объема вычислительного облака (83,886,080 рублей):
- Эмиссия прекращается (комиссии не превышают emission_start)
- Счёт системных членских взносов получает только 10% от стоимости квот (эмиссия прекращается)
- Эмиссия прекращается (комиссии не превышают порог emission_start)
- Счет системных членских взносов получает только 10% от стоимости квот
- Делегаты продолжают получать 90% от стоимости квот
- Денежная масса стабилизируется
- Предложение токенов стабилизируется
## Техническая реализация
@@ -411,15 +413,15 @@ emission_start = current_supply / (1 + emission_factor)
#### Аренда ресурсов
Основное действие @ref eosiosystem::system_contract::powerup для аренды ресурсов:
- Распределяет платеж: 50% RAM, 25% CPU, 25% NET
- Обрабатывает долги по RAM через update_ram_debt_table()
- Создает заказ аренды с временем истечения
- Обрабатывает продление аренды RAM через update_ram_debt_table()
- Создает заявку на аренду с временем истечения
- Вызывает @ref eosiosystem::system_contract::fill_tact для обработки эмиссии
#### Обработка истекших заказов аренды
Действие @ref eosiosystem::system_contract::powerupexec обрабатывает истекшие заказы аренды:
#### Обработка истекших заявок на аренду
Действие @ref eosiosystem::system_contract::powerupexec обрабатывает истекшие заявки на аренду:
- Возвращает ресурсы от аккаунтов в резерв eosio.power
- Обновляет utilization в состоянии ресурсов
- Может формировать долги по RAM при недостатке свободной памяти
- Может формировать заявки на продление аренды RAM при превышении лимитов
#### Инициализация системы эмиссии
Действие @ref eosiosystem::system_contract::initemission инициализирует систему эмиссии:
@@ -458,7 +460,7 @@ struct powerup_state {
| Параметр | Значение | Описание |
|----------|----------|----------|
| Объем вычислительного облака | 64 GB | Базовая емкость сети |
| Стоимость аккаунта | 10 рублей | Стоимость регистрация пайщика |
| Стоимость аккаунта | 10 рублей | Стоимость регистрации пайщика |
| Стоимость пакета документов | 10 рублей | Средняя стоимость пакета документов по любому процессу |
| Генезис токенов | 10,000 рублей | Начальная эмиссия |
| Фактор эмиссии | 61.8% | Основан на золотом сечении |
@@ -477,5 +479,5 @@ struct powerup_state {
| 20 | 0 | 83,886,080 | 51,856,720 | 89,041,748 | 466,710,480 |
| 21+ | 0 | 83,886,080 | 51,856,720 | 94,227,420 | 933,420,960 |
<b>Примечание:</b> Цифры приведены в рублях по курсу 1 AXON = 10 RUB. Системные членские взносы включают 10% от стоимости аренды всех квот плюс всю эмиссию для последующего распределения среди пайщиков через контракт CAPITAL. После такта 20 эмиссия прекращается, так как система достигает стабилизации.
<b>Примечание:</b> Цифры приведены в рублях по курсу 1 AXON = 10 RUB. Системные членские взносы включают 10% от стоимости аренды всех квот плюс всю эмиссию для последующего распределения среди пайщиков через контракт CAPITAL. После такта 20 эмиссия прекращается, поскольку система достигает стабилизации.
*/
@@ -9,14 +9,14 @@
<!-- BEGIN opengraph metadata -->
<meta property="og:title" content="COOPENOMICS" />
<meta property="og:image" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
<meta property="og:description" content="Документация на смарт-контракты платформы Кооперативной Экономики на языке C/C++" />
<meta property="og:description" content="Документация смарт-контрактов платформы Кооперативной Экономики на языке C/C++" />
<meta property="og:url" content="https://jothepro.github.io/doxygen-awesome-css/" />
<!-- END opengraph metadata -->
<!-- BEGIN twitter metadata -->
<meta name="twitter:image:src" content="https://repository-images.githubusercontent.com/348492097/4f16df80-88fb-11eb-9d31-4015ff22c452" />
<meta name="twitter:title" content="COOPENOMICS" />
<meta name="twitter:description" content="Документация на смарт-контракты платформы Кооперативной Экономики на языке C/C++" />
<meta name="twitter:description" content="Документация смарт-контрактов платформы Кооперативной Экономики на языке C/C++" />
<!-- END twitter metadata -->
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->