Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
لافتة الإصدار. توثق هذه الصفحة @raydium-io/raydium-sdk-v2@0.2.64-alpha، الإصدار المثبت في كل عينة كود على هذا الموقع. SDK في مرحلة ما قبل 1.0 وسطح النوع تطور عبر الإصدارات — ثبّت إصدارك.تم تحديث الإصدار من 0.2.42-alpha في 2026-09-09 جنباً إلى جنب مع ترقيات البرنامج: 0.2.64-alpha هو الإصدار الحالي للـ SDK. مستودع raydium-sdk-V2-demo الذي تشير إليه صفحات عينات الكود يثبت 0.2.62-alpha، لذا ثبّت أحدهما إذا كنت تتابع عينة حرفياً. تم تنفيذ العينات على هذه الصفحات آخر مرة مقابل 0.2.42-alpha (2026-04)؛ تم إعادة فحص توقيعات استدعاءاتها مقابل مصدر 0.2.64-alpha في 2026-09-09، لكن تعامل مع أي عدم تطابق كخطأ توثيق وافتح مشكلة.

التثبيت

SDK مكتوب بـ TypeScript ويشحن .d.ts جنباً إلى جنب مع أداة JS الخاصة به. الحد الأدنى لسلسلة الأدوات: Node 18+، TypeScript 5.0+، moduleResolution: "bundler" أو "node16".

التهيئة

نقطة الدخول هي Raydium.load:
Raydium.load غير متزامن لأنه يجلب حمولة صغيرة /config من api-v3.raydium.io عند البدء (تسرد حسابات AmmConfig الحالية، مستويات الرسوم، إلخ). عيّن disableFeatureCheck: true في البيئات غير المتصلة؛ سيتعين عليك توفير تلك القيم يدويًا لبعض المنشئين.

واجهات الوحدات الأربع

بمجرد التحميل، يكشف كائن raydium عن أربع واجهات وحدات، واحدة لكل سطح منتج:
(نعم، خمس واجهات في المجموع — “أربع” هي الطريقة التي تجمع بها Raydium بينها علناً، مع trade وtoken كمرافق داعمة.)

منشئو المعاملات

تعيد كل دالة طفرة منشئ بدلاً من التنفيذ الفوري:
الحقول المُرجعة:
  • execute — دالة راحة توقّع + ترسل. معادل لـ builder.execute.
  • builder — مثيل TxBuilder مع جميع التعليمات والموقّعين المتراكمين. استدعِ .build() للحصول على VersionedTransaction[]؛ مفيد عندما تحتاج إلى حقن تعليماتك الخاصة أو التوقيع بموقّعين خارجيين.
  • transaction / innerTransactions — مصفوفات التعليمات الخام. استخدم عند بناء معاملات متعددة البرامج المركبة.
  • extInfo — إضافات خاصة بالمنتج. على سبيل المثال، createPool يعيد extInfo.poolId؛ createLaunchpad يعيد PDA حالة الإطلاق الجديدة.
txVersion يتحكم في تنسيق المعاملة القديم مقابل V0. V0 (جداول البحث عن العناوين) هو التوصية الافتراضية — يسمح بمبادلات أكبر بأن تناسب معاملة واحدة.

لماذا منشئو غير متزامنين؟

يجلب كل منشئ تقريباً حالة على السلسلة: معلومات المجموعة (للاقتباسات)، ملكية برنامج الرمز (لـ Token-2022 مقابل توجيه SPL)، إعفاء الحساب من الإيجار (لإنشاء ATA)، إلخ. يخزن SDK بقوة لكن الاستدعاء الأول لمجموعة جديدة ينطوي على رحلات RPC. احتفظ بمثيل raydium طويل الأجل لتجنب إعادة الجلب.

إضافات وحدة CLMM (الإصدار الأخير)

اكتسبت واجهة CLMM أسطح للميزات الجديدة للرسوم الديناميكية والرسوم أحادية الجانب وأوامر الحد:
  • raydium.clmm.createCustomizablePool — مجموعة شاملة من createPool التي تقبل collectFeeOn وenableDynamicFee وdynamicFeeConfigId. استخدم هذا لأي مجموعة جديدة تحتاج إلى الأزرار الجديدة؛ createPool الكلاسيكي يستمر في العمل لمجموعات الرسوم الافتراضية.
  • raydium.clmm.openLimitOrder — افتح أمر حد أحادي التجزئة على مجموعة تدعمها. يأخذ poolInfo وpoolKeys وlimitOrderConfig (من /main/clmm-limit-order-config) وinputMint وinputAmount وtick الهدف.
  • raydium.clmm.increaseLimitOrder / decreaseLimitOrder — اضبط الجزء غير المملوء من أمر موجود. يؤدي الانخفاض إلى الانعكاس على أمر مملوء بالكامل مع InvalidOrderPhase.
  • raydium.clmm.settleLimitOrder / settleAllLimitOrder — اكسح الإخراج المملوء إلى ATA المالك. يمكن لمالك الأمر أو حارس limit_order_admin للمجموعة استدعاؤهما.
  • raydium.clmm.closeLimitOrder / closeAllLimitOrder — أغلق الأوامر المستقرة بالكامل لاسترجاع الإيجار.
  • raydium.api.getClmmDynamicConfigs() / getClmmLimitOrderConfigs() — مساعدات REST التي تضرب نقاط النهاية الجديدة /main/clmm-dynamic-config و/main/clmm-limit-order-config.
