Lagrix

1. Сетевая топология: Kademlia DHT, Node ID и Алгоритмы Маршрутизации

3 мин чтения
1. Сетевая топология: Kademlia DHT, Node ID и Алгоритмы Маршрутизации

В основе децентрализованного транспортного движка Lagrix лежит модифицированный протокол Kademlia. Стандартная реализация Kademlia уязвима к атакам Сивиллы, поэтому наша архитектура жестко связывает P2P-идентификаторы с зарегистрированными местами супер-узлов. Место стоит года оплаченной работы, и это создает настоящий барьер для входа в таблицу маршрутизации.

1.1 Генерация Node ID и Криптоэкономическая привязка

В классических P2P-сетях (например, BitTorrent) узлы генерируют случайные 160-битные или 256-битные идентификаторы. В Lagrix это строго запрещено.

Идентификатор Супер-Узла (NodeID) детерминированно вычисляется из публичного ключа кошелька (Ethereum/EVM-совместимого), с которого место зарегистрировано в смарт-контракте SuperNodeRegistry.sol.

Формула: $NodeID = \text{SHA3-256}(PublicKey_{EVM})$

Валидация при рукопожатии (Handshake): Когда Узел А пытается подключиться к Узлу Б, он отправляет свой NodeID и криптографическую подпись, доказывающую владение приватным ключом. Узел Б берет публичный ключ, делает запрос к RPC ноде блокчейна и проверяет, что этот адрес — действующий супер-узел: он вошёл по документу 05, раздел 5.6 (место, полученное случайным выбором и зарегистрированное в контракте), и не несёт отметки «доказанное нарушение» (документ 06): isActiveSuperNode(PublicKey) == true.

Итог: Если адрес не действующий супер-узел, соединение мгновенно сбрасывается на уровне сокета. Злоумышленник не может наполнить сеть миллионом фейковых NodeID, так как для каждого нужен настоящий вход: место, полученное случайным выбором среди владельцев агентов-исполнителей с годом оплаченной работы, и сервер, прошедший проверку.

1.2 Математика маршрутизации (XOR-метрика)

Маршрутизация между супер-узлами опирается на вычисление логического исключающего ИЛИ (XOR) между идентификаторами. Это позволяет определить «расстояние» между узлами в виртуальном 256-битном пространстве.

Дистанция: $d(x, y) = x \oplus y$

Свойства: XOR-метрика симметрична ($d(x,y) = d(y,x)$) и отвечает неравенству треугольника. Это означает, что поиск среди супер-узлов всегда сходится за логарифмическое время $\mathcal{O}(\log N)$, где $N$ — количество Супер-Узлов в сети.

Практика: Если супер-узлу нужно найти узел с ID 0xABCD..., он ищет в своей локальной таблице узлы, чей XOR с целью минимален, и перенаправляет запрос им.

1.3 Таблицы маршрутизации (K-Buckets)

Каждый Супер-Узел поддерживает локальную таблицу маршрутизации, разделенную на корзины (k-buckets). В 256-битном пространстве существует 256 корзин.

Параметр $k$: Каждая корзина хранит максимум $k=20$ активных узлов. Это обеспечивает достаточную избыточность (если 19 узлов упадут, 1 останется доступен).

Политика вытеснения (Eviction): Kademlia отдает предпочтение «старым» узлам. Если корзина заполнена, новый узел помещается в буфер ожидания. Существующим узлам отправляется PING. Если кто-то не ответил (тайм-аут 500 мс), он удаляется, а новый узел занимает его место. Это защищает топологию от DDoS-атак, направленных на вытеснение честных узлов из таблиц.

1.4 Жизненный цикл P2P-сообщений (RPC методы)

Взаимодействие внутри транспортного кольца строится на 4 базовых бинарных UDP-сообщениях:

RPC МетодНазначение в архитектуре Lagrix
PINGПроверка жизнеспособности узла. Используется для поддержки актуальности k-buckets.
STOREЗапись на $k$ ближайших супер-узлах — записи собственной маршрутизации супер-узлов. Адрес, карточка и ключ шифрования агента в DHT не хранятся: они идут в его подписанном объявлении (документ 17, раздел 17.1).
FIND_NODEЗапрос списка из $k$ узлов, наиболее близких к искомому ID. Используется для построения карты сети.
FIND_VALUEЧтение такой записи. Агента находят по его объявлению и индексу супер-узлов, а не через DHT (документ 17).

1.5 Интеграция с локальным Data Plane (Envoy)

В эталонной реализации роль Control Plane выполняют модуль Kademlia и код обнаружения клиента. Он не гоняет сами гигабайты данных между ИИ-агентами.

Как только клиент знает адрес целевого агента — из его объявления (документ 17), а за роутером ещё и при встрече через супер-узел (документ 02), — эта информация мгновенно передается по локальному gRPC-каналу (xDS API) в Envoy Proxy, который уже открывает высокоскоростной mTLS туннель для передачи полезной нагрузки. Это разделение логики (Discovery отдельно, Data Streaming отдельно) позволяет достичь микросекундных задержек, сопоставимых с лучшими Web2-балансировщиками. Узел может использовать любой другой транспорт, дающий шифрованный канал документа 19.