uploader-bot/docs/MY_PROTOCOL.md

9.4 KiB
Raw Permalink Blame History

MY Network Protocol Specification

Обзор

MY Network представляет собой децентрализованный overlay протокол для распределенной репликации и синхронизации контента поверх существующей системы my-uploader-bot. Протокол сохраняет все существующие состояния и функциональность, добавляя P2P синхронизацию с кворумным консенсусом.

Принципы Overlay Protocol

1. Совместимость с Существующей Системой

  • Полное сохранение всех состояний StoredContent
  • Неизменность существующих API endpoints
  • Прозрачная интеграция без нарушения работы текущих клиентов
  • Обратная совместимость со всеми версиями API

2. Состояния Контента в MY Network

Поддерживаемые Состояния

encrypted: Boolean     - Статус шифрования контента
decrypted: Virtual     - Расшифрованная версия (через decrypted_content_id)
preview: Virtual       - Превью-версия для публичного доступа

MY Network реплицирует все состояния контента:

  • Encrypted Content - зашифрованные данные с encryption_key_id
  • Decrypted Content - расшифрованные версии через связи
  • Preview Content - публичные превью для демонстрации
  • Metadata - все метаданные включая теги, описание, медиа-информацию

Связи Между Состояниями

-- Существующая структура StoredContent поддерживает связи
SELECT * FROM stored_content sc1 
LEFT JOIN stored_content sc2 ON sc1.decrypted_content_id = sc2.id;

3. P2P Синхронизация Architecture

Кворумный Консенсус

Минимальный кворум: 3 ноды
Консенсус требует: 2/3 + 1 подтверждений
Timeout для консенсуса: 30 секунд

Алгоритм Репликации

  1. Content Discovery - обнаружение нового контента
  2. Integrity Check - проверка целостности через хеш
  3. Quorum Voting - голосование за принятие контента
  4. Replication - репликация на кворум нод
  5. Confirmation - подтверждение успешной репликации

4. Bootstrap Configuration

Структура bootstrap.json

{
  "version": "1.0.0",
  "network_id": "my-network-mainnet",
  "bootstrap_nodes": [
    {
      "id": "node-001",
      "address": "my://192.168.1.100:8080",
      "public_key": "ed25519:AAAA...",
      "region": "eu-west-1",
      "weight": 100
    }
  ],
  "consensus": {
    "min_quorum": 3,
    "consensus_threshold": 0.67,
    "timeout_seconds": 30,
    "retry_attempts": 3
  },
  "sync_settings": {
    "sync_interval": 60,
    "max_batch_size": 100,
    "compression": "gzip",
    "encryption": "aes-256-gcm"
  }
}

API Endpoints для MY Network

Core MY Protocol Endpoints

Node Management

GET  /api/my/node/status          - Статус текущей ноды
GET  /api/my/node/peers           - Список подключенных пиров
POST /api/my/node/connect         - Подключение к новому пиру
POST /api/my/node/disconnect      - Отключение от пира

Content Synchronization

GET  /api/my/sync/status          - Статус синхронизации
POST /api/my/sync/request         - Запрос синхронизации контента
GET  /api/my/sync/conflicts       - Список конфликтов синхронизации
POST /api/my/sync/resolve         - Разрешение конфликтов

Quorum & Consensus

GET  /api/my/quorum/status        - Статус кворума
POST /api/my/quorum/vote          - Голосование за контент
GET  /api/my/quorum/results       - Результаты голосования
POST /api/my/consensus/propose    - Предложение изменений

Content Distribution

GET  /api/my/content/{hash}       - Получение контента через MY Network
GET  /api/my/content/{hash}/peers - Список пиров с контентом
POST /api/my/content/announce     - Анонс нового контента
GET  /api/my/content/search       - Поиск контента в сети

Integration API Endpoints

Health Check & Discovery

GET  /api/my/health               - Проверка здоровья MY ноды
GET  /api/my/discovery/nodes      - Обнаружение новых нод
POST /api/my/discovery/announce   - Анонс собственной ноды

Metrics & Analytics

GET  /api/my/metrics/network      - Метрики сети
GET  /api/my/metrics/content      - Метрики контента
GET  /api/my/metrics/performance  - Метрики производительности

Protocol Messages

MY Network Message Types

Node Communication

message NodeHandshake {
  string node_id = 1;
  string public_key = 2;  
  string network_version = 3;
  repeated string supported_features = 4;
  int64 timestamp = 5;
}

message PeerInfo {
  string node_id = 1;
  string address = 2;
  int32 connection_count = 3;
  int64 last_seen = 4;
  float reputation_score = 5;
}

Content Sync Messages

message ContentAnnouncement {
  string content_hash = 1;
  int64 file_size = 2;
  string content_type = 3;
  bool encrypted = 4;
  string encryption_key_id = 5;
  repeated string tags = 6;
  int64 timestamp = 7;
}

message SyncRequest {
  repeated string content_hashes = 1;
  string requesting_node = 2;
  int32 priority = 3;
  int64 timestamp = 4;
}

Consensus Messages

message QuorumVote {
  string content_hash = 1;
  string voter_node_id = 2;
  bool vote = 3;  // true = accept, false = reject
  string signature = 4;
  int64 timestamp = 5;
}

message ConsensusResult {
  string content_hash = 1;
  int32 votes_for = 2;
  int32 votes_against = 3;
  bool consensus_reached = 4;
  repeated string participating_nodes = 5;
}

Security Model

Cryptographic Security

  • Node Identity: Ed25519 ключи для идентификации нод
  • Message Signing: Все сообщения подписываются отправителем
  • Content Integrity: SHA-256 хеши для проверки целостности
  • Transport Security: TLS 1.3 для всех сетевых соединений

Access Control

  • Content Access: Сохранение существующих прав доступа
  • Network Participation: Whitelist/blacklist механизмы
  • Rate Limiting: Защита от спама и DoS атак
  • Reputation System: Система репутации для узлов

MY Network Service Layer

Service Architecture

┌─────────────────────┐
│   Existing API      │  <- Без изменений
├─────────────────────┤
│   MY Network Layer  │  <- Новый overlay слой
├─────────────────────┤
│   StoredContent     │  <- Существующая модель
└─────────────────────┘

Service Components

  • MY Node Manager - управление статусом ноды
  • P2P Communication - межузловое взаимодействие
  • Content Replicator - репликация контента
  • Consensus Engine - механизм консенсуса
  • Sync Coordinator - координация синхронизации

Performance Considerations

Scalability Targets

  • Network Size: До 1000 активных нод
  • Content Volume: До 10TB на ноду
  • Sync Throughput: 100 MB/s между нодами
  • Consensus Latency: < 5 секунд для кворума

Optimization Strategies

  • Content Chunking - разбиение больших файлов
  • Delta Sync - синхронизация только изменений
  • Compression - сжатие передаваемых данных
  • Caching - кеширование популярного контента
  • Load Balancing - балансировка нагрузки между нодами

Future Roadmap

Phase 1: Core Protocol (Q1 2025)

  • Protocol specification
  • Basic P2P communication
  • Simple consensus mechanism
  • Bootstrap node implementation

Phase 2: Advanced Features (Q2 2025)

  • Content deduplication
  • Advanced routing algorithms
  • Performance optimizations
  • Monitoring and analytics

Phase 3: Enterprise Features (Q3 2025)

  • Multi-region replication
  • Enterprise security features
  • SLA guarantees
  • Professional support tools