الانتقال إلى المحتوى الرئيسي

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
يشترك Stable AMM في معظم سطح التعليمات مع AMM v4. التعليمات الفريدة هي InitModelData و UpdateModelData، التي تملأ وتحدّث جدول البحث. جميع العمليات الأخرى (المبادلة والإيداع والسحب والتشغيل) تتبع نفس نمط AMM v4.

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

التعليمةالفئةالملاحظات
Initializeدورة حياةإنشاء مجموعة سيولة (يتطلب حساب model-data مُخصّص مسبقًا).
PreInitializeدورة حياةأداة مساعدة قديمة لتخصيص مسبق.
InitModelDataإعداد النموذجإنشاء وتهيئة جدول البحث.
UpdateModelDataإعداد النموذجملء ما يصل إلى 5 عناصر جدول لكل استدعاء.
Depositالسيولةإضافة سيولة، تلقي LP.
Withdrawالسيولةحرق LP، تلقي الجانبين.
SwapBaseInالمبادلةمبادلة بمدخل دقيق.
SwapBaseOutالمبادلةمبادلة بمخرج دقيق.
MonitorStepتشغيلتسوية OpenBook، تحديث الأوامر.
SetParamsإدارةتغيير معاملات المجموعة.
WithdrawPnlإدارةجمع رسوم البروتوكول المتراكمة.
WithdrawSrmقديمجمع حسومات SRM (قديم).
SimulateInfoتشخيصيأداة مساعدة للاقتباس بقراءة فقط.

Initialize

تمهيد مجموعة Stable AMM جديدة مرتبطة بسوق OpenBook موجود وحساب ModelDataInfo تم إنشاؤه مسبقًا. الوسيطات
nonce: u8
open_time: u64
الحسابات (قابل للكتابة W، موقّع S)
#الاسمWSملاحظات
1token_programSPL Token.
2system_program
3rent
4ammWحساب AmmInfo للمجموعة.
5amm_authorityPDA على مستوى البرنامج.
6amm_open_ordersWOpenBook OpenOrders.
7lp_mintWmint رمز LP القابل للاستبدال.
8coin_mint
9pc_mint
10pool_coin_token_accountWقبو العملات الرقمية للمجموعة.
11pool_pc_token_accountWقبو pc للمجموعة.
12amm_target_ordersWشبكة أوامر OpenBook.
13model_data_accountحساب جدول البحث.
14serum_programبرنامج OpenBook.
15serum_marketسوق OpenBook.
16user_dest_lp_tokenWATA رمز LP للمُنشئ (يتلقى LP الأولي).
17user_walletWSالمُنشئ؛ يدفع الإيجار، يمول الإيداع الأولي.
(اختياري)srm_tokenWحساب رمز SRM لخصومات الرسوم (قديم).
شروط سابقة
  • يجب أن يكون model_data_account مُنشأً ومهيأً بواسطة InitModelData السابق.
  • يجب أن يكون lp_mint فارغًا (توريد صفري).
  • يجب أن توجد الأقبية وأن تكون مملوكة بواسطة amm_authority.
شروط لاحقة
  • يتم تهيئة AmmInfo بجميع المراجع.
  • يتم تصفير TargetOrders وجاهزيتها لأول MonitorStep.
  • يتم سك رموز LP الأولية وإرسالها إلى user_dest_lp_token.
  • لم يتم نشر أوامر OpenBook بعد؛ أول MonitorStep سينشرها.

InitModelData

إنشاء وتهيئة حساب ModelDataInfo. يجب استدعاؤها مرة واحدة قبل Initialize. الوسيطات
multiplier: u64       // عامل القياس (مثلاً، 10^6)
الحسابات (قابل للكتابة W، موقّع S)
#الاسمWSملاحظات
1model_data_accountWحساب الجدول بـ 50 ألف عنصر.
2amm_adminSمسؤول المجموعة (يجب أن يوقّع لإثبات السلطة).
شروط سابقة
  • يجب أن يكون model_data_account كبيرًا بدرجة كافية (~1.2 ميجابايت لـ 50 ألف × 24 بايت).
  • يجب أن يكون model_data_account مملوكًا بواسطة برنامج Stable.
