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 تم إنشاؤه مسبقًا.
الوسيطات
الحسابات (قابل للكتابة W، موقّع S)
| # | الاسم | W | S | ملاحظات |
|---|
| 1 | token_program | | | SPL Token. |
| 2 | system_program | | | |
| 3 | rent | | | |
| 4 | amm | W | | حساب AmmInfo للمجموعة. |
| 5 | amm_authority | | | PDA على مستوى البرنامج. |
| 6 | amm_open_orders | W | | OpenBook OpenOrders. |
| 7 | lp_mint | W | | mint رمز LP القابل للاستبدال. |
| 8 | coin_mint | | | |
| 9 | pc_mint | | | |
| 10 | pool_coin_token_account | W | | قبو العملات الرقمية للمجموعة. |
| 11 | pool_pc_token_account | W | | قبو pc للمجموعة. |
| 12 | amm_target_orders | W | | شبكة أوامر OpenBook. |
| 13 | model_data_account | | | حساب جدول البحث. |
| 14 | serum_program | | | برنامج OpenBook. |
| 15 | serum_market | | | سوق OpenBook. |
| 16 | user_dest_lp_token | W | | ATA رمز LP للمُنشئ (يتلقى LP الأولي). |
| 17 | user_wallet | W | S | المُنشئ؛ يدفع الإيجار، يمول الإيداع الأولي. |
| (اختياري) | srm_token | W | | حساب رمز 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)
| # | الاسم | W | S | ملاحظات |
|---|
| 1 | model_data_account | W | | حساب الجدول بـ 50 ألف عنصر. |
| 2 | amm_admin | | S | مسؤول المجموعة (يجب أن يوقّع لإثبات السلطة). |
شروط سابقة
- يجب أن يكون
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)
| # | الاسم | W | S | ملاحظات |
|---|
| 1 | amm_admin | | S | الموقّع (يجب أن يكون مسؤول المجموعة). |
| 2 | model_data_account | W | | حساب الجدول. |
شروط سابقة
- يجب أن يطابق
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 إجمالي)
| # | الاسم | W | S | ملاحظات |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_open_orders | W | | |
| 5 | amm_target_orders | W | | |
| 6 | pool_coin_token_account | W | | |
| 7 | pool_pc_token_account | W | | |
| 8 | model_data_account | | | جدول بحث بقراءة فقط. |
| 9 | serum_program | | | |
| 10 | serum_market | W | | |
| 11 | serum_bids | W | | |
| 12 | serum_asks | W | | |
| 13 | serum_event_queue | W | | |
| 14 | serum_coin_vault | W | | |
| 15 | serum_pc_vault | W | | |
| 16 | serum_vault_signer | | | |
| 17 | user_source_token | W | | حساب رمز الإدخال للمستخدم. |
| 18 | user_dest_token | W | | حساب رمز المخرجات للمستخدم. |
| 19 | user_owner | | S | المستخدم (موقّع المعاملة). |
شروط سابقة
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 إجمالي)
| # | الاسم | W | S | ملاحظات |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_open_orders | W | | |
| 5 | pool_coin_token_account | W | | |
| 6 | pool_pc_token_account | W | | |
| 7 | coin_pnl_dest | W | | حساب العملة الرقمية للمسؤول (يتلقى الرسم). |
| 8 | pc_pnl_dest | W | | حساب pc للمسؤول (يتلقى الرسم). |
| 9 | pnl_admin | | S | الموقّع (يجب أن يطابق ملكية المجموعة). |
| 10+ | حسابات OpenBook (~4) | | | تسوية التعبئات المعلقة أولاً. |
شروط سابقة
- يجب أن يكون
pnl_admin مصرحًا به.
شروط لاحقة
- يتم نقل
need_take_pnl_coin و need_take_pnl_pc إلى حسابات المسؤول.
- يتم تصفير العدادات.
WithdrawSrm
قديم (لا تستخدم على المجموعات الجديدة). يجمع استردادات رموز خصم رسوم SRM من مجموعات حقبة Serum المبكرة.
الوسيطات
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 (منطق التنفيذ)