Привести документацию и TODO к production-структуре

This commit is contained in:
AidarKC
2026-07-20 11:29:03 +04:00
parent daa516babe
commit 8208bb0b9d
55 changed files with 1229 additions and 2275 deletions
@@ -0,0 +1,43 @@
# Постоянный server-to-server WS и DM sync
## Зачем
Текущий production-режим SHiNE рассчитан на один основной сервер. Межсерверная синхронизация относится к будущей децентрализации и не должна блокировать выкладку односерверной production-версии.
Сейчас синхронизация между серверами работает в основном как periodic sync и one-shot push. Для нормальной репликации в будущем ещё нужен постоянный межсерверный канал:
- живое подключение к партнёру;
- push новых блоков;
- push DM;
- ACK на доставку;
- backoff/reconnect;
- стартовый backfill.
## Что сделать
1. Поднять постоянное WebSocket-соединение между партнёрскими серверами.
2. Сделать push новых блоков сразу после `AddBlock`.
3. Сделать push DM-блоков между серверами.
4. Добавить ACK и повторную отправку при сбое.
5. Ввести стартовый обмен курсорами и добор хвоста.
## Что уже есть
- `ListBlockchainHeads`;
- `GetBlockchainBlock`;
- `GetSyncUserProfile`;
- базовый periodic sync;
- базовый backfill хвоста;
- базовый full resync при divergence.
## Откуда продолжать
- от текущего `sync_servers` bootstrap и `PeriodicBlockchainSyncService`;
- дальше выделить отдельный межсерверный transport layer.
## Какие документы потом обновить
- `docs/Blockchain/sync-between-servers.md`;
- `docs/Personal_Messages/Протокол_DM_v1.md`;
- `docs/Personal_Messages/Формат_DM_v1.md`;
- `docs/API/`.