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 على master، Anchor 1.0.2. يتم سحب معرفات البرامج عبر الثوابت من reference/program-addresses.

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

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

إنشاء مجمع CPMM

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

مبادلة (إدخال أساسي)

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

مبادلة (إخراج أساسي)

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

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

المصدر: src/cpmm/deposit.ts
يشتق SDK المبلغ المقترن من احتياطيات المجمع الحالية، ويضخم كل جانب بمقدار الانزلاق لحجج 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 عندما يكون الحساب فارغًا.
تعليمات المنشئ الاثنتان لها مميزات وتخطيطات حسابات مختلفة — التعليمة بدون إذن تستبدل موقّع المنشئ بـ payer منفصل وcreator غير موقّع. استخدم المنشئ المطابق بدلاً من تبديل الحسابات يدويًا على الآخر.لا يوجد منشئ رسوم بروتوكول أو صندوق في SDK (makeCollectProtocolFeeInstruction وmakeCollectFundFeeInstruction غير موجودة تحت أي اسم) — تلك مسارات إدارية، وكذلك CreateCreatorFeeShare / CloseCreatorFeeShare، التي ليس لها منشئ أيضًا. منشئو التعليمات منخفضة المستوى التي توجد هي collectCpFeeInstruction، makeCollectCreatorFeeInstruction وcollectCreatorFeePermissionlessInInstruction.
خارج السلسلة يمكنك قراءة الرسوم المتراكمة مباشرة من PoolState:

هيكل Rust CPI

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

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

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

الخطوات التالية

المصادر: