SHiNE-server/Dev_Docs/Solana_Architecture/details/shine_dao.md

4.1 KiB
Raw Blame History

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-счету.