Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
بيان الإصدار. جميع أمثلة TypeScript تستهدف @raydium-io/raydium-sdk-v2@0.2.42-alpha على Solana mainnet-beta، تم التحقق منها في 2026-04. هيكل عظمي Rust CPI يستهدف raydium-cp-swap على فرع master، Anchor 0.30.x. يتم سحب معرفات البرامج عبر ثوابت من reference/program-addresses.

المتطلبات الأساسية

كل مثال على هذه الصفحة يعكس ملف في raydium-sdk-V2-demo/src/cpmm؛ رابط GitHub يقع بجانب كل قسم. يتبع التمهيد ملف config.ts.template من مستودع العرض التوضيحي (المصدر):
مثيل Raydium هو واجهة SDK — كل مثال أدناه يستخدمه. يجلب قوائم الرموز وتكوينات الرسوم بكسل من api-v3.raydium.io؛ يمكنك تعيينها ببيانات خاصة بك في البيئات غير المتصلة بالإنترنت.

إنشاء pool CPMM

المصدر: src/cpmm/createCpmmPool.ts
بعض الأشياء التي يتعامل معها SDK بصمت:
  • فرز الـ mints إلى ترتيب token0/token1 قبل اشتقاق PDA.
  • دفع create_pool_fee لمرة واحدة إلى poolFeeAccount.
  • إنشاء حسابات الرموز المرتبطة بالمتصل إذا كانت مفقودة.
  • اختيار برنامج الرموز الصحيح (SPL Token مقابل Token-2022) لكل جانب.
بعد التأكيد، يمكنك جلب حالة pool المباشرة باستخدام:

Swap (base-input)

المصدر: src/cpmm/swap.ts
ملاحظة: SDK دائماً يعيد جلب حالة pool من RPC داخل getPoolInfoFromRpc. لا تحصل على عرض سعر من api-v3.raydium.io لمعاملة أنت على وشك التوقيع عليها — عرض سعر قديم بمقدار كتلة واحدة يمكن أن ينزلق إلى ExceededSlippage في وقت الهبوط.

Swap (base-output)

المصدر: src/cpmm/swapBaseOut.ts

إيداع السيولة

المصدر: src/cpmm/deposit.ts
يحول SDK lpAmount إلى needed_token_0 و needed_token_1 باستخدام احتياطيات pool الحالية، ينفخ كل واحد بـ 1 + slippage لحجج maximum_* الخاصة بالتعليمات، وينشئ ATAs إذا لزم الأمر.

سحب السيولة

المصدر: src/cpmm/withdraw.ts

جمع رسوم البروتوكول/الصندوق/المنشئ

المصدر: src/cpmm/collectCreatorFee.ts، src/cpmm/collectAllCreatorFee.ts جمع البروتوكول والصندوق يبقى محمياً بالسلطة. رسوم المنشئ لها مساران: CollectCreatorFee الموقع من المنشئ الموجود، و CollectCreatorFeePermissionless الإضافي، الذي يمكن لأي دافع استدعاؤه لكن يمكنه نقل فقط إلى ATAs الكنسية للمنشئ. يكشف SDK المثبت عن منشئي الخام الموجودين:
@raydium-io/raydium-sdk-v2@0.2.42-alpha لم يكشف بعد عن منشئ لـ CollectCreatorFeePermissionless. حتى يضيف إصدار SDK جديد، قم بالبناء من IDL CPMM المحدث أو استدعِ البرنامج مباشرة. لا تعيد استخدام makeCollectCreatorFeeInstruction: التعليمات الجديدة لها discriminator مختلف وتستبدل موقّع المنشئ / مواضع amm_config بحسابات payer منفصلة و creator غير موقّعة.
خارج السلسلة، يمكنك قراءة الرسوم المتراكمة مباشرة من PoolState:

هيكل عظمي Rust CPI

إذا كنت تريد استدعاء CPMM من برنامج Anchor الخاص بك — على سبيل المثال، vault يقوم بـ swap نيابة عن المودعين — سياق CPI يبدو هكذا. ترتيب الحساب يتبع products/cpmm/instructions.
إذا كان CPI الخاص بك يوقّع كـ PDA (على سبيل المثال، تدير vault نيابة عن المودعين)، استبدل CpiContext::new بـ CpiContext::new_with_signer وأمرر بذورك.

الأخطاء الشائعة

قائمة تحقق قصيرة قبل فتح تذكرة دعم:
  • Sorted mints. إذا كان poolState PDA المشتق الخاص بك لا يطابق pool على السلسلة، فربما نسيت فرز الـ mints.
  • Stale API quote. لا تمرر قيمة احتياطي من api-v3.raydium.io إلى CurveCalculator.swap. اجلب من RPC.
  • Wrong token program. vault mint Token-2022 مملوك ببرنامج Token-2022، وليس بـ SPL Token. استخدم دائماً حقول token_0_program / token_1_program الخاصة بـ pool.
  • Slippage under-denominated for transfer-fee mints. إذا كان أي جانب من pool هو mint Token-2022 transfer-fee، فإن minimum_amount_out الخاص بك يجب أن يكون مقوماً بما يتلقاه المستخدم فعلياً، وليس بما يرسله vault.
  • NotApproved on a swap. تحقق من PoolState.status — قد يكون المسؤول قد أوقف swaps على هذا pool. انظر products/cpmm/instructions لقناع الحالة.

أين تذهب بعد ذلك

المصادر: