20 KiB
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 механизм)
# УДАЛИТЬ: 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 поведение
# ДОБАВИТЬ: 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
int phantom_dns_dht_store(const char *domain, const struct phantom_dns_record *record) - 3.1.4 Реализовать поиск DNS-записей в DHT
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 подзадач)
🎯 Следующие Шаги
Немедленно:
- Назначить ответственных за каждую фазу
- Начать с Фазы 0 (критическое исправление)
- Создать GitHub Issues для каждой задачи
На этой неделе:
- Завершить Фазу 0
- Начать проектирование Hidden Services (Задача 1.1)
В этом месяце:
- Завершить проектирование Hidden Services и Exit Nodes
- Начать реализацию
phantom_hidden_service.c
Автор: Manus AI
Лицензия: MIT