3.8 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-схема, SQLiteshine-server-blockchain/— логика хранения и проверки блоков блокчейнаshine-server-crypto/— криптографические утилитыshine-server-config/— конфигурация сервераshine-server-log/— логированиеshine-server-geo/— геолокация IP
Настройка сервера в Solana (Solana PDA)
Серверный аккаунт SHiNE регистрируется в Solana в виде user_pda с флагом is_server=true.
В PDA хранятся:
- адрес сервера (URL WebSocket/HTTPS, например
https://shineup.me/ws); - список серверов синхронизации (
sync_servers) — логины SHiNE-аккаунтов серверов-партнёров, с которыми синхронизируются блоки и DM; - корневой ключ сервера (
root_key).
Клиенты читают PDA напрямую из Solana, чтобы узнать адрес сервера и при необходимости подключиться.
Управление серверной PDA выполняется через Web-панель администратора:
shine-UI/server-ui.html
Страницы:
shine-UI/server-ui/create-server-pda.html— первичная регистрация серверного аккаунта;shine-UI/server-ui/update-server-pda.html— обновление адреса или списка sync_servers.
Для регистрации нужен полный keyBundle (root + device + blockchain). Для обновления — только root + device (blockchain-ключ не нужен).
Актуальные адреса программ Solana (devnet):
shine_users:3bYrnXwLc56oVPUBAjY8zTMLwHCYq29b5rUMu3b64SQJshine_payments:c4yTa4JT9EtQDCBX9LmWFK6T2gp4JGsuymFbom2EudW
Подробнее: Dev_Docs/Инициализация_Solana_регистрации/README.md
Синхронизация с партнёрскими серверами
Сервер должен синхронизировать блоки блокчейна и DM с серверами-партнёрами из sync_servers.
Детали: Dev_Docs/Blockchain/sync-between-servers.md
Деплой
./gradlew deployServer
./gradlew deployUI
Default deploy по умолчанию идёт на t.shineup.me (player@193.8.215.70).
Production deploy:
./gradlew deployServerProduction
./gradlew deployUIProduction
Любые изменения на shineup.me делать только после отдельного явного подтверждения пользователя.
Резервный test-контур:
./gradlew deployServerTest
./gradlew deployUITest
test.shineup.me считается резервным тестовым сервером и в обычный deploy не включается.
Логи на проде:
/home/player/SHiNE/shine-server/logs/app.log/home/player/SHiNE/shine-server/logs/call-delivery-events.log
Язык
Комментарии в коде, документация и commit-сообщения — на русском языке.