كشفت Prysm أن خللاً برمجياً أُدخل إلى إحدى شبكات الاختبار قبل شهر من ترقية إيثريوم المسماة Fusaka كان السبب وراء مشكلة التحقق من عقد إيثريوم التي أثّرت على عميلها في وقت سابق من هذا الشهر.
ونشر مطور إيثريوم تيرنس تساو، يوم الأحد، تقريراً تشريحياً (Post-mortem) يوضح تفاصيل حادثة Prysm على الشبكة الرئيسية بعد ترقية Fusaka، والتي أثّرت على الشبكة في 4 ديسمبر.
وأوضح التقرير أن عقد Prysm عانت من “استنزاف للموارد” عند معالجة بيانات التحقق القادمة من عقد غير متزامنة، ما دفع العميل إلى إعادة تشغيل كتل من حقب سابقة وإعادة احتساب انتقالات حالة مكلفة حسابياً، وهو ما تسبب في تراجع كبير في الأداء نتيجة عبء العمل الزائد.
وكشف التقرير أن الخلل كان موجوداً على شبكات الاختبار لمدة شهر قبل وقوع الحادثة، لكنه لم يُفعّل خلال تلك الفترة.
وجاء فيه: “تم إدخال الخلل في طلب الدمج البرمجي Prysm PR 15965 ونُشر على شبكات الاختبار قبل شهر من الحادثة، من دون أن يتم تحفيزه”.
ورغم أن شبكات الاختبار صُممت لاكتشاف الأخطاء، فإنها لا تمثل وسيلة مضمونة تماماً.
وفي مايو 2023، وبعد شهر من ترقية Shanghai، شهد مطورو إيثريوم حالة استنفار عندما فقدت الشبكة نهائية المعاملات مؤقتاً لمدة نحو 25 دقيقة، ثم مرة أخرى لأكثر من ساعة في اليوم التالي، قبل أن تستعيد البلوكشين استقرارها تلقائياً.
إصلاح الخلل في Prysm
بدلاً من استخدام حالة الرأس الحالية، أعاد Prysm توليد حالات سابقة من الصفر، ما تسبب في عبء حسابي هائل.
وخلال أكثر من 42 حقبة (epoch)، سجّلت الشبكة معدل فقدان فترات (slots) بلغ 18.5%، مع تراجع المشاركة إلى 75%، في حين خسر المدققون نحو 382 إيثراً (ETH) من مكافآت التحقق، بحسب التقرير.
وطُلب من مشغلي العقد نشر حل مؤقت، بينما عمل المطورون على إعداد تحديث تصحيحي لعملاء Prysm.
تنوع العملاء أنقذ الموقف
أشار المطورون إلى أن الحادثة كان يمكن أن تكون أسوأ بكثير لو أنها استهدفت عميل الإجماع المهيمن في شبكة إيثريوم، Lighthouse.
وتُعد Prysm، التابعة لشركة Offchain Labs، ثاني أكبر عميل لإيثريوم بحصة تبلغ 17.6%، وفقاً لبيانات ClientDiversity.
وجاء في التقرير: “حال تنوع العملاء دون تأثير ملحوظ على مستخدمي إيثريوم. فلو كان الخلل في عميل يسيطر على أكثر من ثلث الشبكة، لتسبب ذلك في فقدان مؤقت للنهائية وزيادة عدد الكتل المفقودة”.
ومع ذلك، سلطت الحادثة الضوء على أن Lighthouse يقترب بشكل مقلق من عتبة الثلثين، حيث يمكن لخلل واحد في عميل منفرد أن يؤدي إلى اعتماد سلسلة غير صالحة.
وتبلغ حصة Lighthouse حالياً نحو 52.6% من الشبكة، انخفاضاً من حوالي 56% وقت وقوع الحادثة.


