SHA256
Деплой и инициализация Solana-регистрации
Коротко
Для рабочей регистрации пользователя нужны три программы:
shine_users— хранение и обновлениеuser_pda, economy-конфиг, логика регистрации.shine_login_guard— проверка/классификация логина через CPI изshine_users.shine_payments— приём платежей за регистрацию и докупку лимита черезinflow_vault PDA.
Если shine_users или shine_login_guard не совпадают по адресам с UI/сервером, регистрация неработоспособна.
Актуальные адреса (mainnet)
shine_users:
SHiNEPr1APdAgNBteUyBXcNovaHctpSjUu8oH2ZJdN6shine_login_guard:
SHiGxGsXGioQYCYhchQ5R7KWoxN5UjFAFsucPf6sfnhshine_payments:
SHiPmXbM9Fs9khzRUW3TGKsS2W84aqaXTxs3ZkajW9v
Временный on-chain admin для shine_users и shine_payments до перевода управления на DAO:
aiShm43fZjm3YkMs22sYL1bpXaL3bVxv7SSraPHzVgq
Подтверждение текущего mainnet deploy
- Сеть:
https://api.mainnet-beta.solana.com shine_login_guard:Program ID:SHiGxGsXGioQYCYhchQ5R7KWoxN5UjFAFsucPf6sfnh- TX deploy:
5gCxrw5gj7ig5C3HFf4AUrHq2pMW1LxgfLUj4jtmQvTqXnR7xp1iySf7m63S3MaimpeUyYhQR1zpPFJyPi6NTAv7
shine_users:Program ID:SHiNEPr1APdAgNBteUyBXcNovaHctpSjUu8oH2ZJdN6- TX deploy:
5Cwp53EegPv6aV69Ztxj7nXomHt9H9ZaXSgWvDfLPeR5EAaU38ADsQjn9h8xShU34AgttYGwWaVWiicF2vLwJXU9
shine_payments:Program ID:SHiPmXbM9Fs9khzRUW3TGKsS2W84aqaXTxs3ZkajW9v- TX deploy:
2vzsM85bTwSxdYvzWKZMpAg7Gqxs8R7CC5T5LTm7cRFizhr11QZvgDKqP77b8n2mcmA6DF4RqwrUrPzQ8bsQhvCn
Как адреса связаны между собой
shine_usersвнутри кода вызываетshine_login_guard.shine_usersвнутри кода знаетshine_paymentsи переводит оплату вinflow_vault PDAэтой программы.shine_usersиshine_paymentsпока управляются временным адресомaiShm....- Позже эти hardcoded authority-адреса планируется заменить на адреса DAO через upgrade программ.
Куда вписаны адреса в проекте
UI
shine-UI/js/solana-programs.jsshine-UI/js/pages/wallet-view.jsshine-UI/js/services/solana-register-service.jsshine-UI/server-ui/*.html
Browser plugin wallet
SHiNE-browser-plugin-wallet/js/lib/shine-server-resolver.js
Сервер
SHiNE-server/shine-server-config/src/main/java/utils/config/SolanaProgramsConfig.java
Solana / Anchor
shine-solana/shine/Anchor.tomlshine-solana/shine/programs/shine_users/src/lib.rsshine-solana/shine/programs/shine_users/src/settings.rsshine-solana/shine/programs/shine_login_guard/src/lib.rsshine-solana/shine/programs/shine_payments/src/lib.rsshine-solana/shine/programs/shine_payments/src/settings.rs
Дополнительные потребители
shine-solana/shine/programs/shine_payments/web/*.htmlESP32/.../shine_homeserver_main.inoESP32/.../shine_homeserver_ui.ino
Как запустить инициализацию economy PDA
- Открыть UI.
- Перейти:
Профиль -> Настройки -> Настройки разработчика -> Solana: init регистрации. - Подключить mainnet-кошелёк.
- Нажать
Запустить init_users_economy_config. - Дождаться статуса
Успешно.
Страница вычисляет PDA users_economy_config по seed:
- seed:
shine_users_economy_config - program:
SHiNEPr1APdAgNBteUyBXcNovaHctpSjUu8oH2ZJdN6
Кто оплачивает 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: транзакцию оплачивает
clientKey, а содержимое записи подписываетrootKey. shine_usersвнутриcreate_user_pdaтребует корректный адресshine_login_guardдля CPI-классификации логина.- При новом devnet deploy планируется использовать те же program keypair, чтобы
program idна devnet совпадали с mainnet.