هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
بيان الإصدار. جميع أمثلة 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
- فرز الرموز إلى ترتيب token0/token1 قبل اشتقاق PDA.
- دفع
create_pool_feeلمرة واحدة إلىpoolFeeAccount. - إنشاء حسابات الرموز المرتبطة بالمتصل إذا كانت مفقودة.
- اختيار برنامج الرمز الصحيح (SPL Token مقابل Token-2022) لكل جانب.
مبادلة (إدخال أساسي)
المصدر:src/cpmm/swap.ts
getPoolInfoFromRpc. لا تحصل على عرض سعر من api-v3.raydium.io لمعاملة أنت على وشك التوقيع عليها — عرض سعر قديم بمقدار كتلة واحدة يمكن أن ينزلق إلى ExceededSlippage في وقت الهبوط.
مبادلة (إخراج أساسي)
المصدر:src/cpmm/swapBaseOut.ts
إيداع السيولة
المصدر:src/cpmm/deposit.ts
maximum_* الخاصة بالتعليمات، وينشئ إنشاءات ATA إذا لزم الأمر. raydium.cpmm.computePairAmount({ ... }) يعيد نفس الأرقام إذا كنت تريدها لمعاينة واجهة المستخدم.
سحب السيولة
المصدر:src/cpmm/withdraw.ts
جمع رسوم البروتوكول والصندوق والمنشئ
المصدر:src/cpmm/collectCreatorFee.ts، src/cpmm/collectAllCreatorFee.ts
جمع البروتوكول والصندوق يبقى محميًا بالسلطة. رسوم المنشئ لها مساران: CollectCreatorFee الموقّع من المنشئ، وCollectCreatorFeePermissionless الإضافي، الذي يمكن لأي دافع أن يستدعيه لكنه يمكنه التحويل فقط إلى ATAs المنشئ الأساسية. يشحن الإصدار 0.2.64-alpha منشئي مستوى الوحدة لكلا مسار المنشئ:
تعليمات المنشئ الاثنتان لها مميزات وتخطيطات حسابات مختلفة — التعليمة بدون إذن تستبدل موقّع المنشئ بـ
payer منفصل وcreator غير موقّع. استخدم المنشئ المطابق بدلاً من تبديل الحسابات يدويًا على الآخر.لا يوجد منشئ رسوم بروتوكول أو صندوق في SDK (makeCollectProtocolFeeInstruction وmakeCollectFundFeeInstruction غير موجودة تحت أي اسم) — تلك مسارات إدارية، وكذلك CreateCreatorFeeShare / CloseCreatorFeeShare، التي ليس لها منشئ أيضًا. منشئو التعليمات منخفضة المستوى التي توجد هي collectCpFeeInstruction، makeCollectCreatorFeeInstruction وcollectCreatorFeePermissionlessInInstruction.PoolState:
هيكل Rust CPI
إذا كنت تريد استدعاء CPMM من برنامج Anchor الخاص بك — على سبيل المثال، خزينة تقوم بالمبادلة نيابة عن المودعين — سياق CPI يبدو هكذا. ترتيب الحسابات يتبعproducts/cpmm/instructions.
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الخاص بك يجب أن يكون مقومًا بما يستقبله المستخدم فعليًا، وليس بما ترسله الخزينة. NotApprovedon a swap. تحقق منPoolState.status— قد يكون المسؤول قد أوقف المبادلات على تلك المجموعة. انظرproducts/cpmm/instructionsلقناع الحالة.
الخطوات التالية
sdk-api/typescript-sdk— مرجع SDK الكامل.sdk-api/rest-api— نقاط نهاية الاقتباس وبيانات وصف المجموعة.user-flows/create-cpmm-pool— شرح بدون كود لنفس التدفق.integration-guides/aggregator— إذا كنت توجّه CPMM كجزء من مسار متعدد القفزات.

