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

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.

هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
هذه الصفحة هي مرجع التعليمات الموثوق به لبرنامج AMM Routing. للحصول على أمثلة برمجية، اطّلع على products/routing/code-demos. لمعاني الأخطاء، اطّلع على reference/error-codes.

ملخص التعليمات

العلامةالمميزالدقيقالمتغير
0SwapBaseInWithUserAccountالإدخالقديم
1SwapBaseOutWithUserAccountالإخراجقديم
5CreateSyncNativeأداة
6CloseTokenAccountأداة
8SwapBaseInالإدخالحالي
9SwapBaseOutالإخراجحالي
المفتاح:
  • الدقيق: أي مبلغ يتم تحديده من قبل المتصل (الإدخال = إدخال دقيق amount_in؛ الإخراج = إخراج دقيق amount_out).
  • المتغير: التعليمات القديمة تتطلب طابور limit_prices غير فارغ حتى لو لم يكن هناك أي قفزة CLMM في المسار. التعليمات الحالية (8 / 9) تتعامل مع طابور limit_prices الفارغ كـ “بدون فحوصات”، وهو المسار الموصى به للكود الجديد.
جميع متغيرات المبادلة توجّه الرموز الوسيطة عبر ATAs التي يتحكم فيها المستخدم — المستخدم يمتلك ATA الإدخال وكل ATA وسيط و ATA الإخراج. لعمليات التكامل الجديدة، استخدم العلامة 8 (SwapBaseIn) أو العلامة 9 (SwapBaseOut) ما لم تكن لديك سبب محدد لاستدعاء متغير قديم.

تعليمات المبادلة الحالية (موصى بها)

هذه هي نقاط الدخول التي يجب أن يستخدمها الكود الجديد. بنية الوسيط هي نفسها متغيرات النمط القديم لكن limit_prices قد يكون فارغًا.

SwapBaseIn (العلامة 8)

مبادلة متعددة القفزات بإدخال دقيق. يحدد المتصل amount_in؛ يقوم الموجّه بالتنفيذ قفزة تلو الأخرى ويتحقق من أن المبلغ النهائي يصل إلى minimum_amount_out أو يتجاوزه. الوسيطات
amount_in:            u64
minimum_amount_out:   u64
limit_prices:         VecDeque<u128>  // اختياري؛ طابور فارغ يعني بدون فحص سعر CLMM لكل قفزة
الحسابات
[
  <user_input_ata> W S,         // موقّع؛ الرصيد >= amount_in
  <user_intermediate_ata_1> W,  // واحد لكل قفزة وسيطة
  ... <user_intermediate_ata_N> W,
  <user_output_ata> W,
  <token_program>,

  <pool_program_hop_1>,         // يحدد أي عائلة AMM هي القفزة 1
  <pool_state_hop_1> W,
  ... <other accounts required by hop 1's program>,

  <pool_program_hop_2>,
  <pool_state_hop_2> W,
  ... <hop 2 accounts>,

  ... [كرّر لكل قفزة]
]
قائمة الحسابات الدقيقة لكل قفزة تعتمد على برنامج AMM الأساسي (AMM v4 / CPMM / CLMM / Stable). يقوم الموجّه بإجراء CPI في كل منها على التوالي ويتحقق من تطابق معرف البرنامج مع أحد البرامج الأربعة المدعومة. الشروط المسبقة
  • المتصل يوقّع باستخدام user_input_ata.
  • user_input_ata.amount >= amount_in.
  • كل ATA وسيط للمستخدم موجود ويملكه المتصل.
  • إذا كانت أي قفزة هي CLMM وكنت تريد فرض سعر محدود، قدّم إدخالة واحدة limit_prices لكل قفزة CLMM.
الشروط اللاحقة
  • رصيد user_input_ata انخفض بمقدار amount_in.
  • رصيد user_output_ata زاد بمقدار ≥ minimum_amount_out.
  • كل ATA وسيط يُترك بدون تغيير صافي (المسار يستهلك ما أنتجته القفزة السابقة).
الأخطاء الشائعة
  • ExceededSlippage — الإخراج النهائي < minimum_amount_out.
  • InvalidInput — مسار فارغ أو حسابات سيئة التشكيل أو pool_program غير مدعوم.
  • SqrtPriceX64 — سعر قفزة CLMM تحرك خارج حد limit_prices المُوفّر (فقط عند عدم كون limit_prices فارغًا).

SwapBaseOut (العلامة 9)

مبادلة متعددة القفزات بإخراج دقيق. يحدد المتصل amount_out؛ يتحقق الموجّه من أن الإدخال الفعلي لا يتجاوز maximum_amount_in. الوسيطات
maximum_amount_in:   u64
amount_out:          u64
limit_prices:        VecDeque<u128>  // اختياري؛ طابور فارغ يعني بدون فحص سعر CLMM لكل قفزة
الحسابات — نفس بنية العلامة 8. الشروط المسبقة
  • المتصل يوقّع باستخدام user_input_ata؛ الرصيد >= maximum_amount_in (الحالة الأسوأ).
  • كل ATA وسيط و ATA الإخراج موجود.
