Files
SHiNE-server/SHiNE-server/AGENTS.md
T

4.6 KiB

AGENTS.md — SHiNE-server

Назначение

SHiNE-server — серверная часть мессенджера SHiNE: WebSocket-сервер, хранение блоков блокчейна пользователей, доставка личных сообщений (DM), звонки.

Структура папок

  • shine-server-net-server/ — точка входа, запуск HTTP/WS сервера
  • shine-server-net-protocol/ — обработчики операций (RPC и события WS)
  • shine-server-db/ — DAO, SQL-схема, PostgreSQL runtime
  • shine-server-blockchain/ — логика хранения и проверки блоков блокчейна
  • shine-server-crypto/ — криптографические утилиты
  • shine-server-config/ — конфигурация сервера
  • shine-server-log/ — логирование
  • shine-server-geo/ — геолокация IP

Настройка сервера в Solana (Solana PDA)

Серверный аккаунт SHiNE регистрируется как обычный user_pda формата 1.2 с присутствующим ServerProfileBlock. Отдельного is_server в PDA нет: наличие server profile означает, что аккаунт объявляет серверный endpoint.

PDA 1.2 сейчас допускает один адрес сервера (address_format_type + address_format_version + address). Бинарный блок использует count/array, чтобы будущая версия протокола могла увеличить лимит без смены структуры блока. Прямой список sync_servers удалён: пользовательские blockchain синхронизируются через Arweave.

Клиенты читают server PDA из Solana, получают опубликованный endpoint и подключаются к нему. Межсерверная доставка DM через access-server routing остаётся отдельным механизмом.

Управление серверной PDA выполняется через Web-панель администратора:

shine-UI/server-ui.html

Страницы:

  • shine-UI/server-ui/create-server-pda.html — первичная регистрация серверного аккаунта;
  • shine-UI/server-ui/update-server-pda.html — обновление адреса сервера.

PDA 1.2 использует три постоянные роли ключей: root (cold recovery), blockchain (обычный authority и подпись блоков) и client (клиент/кошелёк). Обычный update авторизуется активным последним blockchain key; root используется для recovery и может менять root.

Актуальные адреса программ Solana (devnet):

  • shine_users: SHiNEPr1APdAgNBteUyBXcNovaHctpSjUu8oH2ZJdN6
  • shine_payments: SHiPmXbM9Fs9khzRUW3TGKsS2W84aqaXTxs3ZkajW9v

Подробнее: docs/Инициализация_Solana_регистрации/README.md

Синхронизация пользовательских blockchain

Прямой peer-to-peer blockchain sync через sync_servers отключён. Сервер восстанавливает и синхронизирует пользовательские записи через Arweave. Код старого peer-sync пока может оставаться как inert legacy, но не должен включаться в runtime.

Деплой

  • Основные инструкции по деплою находятся в ../deploy/AGENTS.md.
  • Deploy выполнять shell-скриптами из ../deploy/scripts/.
  • Gradle deploy-задачи не использовать: Gradle остаётся для сборки и локального запуска.
  • Любые изменения на production (shineup.me, server2.shineup.me) делать только после отдельного явного подтверждения пользователя.
  • Перед production deploy обязательно обновить/проверить backup в deploy/backup/archive/.

Логи на проде:

  • /home/player/SHiNE/shine-server/logs/app.log
  • /home/player/SHiNE/shine-server/logs/call-delivery-events.log

Язык

Комментарии в коде, документация и commit-сообщения — на русском языке.