شروط لاحقة
  • status = Initialized.
  • تم تعيين multiplier.
  • valid_data_count = 0 (لا توجد عناصر معبأة حتى الآن؛ استدعِ UpdateModelData لإضافتها).
  • مصفوفة elements مُصفّرة.

UpdateModelData

ملء ما يصل إلى 5 عناصر جدول في استدعاء واحد. يجب استدعاؤها بعد InitModelData لكن قبل بدء المبادلات باستخدام الجدول. الوسيطات
array_data: [UpdateModelData; 5]

pub struct UpdateModelData {
  pub index: u64,
  pub data: DataElement,
}
الحسابات (قابل للكتابة W، موقّع S)
#الاسمWSملاحظات
1amm_adminSالموقّع (يجب أن يكون مسؤول المجموعة).
2model_data_accountWحساب الجدول.
شروط سابقة
  • يجب أن يطابق amm_admin AmmInfo.amm_admin.
  • يجب أن يكون كل فهرس في array_data صحيحًا (ضمن 50،000).
  • يجب أن تكون الإدخالات مرتبة (لم يتم التحقق من صحتها على السلسلة لسرعة أكبر): x تصاعدي، y تنازلي، السعر تصاعدي.
شروط لاحقة
  • تتم كتابة العناصر إلى model_data_account.elements[index] لكل إدخال.
  • يتم تحديث valid_data_count إلى أقصى فهرس مكتوب + 1.
ملاحظة حوكمة: لا يوجد فرض على السلسلة لترتيب الفرز أو اتساق الأسعار. يمكن لمسؤول خبيث أو غير منتبه أن يفسد الجدول ويسبب اقتباسات غير صحيحة. عمليًا، يتحكم Raydium multisig بهذا العنوان.

Deposit

إضافة السيولة، تلقي رموز LP. الوسيطات
max_coin_amount: u64
max_pc_amount: u64
base_side: u64          // 0 = base على العملة، 1 = base على pc
الحسابات — مثل AMM v4، ~13 حساب. يجب أن تتضمن model_data_account بقراءة فقط. الرياضيات — pro-rata قياسي باستخدام جدول البحث لحساب النسبة. يحسب SDK زوج عملة/pc للمبلغ المطلوب من LP ويتحقق من الحدود القصوى.

Withdraw

حرق LP، تلقي الجانبين pro-rata. الوسيطات
amount: u64            // رموز LP المراد حرقها
الحسابات — مثل AMM v4، مع model_data_account بقراءة فقط. شروط سابقة
  • يحتوي user_lp_token_account على الأقل amount.
شروط لاحقة
  • يتم حرق amount رموز LP.
  • يتلقى المستخدم مبالغ العملة وpc وفقًا لـ pro-rata الحالية، المُعدلة للرسوم المتراكمة.

SwapBaseIn

مبادلة بمدخل دقيق باستخدام جدول البحث للتسعير. الوسيطات
amount_in: u64
minimum_amount_out: u64
الحسابات (~17 إجمالي)
#الاسمWSملاحظات
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5amm_target_ordersW
6pool_coin_token_accountW
7pool_pc_token_accountW
8model_data_accountجدول بحث بقراءة فقط.
9serum_program
10serum_marketW
11serum_bidsW
12serum_asksW
13serum_event_queueW
14serum_coin_vaultW
15serum_pc_vaultW
16serum_vault_signer
17user_source_tokenWحساب رمز الإدخال للمستخدم.
18user_dest_tokenWحساب رمز المخرجات للمستخدم.
19user_ownerSالمستخدم (موقّع المعاملة).
شروط سابقة
  • amm.status يسمح بالمبادلة.
  • يحتوي user_source_token على ≥ amount_in.
