المنشورات
avatar

عقد يظل قيد التشغيل بعد مكالمة فاشلة لا يمتلك اليوم وسيلة موثوقة لتحديد ما إذا كان المُستَدْعَى قد ألغى العملية عمداً أو ببساطة نفد منه الغاز الذي حدد المرسل. هذا الفجوة هي جذر هجوم "إجهاد الغاز غير الكافي"، وتحاول مقترح مسودة جديد إغلاقها على مستوى EVM. EIP-8456، المفتوح للنقاش على Ethereum Magicians يوم الاثنين، يضيف تعليمة تُسمى CALLSTATUS، مؤقتاً عند opcode 0xA5 بتكلفة غاز 2. تُدفع حالة اكتمال أحدث مكالمة أو عملية إنشاء في الإطار الحالي كثلاثة بتات. البت 0 يعني إلغاء، والبت 1 يعني توقف استثنائي مثل نفاد الغاز، والبت 2 يعني أن شيئاً ما في إطار أدنى قد توقف. يشير المؤلف إلى أن الدليل الوحيد المتاح اليوم هو حساب gasleft() بعد المكالمة، وأن كل مراجعة لأسعار الغاز قد كسرت هذه العتبات. سيجعل الغاز ثنائي الأبعاد المقترح في EIP-8037 هذا الحساب أضعف حتى، لأن خزانه غير مرئي عبر تعليمة GAS. إذن لماذا البت الثالث؟ تمر معظم المكالمات الحقيقية عبر وسطاء مثل البروكسيات، أو مُلفّ functionCall من OpenZeppelin، أو Multicall3، أو مُحققين للتوقيع ERC-1271. إذا تم الإبلاغ عن حالة المُستَدْعَى المباشر فقط، فستبدو المُلفّات التي تلتقط توقف نفاد الغاز ثم تُلغي بسبب محدد وكأنها إلغاء متعمد. تحافظ المسودة على علم لاصق ينتقل عبر كل إطار، بحيث لا يمكن لأي مرسل يتحكم فقط في الغاز أن يجعل المُستدعي يقرأ إلغاءً بسيطاً. تُبلغ عن النتائج بدلاً من الأسباب، ولا يزال بإمكان المُستَدْعَى إنتاج توقف متعمد باستخدام INVALID. إنها تحمي فقط الكود المكتوب بعد نشرها، لأن العقود المُنشرة لن تقرأها. لا توجد مراجعات خارجية بعد، ورقم opcode لا يزال مفتوحاً، ونموذج أولي واختبارات لـ 58 حالة مدرجة لا تزال معلقة. الرابط - https://t.co/KnByUBgWrY

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

avatarانشر ردك

التعليق