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

مفهومان متميزان

يتم الخلط بين التأثير السعري والانزلاق بشكل متكرر في واجهات المستخدم، لكنهما يشيران إلى أشياء مختلفة.
  • التأثير السعري هو خاصية حتمية لتبادل ضد حالة محددة من مجموعة السيولة. بمعلومية (Δin, reserves)، يمكن حساب التأثير السعري بالكامل قبل تقديم التبادل.
  • الانزلاق هو الفرق المحقق بين السعر الذي توقعته في وقت الاقتباس والسعر الذي حصلت عليه فعلاً في وقت التنفيذ. إنه دالة للكمون والمعاملات المتزامنة وترتيب إدراج الكتلة — وليس من رياضيات المجموعة.
اقتباس بنسبة 1% ضد مجموعة خاملة بخلاف ذلك له انزلاق بنسبة 0% إذا هبط في الكتلة التالية؛ كانت النسبة 1% هي التأثير السعري. نفس الاقتباس ينخفض بنسبة 0.2% إذا ضرب تبادل آخر المجموعة أولاً — النسبة الإضافية 0.2% هي الانزلاق.

التعريفات الرسمية

التأثير السعري

بالنسبة إلى CPMM: impact ≈ 2 · Δin / reserve_in للتبادلات الصغيرة. بالنسبة إلى CLMM: يعتمد على عدد الـ ticks التي يعبرها التبادل؛ غالباً ما يكون مسطحاً ضمن نطاق الـ tick الحالي، ويقفز عند كل عبور tick.

الانزلاق المحقق

الانزلاق يكون دائماً غير سالب (أو صفر)، بافتراض أن الاقتباس كان صادقاً. القيمة السالبة تعني أنك حصلت على أكثر مما تم الاقتباس — وهذا ممكن إذا تحركت حالة المجموعة لصالحك بين الاقتباس والتنفيذ.

حساب minAmountOut و maxAmountIn

كل تبادل Raydium يأخذ حد حماية من الانزلاق:
  • SwapBaseInput(amount_in, min_amount_out) — إدخال دقيق، حد أدنى للمخرجات.
  • SwapBaseOutput(max_amount_in, amount_out) — إخراج دقيق، حد أقصى للمدخلات.
يحسب SDK هذه لكل منتج — الثلاثة لا تشترك في توقيع واحد:
عبر الثلاثة جميعاً، minAmountOut هو amountOut × (1 − slippage) وهو ما يذهب على السلسلة كحد؛ priceImpact حتمي من حالة المجموعة وحدها؛ fee هو الإجمالي المفروض. تسامح الانزلاق هو مخزن مؤقت حول التأثير السعري، وليس التأثير السعري نفسه. تسامح بنسبة 0.5% يعني “قبول على الأكثر 0.5% أسوأ من اقتباسي” — بغض النظر عما إذا كان التأثير السعري 0.01% (تبادل صغير) أو 2% (تبادل كبير). بالنسبة لتبادل بتأثير سعري 2% وتسامح 0.5%، minAmountOut هو 2.5% أقل من السعر الفوري قبل التبادل — مجموع التأثير والتسامح، بشكل أساسي.

تسامحات الانزلاق الموصى بها

لا يوجد رقم واحد صحيح؛ الحد الصحيح يعتمد على:
  1. استقرار الزوج. يمكن لمجموعات العملات المستقرة-المستقرة أن تستخدم بأمان 0.1%. غالباً ما تحتاج مجموعات الأزواج الطائشة إلى 3–5% فقط للهبوط بشكل موثوق.
  2. حجم التبادل. التبادلات الأكبر لها تأثيرات سعرية أكبر، لذا يجب أن يتسع التسامح معها لتجنب الانعكاس. يستخدم SDK الافتراضي للانزلاق التلقائي حوالي max(0.5%, 2 × price_impact) لهذا السبب.
  3. كمون إدراج الكتلة. المعاملات التي تجلس في mempool لعدة كتل تتعرض لمزيد من التبادلات المتزامنة. تقلل حزم Jito ورسوم الأولوية من هذا.
قواعد عملية (افتراضيات واجهة Raydium):

الاختلافات عبر أنواع AMM

CPMM

التأثير السعري سلس ومستمر (صيغة مغلقة 2 · Δin / reserve_in). يتسع تسامح الانزلاق خطياً مع حجم التبادل.

AMM v4