شروط لاحقة
  • يفقد المستخدم amount_in، يكتسب amount_out ≥ minimum_amount_out.
  • رسوم المجموعة تزيد عدادات need_take_pnl_*.
  • قد تتم تسوية أوامر OpenBook إذا تمت ملؤها.
الرياضيات — استيفاء جدول البحث كما هو موضح في products/stable/math.

SwapBaseOut

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

MonitorStep

تشغيل بدون إذن: تسوية تعبئات OpenBook، تحديث شبكة الأوامر المحدودة. الوسيطات
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
الحسابات (~18 إجمالي) — نفس AMM v4 MonitorStep بالإضافة إلى model_data_account بقراءة فقط. شروط سابقة
  • يجب أن تطابق مراجع حساب OpenBook سوق المجموعة المرتبطة.
شروط لاحقة
  • يتم تسوية تعبئات OpenBook المعلقة في أقبية المجموعة.
  • يتم نشر أوامر محدودة جديدة على OpenBook بناءً على منحنى جدول البحث.
  • يتم تحديث TargetOrders.

SetParams

إدارة فقط. تغيير معاملات المجموعة (الحالة والحالة والرسوم والمالك ومفتاح البيانات النموذجية وما إلى ذلك). الوسيطات
param: u8              // أي معامل لتغييره (الحالة والحالة والرسوم وما إلى ذلك)
value: Option<u64>    // القيمة الجديدة (إذا كان المعامل رقميًا)
new_pubkey: Option<Pubkey>  // العنوان الجديد (إذا كان المعامل مفتاح حساب)
fees: Option<Fees>    // الرسوم الجديدة (إذا كان المعامل Fees)
الحسابات — تختلف حسب المعامل. تتطلب دائمًا amm_admin كموقّع. المعاملات الشائعة:
  • param = 0 (الحالة) — تغيير قناع العملية بت بت.
  • param = 9 (الرسوم) — تغيير رسم التجارة وتقسيم pnl وما إلى ذلك.
  • param = 11 (ModelDataKey) — إعادة ربط جدول البحث (نادر، يتطلب إجراء إداري).

WithdrawPnl

إدارة فقط. جمع رسوم البروتوكول المتراكمة من need_take_pnl_* إلى حسابات PnL المعيّنة. الوسيطات — لا شيء (مدفوع بالحالة). الحسابات (~14 إجمالي)
#الاسمWSملاحظات
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5pool_coin_token_accountW
6pool_pc_token_accountW
7coin_pnl_destWحساب العملة الرقمية للمسؤول (يتلقى الرسم).
8pc_pnl_destWحساب pc للمسؤول (يتلقى الرسم).
9pnl_adminSالموقّع (يجب أن يطابق ملكية المجموعة).
10+حسابات OpenBook (~4)تسوية التعبئات المعلقة أولاً.
شروط سابقة
  • يجب أن يكون pnl_admin مصرحًا به.
شروط لاحقة
  • يتم نقل need_take_pnl_coin و need_take_pnl_pc إلى حسابات المسؤول.
  • يتم تصفير العدادات.

WithdrawSrm

قديم (لا تستخدم على المجموعات الجديدة). يجمع استردادات رموز خصم رسوم SRM من مجموعات حقبة Serum المبكرة. الوسيطات
amount: u64

SimulateInfo

أداة مساعدة للاقتباس بقراءة فقط للعملاء و SDK. الوسيطات
param: u8              // PoolInfo و SwapBaseInInfo و SwapBaseOutInfo و RunCrankInfo
swap_base_in_value: Option<SwapInstructionBaseIn>
swap_base_out_value: Option<SwapInstructionBaseOut>
الاستخدام — تستدعى عبر simulateTransaction للحصول على اقتباس دون تنفيذ مبادلة.

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

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