Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
Stable AMM هو برنامج مستقل بمعرّف برنامج خاص به. إنه ليس وضعًا من أوضاع برنامج AMM v4، وليس يتم التداول به “عبر” AMM v4 — بل يتم نشره وترقيته واستدعاؤه بشكل منفصل. يشبه AMM v4 فقط في اتفاقيات الرسوم وتخطيط الحسابات.
ترقية 2026-06-22 — حذف كود OpenBook (السوق) الميت. توقف Stable AMM عن نشر الأوامر إلى OpenBook منذ وقت طويل؛ مسار صنع السوق في دفتر الطلبات كان خاملاً لسنوات. تحذف هذه الترقية الحسابات والكود المتبقية المتعلقة بالسوق — إنها لا تغير سلوك التداول المباشر.نتيجتان للمدمجين:
  1. تخطيطات حسابات أصغر. SwapBaseIn / SwapBaseOut (18 → 9Deposit (14 → 12)، و Withdraw (21/22 → 12) تحذف حسابات Serum/السوق الميتة. التخطيطات القديمة لا تزال تُحلل للتوافقية العكسية. WithdrawPnl (16 → 10) هو تغيير كسر صعب بدون مسار توافقية (مسؤول فقط).
  2. معظم التعليمات محذوفة. فقط SwapBaseIn و SwapBaseOut و Deposit و Withdraw و WithdrawPnl تبقى قابلة للاستدعاء. لا يمكن استدعاء جميع التعليمات الأخرى.
سجل التغييرات: reference/changelog.

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

قابلة للاستدعاء

محذوفة (لا يمكن استدعاؤها)

تم حذفها في ترقية 2026-06-22 ولا يمكن استدعاؤها بعد الآن. انظر التعليمات المحذوفة.

Deposit

إضافة السيولة، استقبال رموز LP. الحجج
الحسابات — التخطيط الجديد، 12 حساب (قابل للكتابة W، موقّع S) التوافقية: تم حذف amm_open_orders (القديم #3) و serum_market (القديم #9). عند تمرير 14 حساب، يتم تحليل التعليمة بالتخطيط القديم بـ 14 حساب؛ يتم تجاهل حسابات Serum. الرياضيات — نسبة قياسية باستخدام جدول البحث لحساب النسبة. يحسب SDK زوج عملة/pc للمبلغ المطلوب من LP ويتحقق من الحدود القصوى.

Withdraw

حرق LP، استقبال الطرفين بنسبة. الحجج
الحسابات — التخطيط الجديد، 12 حساب (قابل للكتابة W، موقّع S) التوافقية: تم حذف تسعة حسابات Serum (amm_open_orders، serum_program، serum_market، serum_coin_vault، serum_pc_vault، serum_vault_signer، serum_event_q، serum_bids، serum_asks). التخطيطات القديمة بـ 21 أو 22 حساب لا تزال مقبولة. لاحظ، مع ذلك، أن منطق رسوم الإحالة لحساب referrer_pc_wallet الاختياري الـ 22 تم حذفه — يمكن تمريره لكن لا يعود له تأثير. الشروط المسبقة
  • user_source_lp يحتفظ بـ amount على الأقل.
الشروط اللاحقة
  • يتم حرق amount رموز LP.
  • يستقبل المستخدم مبالغ عملة و pc وفقًا للنسبة الحالية، معدلة للرسوم المتراكمة.

SwapBaseIn

مبادلة بمدخل دقيق باستخدام جدول البحث للتسعير. الحجج
الحسابات — التخطيط الجديد، 9 حسابات (قابل للكتابة W، موقّع S) التوافقية: تم حذف تسعة حسابات OpenBook (amm_open_orders، serum_program، serum_market، serum_bids، serum_asks، serum_event_queue، serum_coin_vault، serum_pc_vault، serum_vault_signer). إذا كان عدد الحسابات المُمررة ليس 9، يتم تحليل التعليمة بالتخطيط القديم بـ 18 حساب؛ يجب أن تحتل حسابات Serum مواضعها، لكن محتوياتها لا تُتحقق أو تُستخدم بعد الآن. الشروط المسبقة
  • amm.status يسمح بالمبادلة.
  • user_source_token يحتفظ بـ ≥ amount_in.
الشروط اللاحقة
  • يفقد المستخدم amount_in، يكسب amount_out ≥ minimum_amount_out.
  • رسوم المجموعة تزيد عدادات need_take_pnl_*.
الرياضيات — استيفاء جدول البحث كما هو موضح في products/stable/math.

SwapBaseOut

مبادلة بمخرج دقيق (معكوس SwapBaseIn). نفس التخطيط بـ 9 حسابات، اتجاه رياضيات مختلف. الحجج

WithdrawPnl

مسؤول فقط. مسح رسوم البروتوكول المتراكمة من need_take_pnl_* إلى حسابات PnL المعينة.
تغيير كسر صعب — بدون مسار توافقية. هذه التعليمة لا تملك تحليلاً للتخطيط القديم. إرسال التخطيط القديم يفشل مع أخطاء التحقق مثل InvalidTokenCoin بسبب عدم محاذاة الحسابات (القديم #3 كان open_orders). أدوات المسؤول التي تستدعي WithdrawPnl يجب تحديثها إلى التخطيط الجديد بـ 10 حسابات.
الحجج — لا توجد (مدفوعة بالحالة). الحسابات — التخطيط الجديد، 10 حسابات ثابتة، مسؤول فقط (قابل للكتابة W، موقّع S) تغيير المنطق: عندما تكون الأموال المتاحة للمجموعة غير كافية لسحب PnL المتراكم، المجموعة لا تُوضع في CancelAllOrdersState / Disabled؛ التعليمة تُرجع TakePnlError مباشرة. تم حذف referrer_pc_wallet الاختياري أيضًا. الشروط المسبقة
  • amm_admin يجب أن يكون مصرحًا.
الشروط اللاحقة
  • يتم نقل need_take_pnl_coin و need_take_pnl_pc إلى حسابات المسؤول.
  • يتم تصفير العدادات.

التعليمات المحذوفة

تم حذف التعليمات التالية في ترقية 2026-06-22 و لا يمكن استدعاؤها بعد الآن. يتم توثيقها هنا فقط حتى يتمكن المدمجون من التعرف عليها في المعاملات والـ SDK التاريخية.
  • Initialize — كانت تُقلع مجموعة Stable AMM جديدة سابقًا. محذوفة.
  • PreInitialize — مساعد تخصيص مسبق قديم. محذوفة.
  • InitModelData — كانت تُنشئ وتُهيّئ جدول البحث ModelDataInfo سابقًا. محذوفة.
  • UpdateModelData — كانت تملأ ما يصل إلى 5 عناصر جدول بحث لكل استدعاء سابقًا. محذوفة.
  • MonitorStep — كرنك OpenBook الذي سوّى الملء وأعاد نشر شبكة الأوامر. كانت خاملة بالفعل لفترة طويلة بعد توقف المجموعة عن النشر إلى OpenBook؛ الآن محذوفة.
  • SetParams — تغييرات معاملات المسؤول (الحالة، الرسوم، المالك، مفتاح بيانات النموذج، إلخ). محذوفة.
  • WithdrawSrm — مسح استرجاع خصم رسوم SRM من مجموعات حقبة Serum المبكرة. محذوفة.
  • SimulateInfo — مساعد اقتباس للقراءة فقط. محذوفة؛ استخدم مساعدات منحنى Stable خارج السلسلة في SDK للاقتباس (انظر عروض الكود).

الخطوات التالية

المصادر:
  • raydium-stable/program/src/instruction.rs (enum و pack/unpack)
  • raydium-stable/program/src/processor.rs (منطق التنفيذ)