Files
Phantom/workspace/PRACTICAL_DEVELOPMENT_CHECKLIST.md

120 lines
13 KiB
Markdown
Raw Permalink 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
**Цель:** Предоставить пошаговый план действий, по которому можно последовательно двигаться для реализации заявленного функционала. Отмечайте пункты по мере их выполнения.
---
## 🚨 Фаза 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% соответствует реальному состоянию проекта.