Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
دور المجمِّع هو تقديم أفضل سعر ممكن للمستخدم عبر عدة مجموعات، مع إمكانية تقسيم مدخل واحد عبر عدة مسارات مجموعة، وتنفيذه بشكل ذري. توثّق هذه الصفحة الأجزاء الخاصة بـ Raydium من هذه المهمة: الاكتشاف والاقتباس وتجميع المعاملات.

الاكتشاف

جرد المجموعات

تحتاج إلى القائمة الكاملة لمجموعات Raydium النشطة لكل منتج. ثلاث خيارات:
  1. REST API (الأبسط): GET https://api-v3.raydium.io/pools/info/list?poolType=all&pageSize=1000&page=1 يعيد المجموعات على دفعات من 1000. قم بالتصفح حتى تحصل عليها جميعاً. احفظ في الذاكرة المؤقتة لمدة 1–5 دقائق.
  2. المسح على السلسلة: getProgramAccounts على معرّفات برامج CPMM و CLMM و AMM v4، مُصفّاة حسب مميز حساب الحالة. ينتج عنه ~كل مجموعة نشطة مع ~10 ثوانٍ من وقت RPC. مفيد عندما تكون الواجهة البرمجية معطلة أو محدودة بمعدل.
  3. هجين: استخدم الواجهة البرمجية كمصدر أساسي؛ قم بتشغيل مسح يومي على السلسلة كفحص معقولية. يلتزم الفريق بالحفاظ على شمولية الواجهة البرمجية، لكن المجموعات المُنشأة من خلال CPI المباشر (بدون واجهة أمامية) قد تتأخر أحياناً.

بحث زوج Mint

لزوج (mintA, mintB) محدد، استخدم GET /pools/info/mint?mint1=...&mint2=...&poolType=all&sort=liquidity. يعيد كل مجموعة بأي مستوى رسوم ونوع منتج. يصل إلى ~10 نتائج لكل زوج شائع على العملات المتداولة بكثرة؛ رتّب حسب TVL وخذ أفضل عدة نتائج للتوجيه.

الاقتباس

تختلف رياضيات الاقتباس حسب المنتج. استخدم دوال الرياضيات النقية في SDK حتى لا تعيد التنفيذ:
المنتجات الثلاثة لا تشترك في توقيع واحد. computeAmountOut موجود فقط على raydium.liquidity (AMM v4) وكـ PoolUtils.computeAmountOut(Format) لـ CLMM؛ المكافئ في CPMM يُسمى computeSwapAmount ويأخذ معاملات مختلفة. اكتب الثلاث استدعاءات بشكل صريح بدلاً من المعاملة الحدية على المنتج.
لمقارنة المجمِّع استخدم amountOut (قبل الانزلاق) من كل واحد.

حداثة الذاكرة المؤقتة

حالة المجموعة تصبح قديمة بسرعة. أهداف الحداثة الموصى بها: بالنسبة لمجمِّع يأخذ اقتباسات بكمون تفاعلي، اشترك في تحديثات حساب WebSocket (accountSubscribe) على كل حالة مجموعة ذات صلة. هذا يقلب النموذج من الاستطلاع إلى الدفع.

تعديلات Token-2022

إذا كان أي mint في المسار يحتوي على رسم نقل Token-2022، يجب أن تعدّل رياضيات الاقتباس المدخلات والمخرجات حسب algorithms/token-2022-transfer-fees. يتعامل SDK مع هذا إذا كان poolInfo.mintA.extensions.transferFeeConfig مملوءاً. تأكد بالنظر إلى حقل .extensions قبل الثقة بالاقتباس.

التوجيه

مسارات المجموعة الواحدة

معظم المسارات هي مجموعة واحدة. اختر المجموعة التي amountOut فيها أعلى. إذا كانت عدة قريبة، فكّ التعادل حسب مستوى الرسوم (الأقل أفضل)، ثم حسب TVL (الأكثر أأمن).

التوجيه المقسّم

للصفقات الكبيرة حيث تحتوي مجموعة واحدة على >5% تأثير السعر، قسّم عبر المجموعات. خوارزمية جشعة بسيطة:
هذا ينتج متجه توجيه [(pool_A, 0.6), (pool_B, 0.3), (pool_C, 0.1)] يقلل التأثير الكلي. حل تحسين محدب مناسب (مثل معادلة الأسعار الهامشية عبر المجموعات) يقع ضمن ~1% من النتيجة الجشعة في الممارسة.

مسارات متعددة القفزات

