الانتقال إلى المحتوى الرئيسي
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
ما يفعله هذا الكود. ينشئ مجموعة 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
  • أرصدت الموضع بسيولة متناسبة مع عرض النطاق.
كلما ضاق النطاق، زادت الكفاءة الرأسمالية لكل دولار من TVL — وزادت خسارة عدم الدوام عندما ينجرف السعر خارج النطاق. النطاق المستخدم أعلاه ([0.000001, 100000]) هو فعليًا النطاق الكامل؛ ضيّقه لتركيز الرسوم بالقرب من السعر الفوري الحالي.

اختيار طبقة الرسم

clmmConfigs[0] هي طبقة الرسم الأقل. تُنشر المجموعة الكاملة في GET https://api-v3.raydium.io/main/clmm-config: انظر 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 rangelowerPrice أو upperPrice الخاص بك يقع خارج نطاق السعر الممثل. استخدم نطاقًا أكثر معقولية بالنسبة للسعر الحالي.
  • سعر قديم — قد تكون الاقتباس من API قديمة من 5 إلى 60 ثانية. إذا فشلت executePosition على الانزلاق، فقم بإلغاء التعليق عن كتلة getRpcClmmPoolInfo في createPosition.ts لإعادة جلب السعر المباشر الحي بحلول الوقت المناسب قبل التوقيع.

تحفظات

  • NFT الموضع هو مقبضك الوحيد. فقدان NFT أو نقله، فقدان الوصول إلى الموضع. تعامل معه مثل المفتاح.
  • المواضع خارج النطاق لا تحقق أي رسوم. إذا تحرك السعر خارج [lowerPrice, upperPrice]، يكون موضعك متوقفًا بالكامل في أحد الأصول ولا يحقق شيئًا حتى تعيد التوازن.
  • إيجار مصفوفة القرادة ذو اتجاه واحد. أول موضع يلمس مصفوفة قرادة لم تهيأ أبدًا يدفع إيجارها؛ البرنامج لا يعرض مسارًا لإغلاق مصفوفات القرادة، لذلك هذا الإيجار دائم. المواضع اللاحقة في نفس المصفوفة مجانية.

التالي

المصادر: