SHiNE-server/Dev_Docs/Инициализация_Solana_регистрации
2026-06-22 21:57:09 +04:00
..
README.md Миграция PDA на client.key 2026-06-22 21:57:09 +04:00

Деплой и инициализация Solana-регистрации (две обязательные программы)

Коротко

Для рабочей регистрации пользователя нужны обе программы:

  1. shine_users — хранение и обновление user_pda, economy-конфиг, логика регистрации.
  2. shine_login_guard — проверка/классификация логина (CPI из shine_users).

Если задеплоена только одна из них — регистрация неработоспособна.

Актуальные адреса (devnet)

  • shine_users (регистрация пользователей):
    FZS1YctoeEhCkZ5VTjsysUFAXR8CqxYztcLboXcg2Rpm
  • shine_login_guard:
    3xkopA7cXagxzMFrKdv3NCBfV6BKiRJCk69kr27M2sRo
  • shine_payments:
    c4yTa4JT9EtQDCBX9LmWFK6T2gp4JGsuymFbom2EudW

Подтверждение деплоя

  • Сеть: https://api.devnet.solana.com
  • shine_users:
    • Program ID: FZS1YctoeEhCkZ5VTjsysUFAXR8CqxYztcLboXcg2Rpm
    • TX deploy: 5VzfpSirFCRqPUZfvAt3eADY9KnowW79PKZ1pCQAa2DJGiztj4dUYYXrSQNmWEhPVu6mPSDfcuHzFyEVmoKLa9DM
  • shine_login_guard:
    • Program ID: 3xkopA7cXagxzMFrKdv3NCBfV6BKiRJCk69kr27M2sRo
    • TX deploy: 5iptngPYrLLjPE3Xby24zyNW3edVUnBNLBx785vjojMoq5JNLFNQvLNAm3jNYHbpf2B36qtbpTNzcvUNyRDqm1Mf

Порядок деплоя (devnet)

  1. Убедиться, что CLI смотрит в devnet и у кошелька есть SOL.
  2. Собрать и задеплоить shine_login_guard.
  3. Собрать и задеплоить shine_users.
  4. Проверить, что адреса совпадают между:
    • Anchor.toml
    • declare_id! в programs/*/src/lib.rs
    • UI/серверными константами.
  5. Выполнить init_users_economy_config (один раз на программу shine_users).

Пример команд:

cd shine-solana/shine
solana config get
solana balance

anchor build -p shine_login_guard
anchor deploy -p shine_login_guard

anchor build -p shine_users
anchor deploy -p shine_users

Куда вписаны адреса в проекте

UI

  • Общие Solana-константы:
    • shine-UI/js/solana-programs.js
  • Страница инициализации:
    • shine-UI/js/pages/solana-users-init-view.js
  • Переход на страницу:
    • shine-UI/js/pages/developer-settings-view.js

Сервер

  • Серверные константы Solana:
    • shine-server-config/src/main/java/utils/config/SolanaProgramsConfig.java

Как запустить инициализацию economy PDA

  1. Открыть UI.
  2. Перейти: Профиль -> Настройки -> Настройки разработчика -> Solana: init регистрации.
  3. Подключить кошелёк (Phantom, devnet).
  4. Нажать Запустить init_users_economy_config.
  5. Дождаться статуса Успешно.

Страница сама вычисляет PDA users_economy_config по seed:

  • seed: shine_users_economy_config
  • program: FZS1YctoeEhCkZ5VTjsysUFAXR8CqxYztcLboXcg2Rpm

Кто оплачивает create/update user_pda

  • И обычная регистрация create_user_pda, и последующее update_user_pda оплачиваются с clientKey.
  • В UI это означает, что Solana fee payer всегда берётся из device-ключа пользователя/сервера.
  • rootKey нужен для подписи unsigned PDA-записи, но не оплачивает транзакцию.
  • Для server UI это особенно важно: перед create и update нужно пополнять именно Solana-адрес clientKey.

Важно

  • init_users_economy_config выполняется один раз на программу.
    Если PDA уже создан, повторный вызов вернёт ошибку "already initialized" (это нормальное поведение).
  • Серверные приватные ключи для Solana не используются как отдельный backend-wallet: в UI/server UI транзакцию оплачивает именно clientKey, а содержимое записи подписывает rootKey.
  • shine_users внутри create_user_pda требует корректный адрес shine_login_guard для CPI-классификации логина.
    Несовпадение адреса приведёт к ошибке регистрации.