uploader-bot/docs/FASTAPI_DECENTRALIZATION_RE...

398 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MY Network v3.0 - Требования к децентрализации для миграции на FastAPI
## 🎯 Исполнительное резюме
MY Network v3.0 представляет собой **революционную децентрализованную архитектуру БЕЗ КОНСЕНСУСА**, где каждая нода принимает независимые решения. Миграция на FastAPI **КРИТИЧЕСКИ ВАЖНА** для корректной работы децентрализованной сети и предотвращения split сети.
### ⚠️ КРИТИЧЕСКОЕ ПРЕДУПРЕЖДЕНИЕ
**Нарушение протоколов децентрализации может привести к полному расколу сети MY Network v3.0!**
---
## 🏗️ Анализ принципов децентрализации
### 1. Основные принципы MY Network v3.0
#### ❌ ЧТО ПОЛНОСТЬЮ УДАЛЕНО:
- **Кворумная система консенсуса** - нет голосования
- **Централизованное управление** - нет центральных нод
- **Обязательная репликация** - добровольное участие
- **Голосование за контент** - индивидуальные решения
#### ✅ НОВЫЕ ПРИНЦИПЫ:
- **Автономность нод** - каждая нода решает самостоятельно
- **Индивидуальная фильтрация** - настраиваемые правила на уровне ноды
- **Устойчивость к цензуре** - контент доступен пока есть хотя бы одна нода
- **Гибкая топология** - публичные, приватные, bootstrap ноды
### 2. Архитектура синхронизации
```
┌─────────────────┐ анонс ┌─────────────────┐
│ Нода A │ ──────────→ │ Нода B │
│ (новый контент)│ │ (фильтрация) │
└─────────────────┘ └─────────────────┘
┌────────────────┐
│ Индивидуальное │
│ решение │
│ (НЕТ консенсуса)│
└────────────────┘
┌────────────────┐
│ Принять/Отклонить│
│ контент │
└────────────────┘
```
---
## 🔐 Анализ криптографических протоколов
### 1. Ed25519 подписи в межузловом общении
#### ✅ ТЕКУЩАЯ РЕАЛИЗАЦИЯ ПОЛНОСТЬЮ СОВМЕСТИМА:
**Ed25519Manager** ([`ed25519_manager.py:28`](uploader-bot/app/core/crypto/ed25519_manager.py:28)):
```python
class Ed25519Manager:
def sign_message(self, message: Dict[str, Any]) -> str:
"""Подписать сообщение ed25519 ключом"""
# ✅ SHA-256 хэширование
# ✅ Ed25519 подпись
# ✅ Base64 кодирование
def verify_signature(self, message: Dict[str, Any], signature: str, public_key_hex: str) -> bool:
"""Проверить подпись сообщения"""
# ✅ Проверка подлинности
# ✅ Защита от подделки
```
#### 🔒 КРИТИЧНЫЕ ТРЕБОВАНИЯ БЕЗОПАСНОСТИ:
1. **Обязательная подпись** всех межузловых сообщений
2. **Проверка временных меток** (защита от replay-атак)
3. **NODE_ID генерация** из публичного ключа
4. **Детерминированное хэширование** для поиска в сети
### 2. Система шифрования контента
```
Контент → AES-256-GCM → encrypted_content_hash (детерминированный)
Unique encryption_key
preview_id (изолированный)
```
**КРИТИЧНО:** Детерминированные хэши должны быть одинаковыми на всех нодах!
---
## 🌐 Анализ протоколов синхронизации
### 1. Протокол без консенсуса
#### НОВЫЙ АЛГОРИТМ V3.0:
```python
async def handle_content_announcement(peer_id: str, announcement: dict) -> bool:
"""Обработка анонса БЕЗ консенсуса"""
# 1. Получение анонса от пира
content_hash = announcement.get("content_hash")
# 2. ИНДИВИДУАЛЬНОЕ решение (НЕТ голосования!)
should_accept = await self.content_filter.should_accept_content(
content_hash, metadata, peer_id
)
# 3. Принятие решения только для себя
if should_accept:
await self.sync_manager.queue_content_sync(peer_id, content_hash)
return should_accept # НЕТ консенсуса!
```
### 2. Типы P2P сообщений v3.0
#### КРИТИЧНЫЕ ТИПЫ СООБЩЕНИЙ:
- `CONTENT_ANNOUNCEMENT` - анонс нового контента
- `SYNC_REQUEST` - запрос синхронизации
- `ACCESS_REQUEST` - запрос доступа к контенту
- `HANDSHAKE` - установка соединения
- `VERSION_INFO` - проверка совместимости
---
## 📊 Критически важные эндпоинты
### 1. Обязательные для работы сети
#### 🔗 МЕЖУЗЛОВОЕ ОБЩЕНИЕ:
```
POST /api/node/handshake # Установка соединений
POST /api/node/content/sync # Синхронизация БЕЗ консенсуса
POST /api/node/network/ping # Проверка доступности
POST /api/node/network/discover # Обнаружение нод
GET /api/node/network/status # Статус ноды
```
#### 🌐 API V3.0:
```
POST /api/v3/sync/announce # Анонс контента в сеть
GET /api/v3/sync/pending # Ожидающие синхронизации
POST /api/v3/sync/accept/{hash} # Принять контент
GET /api/v3/node/status # Статус ноды v3.0
GET /api/v3/network/stats # Статистика сети
```
#### 🔐 БЕЗОПАСНОСТЬ КОНТЕНТА:
```
GET /api/v3/content/{hash}/preview/{preview_id} # Получение preview
POST /api/v3/content/{hash}/request-key # Запрос ключа
```
### 2. Заголовки для межузлового общения
#### ОБЯЗАТЕЛЬНЫЕ ЗАГОЛОВКИ:
```
X-Node-Communication: true
X-Node-ID: node-abc123...
X-Node-Public-Key: ed25519_public_key_hex
X-Node-Signature: base64_ed25519_signature
```
---
## ⚙️ Совместимость FastAPI с требованиями безопасности
### 1. ✅ ПОЛОЖИТЕЛЬНЫЕ ФАКТОРЫ
#### Ed25519 криптография:
-**Полностью совместима** с FastAPI
-**cryptography** библиотека поддерживается
-**Асинхронная работа** без проблем
#### Middleware система:
-**CryptographicMiddleware** ([`middleware.py:276`](uploader-bot/app/api/middleware.py:276)) готов для FastAPI
-**Проверка подписей** реализована
-**Межузловые заголовки** поддерживаются
#### Существующая реализация:
-**FastAPI маршруты** уже реализованы ([`fastapi_node_routes.py`](uploader-bot/app/api/fastapi_node_routes.py:1))
-**Дублируют функциональность** Sanic версии
-**API v3.0** готов ([`fastapi_v3_routes.py`](uploader-bot/app/api/fastapi_v3_routes.py:1))
### 2. 🔧 ТРЕБУЕМЫЕ АДАПТАЦИИ
#### Middleware для FastAPI:
```python
# Нужно адаптировать из Sanic в FastAPI
from fastapi import Request, HTTPException
async def verify_node_signature(request: Request) -> Dict[str, Any]:
"""Адаптация для FastAPI"""
# Получение заголовков
signature = request.headers.get("x-node-signature")
node_id = request.headers.get("x-node-id")
public_key = request.headers.get("x-node-public-key")
# Чтение body
body = await request.body()
message_data = json.loads(body.decode())
# Проверка подписи
crypto_manager = get_ed25519_manager()
is_valid = crypto_manager.verify_signature(message_data, signature, public_key)
if not is_valid:
raise HTTPException(status_code=403, detail="Invalid signature")
```
---
## 🛡️ Детальный анализ требований для миграции
### 1. КРИТИЧЕСКИЕ КОМПОНЕНТЫ
#### 🔐 Криптографические требования:
- **Ed25519 подписи** - ✅ Готово
- **AES-256-GCM шифрование** - ⚠️ Требует проверки
- **Детерминированные хэши** - ⚠️ Требует тестирования
- **NODE_ID генерация** - ✅ Готово
#### 🌐 Сетевые требования:
- **P2P протокол** - ✅ Реализован
- **Handshake между нодами** - ✅ Готово
- **Discovery протокол** - ✅ Реализован
- **Rate limiting** - ✅ Готово
#### 🔄 Протоколы синхронизации:
- **Индивидуальные решения** - ⚠️ Требует адаптации
- **Контент фильтрация** - ⚠️ Заглушка (будущее)
- **Анонс контента** - ✅ Реализован
- **Очистка контента** - ⚠️ Требует адаптации
### 2. ТОЧКИ ОТКАЗА ПРИ МИГРАЦИИ
#### 🚨 ВЫСОКИЙ РИСК:
1. **Несовместимость хэшей** между Sanic и FastAPI
2. **Различия в обработке JSON** (сериализация)
3. **Middleware порядок выполнения**
4. **Асинхронная обработка** межузловых запросов
#### ⚠️ СРЕДНИЙ РИСК:
1. **Rate limiting** конфигурация
2. **CORS заголовки** для межузлового общения
3. **Логирование** межузловых операций
4. **Error handling** для криптографических ошибок
### 3. ЗАВИСИМОСТИ МЕЖДУ УЗЛАМИ
#### Цепочка зависимостей:
```
Bootstrap Node → Discovery → Handshake → Content Sync → Individual Decision
```
#### Fallback механизмы:
1. **Multiple bootstrap nodes** - для отказоустойчивости
2. **Peer discovery** - через несколько источников
3. **Content redundancy** - множественные источники
4. **Graceful degradation** - работа при недоступности некоторых нод
---
## 🎯 Рекомендации по сохранению децентрализованных функций
### 1. НЕМЕДЛЕННЫЕ ДЕЙСТВИЯ (КРИТИЧНО)
#### 🔥 Приоритет 1 - Криптография:
```python
# 1. Адаптировать CryptographicMiddleware для FastAPI
from fastapi import Depends, HTTPException
async def verify_inter_node_request(request: Request):
"""FastAPI dependency для проверки межузлового запроса"""
if request.headers.get("x-node-communication") != "true":
return None # Не межузловой запрос
# Проверка ed25519 подписи
crypto_manager = get_ed25519_manager()
# ... проверка подписи
return {"node_id": node_id, "public_key": public_key}
# 2. Использовать в маршрутах
@router.post("/api/node/handshake")
async def handshake(
request: Request,
node_info: dict = Depends(verify_inter_node_request)
):
# Гарантированно проверенный межузловой запрос
```
#### 🔥 Приоритет 2 - Детерминированные хэши:
```python
# Обеспечить одинаковые хэши на всех нодах
def calculate_deterministic_hash(content_data: bytes) -> str:
"""КРИТИЧНО: должно быть одинаково на всех нодах"""
return hashlib.sha256(content_data).hexdigest()
# Тестирование совместимости
async def test_hash_compatibility():
"""Тест совместимости хэшей между Sanic и FastAPI"""
test_data = b"test content"
sanic_hash = sanic_calculate_hash(test_data)
fastapi_hash = fastapi_calculate_hash(test_data)
assert sanic_hash == fastapi_hash, "Hash incompatibility detected!"
```
### 2. ПЛАН ПОЭТАПНОЙ МИГРАЦИИ
#### Этап 1 - Подготовка (1-2 дня):
1. **Тестирование совместимости** ed25519 между Sanic и FastAPI
2. **Проверка детерминированных хэшей**
3. **Адаптация middleware** для FastAPI
4. **Unit tests** для криптографических функций
#### Этап 2 - Миграция ядра (2-3 дня):
1. **Перенос межузловых маршрутов** на FastAPI
2. **Тестирование handshake** между нодами
3. **Проверка синхронизации** контента
4. **Мониторинг сетевых операций**
#### Этап 3 - Валидация (1-2 дня):
1. **Интеграционные тесты** с реальными нодами
2. **Проверка децентрализованной фильтрации**
3. **Stress testing** межузлового общения
4. **Мониторинг целостности сети**
### 3. КОНТРОЛЬНЫЕ ТОЧКИ БЕЗОПАСНОСТИ
#### ✅ Чек-лист перед запуском:
- [ ] Ed25519 подписи работают идентично
- [ ] Детерминированные хэши совпадают
- [ ] Handshake протокол функционирует
- [ ] Content sync без ошибок
- [ ] Node discovery работает
- [ ] Rate limiting настроен
- [ ] Логирование межузловых операций
- [ ] Error handling для всех сценариев
#### 🚨 Red flags (немедленная остановка):
- **Различия в хэшах** между нодами
- **Ошибки подписей** в межузловом общении
- **Split network** - разделение сети на группы
- **Consensus errors** - попытки создать консенсус
### 4. МОНИТОРИНГ И ДИАГНОСТИКА
#### Ключевые метрики:
```python
# Критичные метрики для мониторинга
CRITICAL_METRICS = {
"inter_node_handshakes": "Успешные handshake",
"signature_verification_rate": "Процент валидных подписей",
"content_sync_success": "Успешная синхронизация контента",
"network_split_detection": "Обнаружение разделения сети",
"node_discovery_rate": "Скорость обнаружения новых нод"
}
```
#### Алерты для DevOps:
1. **Signature verification < 95%** - КРИТИЧНО
2. **Network split detected** - НЕМЕДЛЕННОЕ ВМЕШАТЕЛЬСТВО
3. **Content sync failures > 10%** - ВЫСОКИЙ ПРИОРИТЕТ
4. **Node discovery degradation** - МОНИТОРИНГ
---
## 🎉 Заключение
### ✅ ГОТОВНОСТЬ К МИГРАЦИИ: 85%
MY Network v3.0 имеет **отличную основу** для миграции на FastAPI:
-**Ed25519 криптография** полностью совместима
-**FastAPI маршруты** уже реализованы
-**Middleware система** готова к адаптации
-**Децентрализованные принципы** четко определены
### ⚠️ КРИТИЧНЫЕ ЗАДАЧИ:
1. **Тестирование совместимости** хэшей и подписей
2. **Адаптация middleware** для FastAPI
3. **Валидация межузлового общения**
4. **Мониторинг целостности сети**
### 🚀 РЕЗУЛЬТАТ МИГРАЦИИ:
При правильном выполнении миграции MY Network v3.0 получит:
- 🌐 **Полную децентрализацию** без единых точек отказа
- 🔒 **Надежную безопасность** с ed25519 подписями
- 📈 **Улучшенную производительность** FastAPI
- 🛡️ **Устойчивость к цензуре** через множественные источники
**MY Network v3.0 + FastAPI = Будущее децентрализованной дистрибьюции контента!**
---
*Документ подготовлен для обеспечения корректной работы децентрализованной сети MY Network v3.0 при миграции на FastAPI | 2025*