فشل معاملة Ethereum: لماذا خُصمت رسوم الغاز؟
قد يترك فشل الإجراء رصيد رموزك كما هو مع انخفاض رصيد ETH. اقرأ سجل المعاملة قبل دفع رسوم محاولة أخرى.
قد تكلف معاملة Ethereum الفاشلة رسوما بعملة ETH لأن التنفيذ يستخدم عمليات حسابية مدفوعة، حتى عندما يتم التراجع عن الإجراء المقصود. إذا أُدرجت المعاملة في كتلة وكانت حالتها على المستوى الأعلى Failed، فلن يسري التحويل أو تغييرات العقود الناتجة عن تلك المعاملة. تظل رسوم التنفيذ مستحقة.
يغطي هذا الدليل المعاملات العادية على Ethereum Mainnet من حساب يدفع رسوم الغاز الخاصة به. قد تتضمن الحسابات الذكية والمعاملات المدعومة وعمليات السحب من منصات التداول والتحويلات عبر عدة سلاسل خطوات أو رسوما إضافية. فشل خطوة في تطبيق لا يكفي لإثبات فشل المعاملة بأكملها على السلسلة.
حدد أولا ما الذي فشل فعلا
افتح المعاملة من سجل نشاط محفظتك وافحصها في مستكشف Ethereum Mainnet. سجل تجزئة المعاملة كاملة والمرسل ورقم الكتلة والحالة العامة. يمكنك فحص هذه التفاصيل العامة من دون توقيع أي شيء.
هذا التمييز مهم لأن إيصالات Ethereum تسجل نتيجة التنفيذ على المستوى الأعلى: الحالة 0 تعني الفشل والحالة 1 تعني النجاح. فشل استدعاء داخلي يظهر في تتبع التنفيذ لا يعني بالضرورة فشل المعاملة كلها. إذا كانت الحالة العامة Success، فافحص النتيجة الفعلية للإجراء بدلا من افتراض التراجع عن كل شيء.
إذا لم يوجد رقم كتلة وظلت المعاملة معلقة، فاستخدم قائمة فحص المعاملة المعلقة. تبدأ الفحوص التالية بعد الإدراج؛ رفع رسوم معاملة فشلت بالفعل لا يغير نتيجتها المسجلة.
اقرأ الرسوم بمعزل عن المبلغ المقصود
في صفحة المعاملة الفاشلة ابحث عن Transaction Fee وGas Used وGas Price الفعلي، حين يوفرها المستكشف. افصل مبلغ التحويل المقصود عنها. قد يصف حقل Value ما قُدم للتنفيذ من دون إثبات وصول ذلك المبلغ إلى المستلم.
في معاملة عادية على Mainnet، تساوي رسوم التنفيذ المفروضة الغاز المستخدم مضروبا في السعر الفعلي لكل وحدة غاز. إعداد الحد الأقصى للرسوم وحد الغاز يحددان سقوفا، لذا فإن ضرب هذين السقفين لا يثبت ما دفعته فعلا. توضح وثائق الغاز في Ethereum هذه الفروق.
هذا حساب توضيحي، وليس معاملة حقيقية أو تقديرا للرسوم الحالية:
| البند | قيمة المثال |
|---|---|
| تحويل الرموز المقصود | 100 رمز |
| الحالة العامة للإيصال | Failed |
| الغاز المستخدم | 60,000 وحدة |
| سعر الغاز الفعلي | 5 gwei لكل وحدة |
| رسوم التنفيذ | 300,000 gwei، أو 0.0003 ETH |
إذا لم يكن هناك نشاط آخر، يترك التحويل الفاشل رصيد رموز المرسل من دون تغيير بينما ينخفض رصيد ETH بمقدار الرسوم. لا يحدد هذا المثال حد غاز مناسبا ولا يسعر معاملتك المقبلة.
إذا كان انخفاض ETH أكبر من الرسوم المسجلة، فافحص المعاملات الأخرى من الحساب نفسه. لا تستخدم مخطط قيمة المحفظة بالدولار لإعادة حساب المبلغ المخصوم: قد تتغير أسعار السوق في الوقت نفسه. إذا ظلت الكميات مختلفة بين الشاشات، فتابع باستخدام قائمة فحص رصيد المحفظة.
ميز نفاد الغاز عن تراجع العقد
يميز دليل Etherscan للفشل بين تنفيذ ينفد غازه وعقد يتراجع عن التنفيذ. كلاهما قد ينتج معاملة فاشلة، لكنهما يحتاجان إلى فحص مختلف.
نفاد الغاز أثناء التنفيذ: استهلكت العمليات الحسابية الغاز المتاح. يتم التراجع عن التغييرات التي جرت محاولتها ويُستهلك الغاز المخصص. قارن الغاز المستخدم بالحد واقرأ خطأ المستكشف. إذا كان الإجراء مشروعا وما زلت تريده، فارجع إلى إرشادات المحفظة أو البروتوكول الحالية لتقديره. لا تنسخ حدا قديما من تحويل غير ذي صلة.
التراجع عن التنفيذ: أوقف عقد التنفيذ وألغى تغييراته. قد يرجع خطأ يوضح شرطا لم يتحقق. تسمح مواصفة REVERT ببقاء الغاز غير المستخدم، لذا لا يلزم أن يظهر إيصال الفشل استهلاك 100% من حد الغاز.
احفظ الخطأ كما هو وابحث عنه في وثائق البروتوكول الذي كنت تنوي استخدامه. قد لا يفك المستكشف ترميزه، وقد لا تحدد رسالة تراجع عامة السبب. عندها يظل السبب غير محسوم. زيادة كمية الغاز المسموح بها ليست دليلا على تغير شرط العقد.
سعر الغاز وحده عنصران منفصلان. دفع المزيد لكل وحدة لا يجعل العقد يقبل إجراء يرفضه. لا تخفف وسائل حماية المعاملة أو ترفع الحدود لمجرد إخفاء تحذير لا تفهمه.
افحص الخطوات السابقة الناجحة قبل المحاولة مجددا
قد يتضمن مسار التطبيق أكثر من معاملة. مثلا، قد تنجح موافقة في معاملة ثم تفشل مبادلة لاحقة في أخرى. الفشل اللاحق لا يلغي معاملة سابقة. افحص كل تجزئة وحالتها بصورة مستقلة.
جهز سجلا صغيرا قبل السماح بمحاولة أخرى:
- الإجراء الفاشل: التجزئة والكتلة والحالة العامة والخطأ الدقيق.
- التكلفة: رسوم المعاملة والغاز المستخدم وسعر الغاز الفعلي.
- الخطوات الأخرى: تجزئات ونتائج أي موافقة أو إيداع أو إعادة محاولة منفصلة.
- الحالة الحالية: كمية الرموز وأي مركز ذي صلة في البروتوكول لهذا الحساب على Mainnet.
- سبب إعادة المحاولة: السبب المحدد وما الذي تغير لمعالجته.
إذا لم تستطع إكمال البند الأخير، فإن إعادة المحاولة تترك السبب غير محسوم وقد تكلف رسوما أخرى إذا أُدرجت المعاملة الجديدة في كتلة. استخدم قناة الدعم الرسمية للبروتوكول مع تفاصيل المعاملة العامة، وأبق عبارة الاسترداد والمفاتيح الخاصة سرية.
فشل الإجراء لا ينشئ رصيد غاز قابلا للاسترداد
توضح MetaMask أنها لا تجمع رسوم غاز الشبكة ولا تستطيع ردها. مخصص الغاز غير المستخدم يختلف عن الرسوم التي استهلكها التنفيذ بالفعل. لا حاجة إلى الاتصال بموقع استرداد للمطالبة بذلك المخصص غير المستخدم.
قد يساعد متتبع المحفظة على مقارنة الأصول، لكن إجماليه لا يفسر خطأ عقد ولا يعكس المعاملة. احتفظ بإيصال الفشل ورسومه كسجل لهذه المحاولة. قبل المتابعة، ينبغي أن تعرف أي إجراء فشل وكم كلف وأي شرط ستغيره محاولة جديدة.
أسئلة شائعة
هل أفقد الرموز التي حاولت إرسالها عند فشل معاملة Ethereum؟
في معاملة عادية على Ethereum Mainnet يشير إيصالها إلى فشل التنفيذ على المستوى الأعلى، يتم التراجع عن التحويل المقصود وتغييرات حالة العقود. يظل المرسل يدفع رسوم التنفيذ. افحص المعاملات المنفصلة وعقد الرمز المحدد إذا لم تطابق أرصدتك هذه النتيجة.
هل تستهلك المعاملة الفاشلة دائما حد الغاز بالكامل؟
لا. قد يتراجع العقد عمدا عن التنفيذ قبل استهلاك كل الغاز المتاح. نفاد الغاز أثناء التنفيذ يستهلك الغاز المخصص. اقرأ الغاز المستخدم في الإيصال وسبب الفشل بدلا من استنتاج النتيجة من الحد.
هل رفع سعر الغاز يصلح معاملة تم التراجع عنها؟
السعر الأعلى لكل وحدة غاز لا يغير شروط العقد. حدد الخطأ أولا. حد الغاز وسعر الغاز إعدادان مختلفان، وقد تفشل المحاولة الجديدة وتفرض رسوما أخرى.