الانتقال إلى المحتوى الرئيسي

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.

هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
لافتة الإصدار. تتناول هذه الصفحة @raydium-io/raydium-sdk-v2@0.2.42-alpha، وهو الإصدار المُتحقَّق من كل عرض توضيحي للكود في هذا الموقع (2026-04). SDK في مرحلة ما قبل 1.0 وتطورت سطح الأنواع عبر الإصدارات — قم بتثبيت إصدار محدد.

التثبيت

npm install @raydium-io/raydium-sdk-v2 @solana/web3.js @solana/spl-token
# أو
pnpm add @raydium-io/raydium-sdk-v2 @solana/web3.js @solana/spl-token
SDK مكتوب بلغة TypeScript ويرسل .d.ts بجانب artifact JS الخاص به. أدنى مجموعة أدوات: Node 18+، TypeScript 5.0+، moduleResolution: "bundler" أو "node16".

التهيئة

نقطة الدخول هي Raydium.load:
import { Raydium } from "@raydium-io/raydium-sdk-v2";
import { Connection, Keypair, clusterApiUrl } from "@solana/web3.js";

const connection = new Connection(process.env.RPC_URL ?? clusterApiUrl("mainnet-beta"));
const owner      = Keypair.fromSecretKey(/* ... */);

const raydium = await Raydium.load({
  owner,
  connection,
  cluster: "mainnet",           // "mainnet" | "devnet"
  disableFeatureCheck: true,    // تخطي استدعاء API الكشف عن الميزات عند بدء التشغيل
  blockhashCommitment: "confirmed",
});
Raydium.load غير متزامن لأنه يجلب حمولة /config صغيرة من api-v3.raydium.io عند بدء التشغيل (حيث يتم سرد حسابات AmmConfig الحالية وفئات الرسوم وما إلى ذلك). عيّن disableFeatureCheck: true في البيئات غير المتصلة؛ سيتعين عليك توفير تلك القيم يدويًا لبعض المنشئين.

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

بمجرد التحميل، يكشف الكائن raydium عن أربع واجهات وحدات، واحدة لكل سطح منتج:
raydium.cpmm       // تجمعات CPMM: createPool, addLiquidity, withdrawLiquidity, swap, ...
raydium.clmm       // تجمعات CLMM: createPool, openPositionFromBase, increasePositionFromBase,
                   //             decreaseLiquidity, harvestAllRewards, swap, ...
raydium.liquidity  // تجمعات AMM v4: computeAmountOut, swap, addLiquidity, removeLiquidity, ...
raydium.farm       // Farm v3/v5/v6: deposit, withdraw, harvestAllRewards, create, setRewards
raydium.launchpad  // LaunchLab: createLaunchpad, buyExactIn, sellExactIn, graduate, ...
raydium.trade      // توجيه متعدد التجمعات: quotes, route-execution (beta في 0.2.41)
raydium.token      // أدوات مساعدة: الحصول على قائمة الرموز والبيانات الوصفية وإنشاء ATA
(نعم، خمس واجهات إجمالاً — “أربع” هي الطريقة التي يجمع بها Raydium بينها علنًا، مع trade و token كأدوات دعم مساعدة.)

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

تُرجع كل دالة طفرة منشئًا بدلاً من التنفيذ الفوري:
const { execute, builder, transaction, innerTransactions, extInfo } =
  await raydium.cpmm.addLiquidity({
    poolInfo,
    amountInA,
    amountInB,
    slippage: 0.005,
    txVersion: TxVersion.V0,
  });
الحقول المُرجَعة:
  • execute — دالة راحة توقّع وترسل. مكافئة لـ builder.execute.
  • builder — مثيل TxBuilder مع جميع التعليمات والموقِّعين المتراكمة. استدع .build() للحصول على VersionedTransaction[]؛ مفيد عندما تحتاج إلى إدراج تعليماتك الخاصة أو التوقيع باستخدام موقِّعين خارجيين.
  • transaction / innerTransactions — مصفوفات التعليمات الخام. استخدم عند بناء معاملات متعددة البرامج المركبة.
  • extInfo — إضافات خاصة بالمنتج. على سبيل المثال، createPool ترجع extInfo.poolId؛ createLaunchpad ترجع PDA حالة الإطلاق الجديدة.
txVersion يتحكم في صيغة المعاملات القديمة مقابل V0. يُوصى افتراضيًا بـ V0 (جداول البحث عن ال주소) — فهو يسمح بدخول swaps أكبر في معاملة واحدة.

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

يجلب كل منشئ داخليًا حالة on-chain تقريبًا: معلومات المجموعة (للاقتباسات)، ملكية برنامج الرموز (لـ 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 الخاص بـ SDK خاص بالعنقود. خلط cluster: "mainnet" مع Connection devnet يسبب توجيهًا صامتًا خاطئًا: SDK يقتبس ضد mainnet AmmConfig لكنه يرسل إلى devnet. مرر الاثنين دائمًا.

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

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

3. poolInfo قديم

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

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

SDK لا يضيف أسعار وحدات الحساب افتراضيًا. في نوافذ الحجم العالي (إطلاقات المجموعات الجديدة وأحداث العملات المسخرة) هذا يعني أن معاملتك تتنافس مع أخرى كثيرة وقد لا تهبط. وفّر computeBudgetConfig صريح:
const { execute } = await raydium.cpmm.swap({
  poolInfo,
  inputAmount: new BN(...),
  swapResult: ...,
  slippage: 0.005,
  txVersion: TxVersion.V0,
  computeBudgetConfig: {
    units: 250_000,          // حد CU
    microLamports: 50_000,   // رسم الأولوية لكل CU
  },
});
انظر integration-guides/priority-fee-tuning لإرشادات التحديد.

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

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

6. BN مقابل number

جميع حقول المبلغ في SDK هي نسخ BN من bn.js — أبدًا JavaScript number. تحويل قيم المبلغ عبر .toNumber() يُقطع صامتًا عند 2^53؛ لأي قيمة فوق ~9 مليار مليار (ليس نادرًا على mints 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.

مؤشرات

المصادر: