461 lines
20 KiB
Markdown
461 lines
20 KiB
Markdown
# Phantom Protocol: Трекер Задач Разработки
|
||
|
||
**Дата создания:** 22 ноября 2025
|
||
**Статус проекта:** В разработке (30% готовности)
|
||
**Цель:** Достичь 100% соответствия документации
|
||
|
||
---
|
||
|
||
## 📊 Общий Прогресс
|
||
|
||
```
|
||
Фаза 0: Критическое исправление [ ] 0/1 (0%)
|
||
Фаза 1: Hidden Services [ ] 0/4 (0%)
|
||
Фаза 2: Exit Nodes [ ] 0/3 (0%)
|
||
Фаза 3: TLD Система [ ] 0/3 (0%)
|
||
Фаза 4: Финальные доработки [ ] 0/3 (0%)
|
||
|
||
ОБЩИЙ ПРОГРЕСС: 0/14 задач (0%)
|
||
```
|
||
|
||
---
|
||
|
||
## 🚨 ФАЗА 0: Критическое Исправление
|
||
|
||
**Приоритет:** 🚨 КРИТИЧЕСКИЙ
|
||
**Срок:** 1 неделя
|
||
**Статус:** ⬜ Не начато
|
||
|
||
### Задача 0.1: Исправить SOCKS5 Fallback
|
||
|
||
**Файл:** `examples/socks5-proxy.py`
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 3-5 дней
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **0.1.1** Открыть файл `examples/socks5-proxy.py`
|
||
- [ ] **0.1.2** Найти функцию `connect()` в классе `PhantomConnection`
|
||
- [ ] **0.1.3** Удалить строки 110-115 (fallback механизм)
|
||
```python
|
||
# УДАЛИТЬ:
|
||
logger.info(f"Fallback: прямое подключение к {target_host}:{target_port}")
|
||
self.socket.close()
|
||
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||
self.socket.connect((target_host, target_port))
|
||
```
|
||
- [ ] **0.1.4** Реализовать fail-secure поведение
|
||
```python
|
||
# ДОБАВИТЬ:
|
||
logger.error(f"❌ Не удалось подключиться к Phantom сети: {e}")
|
||
logger.error("🔒 Соединение прервано для обеспечения безопасности")
|
||
self._send_error_response(SOCKS5_HOST_UNREACHABLE)
|
||
return False
|
||
```
|
||
- [ ] **0.1.5** Обновить документацию `user-guide-complete-ru.md`
|
||
- [ ] **0.1.6** Добавить раздел о fail-secure поведении
|
||
- [ ] **0.1.7** Протестировать: отключить сеть Phantom и убедиться, что прокси возвращает ошибку
|
||
- [ ] **0.1.8** Создать коммит с описанием: "fix(security): Remove insecure fallback in SOCKS5 proxy"
|
||
|
||
**Критерий завершения:**
|
||
- ✅ При ошибке подключения прокси НЕ устанавливает прямое соединение
|
||
- ✅ В логах четко указано, что соединение прервано
|
||
- ✅ Браузер получает ошибку "Host unreachable"
|
||
|
||
---
|
||
|
||
## 🔴 ФАЗА 1: Hidden Services
|
||
|
||
**Приоритет:** 🔴 Высокий
|
||
**Срок:** 4 месяца
|
||
**Статус:** ⬜ Не начато
|
||
|
||
### Задача 1.1: Спроектировать Архитектуру
|
||
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 1-2 недели
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **1.1.1** Изучить архитектуру Tor Hidden Services
|
||
- [ ] **1.1.2** Проанализировать существующий `phantom_hidden_service.h`
|
||
- [ ] **1.1.3** Создать документ `docs/hidden-services-design.md`
|
||
- [ ] **1.1.4** Описать протокол публикации дескриптора в DHT
|
||
- [ ] **1.1.5** Описать протокол установки соединения через rendezvous point
|
||
- [ ] **1.1.6** Определить форматы криптографических сообщений
|
||
- [ ] **1.1.7** Создать диаграммы последовательности (sequence diagrams)
|
||
- [ ] **1.1.8** Провести ревью дизайна с командой
|
||
|
||
**Критерий завершения:**
|
||
- ✅ Документ `hidden-services-design.md` создан и одобрен
|
||
- ✅ Все участники команды понимают архитектуру
|
||
|
||
---
|
||
|
||
### Задача 1.2: Реализовать phantom_hidden_service.c
|
||
|
||
**Файл:** `src/phantom_hidden_service.c`
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 6-8 недель
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **1.2.1** Создать файл `src/phantom_hidden_service.c`
|
||
- [ ] **1.2.2** Реализовать `phantom_hs_init()`
|
||
- [ ] Генерация Ed25519 keypair
|
||
- [ ] Вычисление service_id = SHA256(public_key)
|
||
- [ ] Сохранение ключей в `~/.phantom/hidden_services/`
|
||
- [ ] **1.2.3** Реализовать `phantom_hs_create_descriptor()`
|
||
- [ ] Формирование дескриптора с introduction points
|
||
- [ ] Шифрование дескриптора
|
||
- [ ] Подпись приватным ключом
|
||
- [ ] **1.2.4** Реализовать `phantom_hs_publish()`
|
||
- [ ] Интеграция с Kademlia DHT
|
||
- [ ] Публикация дескриптора по ключу service_id
|
||
- [ ] Реализация периодического обновления (каждые 24 часа)
|
||
- [ ] **1.2.5** Реализовать `phantom_hs_lookup()`
|
||
- [ ] Поиск дескриптора в DHT
|
||
- [ ] Расшифровка дескриптора
|
||
- [ ] Проверка подписи
|
||
- [ ] **1.2.6** Реализовать `phantom_hs_connect()`
|
||
- [ ] Получение дескриптора через `phantom_hs_lookup()`
|
||
- [ ] Выбор introduction point
|
||
- [ ] Построение туннеля к introduction point
|
||
- [ ] Согласование rendezvous point
|
||
- [ ] Установка end-to-end зашифрованного соединения
|
||
- [ ] **1.2.7** Написать unit-тесты для каждой функции
|
||
- [ ] **1.2.8** Обновить Makefile для компиляции нового файла
|
||
|
||
**Критерий завершения:**
|
||
- ✅ Файл компилируется без ошибок
|
||
- ✅ Все unit-тесты проходят
|
||
- ✅ Code coverage > 80%
|
||
|
||
---
|
||
|
||
### Задача 1.3: Создать CLI-инструмент
|
||
|
||
**Файл:** `tools/phantom-hidden-service.c`
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 2-3 недели
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **1.3.1** Создать файл `tools/phantom-hidden-service.c`
|
||
- [ ] **1.3.2** Реализовать парсинг аргументов командной строки (getopt)
|
||
- [ ] **1.3.3** Реализовать команду `--create --name <name>`
|
||
- [ ] Вызов `phantom_hs_init()`
|
||
- [ ] Вывод service_id пользователю
|
||
- [ ] **1.3.4** Реализовать команду `--bind <service_id>:port --target host:port`
|
||
- [ ] Запуск сервера, слушающего входящие соединения
|
||
- [ ] Проксирование на локальный сервис
|
||
- [ ] **1.3.5** Реализовать команду `--list`
|
||
- [ ] Чтение директории `~/.phantom/hidden_services/`
|
||
- [ ] Вывод списка всех сервисов
|
||
- [ ] **1.3.6** Реализовать команду `--delete <service_id>`
|
||
- [ ] **1.3.7** Добавить в Makefile цель для компиляции
|
||
- [ ] **1.3.8** Написать man-страницу или --help текст
|
||
|
||
**Критерий завершения:**
|
||
- ✅ Команда `phantom-hidden-service --create` работает
|
||
- ✅ Команда `phantom-hidden-service --bind` успешно привязывает сервис
|
||
- ✅ Все команды из документации реализованы
|
||
|
||
---
|
||
|
||
### Задача 1.4: Написать Функциональный Тест
|
||
|
||
**Файл:** `tests/test-hidden-services.sh`
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 2-3 недели
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **1.4.1** Создать директорию `tests/`
|
||
- [ ] **1.4.2** Создать скрипт `tests/test-hidden-services.sh`
|
||
- [ ] **1.4.3** Реализовать автоматический запуск локальной Phantom сети (5 узлов)
|
||
- [ ] **1.4.4** Создать тестовый файл `test.txt` с известным содержимым
|
||
- [ ] **1.4.5** Запустить простой веб-сервер: `python3 -m http.server 8080`
|
||
- [ ] **1.4.6** Создать hidden service: `phantom-hidden-service --create --name test`
|
||
- [ ] **1.4.7** Привязать к веб-серверу: `phantom-hidden-service --bind <service_id>:80 --target localhost:8080`
|
||
- [ ] **1.4.8** Подождать публикации дескриптора (5-10 секунд)
|
||
- [ ] **1.4.9** Запустить клиент, который скачивает `test.txt` через `.phantom` адрес
|
||
- [ ] **1.4.10** Сравнить скачанный файл с оригиналом: `diff test.txt downloaded.txt`
|
||
- [ ] **1.4.11** Интегрировать тест в CI/CD
|
||
|
||
**Критерий завершения:**
|
||
- ✅ Тест проходит от начала до конца автоматически
|
||
- ✅ Скачанный файл идентичен оригиналу
|
||
- ✅ Тест включен в CI/CD pipeline
|
||
|
||
---
|
||
|
||
## 🔴 ФАЗА 2: Exit Nodes
|
||
|
||
**Приоритет:** 🔴 Высокий
|
||
**Срок:** 3 месяца
|
||
**Статус:** ⬜ Не начато
|
||
|
||
### Задача 2.1: Спроектировать Архитектуру
|
||
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 1-2 недели
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **2.1.1** Изучить архитектуру Tor Exit Nodes
|
||
- [ ] **2.1.2** Проанализировать `phantom_exit_node.h`
|
||
- [ ] **2.1.3** Создать документ `docs/exit-nodes-design.md`
|
||
- [ ] **2.1.4** Описать протокол регистрации exit node в DHT
|
||
- [ ] **2.1.5** Описать формат Exit Policy (whitelist/blacklist портов и IP)
|
||
- [ ] **2.1.6** Спроектировать механизм проксирования трафика
|
||
- [ ] **2.1.7** Провести ревью дизайна
|
||
|
||
**Критерий завершения:**
|
||
- ✅ Документ `exit-nodes-design.md` создан и одобрен
|
||
|
||
---
|
||
|
||
### Задача 2.2: Реализовать phantom_exit_node.c
|
||
|
||
**Файл:** `src/phantom_exit_node.c`
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 4-6 недель
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **2.2.1** Создать файл `src/phantom_exit_node.c`
|
||
- [ ] **2.2.2** Реализовать `phantom_exit_init()`
|
||
- [ ] Загрузка конфигурации из файла
|
||
- [ ] Парсинг Exit Policy
|
||
- [ ] Регистрация в DHT как exit node
|
||
- [ ] **2.2.3** Реализовать `phantom_exit_check_policy()`
|
||
- [ ] Проверка target_host и target_port по whitelist/blacklist
|
||
- [ ] Возврат ALLOWED/DENIED
|
||
- [ ] **2.2.4** Реализовать `phantom_exit_handle_request()`
|
||
- [ ] Прием запроса из туннеля Phantom
|
||
- [ ] Проверка по Exit Policy
|
||
- [ ] Установка реального TCP-соединения с target
|
||
- [ ] Проксирование данных в обе стороны
|
||
- [ ] Обработка ошибок и таймаутов
|
||
- [ ] **2.2.5** Написать unit-тесты
|
||
- [ ] **2.2.6** Обновить Makefile
|
||
|
||
**Критерий завершения:**
|
||
- ✅ Exit node успешно проксирует трафик
|
||
- ✅ Exit Policy работает корректно
|
||
- ✅ Unit-тесты проходят
|
||
|
||
---
|
||
|
||
### Задача 2.3: Интегрировать SOCKS5 с Phantom
|
||
|
||
**Файл:** `tools/phantom-socks5-proxy.c`
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 3-4 недели
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **2.3.1** Создать файл `tools/phantom-socks5-proxy.c` (или доработать Python-версию)
|
||
- [ ] **2.3.2** Реализовать поиск exit node в DHT
|
||
- [ ] Запрос к DHT: "найти узлы с флагом EXIT_NODE"
|
||
- [ ] Выбор случайного exit node из списка
|
||
- [ ] **2.3.3** Реализовать построение туннеля к exit node
|
||
- [ ] Использование функций из `libphantom.so`
|
||
- [ ] Построение туннеля через N хопов
|
||
- [ ] **2.3.4** Реализовать отправку запроса на подключение
|
||
- [ ] Формирование сообщения CONNECT target_host:target_port
|
||
- [ ] Отправка через туннель к exit node
|
||
- [ ] **2.3.5** Реализовать проксирование данных
|
||
- [ ] Клиент <-> SOCKS5 прокси <-> туннель Phantom <-> exit node <-> target
|
||
- [ ] **2.3.6** Удалить весь fallback-код
|
||
- [ ] **2.3.7** Протестировать с реальными сайтами
|
||
|
||
**Критерий завершения:**
|
||
- ✅ `curl --socks5 localhost:8080 https://ipinfo.io` показывает IP exit node
|
||
- ✅ Трафик проходит через Phantom сеть
|
||
- ✅ Нет прямых соединений
|
||
|
||
---
|
||
|
||
## 🟡 ФАЗА 3: TLD Система
|
||
|
||
**Приоритет:** 🟡 Средний
|
||
**Срок:** 6 месяцев
|
||
**Статус:** ⬜ Не начато
|
||
|
||
### Задача 3.1: Завершить TODO и Интегрировать с DHT
|
||
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 8-10 недель
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **3.1.1** Найти все TODO: `grep -rn "TODO" src/phantom_dns*.c src/phantom_domain_registry.c src/phantom_consensus.c`
|
||
- [ ] **3.1.2** Для каждого TODO создать отдельную подзадачу
|
||
- [ ] **3.1.3** Реализовать хранение DNS-записей в DHT
|
||
```c
|
||
int phantom_dns_dht_store(const char *domain, const struct phantom_dns_record *record)
|
||
```
|
||
- [ ] **3.1.4** Реализовать поиск DNS-записей в DHT
|
||
```c
|
||
struct phantom_dns_record* phantom_dns_dht_lookup(const char *domain, uint16_t type)
|
||
```
|
||
- [ ] **3.1.5** Реализовать кэширование DNS-записей
|
||
- [ ] **3.1.6** Написать unit-тесты для интеграции с DHT
|
||
- [ ] **3.1.7** Удалить все пометки TODO
|
||
|
||
**Критерий завершения:**
|
||
- ✅ `grep -r "TODO" src/phantom_dns*.c` не находит пометок
|
||
- ✅ DNS-резолвер успешно находит записи через DHT
|
||
- ✅ Кэширование работает
|
||
|
||
---
|
||
|
||
### Задача 3.2: Реализовать Консенсус
|
||
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 8-12 недель
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **3.2.1** Выбрать алгоритм консенсуса (Raft / PBFT / PoS)
|
||
- [ ] **3.2.2** Создать документ с описанием выбранного алгоритма
|
||
- [ ] **3.2.3** Реализовать механизм голосования валидаторов
|
||
- [ ] **3.2.4** Реализовать достижение кворума (>2/3 голосов)
|
||
- [ ] **3.2.5** Реализовать разрешение конфликтов (fork resolution)
|
||
- [ ] **3.2.6** Написать тесты на Byzantine failures
|
||
- [ ] **3.2.7** Протестировать с 10+ валидаторами
|
||
|
||
**Критерий завершения:**
|
||
- ✅ Валидаторы достигают консенсуса по DNS-обновлениям
|
||
- ✅ Система устойчива к отказу 1/3 валидаторов
|
||
- ✅ Конфликты разрешаются корректно
|
||
|
||
---
|
||
|
||
### Задача 3.3: Оптимизация и Шардинг
|
||
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 6-8 недель
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **3.3.1** Профилирование текущей производительности
|
||
- [ ] **3.3.2** Оптимизация узких мест
|
||
- [ ] **3.3.3** Реализация шардинга доменного пространства
|
||
- [ ] **3.3.4** Создание генератора нагрузки для тестирования
|
||
- [ ] **3.3.5** Достижение 100,000+ QPS
|
||
- [ ] **3.3.6** Тестирование с миллионами доменов
|
||
|
||
**Критерий завершения:**
|
||
- ✅ Система обрабатывает 100,000+ запросов/сек
|
||
- ✅ Латентность < 50ms (p99)
|
||
- ✅ Масштабируется горизонтально
|
||
|
||
---
|
||
|
||
## 🟢 ФАЗА 4: Финальные Доработки
|
||
|
||
**Приоритет:** 🟢 Низкий
|
||
**Срок:** 4 месяца
|
||
**Статус:** ⬜ Не начато
|
||
|
||
### Задача 4.1: Реализовать Недостающие Примеры
|
||
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 8-10 недель
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **4.1.1** Anonymous File Storage (2 недели)
|
||
- [ ] **4.1.2** Encrypted Messenger (2 недели)
|
||
- [ ] **4.1.3** TCP Tunnels (1 неделя)
|
||
- [ ] **4.1.4** Hidden Websites (2 недели)
|
||
- [ ] **4.1.5** Custom TLD (1 неделя)
|
||
- [ ] **4.1.6** VPN через Phantom (2 недели)
|
||
|
||
**Критерий завершения:**
|
||
- ✅ Все 8 примеров реализованы и работают
|
||
- ✅ Примеры используют реальную сеть Phantom
|
||
|
||
---
|
||
|
||
### Задача 4.2: Создать Функциональные Тесты
|
||
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 4-6 недель
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **4.2.1** Доработать `test-real-scenarios.sh`
|
||
- [ ] **4.2.2** Добавить end-to-end тесты для каждого примера
|
||
- [ ] **4.2.3** Добавить тесты на устойчивость к отказам
|
||
- [ ] **4.2.4** Интегрировать в CI/CD
|
||
- [ ] **4.2.5** Достичь code coverage > 70%
|
||
|
||
**Критерий завершения:**
|
||
- ✅ Все тесты проходят автоматически
|
||
- ✅ Coverage > 70%
|
||
|
||
---
|
||
|
||
### Задача 4.3: Обновить Документацию
|
||
|
||
**Ответственный:** _[не назначен]_
|
||
**Срок:** 2-3 недели
|
||
|
||
#### Подзадачи:
|
||
|
||
- [ ] **4.3.1** Провести ревизию всей документации
|
||
- [ ] **4.3.2** Разделить на "Реализовано" / "В разработке" / "Планируется"
|
||
- [ ] **4.3.3** Убрать вводящие в заблуждение заявления
|
||
- [ ] **4.3.4** Добавить предупреждения ⚠️ для незавершенных функций
|
||
- [ ] **4.3.5** Завершить русификацию комментариев в коде
|
||
- [ ] **4.3.6** Создать публичный roadmap
|
||
|
||
**Критерий завершения:**
|
||
- ✅ Документация на 100% соответствует коду
|
||
- ✅ Нет вводящих в заблуждение заявлений
|
||
- ✅ Roadmap опубликован
|
||
|
||
---
|
||
|
||
## 📈 Метрики Прогресса
|
||
|
||
Обновляйте эту секцию по мере выполнения задач:
|
||
|
||
```
|
||
Последнее обновление: [ДАТА]
|
||
|
||
Фаза 0: [█░░░░░░░░░] 0% (0/8 подзадач)
|
||
Фаза 1: [░░░░░░░░░░] 0% (0/32 подзадач)
|
||
Фаза 2: [░░░░░░░░░░] 0% (0/21 подзадач)
|
||
Фаза 3: [░░░░░░░░░░] 0% (0/20 подзадач)
|
||
Фаза 4: [░░░░░░░░░░] 0% (0/17 подзадач)
|
||
|
||
ОБЩИЙ ПРОГРЕСС: [░░░░░░░░░░] 0% (0/98 подзадач)
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 Следующие Шаги
|
||
|
||
**Немедленно:**
|
||
1. Назначить ответственных за каждую фазу
|
||
2. Начать с Фазы 0 (критическое исправление)
|
||
3. Создать GitHub Issues для каждой задачи
|
||
|
||
**На этой неделе:**
|
||
1. Завершить Фазу 0
|
||
2. Начать проектирование Hidden Services (Задача 1.1)
|
||
|
||
**В этом месяце:**
|
||
1. Завершить проектирование Hidden Services и Exit Nodes
|
||
2. Начать реализацию `phantom_hidden_service.c`
|
||
|
||
---
|
||
|
||
**Автор:** Manus AI
|
||
**Лицензия:** MIT
|