هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
اعتبارًا من ترقية البرنامج 2026-07، تم إزالة اعتماد AMM v4 على OpenBook / Serum. تحتفظ تعليمات v1 القديمة
SwapBaseIn / SwapBaseOut و Deposit و Withdraw بتخطيطات حساباتها القديمة للتوافقية العكسية: لا تزال حسابات السوق مقبولة في مواضعها القديمة، لكن لم تعد يتم التحقق منها أو استخدامها (لا يتم إصدار CPI). يجب على التكاملات الجديدة استخدام نقاط الدخول V2 للمبادلة، التي تحذف حسابات السوق بالكامل. تم إزالة عدة تعليمات والآن تعود — انظر إدخال السجل. تستخدم قوائم الحسابات أدناه أسماء الحقول من Raydium SDK؛ قد يستخدم IDL الأساسي بادئات serum_*.تضيف ترقية البرنامج 2026-09 تعليمة إدارية واحدة، WithdrawExcessLamports (الوسم 18)، وتحذف sysvar الإيجار من CreateConfigAccount. كل شيء يستدعيه المتداول أو LP لم يتغير. انظر إدخال السجل 2026-09-09.جرد التعليمات
يكشف SDK عن منشئي التعليمات الموجهة للمستخدم فقط. عادة ما يتم استدعاء تعليمات الصيانة بواسطة حارس Raydium.
تم إزالتها / لم تعد قابلة للاستدعاء (تم حذف منشئي العميل الخاصة بها):
Initialize (الوسم 0، استخدم Initialize2)، MonitorStep (2)، MigrateToOpenBook (5)، WithdrawSrm (8)، PreInitialize (10، استخدم Initialize2)، SimulateInfo (12)، AdminCancelOrders (13).
تفشل المعاملة التي تحمل أحد هذه الوسوم؛ البرنامج لا ينفذ التعليمة أبدًا. تعامل مع جميع السبعة على أنها اختفت بدلاً من أن تكون مسارات خطأ للتعامل معها.
Initialize2
بدء pool AMM v4 جديد مرتبط بسوق OpenBook موجود.
المعاملات
W، موقّع S)
تخطيطان مقبولان. قائمة الـ 19 حسابًا أعلاه هي الموصى بها. من أجل التوافق مع الإصدارات
السابقة يقرأ البرنامج أيضًا تخطيطًا قديمًا من 21 حسابًا، يُدرج
amm_open_orders مُتجاهلًا في
الموضع 7 و market_program مُتجاهلًا في الموضع 16 — وهذا ما لا يزال بانِي تعليمة initialize2
الموجود في المستودع يُصدره. أي طول آخر يُحلَّل موضعيًا مقابل التخطيط القديم وسيفشل.- LP المُصدَر للمُنشئ =
sqrt(init_coin_amount × init_pc_amount) − 10^coin_mint.decimals. تساوي منازل LP العشريةcoin_mint.decimals، لذا فالمقدار المطروح هو رمز LP كامل واحد بالضبط؛ لا يُصدر أبدًا ويبقى خارج التداول بشكل دائم. إذا كانsqrt(...)أقل من ذلك، تُرجع التعليمة الخطأInitLpAmountTooLess. - يخزّن
AmmInfo.lp_amountقيمةsqrt(...)الكاملة، وليس المقدار المُصدَر — لذا فإنlp_mint.supplyأقل بشكل دائم بمقدار رمز LP كامل واحد منamm.lp_amount. كل الحسابات التناسبية تستخدمamm.lp_amount. - لا يتم نشر أوامر OpenBook (تم إزالة شبكة دفتر الطلبات). يسجّل
AmmInfo.marketالحساب المُمرَّر في الخانة 15، لكن يُكتب كل منAmmInfo.open_ordersوAmmInfo.market_programبالقيمةPubkey::default()، ويتم تهيئةcoin_lot_size/pc_lot_size/min_sizeإلى0. في التخطيط القديم المكوّن من 21 حسابًا يُقرأ الحسابان الإضافيانamm_open_ordersوmarket_programثم يُهملان.
InvalidCoinMint (عملة coin و pc متطابقتان)، InvalidConfigAccount (PDA خاطئ لـ amm_config)، InvalidFee (وجهة خاطئة لرسم إنشاء التجمع)، InvalidProgramAddress (amm_authority خاطئ أو nonce خاطئ)، RepeatCreateAmm (يوجد تجمع لهذا السوق بالفعل)، InitLpAmountTooLess، InvalidSupply (أحد مقداري التهيئة 0، أو أن عملة LP لديها عرض بالفعل)، AlreadyInUse.
Deposit
إضافة السيولة.
المعاملات
الرياضيات — نسبة قياسية. باستخدام الاحتياطيات الفعلية للـ pool (الأقبية + المُدرجة)، يحسب SDK زوج coin/pc الذي ينتج عنه مبلغ LP المعطى ويتحقق منه مقابل
max_*. يعود مع ExceededSlippage إذا تجاوز أي جانب الحد الأقصى.
Withdraw
حرق LP، استقبال كلا الجانبين.
المعاملات
لم تبقَ أي خطوة تسوية من OpenBook — تستخدم الحسابات التناسبية أرصدة الخزائن مباشرة.
SwapBaseIn
مبادلة بمدخل دقيق. دائمًا مبادلة مسار AMM (لا تسير عبر مطابقة OpenBook).
استخدم متغيرات V2 للكود الجديد. نظرًا لأنه تم إزالة اعتماد AMM v4 على OpenBook، لا تزال نقاط الدخول V1 (
SwapBaseIn، SwapBaseOut) تتوقع قائمة الحسابات الكاملة المكونة من 17 حسابًا (أو 18 مع حساب target-orders الاختياري)، لكن حسابات OpenBook/market الآن مقبولة بشكل موضعي ومُتجاهلة — لا يتم التحقق منها ولا يتم إصدار CPI. لا يزال تمرير عدد حسابات خاطئ يعود مع WrongAccountsNumber، لكن محتويات حساب السوق لم تعد يتم التحقق منها. يجب على التكاملات الجديدة استخدام SwapBaseInV2 / SwapBaseOutV2، التي تأخذ قائمة حسابات أصغر بكثير وتمثل مسار التنفيذ الكنسي اليوم. يتم توثيق النماذج V1 هنا للاكتمال وللقراءة من المعاملات على السلسلة الموجودة.
الرياضيات — انظر
products/amm-v4/math.
الشروط السابقة
AmmStatus::from_u64(amm.status).swap_permission()صحيحة — أي أنstatusهي1(Initialized) أو6(SwapOnly) أو7(WaitingTrade). فـstatusقيمة تعدادية وليست bitmask؛ انظرproducts/amm-v4/accounts.amm.state_data.pool_open_time <= now.amount_in > 0.user_source_token_accountيحتفظ بـamount_inعلى الأقل.
- يفقد المستخدم
amount_inمن الرمز المصدر، ويكسبamount_out ≥ minimum_amount_outمن رمز الوجهة. - يبقى رسم المبادلة في الخزائن، مما يرفع الثابت
k. وعداداتneed_take_pnl_*لا تتأثر بالمبادلات — يُعاد حساب PnL البروتوكول من دلتاkعند أولDepositأوWithdrawأوWithdrawPnlتالية (Processor::calc_take_pnl). - ملاحظة: عدادات التحليلات
state_data.swap_*_in_amount/swap_*_out_amountلم تعد يتم تحديثها — قيمها مجمدة. استخدم سجلات التداول لتحليلات الحجم.
ExceededSlippage، InvalidInput، InvalidStatus، NotAllowed (رمز coin/pc متطابق).
SwapBaseOut
مخرج دقيق، معكوس SwapBaseIn. نفس الحسابات.
المعاملات
SwapBaseInV2 / SwapBaseOutV2
نقاط دخول مبادلة متغيرة (الوسوم 16 / 17) التي تتخطى حسابات OpenBook بالكامل. الرياضيات متطابقة مع مسار V1، لكن قائمة الحسابات تنكمش إلى جانب AMM والمستخدم فقط — 8 حسابات، و amm_open_orders لا يتم تمريره:
احتياطيات Pool الآن هي أرصدة الأقبية (ناقص PnL المعلق)، لذا فإن رياضيات الاقتباس مباشرة ومتطابقة مع مسار v1. استخدم V2 لتوفير الحساب وتجنب تمرير حسابات السوق (المُتجاهلة الآن). يستخدم موجه Raydium دائمًا نموذج V2 عند التوجيه عبر AMM v4.
المعاملات هي نفسها نماذج V1 (
amount_in / minimum_amount_out لـ SwapBaseInV2؛ max_amount_in / amount_out لـ SwapBaseOutV2).
MonitorStep والتعليمات المحذوفة الأخرى
تاريخيًا، كان MonitorStep يدير تفاعل pool مع OpenBook: كان يسوي الأوامر المملوءة (نقل العائدات من أقبية السوق إلى أقبية pool عبر OpenBook CPI)، وإلغاء الأوامر القديمة، ونشر أوامر جديدة لإغلاق الفجوة بين target_orders و amm_open_orders. مع إزالة اعتماد OpenBook، لا يوجد شيء للإدارة والتعليمة اختفت. يجب على أي حارس أو تكامل لا يزال يستدعيه إزالة الاستدعاء.
WithdrawPnl / TakePnl
تجميع إداري لرسوم البروتوكول المتراكمة.
المعاملات
WithdrawPnlلا تأخذ أي معاملات؛ تقرأneed_take_pnl_*وتنقل تلك المبالغ بالضبط.
التأثير
- ينقل
need_take_pnl_coinمنpool_coin_token_accountإلىpnl_coin_token_account. - نفس الشيء لـ pc.
- يصفر
need_take_pnl_coinوneed_take_pnl_pc. - تغيير المنطق: إذا كان رصيد القبو غير كافٍ لتغطية PnL المتراكم، تعود التعليمة مع
TakePnlErrorمباشرة (لم تعد تتلاعب بحالة دفتر الطلبات).
SetParams
تغييرات معاملات الإدارة، يستدعيها multisig Raydium. المعاملات هي وسم param: u8 + حمولة.
CreateConfigAccount / UpdateConfigAccount
إدارة إدارية لـ AmmConfig PDA على مستوى البرنامج (البذرة ["amm_config_account_seed"]). يحتفظ الحساب بثلاثة حقول ذات معنى فقط — pnl_owner و cancel_owner و create_pool_fee — بالإضافة إلى منطقتَي حشو محجوزتين؛ ولا يوجد علم لإنشاء التجمعات. تعيّن UpdateConfigAccount الحقل pnl_owner بـ param = 0، و cancel_owner بـ param = 1، و create_pool_fee بـ param = 2.
تغيرت في 2026-09، وتوافقية عكسية. لم تعد
CreateConfigAccount تقرأ sysvar الإيجار. قائمة حساباتها الآن 4 حسابات، انخفاضًا من 5:يقرأ البرنامج معاملات الإيجار من
Rent::get() بدلاً من فك تسلسل حساب sysvar الذي تم تمريره — ما جعلته طبيعيًا اعتماد Solana 3.0.الحساب المحذوف كان الأخير في القائمة، والمعالج يقرأ حساباته بشكل موضعي عبر next_account_info بدون فحص الطول. لذلك فإن أداة إدارة موجودة لا تزال تمرر قائمة الحسابات القديمة المكونة من 5 حسابات تستمر في العمل: حساب الإيجار الزائد لا يتم قراءته أبدًا. حدثه عند الراحة، وليس بشكل عاجل. UpdateConfigAccount لم يتغير.Initialize2 بـ sysvar الإيجار في الموضع 3، وتستخدمه بالفعل: توقف البرنامج عن استدعاء Rent::from_account_info عليه، لكن لا يزال يتم تمريره إلى CPIs spl_token::initialize_account و initialize_mint التي تنشئ أقبية pool و LP mint. لا تحذفه من قائمة الحسابات.
WithdrawExcessLamports
تجميع إداري لـ lamports الجالسة فوق الحد الأدنى المعفي من الإيجار على الحسابات التي يتحكم فيها البرنامج. تمت الإضافة في ترقية 2026-09 لاسترجاع الإفراط في التمويل الذي يتركه SIMD-0437 rent reduction خلفه على الحسابات المُنشأة قبل كل خطوة.
ينقل الفائض فقط. أرصدة الرموز، بيانات الحساب، المالكون، وحالة pool لم تتغير، والتعليمة هي no-op على حساب بالفعل في الحد الأدنى — لذا فمن الآمن إطلاقها بشكل متكرر وأيضًا بعد كل خطوة طرح.
المعاملات — لا شيء. الحمولة هي بايت الوسم الفردي 18.
الحسابات
كيفية التعامل مع كل حساب مصدر
يقوم البرنامج بالتوزيع على
owner حساب المصدر:
الأخطاء الشائعة —
InvalidSignAccount (موقّع خاطئ)، InvalidSplTokenProgram (برنامج خاطئ في الفتحة 3)، InvalidProgramAddress (amm_authority خاطئ)، LamportsCalculateError (كود مخصص 60؛ رحلة wSOL ذهابًا وإيابًا لم تصل إلى صفر)، و InsufficientFunds من مسار البرنامج المملوك عندما يحتفظ حساب بأقل من حد الإيجار الخاص به.
لا منشئ SDK. لا تشحن @raydium-io/raydium-sdk-v2 منشئًا لهذه التعليمة، ولا يفعل مستودع raydium-sdk-V2-demo — إنه مسار إدارة. قم بترميزه يدويًا، بالطريقة التي يفعلها تجميع الجانب المحفظة في solana-fundamentals/rent-and-reclaimable-rent لتعليمة برنامج الرموز.
مصفوفة تغيير الحالة
عمود OpenBook اختفى — لا تعليمة تلمس دفتر الطلبات بعد الآن.أين تذهب بعد ذلك
products/amm-v4/code-demos— أمثلة TypeScript لتدفقات المبادلة و LP.products/amm-v4/fees— تفاصيلWithdrawPnlوتقسيم الرسوم.reference/error-codes— جدول مرجعي للأمام (أخطاء AMM v4 مُدرجة على تلك الصفحة).
- برنامج Raydium AMM —
raydium-io/raydium-amm - وحدة Raydium SDK v2
Liquidity - برنامج OpenBook — التحقق من الحسابات على جانب السوق

