75 lines
4.1 KiB
Markdown
75 lines
4.1 KiB
Markdown
# SHiNE DAO
|
||
|
||
## Кратко
|
||
|
||
DAO — управляющий слой Solana-части SHiNE. В текущем коде это не отдельная Anchor-программа в `programs/`, а модель управления через DAO-кошелек, DAO-authority, governance-скрипты и будущую передачу upgrade-authority программ.
|
||
|
||
## Что DAO должно уметь
|
||
|
||
1. Управлять казной.
|
||
- Принимать средства на `dao_wallet`.
|
||
- Выплачивать средства со счета DAO по решениям голосования.
|
||
|
||
2. Управлять настройками `shine_users`.
|
||
- Обновлять регистрационную комиссию.
|
||
- Обновлять цену шага лимита.
|
||
- Обновлять стартовый бонус лимита.
|
||
|
||
3. Управлять настройками `shine_payments`.
|
||
- Обновлять коэффициент выплат.
|
||
- Обновлять лимит очереди.
|
||
- Обновлять награду за вызов `step_payout`.
|
||
|
||
4. Управлять менеджерами.
|
||
- Выдавать менеджеру лимит на добавление тикетов.
|
||
- Отдельно учитывать лимиты Q1 и Q2.
|
||
|
||
5. Управлять правами программ.
|
||
- Принять upgrade-authority `shine_users`.
|
||
- Принять upgrade-authority `shine_payments`.
|
||
- Позже принять upgrade-authority `shine_login_guard`, если это потребуется.
|
||
|
||
6. Управлять ключами DAO.
|
||
- Добавлять управляющие ключи.
|
||
- Отзывать или сжигать управляющие ключи.
|
||
- Делать это через голосование, а не вручную одним админом.
|
||
|
||
7. Фиксировать решения.
|
||
- Делать заявления/решения через governance-механику.
|
||
- Привязывать важные изменения к proposal/vote/execute.
|
||
|
||
## Текущие адреса управления
|
||
|
||
В общем deploy-конфиге сейчас есть два важных адреса:
|
||
|
||
- `DAO_AUTHORITY` — используется `shine_users` для проверки права менять economy-конфиг.
|
||
- `DAO_TREASURY_WALLET` — используется `shine_payments` как `dao_wallet`.
|
||
|
||
Сейчас они могут совпадать. В целевой DAO-модели их лучше рассматривать как разные роли:
|
||
|
||
- authority/governance signer — кто имеет право исполнять управленческие инструкции;
|
||
- treasury wallet — счет, куда приходят деньги DAO.
|
||
|
||
## Передача прав
|
||
|
||
Рекомендуемый порядок:
|
||
|
||
1. Сначала стабилизировать и проверить `shine_users` и `shine_payments`.
|
||
2. Передать DAO право обновлять настройки, если оно еще не передано.
|
||
3. Передать DAO upgrade-authority второй и третьей программ.
|
||
4. Оставить `shine_login_guard` на отдельном ключе до стабилизации словарей и правил логинов.
|
||
5. После стабилизации решить отдельным голосованием, передавать ли первую программу DAO.
|
||
|
||
## Важное разделение
|
||
|
||
Есть два разных типа прав:
|
||
|
||
1. Право вызвать защищенную функцию программы.
|
||
- Например, `update_coef_limit` или `grant_manager_limits`.
|
||
- Проверяется внутри программы по `dao_wallet` или `DAO_AUTHORITY`.
|
||
|
||
2. Право обновить саму программу.
|
||
- Это upgrade-authority Solana ProgramData.
|
||
- Оно передается отдельной Solana-командой/DAO-транзакцией и не равно обычному PDA-счету.
|
||
|