المنشورات
avatar

مُطوري العقود الذكية، قد يكون مُجمّع Solidity الخاص بك قد حذف بشكل هادئ مخزنًا كنت بحاجة إليه، ولم تره أبدًا في الكود المصدر. صدرت Solidity 0.8.38 يوم الخميس الماضي. وهي تصلح خطأ في مُحسّن Yul كان موجودًا في كل إصدار من 0.8.19 إلى 0.8.37. يُحافظ المُحسّن على ملاحظات حول ما هو موجود في الذاكرة والتخزين. ويستخدم هذه الملاحظات لاستبدال عملية تحميل بقيمة يعرفها مسبقًا، ولتجاوز عملية تخزين تكتب ما هو موجود بالفعل. لتحديد ما إذا كان يمكن أن تتداخل عنوانان، فإنه يصف كل منهما كمتغير أساسي زائد إزاحة. نفس المتغير الأساسي، وإزاحة مختلفة، إذًا يجب أن يكونا في فتحتين مختلفتين. كانت هذه الوصفات مخزنة مؤقتًا. ثم قام أحدهم بإعادة تعيين المتغير الأساسي. ولا يلاحظ المُحسّن دائمًا ذلك. الآن، يقارن عنوانًا مبنيًا من القيمة القديمة مع آخر مبني من القيمة الجديدة كأنهما يشتركان في متغير أساسي. فيقرر أنهما مختلفان، لكن في وقت التشغيل يشيران إلى نفس المكان. النتيجة هي ملاحظة قديمة. يمكن لعملية تحميل لاحقة أن تعيد قيمة قديمة. يمكن أن تُحذف عملية تخزين كنت بحاجة إليها. يمكن لـ keccak256 على هذا الموقع أن يُنشئ هاشًا لبيانات قديمة. فقط الكود المُجمّع مع تفعيل المُحسّن معرّض لهذا الخطأ. باستخدام via-IR، يمكن لأي كود أن يتأثر به، حتى بدون تجميع مباشر. باستخدام خط أنابيب التراث الافتراضي، فقط بعض التجميع المباشر والمساعدات التي ينشئها المُجمّع. البناءات غير المُحسّنة آمنة. فريق Solidity صنّفه كخطورة منخفضة، وفعلوا شيئًا أتمنى أن يفعله كل فريق مُجمّع: أعادوا تجميع كل عقدة موثقة في قاعدة بيانات Sourcify باستخدام الإصلاح وبدونه، وكانت البايت كود متطابقة لكل منها. إذًا، إنه نادر. لكن الندرة لا تعني أبدًا عدم الحدوث، خاصة إذا كان كودك حديثًا ولم يُنشر بعد. ظهر هذا الخطأ من خلال مكافأة الأخطاء التابعة لمؤسسة Ethereum، وظهر تقرير ثانٍ يُظهر أن Solidity العادية دون تجميع مباشر يمكن أن تُفعّله.

هذا المحتوى لأغراض إعلامية وتعليمية فقط. قد يتضمن تحليلات من جهات خارجية، أو محتوى دعائي، أو مواد ترويجية قد يحصل منشئها على مقابل مادي. لا يُعد أي شيء في هذه النشرة نصيحة استثمارية أو ضمانًا للعوائد. أنت وحدك المسؤول عن قراراتك الاستثمارية. ابحث دائمًا بنفسك وتوخَّ الحذر قبل التداول. لا نضمن دقة معلومات الجهات الخارجية، ولا نتحمل مسؤولية أي خسائر قد تتكبدها. الأداء السابق لا يُشير إلى النتائج المستقبلية. يُرجى مراجعة شروط المنتدى وبيان الإفصاح عن المخاطر للاطلاع على التفاصيل.

avatarانشر ردك

التعليق