5.2 KiB
5.2 KiB
AGENTS.md — shine-server-UI
Назначение
shine-server-UI/ — автономная веб-панель администратора для управления серверным аккаунтом SHiNE
в Solana (регистрация и обновление user_pda с флагом is_server=true).
Это не часть основного клиентского SPA (shine-UI/). Страницы — самостоятельные HTML-файлы,
открываемые напрямую в браузере. Никакого бэкенда нет.
Структура файлов
shine-server-UI/
index.html — главная страница с навигацией
create-server-pda.html — регистрация нового серверного аккаунта
update-server-pda.html — обновление адреса/sync_servers существующей PDA
styles.css — тёмная тема
js/
server-pda-core.js — вся логика: парсинг PDA, Borsh, криптография, Solana
Как пользоваться
Регистрация сервера (create-server-pda.html)
Открыть страницу в браузере (требуется HTTPS для WebCrypto — локально либо через сервер).
Ввести:
- Логин сервера — уникальный логин в Solana (только a-z, 0-9, _ ; без точки ; макс. 20 символов).
- Адрес сервера — полный WebSocket/HTTP URL, например
https://shineup.me/ws. - sync_servers — логины SHiNE-аккаунтов серверов-партнёров (по одному на строку).
Способ ввода ключей (переключатель):
- «Из пароля» — ввести пароль. Ключи автоматически выводятся из логина + пароля по той же схеме, что SHiNE-клиент (Argon2id + Ed25519). Занимает 2–5 сек. На страницах сервера публичные и приватные ключи показываются в base58, приватный ключ хранится как 32-байтовый seed в base58.
- «JSON ключей» — вставить keyBundle JSON с тремя парами (rootPair, devicePair, blockchainPair).
На device-ключе должно быть достаточно SOL для оплаты транзакции регистрации.
Обновление настроек сервера (update-server-pda.html)
- Ввести логин и нажать «Загрузить PDA» — страница прочитает существующую PDA из Solana и покажет текущие данные.
- Изменить адрес сервера или список sync_servers.
- Выбрать способ ввода ключей:
- «Из пароля» — ввести пароль (логин берётся из поля выше);
- «JSON ключей» — вставить keyBundle (достаточно rootPair + devicePair). Blockchain-ключ для обновления не нужен — существующая подпись из PDA переиспользуется. При ручном вводе допустим base58 seed; если blockchain seed не указан, обновление использует уже сохранённую подпись последнего блока.
- Нажать «Обновить PDA».
Ключевой файл логики
js/server-pda-core.js — автономный ES-модуль (без зависимостей на shine-UI).
Экспортирует:
readServerPdaData({ login, solanaEndpoint })— читает и парсит PDA из Solana;registerServerOnSolana({ login, keyBundle, serverAddress, syncServers, ... });updateServerOnSolana({ login, keyBundle, serverAddress, syncServers, ... });parsePdaData(rawBytes)— парсит бинарный формат PDA (matches Rustdeserialize_record_from_pda).
Связанные документы
- Формат PDA:
shine-solana/shine/doc/SHiNE-user-format-v.1.0.md - Деплой Solana-программ:
Dev_Docs/Инициализация_Solana_регистрации/README.md - Синхронизация между серверами:
Dev_Docs/Blockchain/sync-between-servers.md - Настройки сервера:
SHiNE-server/AGENTS.md
Правила при доработке
- Формат Borsh-аргументов в
server-pda-core.jsдолжен строго соответствоватьUserMutableFieldsвshine-solana/shine/programs/shine_users/src/users.rs. - Бинарный формат PDA в
buildUnsignedRecordBytesServerдолжен совпадать сserialize_unsigned_recordв Rust. - При любом изменении формата Solana-программы (
users.rs) — обновлятьserver-pda-core.jsи документ формата PDA в том же коммите. - Язык кода и комментариев: русский.