أيضاً أعادت تنظيماً صغيراً نقل utils/ إلى libraries/. يجب على الكود الذي استورد من @raydium-io/raydium-sdk-v2/utils/... التبديل إلى @raydium-io/raydium-sdk-v2/libraries/.... برميل الحزمة على المستوى الأعلى لم يتغير، لذا لا يرى معظم المستخدمين إعادة التسمية. تعيش الإرشادات الشاملة لـ TypeScript في products/clmm/code-demos.

المشاكل الشائعة

1. عدم تطابق الكتلة

تكوين بدء SDK خاص بالكتلة. خلط cluster: "mainnet" مع اتصال devnet يسبب توجيهاً خاطئاً صامتاً: يقتبس SDK مقابل mainnet AmmConfig لكن يرسل إلى devnet. مرر دائماً كليهما.

2. نسيان إنشاء ATAs مسبقاً

عند التفاعل الأول مع رمز، قد لا يكون حساب الرمز المرتبط للمستخدم موجوداً. يضيف SDK تعليمة AssociatedTokenAccount::create تلقائياً عندما يكتشف ATA مفقود، مما يكلف مبلغاً صغيراً من الإيجار. إذا كانت محفظتك منخفضة على SOL فسيفشل بصمت. تحقق وموّل قبل إعادة المحاولة.

3. poolInfo قديم

poolInfo لقطة مخزنة مؤقتاً. إذا تغيرت حالة المجموعة منذ جلبتها (تحرك تجارة كبيرة السعر، مثلاً)، قد يتم حساب minAmountOut للمبادلة مقابل الحالة القديمة وتهبط أقل من مبلغ الإخراج على السلسلة، مما يؤدي إلى الانعكاس. أعد جلب poolInfo مباشرة قبل بناء معاملات عالية القيمة، أو استخدم computeAmountOut للـ SDK الذي يعيد الاستعلام عن الاحتياطيات.

4. رسوم الأولوية

لا يضيف SDK أسعار وحدات الحساب بشكل افتراضي. في نوافذ الحجم العالي (إطلاقات المجموعات الجديدة، أحداث العملات الفكاهية) هذا يعني أن معاملتك تتنافس مع العديد من الآخرين وقد لا تهبط. وفّر computeBudgetConfig صريح:
انظر integration-guides/priority-fee-tuning لإرشادات التحجيم.

5. تحمل الانزلاق يجب أن يطابق نوع المجموعة

CPMM و AMM v4 هما رياضيات CPMM (تأثير منخفض على التجارات العادية). CLMM متقطع (التأثير يقفز عند عبور التجزئات). إذا نسخت تحمل انزلاق 0.5٪ من مثال CPMM إلى مبادلة CLMM التي تعبر عدة تجزئات، فمن المحتمل أن تنعكس المعاملة. يعيد computeAmountOut للـ SDK priceImpact؛ حجّم تحملك فوقه.

6. BN مقابل number

جميع حقول المبلغ في SDK هي مثيلات bn.js BN — لا تكن أبداً JavaScript number. تحويل قيم المبلغ عبر .toNumber() يقطع بصمت في 2^53؛ لأي قيمة فوق ~9 كوادريليون (ليس نادراً على رموز 9-عشرية)، هذا ينتج النتيجة الخاطئة. احتفظ بكل شيء في BN حتى عرض واجهة المستخدم النهائي.

سياسة الإصدار

  • @raydium-io/raydium-sdk-v2 هو SDK الوحيد الذي تحتفظ به Raydium. جميع الوثائق والعينات والإرشادات التكاملية تستهدفه.
  • توجد حزمة v1 أقدم (@raydium-io/raydium-sdk) على npm لأسباب تاريخية. انتهت الصيانة بعد شحن CPMM و LaunchLab (لم تكتسب v1 أبداً دعماً لأي منهما)، ولم تكن هناك إصدارات v1 منذ 2024. تعامل مع v1 كنهاية الحياة: لا تستخدمه لكود جديد، وهاجر أي تكاملات v1 متبقية إلى v2.
  • SDK v2 في مرحلة ما قبل 1.0. التغييرات الكسرية بين إصدارات 0.x الثانوية ممكنة؛ ثبّت الإصدار الذي تحققت منه وتحقق من ملاحظات إصدار GitHub عند الترقية.

الترقية

عند الترقية بين إصدارات SDK الثانوية:
  1. أعد فحص نوع الإرجاع لكل استدعاء طفرة — تغييرات الشكل (مثل extInfo) تهبط بشكل متكرر.
  2. أعد إنشاء توقيعات جلب poolInfo — قد تكون حقل قد أعيدت تسميته.
  3. أعد التحقق من معالجة الانزلاق الخاصة بك؛ تحول SDK بين السلوكيات المرتبطة تلقائياً والمرتبطة بالاختيار عبر الإصدارات.
  4. إذا كنت تستخدم raydium.trade (التوجيه)، أعد التحقق من شكل المسار — إنه الجزء الأكثر عدم استقراراً من السطح.

الحصول على المساعدة

لأسئلة SDK و API:
  • مشاكل GitHub — قدّم في github.com/raydium-io/raydium-sdk-V2/issues للأخطاء والطلبات الميزة. يراقب فريق Raydium بنشاط.
  • Discord — قناة #dev-support في discord.gg/raydium للمساعدة المتزامنة.
  • Telegram — دردشة المطورين المرتبطة من raydium.io (تجنب مجموعات Telegram غير المتحققة).
لمشاكل الأمان، لا تنشر في القنوات العامة — انظر security/disclosure.

مؤشرات

المصادر: