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 runtimeshine-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:SHiNEPr1APdAgNBteUyBXcNovaHctpSjUu8oH2ZJdN6shine_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-сообщения — на русском языке.