# 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-схема, SQLite
- `shine-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`: `FZS1YctoeEhCkZ5VTjsysUFAXR8CqxYztcLboXcg2Rpm`
- `shine_payments`: `m48pWRGWrMj3TEHjuU4zsp5Gju4e7ZaPovk8RcVt7kR`

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

## Синхронизация с партнёрскими серверами

Сервер должен синхронизировать блоки блокчейна и DM с серверами-партнёрами из `sync_servers`.
Детали: `Dev_Docs/Blockchain/sync-between-servers.md`

## Деплой

```
./gradlew deployServer
```

Хост по умолчанию: `player@93.170.12.154` (shineup.me).

Логи на проде:
- `/home/player/SHiNE/shine-server/logs/app.log`
- `/home/player/SHiNE/shine-server/logs/call-delivery-events.log`

## Язык

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