Files
Phantom/workspace/TASK_TRACKER.md

461 lines
20 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.
# 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