SHA256
Перенести документацию в docs и добавить социальный граф
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user