USDC → RAY → SOL عبر مجموعتين منفصلتين شائع عندما لا تعطي أي مجموعة USDC-SOL مباشرة اقتباساً جيداً (نادر). طبّق حدود الانزلاق لكل قفزة؛ كل قفزة تفرض minAmountOut خاصة بها. انظر algorithms/slippage-and-price-impact. القفزات المتعددة عبر نفس المجموعة (مثل قفزتي CLMM على SOL-USDC) دائماً ما تكون دون المستوى الأمثل مقابل قفزة واحدة — لا تُنشئ مثل هذه المسارات.

تجميع المعاملات

قفزة واحدة، مجموعة واحدة

لمجموعة واحدة، استدعِ منشئ المبادلة الخاص بنوع تلك المجموعة — raydium.liquidity.swap أو raydium.cpmm.swap أو raydium.clmm.swap. raydium.tradeV2.swap هو منفّذ مسار متعدد القفزات ويأخذ شكلاً مختلفاً تماماً ({ swapInfo, swapPoolKeys, routeProgram, ownerInfo, txVersion }); لا يوجد raydium.trade.

التقسيم والقفزات المتعددة

اجمع ATAs + التعليمات يدويّاً. النمط:
الكل داخل معاملة واحدة للذرية. لتقسيم 3 مجموعات على V0 مع جداول البحث بالعنوان، يناسب عادة ~1100 بايت. لـ 4+ مجموعات، حد حجم المعاملة يفرض إما معاملات متعددة أو توحيد في mint مركزي.

الذرية

يجب على المجمِّعات ضمان الذرية: إما أن ينزل المسار الكامل أو لا ينزل أي منه. تعليمات مبادلة Raydium تعود عند ExceededSlippage، لذا مسار متعدد المجموعات حيث تفشل قفزة واحدة يسبب عودة المعاملة بأكملها. مجاني. الاستثناء الوحيد: إذا كان مسارك يمر عبر Raydium + DEX تابع لجهة خارجية، تأكد من أن DEX أيضاً لديه نموذج عودة عند الانزلاق. بعض البرامج تتجاهل حدود الانزلاق (نادر).

المزالق

1. الاقتباسات القديمة

بين رؤية المستخدم “ستتلقى 125.43 RAY” وهبوط المعاملة، يمكن أن تتحول الاحتياطيات. أعد جلب حالة المجموعة مباشرة قبل الإرسال؛ أعد الاقتباس؛ إذا كان الاقتباس الجديد أسوأ بـ >1%، توقف وأعد التأكيد مع المستخدم.

2. قوائم حظر المجموعات

بعض مجموعات Raydium هي رموز احتيالية برسوم نقل مضبوطة على 99% أو مع امتدادات غير قابلة للنقل. تُعلّم الواجهة البرمجية هذه (انظر حقل tags)؛ تخطّ أي مجموعة موسومة بـ scam أو honeypot. تشغيل فحوصات السلامة الخاصة بك على رأس علامات Raydium حكيم.

3. متطلب حالة الملاحظة على CLMM

CLMM SwapV2 يأخذ حساب observation_state. يملأه SDK لك؛ التعليمات المبنية يدويّاً غالباً ما تنسى، مما يسبب عودة البرنامج مع AccountNotFound. ضمّنه دائماً.

4. جداول البحث بالعنوان

تحتفظ Raydium بجداول بحث عامة لحساباتها الأكثر استخداماً (العملات الرئيسية، معرّفات البرامج، AmmConfigs). يجب على المجمِّعات استهلاك هذه — توفر ~100 بايت لكل معاملة وتمكّن المسارات الأكبر من الملاءمة في V0. سحب عناوين LUT:

5. التعامل مع الازدحام

خلال نوافذ الحجم العالي، يمكن للمعاملات أن تجلس في mempool لعدة كتل. إعادة محاولة عدوانية عند انتهاء TX (وليس عند العودة — العودات حتمية) موصى بها. خيار sendAndConfirm في SDK يفعل إعادة محاولات أساسية؛ المجمِّعات الإنتاجية تطبّق منطقها الخاص (حزم Jito، بث متعدد RPC) على الأعلى.

قائمة التحقق

قبل الانطلاق، تحقق من:
  • اكتشاف المجموعات يغطي CPMM + CLMM + AMM v4 بشكل شامل.
  • الاقتباسات تطابق اقتباس واجهة Raydium الخاصة ضمن 1 نقطة أساس على عدة صفقات اختبار.
  • التوجيه المقسّم يبدأ للصفقات >5% تأثير على أي مجموعة واحدة.
  • رسوم الأولوية مُحجّمة مقابل رسوم برنامج المجموعة الأخيرة (انظر integration-guides/priority-fee-tuning).
  • رسوم نقل Token-2022 محسوبة وموضحة للمستخدم.
  • المعاملات تعود بنظافة عند تجاوز الانزلاق.
  • منطق إعادة المحاولة يميّز انتهاء tx (أعد المحاولة) من العودة (لا تعد المحاولة).

المؤشرات

المصادر: