Код, агрегированные данные и исходный код LaTeX для статьи «Who Patches the Lightning Network? Release Lines from Gossip, Node Platforms and Security Advisories, 2023-2026»
Saurabh Kumar, Bitcoin Data Labs
Код, агрегированные данные и исходники LaTeX для статьи. Категории arXiv: cs.CR, кросс-листинг cs.NI.
Дата отсечения данных: 2026-10-13.
Gossip-протокол Lightning не передаёт версию программного обеспечения, поэтому то, реагируют ли операторы на рекомендации по безопасности, никогда не измерялось. В статье выводится релизная линия каждого публичного узла LND, Core Lightning, Eclair и LDK по объявляемым им битам возможностей, сопоставленным с исходным кодом каждого релиза, и применяется к ежедневным снимкам gossip с мая 2023 по октябрь 2026. Сеть патчится по графикам релизов и платформ, а не по раскрытиям уязвимостей: половина узлов LND на более старой линии обновляется в течение 88 дней после релиза; крупнейшие волны обновлений происходили примерно через день после того, как магазин приложений Umbrel выпускал новую версию LND; и из 12 раскрытий, которые можно проверить, только раскрытие Core Lightning в июле 2026 повысило частоту, с которой узлы покидали затронутые релизы, и только среди узлов, отстающих на одну релизную линию; призыв Core Lightning перезапустить офлайн-узлы был выполнен в основном узлами, уже находившимися на новейшей линии. Через два месяца после августовского пакета Lightning Labs 71% узлов, подверженных уязвимости на момент раскрытия, всё ещё работали на затронутом релизе.
paper/: исходники LaTeX (main.tex, sections/, references.bib, figures/, tables/, numbers.tex),
скомпилированный main.pdf и скрипт сборки.src/01_*.py … src/05_*.py: пять стадий конвейера.src/lnmetrics/: замороженные правила вывода и справочные данные: правила для клиентов (client_fingerprint.py),
таблица релизов с битами возможностей каждого релиза (ln_release_features.json, читается
version_fingerprint.py), список рекомендаций с публичным источником каждого раскрытия (advisories.py),
датированные релизы платформ (platforms.py), а также модуль чтения gossip и вспомогательные функции для панели
(gossip.py, panel.py).data/: агрегированные JSON-выходы, лежащие в основе каждого рисунка, таблицы и числа в тексте.scripts/package_arxiv.py: собирает пакет для загрузки на arXiv.pip install -r requirements.txt
Конвейер читает ежедневные снимки публичного графа gossip Lightning в виде файлов Parquet; src/lnmetrics/gossip.py
описывает ожидаемую структуру (gossip_daily/{nodes,policies,_quality.parquet}). Исходные данные gossip являются
публичными; наши ежедневные снимки доступны у автора по запросу. Укажите на них конвейеру с помощью
export LN_PARQUET_DIR=/path/to/parquet # default: data/parquet
Каждая стадия обрезает свои входные данные по DATA_CUTOFF (src/config.py) и записывает свои рисунки в
paper/figures/, таблицы в paper/tables/, а числа в data/*.json.
python src/01_build_panel.py # node-day panel: client, release line, liveness, fleet flag (~7 min) -> data/panel/
python src/02_validate_lines.py # release-line validation and consistency checks -> Fig. 1, Table I
python src/03_upgrade_dynamics.py # adoption, time to upgrade, hazard model, platform waves -> Figs. 2-5, Table II
python src/04_advisory_exposure.py # exposure per advisory, response to disclosure, robustness -> Figs. 6-7, Tables III-V
python src/05_supporting_numbers.py # every number quoted in the text -> paper/numbers.tex
Панель node-day (data/panel/, около 1,3 ГБ) не включена в репозиторий.
paper/build.ps1 (Windows, MiKTeX) запускает pdflatex → bibtex → pdflatex до стабилизации ссылок; build.bat
запускает его из cmd. В других системах:
cd paper && pdflatex main && bibtex main && pdflatex main && pdflatex main
Затем python scripts/package_arxiv.py записывает пакет для arXiv в dist/.
Только агрегаты: никакой список, рейтинг или метка отдельных узлов по релизу, платформе или подверженности
уязвимости не публикуется — ни в статье, ни в data/.
MIT (см. LICENSE).