نفس رياضيات المنحنى مثل CPMM. منذ إزالة OpenBook، “الاحتياطيات الفعلية” هي فقط أرصدة الخزائن الاثنتين:
  • اقتبس من أرصدة الخزائن الخام. لا يوجد مكون على الكتاب لإضافته — Initialize2 يكتب AmmInfo.open_orders = Pubkey::default() على كل مجموعة جديدة، ولا توجد تعليمات تقرأ حساب OpenOrders.
  • اطرح الربح والخسارة المتراكمة للبروتوكول (state_data.need_take_pnl_coin / need_take_pnl_pc) من أرصدة الخزائن للحصول على الاحتياطيات التي يستخدمها الثابت فعلاً.
  • لا يوجد crank للتشغيل المسبق: MonitorStep الآن يرمي استثناء unimplemented! ولا يجب إرساله.

CLMM

التأثير السعري متعدد الأجزاء. ضمن نطاق الـ tick الحالي، التأثير تقريباً خطي في Δin / L. يمكن لعبور حد الـ tick أن يغير L بشكل منفصل، مما يسبب قفزة مفاجئة في السعر الهامشي. التبادل الذي يعبر عدة ticks متفرقة يمكن أن يكون له تأثير أعلى بكثير مما تقترحه قاعدة 2 · Δin / reserve. يكرر اقتباس CLMM الخاص بـ SDK خطوة المبادلة بشكل حتمي لإرجاع amountOut متوقع دقيق، لذا minAmountOut = amountOut · (1 − slippage) صحيح. لكن قيمة priceImpact المرجعة يجب أن تُفسر على أنها “الفارق بين السعر الفوري قبل التبادل والسعر الفوري بعد التبادل”، والذي على CLMM يمكن أن يكون أكبر بكثير من الانزلاق الفعلي للمبادلة لمستخدم يهتم فقط بـ amount_out.

منحنى LaunchLab

مشابه لـ CPMM لكن مع منحنى غير متماثل (تربيعي أو احتياطيات افتراضية). ينمو التأثير بشكل أسرع للمشترين المتأخرين مع انحدار المنحنى نحو التخرج. يجب على واجهات المشترين المسبقين أن تحذر عندما يُتوقع أن يدفع الشراء المنحنى أكثر من ~5% من quote_reserve_target في معاملة واحدة.

اعتبارات MEV

على Solana، يأخذ استخراج MEV ضد المبادلات في الغالب شكل هجمات الساندويتش: يضع بوت معاملة back-run تتداول بعد معاملتك، بالإضافة إلى front-run تتداول قبلها، كلاهما في نفس الـ slot. يتم ملء تبادلك بسعر أسوأ مما كان سيحدث بدون الساندويتش؛ يلتقط back-run الفرق. التخفيفات:
  1. minAmountOut ضيق. حدود الانزلاق العدوانية تسبب انعكاس معاملة الضحية إذا تم عمل ساندويتش ثقيل عليها، مما يحمي الأموال (لكن يهدر الغاز). على Solana هذه ممارسة قياسية — الرفض رخيص.
  2. حزم Jito. الإرسال عبر Jito مع نصيحة مجمعة يستبعد الوسطاء من إعادة ترتيب معاملتك. تهبط الحزم كتكتلات ذرية.
  3. رسوم الأولوية. رسم أولوية عالي يزيد من احتمالية هبوط تبادلك في كتلة القائد الحالي قبل أن يتمكن ساندويتش من الرد. أقل قوة من الحزم، أكثر معيارية.
  4. RPC خاص. الإرسال عبر RPC خاص (أو عبر نقطة نهاية المدقق المباشرة) يقلل النافذة التي يمكن لـ mempool sandwicher فيها ملاحظة معاملتك.
لا يقوم SDK الخاص بـ Raydium بالتجميع؛ عادة ما يقوم المدمجون بطبقة Jito في الأعلى. انظر integration-guides/routing-and-mev للأنماط.

الانزلاق لمسارات متعددة الخطوات

عندما يسير التبادل عبر مجموعات متعددة (مثل USDC → SOL → RAY)، يجب تطبيق تسامح الانزلاق لكل خطوة، وليس فقط من البداية إلى النهاية:
يطبق موجه SDK حدود لكل خطوة تلقائياً عند استدعاء raydium.tradeV2.swap. (الواجهة هي tradeV2 — raydium.trade غير موجود.) بالنسبة للموجهات المخصصة، كرر النمط.

الإبلاغ للمستخدمين

قواعد عملية لواجهة تبادل جيدة:
  • اعرض كلا التأثير السعري المتوقع وتسامح الانزلاق بشكل منفصل.
  • ميز عندما يتجاوز التأثير السعري ~2% — تحذير “تأثير عالي”.
  • ميز عندما يتجاوز التأثير السعري التسامح — المعاملة من المؤكد تقريباً أنها ستنعكس.
  • بالنسبة للأزواج الطائشة، قدم “وضع انزلاق عالي” يرخي الحد ويظهر تحذير أقوى.

مؤشرات

المصادر:
  • تطبيق الانزلاق والتأثير في Raydium SDK v2.
  • Flashbots / Jito على Solana MEV.