
الكود والبيانات المجمّعة والمصدر بصيغة 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 في شبكة البرق أي رقم إصدار للبرمجيات، لذا لم يُقَس قط ما إذا كان المشغّلون يتصرفون بناءً على التنبيهات الأمنية. تستنتج الورقة خط الإصدار لكل عقدة عامة من LND وCore Lightning وEclair وLDK من وحدات البتات المميزة التي تعلن عنها، مقارنةً بمصدر كل إصدار، وتطبّق ذلك على لقطات يومية من Gossip من مايو 2023 إلى أكتوبر 2026. تُرقّع الشبكة وفق جداول الإصدارات والمنصات، لا وفق الإفصاحات: نصف عقد LND على خط أقدم تُرقّي خلال 88 يومًا من صدور إصدار؛ وجاءت أكبر موجات الترقية بعد نحو يوم من طرح متجر تطبيقات Umbrel لإصدار جديد من LND؛ ومن بين 12 إفصاحًا يمكن اختباره، لم يرفع سوى إفصاح Core Lightning في يوليو 2026 معدّل مغادرة العقد للإصدارات المتأثرة، وذلك فقط بين العقد المتأخرة بخط إصدار واحد؛ أما دعوة Core Lightning لإعادة تشغيل العقد غير المتصلة فقد استجابت لها في الغالب عقد كانت أصلًا على أحدث خط. بعد شهرين من دفعة Lightning Labs في أغسطس 2026، كانت 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 العام لشبكة البرق بصيغة ملفات 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
لوحة العقدة-اليوم (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).