Разработчики Bitcoin Core обсуждают отказ от поддержки CJDNS после того, как проверка сидера выявила лишь семь здоровых узлов
Ключевые выводы
- •Обсуждение на GitHub побудило разработчиков Bitcoin Core заново оценить, должна ли встроенная поддержка CJDNS по-прежнему присутствовать в клиенте.
- •Проверка 25 известных CJDNS-адресов выявила 22 ответивших рукопожатием, но лишь семь пиров соответствовали критериям надёжного распространения блоков и транзакций.
- •Разработчики предупредили, что узел, работающий только через CJDNS с таким малым пулом пиров, больше подвержен атакам затмения, при которых злоумышленник может изолировать узел и искажать его представление о сети.
- •Сторонники сохранения CJDNS утверждают, что его низкое использование может отражать ограниченную интеграцию и осведомлённость, и что он может быть полезен как аварийный резерв в случае блокировок или сбоев Tor или I2P.
- •Удаление CJDNS не изменит правил консенсуса Bitcoin и не помешает операторам использовать CJDNS внешне, но Bitcoin Core перестанет управлять этими соединениями внутри клиента.

Ни одна строка кода не удалена и окончательное решение не принято, но стабильно низкие показатели внедрения побудили участников Bitcoin Core заново оценить практические компромиссы между безопасностью и инженерией, связанные с поддержкой устаревших оверлейных сетей в основном клиенте Bitcoin — дискуссия теперь сосредоточена на том, заслуживает ли зашифрованная сеть маршрутизации CJDNS своё место в эталонной реализации.
Семь «хороших» узлов запускают более широкую проверку инфраструктуры
Техническая дискуссия началась в открытом вопросе на GitHub, где разработчики усомнились в том, должен ли Bitcoin Core и дальше поддерживать зашифрованный уровень маршрутизации, который практически не имеет документированного реального трафика. Главная цель добавления альтернативных сетевых транспортных уровней в Bitcoin — избыточность: предотвращение любой единой точки отказа или цензуры на сетевом уровне. Однако избыточные маршруты работают только в том случае, если в базовой сети участвует активная mesh-сеть пиров.
В ходе автоматизированного тестирования конфигурации узла, работающего только через CJDNS, разработчик Core Марко Фальке сообщил, что его экземпляр в любой момент времени не мог установить соединения более чем с тремя-четырьмя разными пирами. Развивая это наблюдение, другой участник опросил известную базу данных сетевых сидеров — службы начальной загрузки, передающие только что запущенным узлам их первые адреса пиров, — содержащую 25 известных CJDNS-адресов. Из 25 проверенных адресов 22 ответили на базовые рукопожатия, но лишь семь соответствовали техническим критериям, необходимым для классификации как надёжные «хорошие» пиры для активного распространения блоков и транзакций.
Один запрос к сидеру не является абсолютной переписью всех работающих узлов во всей экосистеме CJDNS; приватные необъявленные узлы и неиндексированные пиры могут существовать вне публичных сидер-списков. Тем не менее эти цифры подчёркивают серьёзную практическую реальность: оверлейная сеть с менее чем дюжиной доступных целей маршрутизации не обеспечивает оперативной избыточности, необходимой устойчивому продуктивному узлу. Для масштаба: давние публичные обходы насчитывали заявленные через Tor достижимые Bitcoin-узлы в количестве нескольких тысяч против 25 адресов, имеющихся у CJDNS-сидера.
Понимание CJDNS: зашифрованная маршрутизация IPv6 против правил консенсуса
CJDNS — это зашифрованная оверлейная mesh-сеть IPv6, использующая криптографию с открытым ключом для распределения адресов и распределённой маршрутизации. За пределами Bitcoin протокол наиболее известен как уровень маршрутизации Hyperboria — общественной mesh-сети, поддерживаемой добровольцами. Bitcoin Core добавил встроенную поддержку CJDNS в версии 23.0 в 2022 году, позволив операторам узлов маршрутизировать трафик пиров через CJDNS наряду с IPv4, IPv6, Tor и I2P.
Согласно документации Bitcoin Core, CJDNS шифрует трафик сквозным образом и может затруднять анализ и фильтрацию трафика. Однако это не сеть анонимности в том же смысле, что Tor: промежуточные CJDNS-маршрутизаторы по-прежнему могут видеть криптографические адреса источника и назначения пересылаемых ими пакетов.
Предложение касается только того, как Bitcoin Core находит пиров и подключается к ним. Удаление поддержки CJDNS не изменит валидацию блоков, майнинг, правила скриптов или форматы транзакций; узлы продолжат применять те же правила консенсуса Bitcoin.
Механика безопасности атаки затмения
В безопасности Bitcoin-узлов сетевой транспорт и выбор пиров напрямую связаны с целостностью данных. Шифрование скрывает содержимое пакетов от третьих лиц, но не защищает узел от получения ложной или задержанной информации, если набор его пиров слишком ограничен. Тонкие пулы пиров подрывают безопасность, существенно облегчая злоумышленникам изоляцию узлов, работающих только через CJDNS, и манипуляции с ними.
Главная угроза для изолированных узлов — атака затмения (eclipse-атака). При такой атаке злоумышленник компрометирует или контролирует все соединения с пирами, установленные целевым узлом. Полностью окружая целевой узел, атакующий фактически отделяет его от легитимной глобальной сети Bitcoin. С этой позиции атакующий может искажать представление жертвы о блокчейне, задерживая анонсы блоков, цензурируя определённые входящие транзакции или пытаясь провести атаки двойной траты против неподтверждённых транзакций.
При стандартной маршрутизации IPv4, IPv6 или Tor Bitcoin Core смягчает атаки затмения, устанавливая множество независимых соединений между разнообразными сетевыми группами и диапазонами сетей; по умолчанию программа одновременно поддерживает восемь открытых исходящих соединений полной ретрансляции. Когда узел работает исключительно в сети с всего семью надёжными пирами — меньше, чем эти исходящие слоты по умолчанию, — общий пул доступных соединений слишком мал: злоумышленнику нужно совсем немного ресурсов, чтобы монополизировать все входящие и исходящие соединения узла, работающего только через CJDNS, превращая задуманный резерв безопасности в серьёзную единую точку отказа.
Сложность кода и доводы в пользу устаревания
Помимо низких показателей внедрения и вопросов безопасности, разработчики, выступающие за удаление, подчёркивают постоянную нагрузку на сопровождение, которую код CJDNS создаёт для всего репозитория ПО Bitcoin Core.
В отличие от стандартных обработчиков протоколов, интеграция CJDNS не полностью изолирована от стандартной логики соединений IPv6. Поскольку CJDNS использует специально отформатированные IPv6-адреса, кодовая база требует собственной логики обработки, выделенных аргументов запуска, таких как -cjdnsreachable, и специализированных обходных решений для крайних случаев. Со временем разработчики отметили, что эти кастомные логические пути создают риски ошибок и усложняют рутинный рефакторинг сетевого стека. Транспортный уровень также активно развивается: зашифрованный транспорт v2 (BIP 324) появился как опция в версии 26.0 и был включён по умолчанию в версии 27.0 — новый код соединений приходит на фоне пересмотра устаревших путей вроде CJDNS.
Несколько участников Core выразили «Concept ACK» в отношении устаревания протокола. В терминологии разработки Bitcoin Core с открытым исходным кодом «Concept ACK» означает, что участник согласен с общей целью предложения; это не является окончательным голосованием, слиянием кода или немедленным обязательством удалить функцию.
Доводы в пользу долгосрочного аварийного резерва
С другой стороны вопроса, разработчики, призывающие к осторожности, утверждают, что полезность узла не следует оценивать исключительно по текущим метрикам трафика. Участник Джон Атак указал, что автоматическое обнаружение CJDNS-пиров было интегрировано в Core лишь в начале 2025 года. До этого обновления операторам узлов приходилось вручную настраивать адреса пиров — процесс, создававший существенный барьер для входа по сравнению с доступными для Tor или I2P настройками в один клик.
Сторонники утверждают, что низкие показатели использования CJDNS объясняются недостаточной осведомлённостью пользователей и ограниченной интеграцией в популярные готовые дистрибутивы узлового ПО, а не отсутствием базовой ценности. Если крупные публичные сети анонимизации, такие как Tor или I2P, столкнутся с централизованной блокировкой, сбоями инфраструктуры или фильтрацией на уровне государств, альтернативные mesh-протоколы вроде CJDNS могли бы обеспечить жизненно важный аварийный резервный канал для поддержания соединений с пирами.
Атак также вызвался лично сопровождать код интеграции CJDNS, сняв опасения относительно нагрузки на разработчиков. Участникам Core теперь предстоит решить, сохранить альтернативный транспортный маршрут на случай чрезвычайных ситуаций или упростить кодовую базу, удалив малоиспользуемую сетевую логику.
Что означает потенциальное удаление для операторов узлов
Если Bitcoin Core в конечном итоге удалит встроенную интеграцию CJDNS в будущем релизе, программа просто перестанет управлять CJDNS-соединениями с пирами внутри уровня приложения. Это изменение не помешает операторам запускать CJDNS внешне на уровне операционной системы и не изменит то, как более широкая сеть Bitcoin обрабатывает транзакции.
Удаления в Bitcoin Core обычно происходят по медленному, документированному пути — устаревание отмечается в примечаниях к релизам, а код удаляется лишь в более позднем крупном релизе при примерно полугодовом цикле выпуска проекта, — поэтому ориентирами для наблюдения являются обсуждение на GitHub, любой официальный pull request об устаревании и то, повысят ли показатели внедрения автоматическое обнаружение пиров, добавленное в 2025 году, до того, как мейнтейнеры примут решение.
Для подавляющего большинства операторов узлов, полагающихся на стандартные соединения IPv4, IPv6, Tor или I2P, удаление CJDNS осталось бы совершенно незамеченным. Текущая дискуссия отражает строгую инженерную философию Bitcoin Core: каждая строка кода должна оправдывать своё существование доказанной безопасностью и активной полезностью.
Эта статья предоставлена исключительно в информационных целях и не является инвестиционной рекомендацией.
Источник: Coindoo