SHiNE-server/shine-server-UI-obsolete/AGENTS.md

5.3 KiB
Raw Blame History

AGENTS.md — shine-server-UI-obsolete

Назначение

shine-server-UI-obsolete/ — устаревшая автономная веб-панель администратора для управления серверным аккаунтом SHiNE в Solana (регистрация и обновление user_pda с флагом is_server=true).

Эта папка оставлена только как справочная копия старой реализации. Актуальная точка входа серверного UI теперь находится в:

  • shine-UI/server-ui.html
  • shine-UI/server-ui/

Никакого бэкенда нет.

Структура файлов

shine-server-UI-obsolete/
  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). Занимает 25 сек. На страницах сервера публичные и приватные ключи показываются в base58, приватный ключ хранится как 32-байтовый seed в base58.
  • «JSON ключей» — вставить keyBundle JSON с тремя парами (rootPair, devicePair, blockchainPair).

На device-ключе должно быть достаточно SOL для оплаты транзакции регистрации.

Обновление настроек сервера (update-server-pda.html)

  1. Ввести логин и нажать «Загрузить PDA» — страница прочитает существующую PDA из Solana и покажет текущие данные.
  2. Изменить адрес сервера или список sync_servers.
  3. Выбрать способ ввода ключей:
    • «Из пароля» — ввести пароль (логин берётся из поля выше);
    • «JSON ключей» — вставить keyBundle (достаточно rootPair + devicePair). Blockchain-ключ для обновления не нужен — существующая подпись из PDA переиспользуется. При ручном вводе допустим base58 seed; если blockchain seed не указан, обновление использует уже сохранённую подпись последнего блока.
  4. Нажать «Обновить 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 Rust deserialize_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 в том же коммите.
  • Язык кода и комментариев: русский.