# Практический Чек-лист Разработки Phantom Protocol **Цель:** Предоставить пошаговый план действий, по которому можно последовательно двигаться для реализации заявленного функционала. Отмечайте пункты по мере их выполнения. --- ## 🚨 Фаза 0: Критическое Исправление (Срок: ~1 неделя) **Цель:** Устранить уязвимость, создающую ложное чувство безопасности. - [ ] **Задача 0.1: Исправить SOCKS5 прокси** - [ ] **Действие:** Открыть файл `examples/socks5-proxy.py`. - [ ] **Действие:** Найти блок `try...except` в функции `connect`. - [ ] **Действие:** Полностью удалить `fallback` механизм, который устанавливает прямое соединение (`self.socket.connect((target_host, target_port))`). - [ ] **Действие:** Вместо него реализовать безопасное завершение работы (fail-secure). При ошибке подключения к Phantom-узлу, прокси должен вернуть клиенту ошибку `SOCKS5_HOST_UNREACHABLE` и закрыть соединение. - [ ] **Действие:** Добавить в лог четкое сообщение об ошибке и прерывании соединения для обеспечения безопасности. - [ ] **Критерий завершения:** Принудительное отключение от сети Phantom приводит к ошибке в браузере, а не к прямому подключению. В логах прокси появляется сообщение об ошибке. --- ## 🔴 Фаза 1: Реализация Hidden Services (Срок: ~4 месяца) **Цель:** Создать с нуля работающий функционал `.phantom` сайтов. - [ ] **Задача 1.1: Спроектировать архитектуру** - [ ] **Действие:** Проанализировать `phantom_hidden_service.h` и архитектуру Tor Hidden Services. - [ ] **Действие:** Разработать детальную схему взаимодействия: клиент -> DHT -> точка встречи (rendezvous point) -> скрытый сервис. - [ ] **Действие:** Определить форматы криптографических сообщений для каждого этапа. - [ ] **Критерий завершения:** Создан документ с детальным техническим дизайном Hidden Services. - [ ] **Задача 1.2: Написать код реализации (`phantom_hidden_service.c`)** - [ ] **Действие:** Создать файл `src/phantom_hidden_service.c`. - [ ] **Действие:** Реализовать функцию `phantom_hs_init()`: генерация ключевой пары Ed25519 для сервиса и вычисление его ID. - [ ] **Действие:** Реализовать функцию `phantom_hs_publish()`: создание зашифрованного дескриптора (содержащего адреса точек встречи) и его публикация в Kademlia DHT. - [ ] **Действие:** Реализовать функцию `phantom_hs_lookup()`: поиск и расшифровка дескриптора в DHT по ID сервиса. - [ ] **Действие:** Реализовать функцию `phantom_hs_connect()`: полный цикл установки соединения через точку встречи. - [ ] **Критерий завершения:** Все функции из `phantom_hidden_service.h` реализованы. Юнит-тесты для каждой функции проходят успешно. - [ ] **Задача 1.3: Создать CLI-инструмент (`phantom-hidden-service`)** - [ ] **Действие:** Создать файл `tools/phantom-hidden-service.c`. - [ ] **Действие:** Реализовать парсинг команд `--create`, `--bind`, `--list`. - [ ] **Действие:** Интегрировать инструмент с функциями из `libphantom.so` (`phantom_hs_*`). - [ ] **Критерий завершения:** Команда `phantom-hidden-service --create` успешно создает новый сервис. Команда `phantom-hidden-service --bind` успешно привязывает сервис к локальному порту. - [ ] **Задача 1.4: Написать функциональный тест** - [ ] **Действие:** Создать скрипт, который автоматически: 1. Запускает локальную сеть Phantom. 2. Создает hidden service с помощью CLI. 3. Запускает простой веб-сервер. 4. Привязывает его к hidden service. 5. Запускает клиент, который скачивает файл с этого сервиса через сеть Phantom. - [ ] **Критерий завершения:** Тест проходит от начала до конца без ошибок. Скачанный файл идентичен оригиналу. --- ## 🔴 Фаза 2: Реализация Exit Nodes (Срок: ~3 месяца) **Цель:** Создать возможность безопасного выхода в публичный интернет через сеть Phantom. - [ ] **Задача 2.1: Спроектировать архитектуру Exit Nodes** - [ ] **Действие:** Проанализировать `phantom_exit_node.h`. - [ ] **Действие:** Разработать схему взаимодействия: клиент -> туннель Phantom -> выходной узел -> публичный интернет. - [ ] **Действие:** Спроектировать формат Exit Policy (какие порты и адреса разрешены/запрещены). - [ ] **Критерий завершения:** Создан документ с техническим дизайном Exit Nodes. - [ ] **Задача 2.2: Написать код реализации (`phantom_exit_node.c`)** - [ ] **Действие:** Создать файл `src/phantom_exit_node.c`. - [ ] **Действие:** Реализовать функцию `phantom_exit_init()`: регистрация узла в DHT как выходного. - [ ] **Действие:** Реализовать функцию `phantom_exit_handle_request()`: прием запроса из туннеля, проверка по Exit Policy, установка реального TCP-соединения и проксирование трафика. - [ ] **Критерий завершения:** Юнит-тесты для `phantom_exit_node.c` проходят. Выходной узел успешно проксирует трафик. - [ ] **Задача 2.3: Переписать SOCKS5 прокси** - [ ] **Действие:** Создать `tools/phantom-socks5-proxy.c` (или доработать Python-скрипт для использования C-библиотеки через CFFI/ctypes). - [ ] **Действие:** Реализовать логику поиска выходного узла в DHT. - [ ] **Действие:** Реализовать построение туннеля к найденному выходному узлу. - [ ] **Действие:** Передавать запросы на подключение через этот туннель. - [ ] **Критерий завершения:** SOCKS5 прокси использует реальную сеть Phantom для выхода в интернет. `ipinfo.io` через прокси показывает IP выходного узла, а не клиента. --- ## 🟡 Фаза 3: Доработка TLD Системы (Срок: ~6 месяцев) **Цель:** Превратить прототип в работающую децентрализованную DNS. - [ ] **Задача 3.1: Завершить `TODO` и интегрировать с DHT** - [ ] **Действие:** Пройтись по всем `TODO` в файлах `phantom_dns_*.c`, `phantom_domain_registry.c`, `phantom_consensus.c` и реализовать недостающую логику. - [ ] **Действие:** Переписать `phantom_dns_resolver.c` для использования Kademlia DHT для поиска информации о TLD и DNS-записях. - [ ] **Критерий завершения:** DNS-резолвер может найти IP-адрес по доменному имени, запрашивая информацию у узлов в DHT. - [ ] **Задача 3.2: Реализовать механизм консенсуса** - [ ] **Действие:** Выбрать и реализовать алгоритм консенсуса (например, упрощенный PoS или PBFT) для валидаторов TLD. - [ ] **Действие:** Реализовать механизм голосования за добавление/изменение DNS-записей. - [ ] **Критерий завершения:** Изменение DNS-записи, принятое большинством валидаторов, успешно распространяется по сети. - [ ] **Задача 3.3: Написать тесты производительности и масштабируемости** - [ ] **Действие:** Создать тестовый стенд для генерации высокой нагрузки на DNS. - [ ] **Действие:** Реализовать шардинг доменного пространства для горизонтального масштабирования. - [ ] **Критерий завершения:** Система выдерживает нагрузку, близкую к заявленной в документации. Добавление новых валидаторов увеличивает общую пропускную способность. --- ## 🟢 Фаза 4: Финальные Доработки (Срок: ~4 месяца) **Цель:** Завершить все остальные компоненты и привести проект в полное соответствие с документацией. - [ ] **Задача 4.1: Реализовать недостающие примеры** - [ ] **Действие:** Написать работающие примеры для "Anonymous File Storage", "Encrypted Messenger", "VPN" и др., используя уже готовые функции ядра. - [ ] **Критерий завершения:** Все 8+ заявленных примеров существуют, работают и используют реальную сеть Phantom. - [ ] **Задача 4.2: Создать комплексные функциональные тесты** - [ ] **Действие:** Доработать `test-real-scenarios.sh` для проверки сквозной передачи данных во всех реализованных сценариях. - [ ] **Действие:** Добавить тесты на устойчивость к отказам (отключение узлов, потеря пакетов). - [ ] **Критерий завершения:** Все тесты проходят автоматически и включены в CI/CD. - [ ] **Задача 4.3: Обновить документацию** - [ ] **Действие:** Провести ревизию всей документации. - [ ] **Действие:** Четко разделить, что реализовано, а что находится в планах. Убрать вводящие в заблуждение заявления. - [ ] **Действие:** Завершить русификацию комментариев в коде. - [ ] **Критерий завершения:** Документация на 100% соответствует реальному состоянию проекта.