← На главную

ProbeLab: Optimistic Provide в Kubo ускорил IPFS до 0,7 с

01.07.2026 15:30 · hackernews

Команда ProbeLab много лет измеряла, как работает публикация контента в IPFS — и обнаружила, что это мучительно медленно. Речь о Amino DHT, большой распределённой хеш-таблице, где узлы постоянно меняются. Публикация файла могла занимать 20 секунд, а иногда и больше двух минут.

Проблема была в классическом алгоритме Kademlia. Чтобы сохранить запись, узел должен найти 20 ближайших пиров по метрике XOR. Он делает это обходом — итеративно опрашивает известные узлы, получает от них ещё более близких кандидатов и ждёт подтверждения от трёх самых близких. Если эти пиры недоступны (а в открытой сети это норма), алгоритм откатывается назад и ищет снова. Это тормозило всё.

ProbeLab придумали Optimistic Provide — он вошёл по умолчанию в Kubo v0.39.0. Вместо слепого ожидания — статистика. Узел локально оценивает размер всей сети, не делая лишних запросов: данные собираются во время обычного обновления таблицы маршрутизации. На основе этой оценки вычисляется расстояние: если пир с вероятностью 90% входит в двадцатку ближайших, запись сохраняется сразу. Как только среднее расстояние текущего набора из 20 пиров достигает такого же порога, обход останавливается — не нужно ждать троих.

Дальше — ранний возврат. Обычно ждут подтверждения от всех 20, а любой недоступный пир вызывал тайм-аут. Теперь управление отдаётся пользователю после ответа от 15 узлов. Оставшиеся 5 досылают запись в фоне.

Результат впечатляет: задержка публикации упала с 13–20 секунд до меньше чем секунда. В среднем — около 0,7 секунды. При этом доступность записей не пострадала: GET-запросы работают так же надёжно. Если что, фоновый Reprovide Sweep позже поправит точное расположение записей.

У подхода есть ограничения. Оценка размера сети зависит от количества доступных пиров. Сейчас около 50% узлов в Amino DHT имеют только приватные IP и недоступны извне — они завышают оценку, что делает алгоритм чуть более консервативным и медленнее, чем мог бы. Ещё холодный старт: новому узлу нужно несколько минут на сбор статистики.

Дальше планируют фильтровать приватные пиры при оценке, кешировать оценку на диск и глубже интегрировать Reprovide Sweep. Саму технику можно применить к любому Kademlia DHT. Сейчас лишь около 17% узлов сети обновлены до версии с Optimistic Provide — большинство всё ещё работает по-старому.

Читать оригинал →