120 lines
13 KiB
Markdown
120 lines
13 KiB
Markdown
# Практический Чек-лист Разработки 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% соответствует реальному состоянию проекта.
|