Solidity تصلح خللًا في مُحسِّن Yul يؤثر على الإصدارات 0.8.19–0.8.37
أصلحت Solidity في الإصدار 0.8.38 خطأً منخفض الخطورة في مُحسِّن Yul. يؤثر الخطأ في العقود التي جرى تجميعها مع تفعيل مُحسِّن Yul في إصدارات Solidity من 0.8.19 إلى 0.8.37. في ظروف محددة، قد تجعل بيانات التتبّع القديمة مُحسِّن Yul يتعامل مع موقعين في الذاكرة أو في التخزين على أنهما منفصلان، رغم أنهما متداخلان فعليًا. وقد يؤدي ذلك إلى إرجاع العقد قيمة قديمة أو إلى عدم تنفيذ عملية كتابة مطلوبة.
أبلغ Daniel Boye عن المشكلة، ثم بيّن Surya Prakash Akula لاحقًا إمكانية الوصول إليها باستخدام كود Solidity عادي، من دون تجميع مضمن. قد تتأثر العقود التي جُمّعت باستخدام `--via-ir` على نطاق واسع، بينما يكون نطاق التعرض أضيق في مسار تجميع EVM الافتراضي. ولا يمكن أن يحدث الخطأ عند تعطيل مُحسِّن Yul.
لم يجد فحص Solidity لنحو 283,000 عملية تجميع موثّقة باستخدام `via-ir` و607,000 عملية تجميع باستخدام EVM assembly أي اختلافات في الشيفرة الثنائية عند مقارنة عمليات البناء مع الإصلاح وبدونه. ويقول الفريق إن ذلك يشير إلى ندرة الخطأ، لكنه لا يضمن عدم تأثر أي عقد منشور. ينبغي للمطورين الترقية إلى Solidity 0.8.38 أو إصدار أحدث، وتقييم العقود المنشورة التي جُمّعت بإصدارات متأثرة. وبالنسبة إلى المتداولين، فهذا تنبيه محدد بشأن موثوقية العقود الذكية، وليس دليلًا على اضطراب واسع في شبكة Ethereum أو السوق.
Neutral
هذا الإعلان هو إشعار أمني وإشعار بتحديث موجّه للمطوّرين، وليس دليلاً على استغلال ثغرة أو انقطاع الشبكة أو خسارة أموال. تصنّف Solidity الخلل على أنه منخفض الخطورة، وتقول إن فحصها لما يقارب 890,000 عملية بناء موثّقة لم يُظهر أي اختلاف في الشيفرة الثنائية بين عمليات البناء التي تتضمن الإصلاح وتلك التي لا تتضمنه. كما أن المشكلة تتطلب شروطاً محددة تتعلق بالمُحسِّن وإعادة تعيين العناوين، ما يحدّ من نطاق تأثيرها المحتمل. تجعل هذه التفاصيل حدوث تأثير فوري واسع النطاق على ETH أو على أسعار سوق العملات المشفرة عموماً أمراً غير مرجح.
على المدى القصير، قد يراقب المتداولون إفصاحات المشاريع التي تستخدم Solidity 0.8.19–0.8.37، ولا سيما تلك التي جرى تجميعها باستخدام مُحسِّن Yul أو الخيار `--via-ir`. إذا أفاد بروتوكول واسع الاستخدام بوجود عقود منشورة معرّضة للخطر أو بخسائر ناجمة عن استغلالها، فقد تتراجع الثقة، ما قد يؤدي إلى بيع رموز مشاريع بعينها أو إلى زيادة مؤقتة في التقلبات. لا يذكر المقال وقوع أي حادث من هذا النوع، لذلك لا يوجد ما يدعم تفسيراً سلبياً واسع النطاق.
على المدى الطويل، من المفترض أن يقلل الإصلاح في Solidity 0.8.38 وخطوات التحقق الموصى بها من التعرض للمخاطر، مع قيام الفرق بتحديث عمليات النشر المتأثرة واختبارها. وكما هو الحال مع الإفصاحات الأخرى عن ثغرات المترجمات، تتمثل أهم مؤشرات السوق في تأكيد الاستغلال، والقيمة الإجمالية المقفلة (TVL) للبروتوكولات المتأثرة، والإيقافات الطارئة، وإجراءات المعالجة التي تتخذها المشاريع، لا في مجرد وجود مشكلة في مترجم صدر لها إصلاح. إجمالاً، لا ترجّح هذه الأخبار اتجاهاً معيناً للسوق، لكنها مهمة لمراقبة مخاطر العقود الذكية.