Code, données agrégées et source LaTeX pour « Who Patches the Lightning Network? Release Lines from Gossip, Node Platforms and Security Advisories, 2023-2026 »
Saurabh Kumar, Bitcoin Data Labs
Code, données agrégées et source LaTeX pour l'article. Catégories arXiv : cs.CR, cross-list cs.NI.
Date limite des données : 2026-10-13.
Le gossip Lightning ne transporte aucune version logicielle, de sorte que la question de savoir si les opérateurs agissent sur les avis de sécurité n'a jamais été mesurée. L'article déduit la ligne de version de chaque nœud public LND, Core Lightning, Eclair et LDK à partir des bits de fonctionnalité qu'il annonce, confrontés au code source de chaque version, et l'applique aux instantanés quotidiens du gossip de mai 2023 à octobre 2026. Le réseau se met à jour selon les calendriers de version et de plateforme, et non selon les divulgations : la moitié des nœuds LND sur une ligne plus ancienne se mettent à jour dans les 88 jours suivant une version ; les plus grandes vagues de mise à jour sont survenues environ un jour après la publication d'une nouvelle version de LND sur l'app store Umbrel ; et sur 12 divulgations testables, seule celle de Core Lightning de juillet 2026 a augmenté le taux auquel les nœuds quittaient les versions affectées, et uniquement parmi les nœuds situés une ligne de version en retard ; l'appel de Core Lightning à redémarrer les nœuds hors ligne a été suivi principalement par des nœuds déjà sur la ligne la plus récente. Deux mois après la salve d'août 2026 de Lightning Labs, 71 % des nœuds exposés au moment de la divulgation exécutaient encore une version affectée.
paper/ : source LaTeX (main.tex, sections/, references.bib, figures/, tables/, numbers.tex), le fichier main.pdf compilé et un script de build.src/01_*.py … src/05_*.py : les cinq étapes du pipeline.src/lnmetrics/ : les règles d'inférence figées et les données de référence : règles par client (client_fingerprint.py), la table des versions avec les bits de fonctionnalité de chaque version (ln_release_features.json, lue par version_fingerprint.py), la liste des avis avec la source publique de chaque divulgation (advisories.py), les versions datées des plateformes (platforms.py), et le lecteur de gossip et les helpers de panel (gossip.py, panel.py).data/ : les sorties JSON agrégées derrière chaque figure, tableau et nombre cité dans le texte.scripts/package_arxiv.py : construit le bundle d'upload arXiv.pip install -r requirements.txt
Le pipeline lit des instantanés quotidiens du graphe de gossip Lightning public sous forme de fichiers Parquet ; src/lnmetrics/gossip.py documente la disposition attendue (gossip_daily/{nodes,policies,_quality.parquet}). Les données de gossip sous-jacentes sont publiques ; nos instantanés quotidiens sont disponibles auprès de l'auteur sur demande. Indiquez-les au pipeline avec
export LN_PARQUET_DIR=/path/to/parquet # default: data/parquet
Chaque étape tronque ses entrées à DATA_CUTOFF (src/config.py) et écrit ses figures dans paper/figures/, ses tableaux dans paper/tables/ et ses nombres dans 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
Le panel nœud-jour (data/panel/, environ 1,3 Go) n'est pas versionné.
paper/build.ps1 (Windows, MiKTeX) exécute pdflatex → bibtex → pdflatex jusqu'à stabilisation des références ; build.bat l'exécute depuis cmd. Sur d'autres systèmes :
cd paper && pdflatex main && bibtex main && pdflatex main && pdflatex main
python scripts/package_arxiv.py écrit ensuite le bundle arXiv dans dist/.
Agrégats uniquement : aucune liste, aucun classement ni étiquette de nœuds individuels par version, plateforme ou exposition n'est publié, ni dans l'article ni dans data/.
MIT (voir LICENSE).