4.6 KiB
4.6 KiB
Деплой и инициализация Solana-регистрации (две обязательные программы)
Коротко
Для рабочей регистрации пользователя нужны обе программы:
shine_users— хранение и обновлениеuser_pda, economy-конфиг, логика регистрации.shine_login_guard— проверка/классификация логина (CPI изshine_users).
Если задеплоена только одна из них — регистрация неработоспособна.
Актуальные адреса (devnet)
shine_users(регистрация пользователей):
FZS1YctoeEhCkZ5VTjsysUFAXR8CqxYztcLboXcg2Rpmshine_login_guard:
3xkopA7cXagxzMFrKdv3NCBfV6BKiRJCk69kr27M2sRoshine_payments:
m48pWRGWrMj3TEHjuU4zsp5Gju4e7ZaPovk8RcVt7kR
Подтверждение деплоя
- Сеть:
https://api.devnet.solana.com shine_users:Program ID:FZS1YctoeEhCkZ5VTjsysUFAXR8CqxYztcLboXcg2Rpm- TX deploy:
5VzfpSirFCRqPUZfvAt3eADY9KnowW79PKZ1pCQAa2DJGiztj4dUYYXrSQNmWEhPVu6mPSDfcuHzFyEVmoKLa9DM
shine_login_guard:Program ID:3xkopA7cXagxzMFrKdv3NCBfV6BKiRJCk69kr27M2sRo- TX deploy:
5iptngPYrLLjPE3Xby24zyNW3edVUnBNLBx785vjojMoq5JNLFNQvLNAm3jNYHbpf2B36qtbpTNzcvUNyRDqm1Mf
Порядок деплоя (devnet)
- Убедиться, что CLI смотрит в devnet и у кошелька есть SOL.
- Собрать и задеплоить
shine_login_guard. - Собрать и задеплоить
shine_users. - Проверить, что адреса совпадают между:
Anchor.tomldeclare_id!вprograms/*/src/lib.rs- UI/серверными константами.
- Выполнить
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
- Открыть UI.
- Перейти:
Профиль -> Настройки -> Настройки разработчика -> Solana: init регистрации. - Подключить кошелёк (Phantom, devnet).
- Нажать
Запустить init_users_economy_config. - Дождаться статуса
Успешно.
Страница сама вычисляет PDA users_economy_config по seed:
- seed:
shine_users_economy_config_v2 - program:
FZS1YctoeEhCkZ5VTjsysUFAXR8CqxYztcLboXcg2Rpm
Кто оплачивает create/update user_pda
- И обычная регистрация
create_user_pda, и последующееupdate_user_pdaоплачиваются сdeviceKey. - В UI это означает, что Solana fee payer всегда берётся из
device-ключа пользователя/сервера. rootKeyнужен для подписи unsigned PDA-записи, но не оплачивает транзакцию.- Для server UI это особенно важно: перед
createиupdateнужно пополнять именно Solana-адресdeviceKey.
Важно
init_users_economy_configвыполняется один раз на программу.
Если PDA уже создан, повторный вызов вернёт ошибку "already initialized" (это нормальное поведение).- Серверные приватные ключи для Solana не используются как отдельный backend-wallet: в UI/server UI транзакцию оплачивает именно
deviceKey, а содержимое записи подписываетrootKey. shine_usersвнутриcreate_user_pdaтребует корректный адресshine_login_guardдля CPI-классификации логина.
Несовпадение адреса приведёт к ошибке регистрации.