Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →

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

كل مثال في هذه الصفحة يعكس ملف في 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 عندما يكون الحساب فارغاً.
تعليمات المنشئ الاثنتان لها محددات وتخطيطات حسابات مختلفة — الواحد بدون إذن يستبدل موقّع المنشئ بدافع منفصل و 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 ومرر بذورك.

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

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

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

المصادر: