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

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

كل مثال على هذه الصفحة يعكس ملف في raydium-sdk-V2-demo/src/cpmm؛ رابط GitHub يظهر بجانب كل قسم. يتبع التهيئة ملف config.ts.template من مستودع العروض التوضيحية (المصدر):
مثيل Raydium هو واجهة SDK — كل مثال أدناه يستخدمه. Raydium.load غير متزامن لأنه يحمّل قائمة الرموز بشكل افتراضي؛ مرّر disableLoadToken: true لتخطي هذا الجلب. فحص توفر الميزات مُتخطّى بالفعل ما لم تمرّر disableFeatureCheck: false. يتم جلب تكوينات الرسوم بكسل على الاستخدام الأول عبر raydium.api.getCpmmConfigs().

إنشاء pool CPMM

المصدر: src/cpmm/createCpmmPool.ts
بعض الأشياء التي يتعامل معها SDK بصمت:
  • ترتيب الرموز في ترتيب 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 المبلغ المقترن من احتياطيات pool الحالية، ويضخّم كل جانب بـ slippage لحجج التعليمات maximum_*، وينشئ إنشاءات ATA إذا لزم الأمر. raydium.cpmm.computePairAmount({ ... }) يعيد نفس الأرقام إذا كنت تريدها لمعاينة واجهة المستخدم.

سحب السيولة

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

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

المصدر: src/cpmm/collectCreatorFee.ts، src/cpmm/collectAllCreatorFee.ts جمع البروتوكول والصندوق يبقى محمياً بالسلطة. رسوم المنشئ لها مساران: CollectCreatorFee الموقّع من المنشئ، و CollectCreatorFeePermissionless الإضافي، الذي يمكن لأي دافع استدعاؤه لكن يمكنه نقل فقط إلى ATAs المنشئ الكنسية. 0.2.64-alpha يشحن منشئي مستوى الوحدة لكلا مساري المنشئ:
كلا تعليمات المنشئ غيّرت قوائم حساباتهما في ترقية البرنامج 2026-09-19. كل واحد يأخذ الآن PDA creator_fee_share في ["creator_fee_share", creator, ammConfig]، والواحد بدون إذن يأخذ amm_config أيضاً — كلاهما مُلحَق بعد system_program بدلاً من إدراجه، لذا تحتفظ الحسابات الموجودة أصلاً بمواضعها. منشئ مثبّت على إصدار SDK يسبق الترقية يصدر القائمة الأقصر وتُرفض المعاملة بسبب حسابات مفقودة. تحقق من أن الإصدار الذي تثبّته يحمل الحسابات الجديدة قبل استخدام هذه المساعدات مقابل البرنامج المُرقّى، وحدّث IDL إذا أنشأت عملاء منه.تمرير PDA إلزامي حتى عندما لم يتم إنشاؤه أبداً — اشتقه ومرّره؛ البرنامج يعود إلى AmmConfig.creator_fee_share_rate عندما يكون الحساب فارغاً.
تعليمات المنشئ الاثنتان لها مميزات وتخطيطات حسابات مختلفة — الواحد بدون إذن يستبدل موقّع المنشئ بدافع منفصل و منشئ غير موقّع. استخدم المنشئ المطابق بدلاً من تبديل الحسابات يدويًا على الآخر.لا يوجد منشئ رسوم بروتوكول أو صندوق في SDK (makeCollectProtocolFeeInstruction و makeCollectFundFeeInstruction لا توجد تحت أي اسم) — تلك مسارات إدارية، وكذلك CreateCreatorFeeShare / CloseCreatorFeeShare، التي لا تملك منشئ أيضاً. منشئو التعليمات منخفضة المستوى التي تفعل موجودة هي collectCpFeeInstruction، makeCollectCreatorFeeInstruction و collectCreatorFeePermissionlessInInstruction.
خارج السلسلة يمكنك قراءة الرسوم المتراكمة مباشرة من PoolState:

هيكل Rust CPI

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

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

قائمة تحقق قصيرة قبل فتح تذكرة دعم:
  • الرموز المرتبة. إذا كان poolState PDA المشتق الخاص بك لا يطابق pool على السلسلة، فربما نسيت ترتيب الرموز.
  • اقتباس API قديم. لا تمرّر قيمة احتياطي من api-v3.raydium.io إلى CurveCalculator.swap. اجلب من RPC.
  • برنامج الرموز الخاطئ. خزينة mint Token-2022 مملوكة من قبل برنامج Token-2022، وليس من قبل SPL Token. استخدم دائماً حقول pool token_0_program / token_1_program.
  • Slippage تحت المقسوم عليه لرموز رسوم النقل. إذا كان أي جانب من pool هو mint Token-2022 برسوم نقل، فإن minimum_amount_out الخاص بك يجب أن يكون مقوّماً بما يتلقاه المستخدم فعلاً، وليس بما تُرسله الخزينة.
  • NotApproved على swap. تحقق من PoolState.status — قد يكون المسؤول قد أوقف swaps على هذا pool. انظر products/cpmm/instructions لقناع الحالة.

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

المصادر: