Перенести документацию в docs и добавить социальный граф

This commit is contained in:
AidarKC
2026-07-13 12:58:41 +04:00
parent c9cfb394d7
commit af12d7b954
91 changed files with 653 additions and 2 deletions
@@ -0,0 +1,103 @@
# Деплой и инициализация Solana-регистрации
## Коротко
Для рабочей регистрации пользователя нужны три программы:
1. `shine_users` — хранение и обновление `user_pda`, economy-конфиг, логика регистрации.
2. `shine_login_guard` — проверка/классификация логина через CPI из `shine_users`.
3. `shine_payments` — приём платежей за регистрацию и докупку лимита через `inflow_vault PDA`.
Если `shine_users` или `shine_login_guard` не совпадают по адресам с UI/сервером, регистрация неработоспособна.
## Актуальные адреса (mainnet)
- `shine_users`:
`SHiNEPr1APdAgNBteUyBXcNovaHctpSjUu8oH2ZJdN6`
- `shine_login_guard`:
`SHiGxGsXGioQYCYhchQ5R7KWoxN5UjFAFsucPf6sfnh`
- `shine_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.js`
- `shine-UI/js/pages/wallet-view.js`
- `shine-UI/js/services/solana-register-service.js`
- `shine-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.toml`
- `shine-solana/shine/programs/shine_users/src/lib.rs`
- `shine-solana/shine/programs/shine_users/src/settings.rs`
- `shine-solana/shine/programs/shine_login_guard/src/lib.rs`
- `shine-solana/shine/programs/shine_payments/src/lib.rs`
- `shine-solana/shine/programs/shine_payments/src/settings.rs`
### Дополнительные потребители
- `shine-solana/shine/programs/shine_payments/web/*.html`
- `ESP32/.../shine_homeserver_main.ino`
- `ESP32/.../shine_homeserver_ui.ino`
## Как запустить инициализацию economy PDA
1. Открыть UI.
2. Перейти: `Профиль -> Настройки -> Настройки разработчика -> Solana: init регистрации`.
3. Подключить mainnet-кошелёк.
4. Нажать `Запустить init_users_economy_config`.
5. Дождаться статуса `Успешно`.
Страница вычисляет 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.