هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
ما يفعله هذا الكود. ينشئ مجموعة CLMM جديدة بطبقة الرسم التي تختارها، ثم يفتح مركزًا مركزًا أوليًا. معاملتان، سكريبت واحد. الكود مأخوذ من العروض التوضيحية الرسمية في
raydium-sdk-V2-demo/src/clmm وتم تكييفه ليعمل كملف Node واحد.الإعداد
تأكد من أنك قرأت متطلبات البدء السريع وأن لديكRPC_URL وKEYPAIR والتبعيات مثبتة.
ينطوي إنشاء مجموعة CLMM على رسم لمرة واحدة بالإضافة إلى إيجار مصفوفة القرادة لكل مركز أولي. ستحتاج أيضًا إلى كلا mint البذرة في محفظتك — فتح مركز عندما يكون السعر داخل النطاق المختار يتطلب السيولة على كلا الجانبين.
الخطوة 1 — config.ts
احفظ باسم config.ts. هذا له نفس شكل src/config.ts.template في مستودع العرض التوضيحي — disableFeatureCheck مجبر على true (موصى به لأي تكامل غير تافه حتى لا يحظر SDK استدعاء كشف الميزات عند بدء التشغيل):
الخطوة 2 — createPool.ts
احفظ بجانب config.ts. المصدر: src/clmm/createPool.ts.
الخطوة 3 — createPosition.ts
المصدر: src/clmm/createPosition.ts.
الخطوة 4 — utils.ts
المصدر: src/clmm/utils.ts.
شغّله
ما الذي حدث للتو
المعاملة 1 —raydium.clmm.createPool هيّأت:
- حالة المجموعة في PDA الكنسي لـ
(mint1, mint2, ammConfig)، token_0_vaultوtoken_1_vault(مرتبة حسب ترتيب بايت mint)،- حلقة المخزن المؤقت
observation، - خريطة مصفوفة القرادة المضمنة،
sqrt_price_x64 الأولية من initialPrice الخاص بك.
المعاملة 2 — raydium.clmm.openPositionFromBase فتحت مركزًا مركزًا:
- ضربت NFT موضع لمحفظتك (NFT هو الموضع؛ نقله ينقل الموضع)،
- خصصت مصفوفات القرادة في الحدود الدنيا والعليا (إيجار لمرة واحدة إذا كان أول موضع في تلك النطاقات؛ لا تُغلق مصفوفات القرادة أبدًا بواسطة البرنامج، لذلك لا تدفع المواضع اللاحقة في نفس المصفوفات إيجارًا إضافيًا)،
- أودعت
inputAmountمنmint1ومقدار الزوج المطابق منmint2(محسوب بواسطةPoolUtils.getLiquidityAmountOutFromAmountIn)، - أرصدت الموضع بسيولة متناسبة مع عرض النطاق.
[0.000001, 100000]) هو فعليًا النطاق الكامل؛ ضيّقه لتركيز الرسوم بالقرب من السعر الفوري الحالي.
اختيار طبقة الرسم
clmmConfigs[0] هي طبقة الرسم الأقل. تُنشر المجموعة الكاملة في GET https://api-v3.raydium.io/main/clmm-config:
| الفهرس | tradeFeeRate | فسح القرادة | الاستخدام عندما |
|---|---|---|---|
| 0 | 100 (1bp) | 1 | مستقر / مستقر، خسارة عدم الدوام منخفضة جدًا متوقعة |
| 1 | 500 (5bp) | 10 | الأصول المترابطة بشدة (مثل staked سائل مقابل الأساس) |
| 2 | 2_500 (25bp) | 60 | زوج رمز قياسي، blue-chip + مستقر |
| 3 | 10_000 (1.00%) | 120 | زوج متقلب أو رقيق حيث يكون خطر IL مرتفعًا |
user-flows/choosing-a-pool-type للحصول على مصفوفة قرار كاملة.
الأخطاء الشائعة
Pool already exists for this config— مجموعة CLMM موجودة بالفعل لهذا الثلاثي(mint1, mint2, ammConfig). ابحث عن معرف المجموعة الموجود وتخطَّ الخطوة 2.Insufficient funds for amount B— محفظتك تحتوي على المقدار المطلوب منmintAلكن لا تحتوي علىmintBالمطابقة. فتح مركز عندما يكون السعر داخل النطاق يتطلب السيولة على كلا الجانبين.Tick out of range—lowerPriceأوupperPriceالخاص بك يقع خارج نطاق السعر الممثل. استخدم نطاقًا أكثر معقولية بالنسبة للسعر الحالي.- سعر قديم — قد تكون الاقتباس من API قديمة من 5 إلى 60 ثانية. إذا فشلت
executePositionعلى الانزلاق، فقم بإلغاء التعليق عن كتلةgetRpcClmmPoolInfoفيcreatePosition.tsلإعادة جلب السعر المباشر الحي بحلول الوقت المناسب قبل التوقيع.
تحفظات
- NFT الموضع هو مقبضك الوحيد. فقدان NFT أو نقله، فقدان الوصول إلى الموضع. تعامل معه مثل المفتاح.
- المواضع خارج النطاق لا تحقق أي رسوم. إذا تحرك السعر خارج
[lowerPrice, upperPrice]، يكون موضعك متوقفًا بالكامل في أحد الأصول ولا يحقق شيئًا حتى تعيد التوازن. - إيجار مصفوفة القرادة ذو اتجاه واحد. أول موضع يلمس مصفوفة قرادة لم تهيأ أبدًا يدفع إيجارها؛ البرنامج لا يعرض مسارًا لإغلاق مصفوفات القرادة، لذلك هذا الإيجار دائم. المواضع اللاحقة في نفس المصفوفة مجانية.
التالي
products/clmm/overview— ميكانيكا CLMM الكاملة.products/clmm/ticks-and-positions— الرياضيات خلف القرادات.algorithms/impermanent-loss— قياس تضخيم IL CLMM.user-flows/create-clmm-pool— نفس التدفق عبر واجهة Raydium.

