عندما تفشل معاملة توكن على سولانا أثناء السك أو إلغاء السلطات أو إنشاء مجمع السيولة، ينبع الفشل من خطأ تنفيذ محدد يتم تقييمه بواسطة الشبكة. وتنفذ المعاملات على سولانا بشكل ذري: إذا تعرضت تعليمة واحدة داخل المعاملة لخطأ، يتم التراجع عن المعاملة بأكملها، ولا تدخل أي تغييرات على الحالة حيز التنفيذ، ويتم استهلاك رسم معاملة الشبكة فقط.
ويتطلب تشخيص المعاملات الفاشلة فحص أرصدة عملة SOL في المحفظة، وحالة عقد RPC في الشبكة، ومتطلبات تهيئة الحسابات، وسجلات البرامج على مستكشف سولانا.
كيف تعمل دورة حياة المعاملة على سولانا
لفهم سبب إلغاء المعاملة أو التراجع عنها، يرجى معرفة كيفية انتقال التعليمات عبر الشبكة:
- البناء (Construction): تبني الأداة معاملة تحتوي على تعليمات (مثل
InitializeMint أو CreateAccount) وترفق طابع blockhash حديثا للشبكة.
- التوقيع (Signing): توقع محفظتك على المعاملة باستخدام المفتاح الخاص لعنوان السلطة المطلوب.
- البث (Broadcasting): يتم إرسال المعاملة الموقعة إلى عقدة Solana RPC (Remote Procedure Call).
- التحقق (Validation): يقيم المصدق القائد التعليمات مقابل حالة السجل الحالية.
- التنفيذ أو التراجع: إذا كانت صالحة، يتم إقرار التغييرات في كتلة. وإذا كانت غير صالحة، يتم التراجع عن المعاملة وتسجيل خطأ.
تحدد وثائق معاملات سولانا الرسمية حدود المعاملات، وانتهاء صلاحية blockhash، ومعالجة التعليمات.
الخطأ 1: عدم كفاية SOL لإعفاء الحساب من الإيجار
السبب الأكثر شيوعا لفشل إنشاء التوكن هو رصيد المحفظة المنخفض جدا بحيث لا يغطي إعفاء الحساب من الإيجار.
على سولانا، يجب أن يحتفظ كل حساب جديد (مثل حساب السك، أو حساب البيانات الوصفية، أو حساب التوكن المرتبط) بحد أدنى من رصيد عملة SOL الأساسية للبقاء مخزنا بشكل دائم في ذاكرة المصدقين. ويسمى هذا المتطلب إعفاء الإيجار (rent exemption).
ويرجى التمييز بين تكلفتين منفصلتين:
- رسوم معاملة الشبكة: رسم بسيط (عادة 0.000005 SOL) يتم دفعه للمصدقين مقابل معالجة المعاملة.
- وديعة إعفاء الإيجار: وديعة تدفع لمرة واحدة لفتح حساب جديد (عادة بين 0.002 و0.005 SOL لكل حساب يتم إنشاؤه).
إذا كانت محفظتك تحتوي على 0.001 SOL فقط، فلديك ما يكفي لرسوم المعاملة، ولكن معاملتك ستفشل لأنها تفتقر إلى عملات SOL الكافية لدفع إيجار الحسابات الجديدة. واحتفظ دائما بـ 0.02 إلى 0.05 SOL أساسية على الأقل في محفظتك قبل إنشاء التوكنات أو مجمعات السيولة.
الخطأ 2: ازدحام عقدة RPC وانتهاء صلاحية blockhash
تتضمن كل معاملة سولانا blockhash حديثا لمنع هجمات إعادة المعاملة. ويظل blockhash صالحا لحوالي 150 شريحة شبكة (حوالي 60 إلى 90 ثانية).
وإذا شهدت شبكة سولانا حركة مرور كثيفة أو تأخرت عقدة RPC في البث:
- قد تظل المعاملة في قائمة انتظار RPC حتى تنتهي صلاحية blockhash الخاص بها.
- بمجرد مرور 150 شريحة، يرفض المصدقون المعاملة بخطأ
BlockhashNotFound أو TransactionExpired.
- قد تعرض واجهة محفظتك رسالة عامة “انتهت مهلة المعاملة”.
لحل مشكلات مهلة RPC:
- قم بتحديث صفحة الويب للحصول على blockhash جديد.
- تحقق من حالة الشبكة للتأكد من وجود ازدحام.
- استخدم واجهة إطلاق موثوقة مع عقد RPC احتياطية ذات توفر عالٍ.
- زد رسوم الأولوية قليلا إذا كان حركة مرور الشبكة مرتفعة.
الخطأ 3: حساب التوكن المرتبط (ATA) غير المهيأ
عند سك التوكنات أو نقل المعروض إلى مستلم، يجب أن يمتلك عنوان المستلم حساب توكن مرتبطا (ATA) مهيأ لسك التوكن المحدد.
وإذا حاولت المعاملة نقل الرموز إلى عنوان محفظة مباشر دون تنفيذ تعليمة CreateAssociatedTokenAccount أولا، تفشل تعليمة النقل بخطأ AccountDoesNotExist.
وتتضمن أدوات الإطلاق الموجهة تعليمة إنشاء حساب ATA تلقائيا جنبا إلى جنب مع تعليمة السك لمنع هذا الفشل.
الخطأ 4: عدم تطابق السلطة ورفض التوقيع
ستتراجع المعاملة إذا تم توقيعها بواسطة محفظة لا تمتلك حاليا السلطة المخصصة للعملية:
- خطأ السك: محاولة سك معروض إضافي باستخدام محفظة ليست سلطة السك الحالية (أو بعد إلغاء سلطة السك).
- خطأ التجميد: محاولة تجميد حساب باستخدام محفظة لا تمتلك سلطة التجميد.
- خطأ البيانات الوصفية: محاولة تحديث البيانات الوصفية باستخدام محفظة ليست سلطة التحديث.
وإذا قمت بتوصيل محفظة ثانوية أو قمت بنقل مفتاح السلطة سابقا إلى عنوان آخر، فسيرفض النظام المعاملة لعدم وجود توقيع مطلوب صالم.
كيفية تشخيص المعاملات الفاشلة باستخدام Solscan
عند حدوث خطأ، استخدم Solscan لعرض خطأ سجل البرنامج الدقيق:
- افتح سجل معاملات محفظتك وانسبخ توقيع المعاملة الفاشلة.
- الصق التوقيع في Solscan.
- تحقق من شريط حالة المعاملة في الأعلى (المعلم بـ Failed أو Instruction Error).
- التمرير لأسفل إلى قسم Program Logs.
- افحص مخرجات السجل بحثا عن رموز أخطاء صريحة:
custom program error: 0x1 (عدم كفاية أموال SOL للإيجار أو النقل).
BlockhashNotFound (استغرقت المعاملة وقتا طويلا للبث).
ConstraintRaw أو InvalidAccountData (عدم تطابق مفتاح السلطة أو حساب غير مهيأ).
دليل سريع لتشخيص الأخطاء
استخدم قائمة التحقق هذه لحل المشكلات عند فشل معاملة توكن:
| الأعراض / رسالة الخطأ |
السبب الرئيسي |
الحل |
| Transaction Failed: Custom Error 0x1 |
تفتقر المحفظة إلى SOL أساسي كاف للإيجار. |
أضف 0.02 SOL أساسي على الأقل إلى محفظتك وأعد المحاولة. |
| Blockhash Not Found / Timed Out |
ازدحام RPC أو تأخر البث. |
قم بتحديث الصفحة للحصول على blockhash جديد وأعد الإرسال. |
| Account Does Not Exist |
لم يتم إنشاء حساب ATA المستهدف بعد. |
تأكد من أن المعاملة تتضمن تعليمة إنشاء ATA. |
| Signature Verification Failed |
المحفظة المتصلة ليست السلطة الحالية. |
التبديل إلى عنوان المحفظة الدقيق الذي يحمل مفتاح السلطة المطلوب. |
| نافذة المحفظة تغلق تلقائيا |
تعارض ملحقات المحفظة أو حظر المتصفح. |
افتح المحفظة يدويا، وعطل الملحقات المتعارضة، ثم أعد المحاولة. |
يضمن فهم ميكانيكية المعاملات، والاحتفاظ بـ SOL كاف لإعفاءات الإيجار، وفحص سجلات Solscan إجراء عمليات توكنات سلسة وخالية من الأخطاء على سولانا.