ما يحدث فعليًا عندما ترسل معاملة إيثريوم
--> المشكلة
تضغط على "إرسال" في محفظتك. واجهة المستخدم تؤكد المعاملة.
لكن بعد ذلك... لا يحدث شيء.
أحيانًا تتأكد في ثوان.
أحيانًا تتوقف لدقائق - أو تفشل تمامًا.
لماذا؟
معظم الشروحات تتوقف عند "تذهب إلى البلوكشين."
هذا ليس مفيدًا إذا كنت تبني أنظمة على .
دعنا نفكك ما يحدث فعليًا تحت الغطاء.
نموذج ذهني (توجيه سريع)
المعاملة لا تُنفذ على الفور.
تمر عبر ثلاث مراحل مميزة:
الانتشار (الميمبول)
التضمين (اقتراح الكتلة)
التنفيذ (انتقال الحالة)
كل مرحلة تضيف تأخيراً ومخاطر وأنماط فشل.
الخطوة 1: إنشاء المعاملة
عندما تضغط “send”:
محفظتك تنشئ معاملة:
من أجل
القيمة
حد الغاز
maxFeePerGas
البيانات (إذا كانت تتضمن تفاعلات مع عقد)
توقّع المعاملة باستخدام مفتاحك الخاص
في هذه النقطة:
👉 المعاملة صالحة لكنها غير معروفة بعد للشبكة
الخطوة 2: بث إلى الشبكة
تقوم محفظتك بإرسال المعاملة إلى عقدة.
عقدة:
يتحقق من التوقيع
يتحقق من nonce
يضمن صحة أساسية
إذا كانت صحيحة → تدخل الميمبول
الخطوة 3: الميمبول (حيث تصبح الأمور مثيرة للاهتمام)
الميمبول هو:
منطقة احتفاظ مؤقتة
غير متسقة عالمياً
تختلف بين العقد
هذا يعني:
👉 قد تكون مع معاملتك موجودة في بعض العقد—لكن ليس في غيرها
السلوك الأساسي:
العقد تُعطي أولوية للمعاملات حسب الرسوم
كلما زاد maxFeePerGas = زادت الأولوية
📊 المخطط 1: تدفق انتشار المعاملة
يجب أن يُظهر المخطط:
محفظة المستخدم → العقدة A → العقدة B → العقدة C
لكل عقدة ميمبول خاص بها
أسهم تُظهر انتشار gossip
تمييز: “ليست كل الميمبوالت متماثلة”
الخطوة 4: اقتراح الكتلة
يقوم المدققون باختيار المعاملات من ميمبولهم.
هم يختارون:
أولاً معاملات الرسوم الأعلى
المعاملات التي تناسب حدود الغاز
مهم:
👉 مع معاملتك تنافس الآخرين
الخطوة 5: التنفيذ (مستوى EVM)
بمجرد تضمينها في كتلة
تُنفَّذ المعاملة داخل EVM
تحدث تغييرات في الحالة:
تحديثات الرصيد
تغييرات تخزين العقد الذكية
إذا فشل التنفيذ:
يظل الغاز مستهلكاً
تتراجع تغييرات الحالة
📊 المخطط 2: تدفق التنفيذ
يجب أن يُظهر المخطط:
الكتلة → EVM → انتقال الحالة
المدخلات:
معاملة
الحالة الحالية
الإخراج:
حالة جديدة
تضمين “استهلاك الغاز” في كل خطوة
حالات خاصة & أنماط فشل
هنا يفشل معظم المقالات. لنغوص أعمق.
❌ 1. معاملة عالقة في الميمبول
الرسوم منخفضة جداً
لم يتم اختيارها من قبل المدققين أبداً
❌ 2. معاملة مرفوضة
العقدة تزيلها بسبب:
رسوم منخفضة
تكدّس الميمبول
❌ 3. معاملة مستبدلة
نفس nonce + رسوم أعلى → تستبدل الأصلية
❌ 4. تنفيذ خارج الغاز
يتوقف التنفيذ في منتصف الطريق
ترجع الحالة إلى ما قبلها (reverts)
يُستهلك الغاز
❌ 5. إعادة تنظيم السلسلة (Reorg)
يتم استبدال الكتلة
قد تختفي المعاملة مؤقتاً
انعكاسات واقعية
للمطورين:
لا يمكنك افتراض نهائية فورية
يجب التعامل مع حالات معلّقة
لـ UX:
المستخدمون يرون “pending” → لَبس
تقدير الرسوم يصبح حاسماً
لتصميمات الأنظمة
منطق إعادة المحاولة ضروري
مراقبة المعاملات إلزامية
النتائج الأساسية
المعاملة عملية متعددة المراحل وليست حدثاً واحداً
الميمبول غير حتمي ومجزّأ
الرسوم تؤثر مباشرة على احتمال التنفيذ
يمكن أن يحدث الفشل على عدة طبقات
يجب تصميم الأنظمة من أجل عدم اليقين والتأخير
إذا كنت تبني على Ethereum، فإن فهم هذه السلسلة ليس اختيارياً—إنها الأساس$ETH