Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
ما هي IDL
تنشر برامج Anchor على Solana ملف IDL (لغة تعريف الواجهة) يصف تعليماتها وتخطيطات الحسابات وتعداد الأخطاء وأنماط البيانات الهيكلية. تعتبر IDL مصدر الحقيقة لإنشاء كود العميل — يتم إنشاء TS SDK وصندوق Rust CPI والعملاء من جهات خارجية من (أو كتابتها يدويًا مقابل) IDL. تنشر Raydium IDLs لـ CPMM و CLMM و LaunchLab. AMM v4 و Stable AMM و Farm (v3 / v5 / v6) سابقة لـ Anchor أو لا يتم توزيعها عبر Anchor بطريقة أخرى — يتم الاحتفاظ بهياكل حساباتها يدويًا في SDK.حيث يمكنك العثور عليها
توجد IDLs في مستودع مخصص:| البرنامج | ملف IDL |
|---|---|
| CPMM | raydium_cpmm/raydium_cp_swap.json |
| CLMM | raydium_clmm/raydium_clmm.json |
| LaunchLab | raydium_launchpad/raydium_launchpad.json |
| AMM v4 | لا توجد IDL رسمية — راجع raydium-sdk-V2/src/raydium/liquidity/layout.ts للتخطيطات المكتوبة يدويًا |
| Stable AMM | لا توجد IDL رسمية — التخطيطات في SDK |
| Farm | لا توجد IDL رسمية — التخطيطات في SDK |
إعادة إنشاء عميل TypeScript
ينتج عن codegen الخاص بـ Anchor عميل مكتوب من IDL:raydium.cpmm.swap(...) ذو المستوى الأعلى الذي يلتف حول طرق Anchor بالإضافة إلى كل العمليات المحاسبية (إنشاء ATA، تعديل رسم التحويل، ميزانية الحساب، توجيه برنامج Token-2022). أعد الإنشاء فقط عندما تحتاج إلى طبقة أسفل SDK.
إعادة إنشاء عميل Rust (صندوق CPI)
تنشر Raydium صناديق Anchor للبرامج التي لديها IDLs:cpi هياكل حسابات cpi::accounts::<Ix> و invokers cpi::<ix>() — أغلفة CPI جاهزة للاستخدام. راجع sdk-api/rust-cpi لأنماط الاستخدام.
إذا كنت تفضل إنشاء ربطات جديدة:
إعادة إنشاء عميل Python
لا يوجد SDK رسمي لـ Raydium Python. تتضمن المولدات من جهات خارجية:anchorpy— نسخة Python من@coral-xyz/anchor. يولد منشئي طرق مكتوبة من IDLs.solders— بدائية Solana منخفضة المستوى (المعاملات، المفاتيح، المفاتيح العامة) في ربطات Rust؛ مستخدمة أسفلanchorpy.
sdk-api/python-integration للحصول على شرح أكثر اكتمالاً.
سياسة تغيير IDL
تتبع Raydium هذه القواعد لاستقرار IDL:- لا تتغير محددات التعليمات أبدًا. إضافة تعليمات جديدة توسّع التعداد في النهاية؛ المحددات الموجودة تبقى مستقرة.
- تتطور تخطيطات هياكل الحساب فقط بشكل إضافي. تذهب الحقول الجديدة في النهاية، سابقة بنقل الحجم في الأسفل. الحقول الموجودة تحافظ على انزياحاتها.
- رموز تعداد الأخطاء للإلحاق فقط. رمز الخطأ الموجود دائمًا يعني نفس الشيء.
- التغييرات الجذرية تُرسل في برامج جديدة. عندما يكون هناك حاجة لإعادة التصميم، يعتمد الفريق برنامج ID جديد (مثلاً CPMM كبرنامج جديد بدلاً من ترقية AMM v4). تستمر المجموعات القديمة في التشغيل على البرنامج القديم؛ المجموعات الجديدة تذهب إلى الواحد الجديد.
ماذا تفعل عندما تتغير IDL
- حدّث SDK.
npm update @raydium-io/raydium-sdk-v2. - أعد إنشاء كود العميل الخاص بك إذا كنت تستخدم Anchor codegen مباشرة.
- قارن تخطيط الحساب. الحقول الزائدة للتخطيط الجديد هي الشيء الوحيد الذي لم يرَه الكود الخاص بك؛ تأكد ما إذا كنت بحاجة إليها.
- لا تفترض أن محددات التعليمات القديمة غير صالحة. وفقًا للقاعدة 1، لا تزال تعمل.
- أعد تشغيل اختبارات التكامل على devnet قبل الانتقال إلى mainnet.
استكشاف أخطاء IDL
أخطاء “Invalid discriminator”
عادة ما تعني أن عميلاً تم بناؤه مقابل الإصدار N من IDL يحاول استدعاء تعليمة موجودة فقط في إصدار سابق من البرنامج قبل النشر. أعد سحب IDL من البرنامج المباشر:فشل فك تشفير الحساب
إذا رمىprogram.account.<Name>.fetch(pubkey) مع “Invalid account discriminator”، فقد تم إنشاء الحساب بواسطة إصدار برنامج سابق ويرفضه Anchor محدد البايتات 8 الخاص به. الحل هو استخدام محلل التخطيط الخام من SDK (PoolInfoLayout.decode(accountData)) الذي لا ينفذ محددات Anchor.
تعليمات مفقودة في العميل الذي تم إنشاؤه
يولد Anchor’s TS codegen فقط طرقًا للتعليمات التي إدخال IDL الخاص بها لهname الذي يتم تحليله كمعرّف صالح. جميع تعليمات Raydium تستوفي هذا، لكن إذا رأيت عدم تطابق، تحقق من ما إذا كان ملف IDL من إصدار SDK الحالي.
المؤشرات
sdk-api/rust-cpi— استخدام صناديق Rust CPI.sdk-api/python-integration— Python عبرanchorpy.sdk-api/typescript-sdk— عميل TS ذو المستوى الأعلى.


