الانتقال إلى المحتوى الرئيسي
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
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.

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

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

التعليمةالفئةملاحظات
Depositالسيولةإضافة السيولة، استقبال LP. تخطيط جديد بـ 12 حساب؛ التخطيط القديم بـ 14 حساب لا يزال متوافقًا.
Withdrawالسيولةحرق LP، استقبال الطرفين. تخطيط جديد بـ 12 حساب؛ التخطيط القديم بـ 21/22 حساب لا يزال متوافقًا.
SwapBaseInمبادلةمبادلة بمدخل دقيق. تخطيط جديد بـ 9 حسابات؛ التخطيط القديم بـ 18 حساب لا يزال متوافقًا.
SwapBaseOutمبادلةمبادلة بمخرج دقيق. تخطيط جديد بـ 9 حسابات؛ التخطيط القديم بـ 18 حساب لا يزال متوافقًا.
WithdrawPnlمسؤولمسح رسوم البروتوكول المتراكمة. تخطيط جديد بـ 10 حسابات (كسر صعب — بدون توافقية التخطيط القديم).

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

تم حذفها في ترقية 2026-06-22 ولا يمكن استدعاؤها بعد الآن. انظر التعليمات المحذوفة.
التعليمةالفئة السابقةالغرض السابق
Initializeدورة الحياةإنشاء مجموعة.
PreInitializeدورة الحياةمساعد تخصيص مسبق قديم.
InitModelDataإعداد النموذجإنشاء وتهيئة جدول البحث.
UpdateModelDataإعداد النموذجملء ما يصل إلى 5 عناصر جدول لكل استدعاء.
MonitorStepكرنكتسوية ملء OpenBook، إعادة نشر الأوامر.
SetParamsمسؤولتغيير معاملات المجموعة.
WithdrawSrmقديممسح استرجاع خصم رسوم SRM.
SimulateInfoتشخيصيمساعد اقتباس للقراءة فقط.

Deposit

إضافة السيولة، استقبال رموز LP. الحجج
max_coin_amount: u64
max_pc_amount: u64
base_side: u64          // 0 = base on coin, 1 = base on pc
الحسابات — التخطيط الجديد، 12 حساب (قابل للكتابة W، موقّع S)
#الاسمWSملاحظات
0token_programSPL Token.
1ammWAmmInfo المجموعة.
2amm_authorityPDA على مستوى البرنامج.
3amm_target_ordersW
4amm_lp_mintWعملة LP.
5amm_coin_vaultWخزينة عملة المجموعة.
6amm_pc_vaultWخزينة pc المجموعة.
7model_data_accountجدول بحث للقراءة فقط.
8user_source_coinWمدخل عملة المستخدم.
9user_source_pcWمدخل pc المستخدم.
10user_dest_lpWATA LP المستخدم.
11user_source_ownerSموقّع المعاملة.
التوافقية: تم حذف amm_open_orders (القديم #3) و serum_market (القديم #9). عند تمرير 14 حساب، يتم تحليل التعليمة بالتخطيط القديم بـ 14 حساب؛ يتم تجاهل حسابات Serum. الرياضيات — نسبة قياسية باستخدام جدول البحث لحساب النسبة. يحسب SDK زوج عملة/pc للمبلغ المطلوب من LP ويتحقق من الحدود القصوى.

Withdraw

حرق LP، استقبال الطرفين بنسبة. الحجج
amount: u64            // رموز LP للحرق
الحسابات — التخطيط الجديد، 12 حساب (قابل للكتابة W، موقّع S)
#الاسمWSملاحظات
0token_programSPL Token.
1ammWAmmInfo المجموعة.
2amm_authorityPDA على مستوى البرنامج.
3amm_target_ordersW
4amm_lp_mintWعملة LP.
5amm_coin_vaultWخزينة عملة المجموعة.
6amm_pc_vaultWخزينة pc المجموعة.
7model_data_accountجدول بحث للقراءة فقط.
8user_source_lpWمصدر LP المستخدم.
9user_dest_coinWمخرج عملة المستخدم.
10user_dest_pcWمخرج pc المستخدم.
11user_lp_ownerSموقّع المعاملة.
التوافقية: تم حذف تسعة حسابات 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

مبادلة بمدخل دقيق باستخدام جدول البحث للتسعير. الحجج
amount_in: u64
minimum_amount_out: u64
الحسابات — التخطيط الجديد، 9 حسابات (قابل للكتابة W، موقّع S)
#الاسمWSملاحظات
0spl_token programSPL Token.
1ammWAmmInfo المجموعة.
2amm_authorityPDA على مستوى البرنامج.
3amm_coin_vaultWخزينة عملة المجموعة.
4amm_pc_vaultWخزينة pc المجموعة.
5model_data_accountجدول بحث للقراءة فقط.
6user_source_tokenWحساب رمز المدخل للمستخدم.
7user_destination_tokenWحساب رمز المخرج للمستخدم.
8user_source_ownerSالمستخدم (موقّع المعاملة).
التوافقية: تم حذف تسعة حسابات 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 حسابات، اتجاه رياضيات مختلف. الحجج
max_amount_in: u64
amount_out: u64

WithdrawPnl

مسؤول فقط. مسح رسوم البروتوكول المتراكمة من need_take_pnl_* إلى حسابات PnL المعينة.
تغيير كسر صعب — بدون مسار توافقية. هذه التعليمة لا تملك تحليلاً للتخطيط القديم. إرسال التخطيط القديم يفشل مع أخطاء التحقق مثل InvalidTokenCoin بسبب عدم محاذاة الحسابات (القديم #3 كان open_orders). أدوات المسؤول التي تستدعي WithdrawPnl يجب تحديثها إلى التخطيط الجديد بـ 10 حسابات.
الحجج — لا توجد (مدفوعة بالحالة). الحسابات — التخطيط الجديد، 10 حسابات ثابتة، مسؤول فقط (قابل للكتابة W، موقّع S)
#الاسمWSملاحظات
0spl_token programSPL Token.
1ammWAmmInfo المجموعة.
2amm_authorityPDA على مستوى البرنامج.
3amm_coin_vaultWخزينة عملة المجموعة.
4amm_pc_vaultWخزينة pc المجموعة.
5amm_target_ordersW
6model_dataجدول البحث.
7user_coinWحساب عملة المسؤول (يستقبل الرسم).
8user_pcWحساب pc المسؤول (يستقبل الرسم).
9amm_adminSمسؤول المجموعة (موقّع).
تغيير المنطق: عندما تكون الأموال المتاحة للمجموعة غير كافية لسحب 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 (منطق التنفيذ)