الشروط اللاحقة
  • user_input_ata انخفض بالمبلغ الفعلي المطلوب (≤ maximum_amount_in).
  • user_output_ata زاد بمقدار amount_out بالضبط.
الأخطاء الشائعة
  • ExceededSlippage — الإدخال المطلوب يتجاوز maximum_amount_in.
  • InvalidInput و SqrtPriceX64 — كما هو الحال بالنسبة للعلامة 8.

تعليمات المبادلة القديمة

هذه المتغيرات الأقدم لا تزال قابلة للاستدعاء في البرنامج المباشر وموثّقة هنا للتمام. فضّل العلامة 8 / العلامة 9 للكود الجديد؛ كلا المتغيرين القديمين أدناه يتطلبان طابور limit_prices غير فارغ حتى عندما لا تكون هناك قفزة CLMM، مما يجعلهما محرجين في الاستخدام.

SwapBaseInWithUserAccount (العلامة 0)

مبادلة متعددة القفزات بإدخال دقيق، متطابقة في الشكل مع العلامة 8 لكن مع متطلب limit_prices أكثر صرامة. الوسيطات
amount_in:           u64
minimum_amount_out:  u64
limit_prices:        VecDeque<u128>  // مطلوب، غير فارغ
الحسابات — نفس شكل SwapBaseIn (العلامة 8). جميع الفتحات الوسيطة يجب أن تكون ATAs يملكها المتصل. الشروط المسبقة
  • المتصل يوقّع باستخدام user_input_ata.
  • user_input_ata.amount >= amount_in.
  • جميع ATAs الوسيطة للمستخدم موجودة ويملكها المتصل.
  • limit_prices غير فارغ (إدخال واحد لكل قفزة CLMM؛ ملء بقيم نائبة إذا لم تكن هناك قفزة CLMM).
الشروط اللاحقة
  • رصيد user_input_ata انخفض بمقدار amount_in.
  • رصيد user_output_ata زاد بمقدار ≥ minimum_amount_out.
الأخطاء الشائعة
  • ExceededSlippage.
  • InvalidInputlimit_prices الفارغ مرفوض في هذا المتغير القديم.
  • SqrtPriceX64.

SwapBaseOutWithUserAccount (العلامة 1)

مبادلة بإخراج دقيق، نظير قديم لـ SwapBaseOut (العلامة 9). الوسيطات
maximum_amount_in:   u64
amount_out:          u64
limit_prices:        VecDeque<u128>  // مطلوب، غير فارغ
الحسابات — نفس شكل العلامة 0 / العلامة 9. الشروط المسبقة
  • المتصل يوقّع باستخدام user_input_ata.
  • user_input_ata.amount >= maximum_amount_in.
  • جميع ATAs الوسيطة للمستخدم موجودة ويملكها المتصل.
  • limit_prices غير فارغ.
الشروط اللاحقة
  • user_input_ata انخفض بالمبلغ الفعلي المطلوب (≤ maximum_amount_in).
  • user_output_ata زاد بمقدار amount_out بالضبط.
الأخطاء الشائعة
  • ExceededSlippage.
  • InvalidInput.
  • SqrtPriceX64.

تعليمات الأدوات

CreateSyncNative (العلامة 5)

إنشاء (إذا كان مفقودًا) ومزامنة ATA wSOL في خطوة واحدة. مفيد عند تغليف SOL بشكل مضمّن جنبًا إلى جنب مع المبادلة. الوسيطات
amount: u64    // SOL للتغليف (لامبورتات)
الحسابات
[
  <user_wsol_ata> W,            // ATA لـ wSOL؛ يُنشأ إذا كان مفقودًا
  <user_native_account> W S,    // موقّع؛ يتم خصم SOL من هنا
  <wsol_mint>,
  <system_program>,
  <token_program>,
  <associated_token_program>,
]
التأثير
  • ينشئ user_wsol_ata إذا لم يكن موجودًا بعد.
  • ينقل amount لامبورتات من رصيد SOL الأصلي للموقّع إلى ATA.
  • يستدعي SyncNative على ATA بحيث يعكس رصيد الرمز المميز اللامبورتات الجديدة.
الأخطاء الشائعة
  • InvalidOwner — مالك user_wsol_ata ليس الموقّع.

CloseTokenAccount (العلامة 6)

إغلاق حساب رمز مميز وإرجاع إيجاره إلى محفظة الوجهة. يترافق مع CreateSyncNative: بعد مبادلة ساق wSOL، استدعِ CloseTokenAccount لاسترجاع الإيجار الذي كان يدعم ATA wSOL. الوسيطات — لا توجد. الحسابات
[
  <token_account_to_close> W,
  <destination_for_rent> W,
  <owner> S,
  <token_program>,
]
التأثير
  • يغلق token_account_to_close.
  • ينقل رصيد لامبورتات معفي الإيجار (~0.00203928 SOL على الشبكة الرئيسية لحساب SPL Token عادي) إلى destination_for_rent.
  • يجب أن يكون رصيد حساب الرمز صفرًا.
الأخطاء الشائعة
  • InvalidOwner — المتصل ليس مالك ATA.
  • رصيد حساب الرمز غير صفري.

ما يلي