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

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.

هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →

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

اسم الممیزمن یوقعما تفعله
Initializeمنشئ التجمعإنشاء تجمع CPMM جديد من عملتين وAmmConfig. بدون إذن؛ يمكن لأي شخص استدعاؤها. يحدد بثبات enable_creator_fee = false على التجمع الجديد. يمكن أن يكون حساب pool_state إما PDA القانونية أو زوج مفاتيح عشوائي جديد (انظر حسابات Initialize).
InitializeWithPermissionالدافع + صاحب PDA Permissionنسخة مرخصة من Initialize. يجب على المتصل (payer) أن يمتلك PDA Permission مشتقة من مفتاحه العام. يستخدمه المنصات التي تحتاج إلى إنشاء تجمع محدود (مثل تخرجات LaunchLab). يسمح للمتصل بتحديد creator_fee_on (BothToken / OnlyToken0 / OnlyToken1) ويفرض enable_creator_fee = true على التجمع الجديد. يتم تعيين حقل creator على pool_state إلى حساب creator منفصل تم تمريره، وليس الدافع. نفس المرونة PDA-القانونية-أو-عشوائية-المفاتيح لـ pool_state كما في Initialize.
Depositمزود السيولةإضافة السيولة بكلا الرموز؛ استقبال رموز LP.
Withdrawمزود السيولةحرق رموز LP؛ استقبال كلا الرموز الأساسيين بنسبة.
SwapBaseInputالمتبادلمبادلة دقيقة المدخلات (amount_in داخلاً، ≥ minimum_amount_out خارجاً).
SwapBaseOutputالمتبادلمبادلة دقيقة المخرجات (≤ maximum_amount_in داخلاً، amount_out خارجاً).
CollectProtocolFeeprotocol_owner (من AmmConfig)تجميع الرسوم البروتوكول المتراكمة من الخزانات.
CollectFundFeefund_owner (من AmmConfig)تجميع رسوم الصندوق المتراكمة من الخزانات.
CollectCreatorFeepool_creatorتجميع رسوم المنشئ المتراكمة (إن كانت رسوم المنشئ مفعلة).
UpdatePoolStatusadminإيقاف / استئناف عمليات محددة على التجمع عبر قناع البت.
UpdateAmmConfigadminتغيير معدلات الرسوم أو مالك البروتوكول/الصندوق على AmmConfig.
CreateAmmConfigadminإنشاء طبقة رسوم جديدة (حساب AmmConfig جديد).
CreatePermissionPdaadminإنشاء PDA Permission يسمح لسلطة محددة باستدعاء InitializeWithPermission.
ClosePermissionPdaadminإلغاء PDA Permission صادرة مسبقاً.
قناع الحالة: حقل status في كل تجمع هو u8 حيث البت 0 = الإيداع معطل، البت 1 = السحب معطل، البت 2 = المبادلة معطلة (PoolStatusBitIndex { Deposit, Withdraw, Swap } في البرنامج). البت الصافي يعني السماح بالعملية؛ البت المضبوط يعني إيقافها. UpdatePoolStatus يأخذ u8 خام ويستبدل القيمة الموجودة. تمر الأقسام التالية عبر كل واحدة بالتفصيل. ترتيب الحسابات يتبع IDL الخاص بـ CPMM؛ الـ SDK وعميل Rust في raydium-cp-swap/programs/cp-swap/src/instructions يطابقان هذا الترتيب.

Initialize

إنشاء تجمع CPMM جديد. المعاملات
init_amount_0: u64
init_amount_1: u64
open_time:     u64   // Unix timestamp; swaps rejected before this
الحسابات (W = قابل للكتابة، S = موقّع)
#الاسمWSملاحظات
1creatorWSيدفع الإيجار؛ يُسجل باسم pool_state.pool_creator.
2amm_configطبقة الرسوم المختارة.
3authorityPDA سلطة CPMM العالمية.
4pool_stateWS*تُهيأ هنا. إما PDA القانونية ["pool", amm_config, token_0_mint, token_1_mint] أو زوج مفاتيح عشوائي جديد — عندما لا تكون PDA القانونية، يتطلب البرنامج توقيع pool_state (require_eq!(pool_account_info.is_signer, true)). يسمح المسار العشوائي للمفاتيح للمنشئ بتجنب محاولات البيع المسبق على PDA القانونية. تُشتق الـ PDAs اللاحقة (lp_mint، vaults، observation_state) من pool_state.key() على أي حال.
5token_0_mintمرتب: token_0_mint < token_1_mint.
6token_1_mint
7lp_mintWتُهيأ هنا. السلطة معيّنة إلى authority.
8creator_token_0WATA المصدر لـ init_amount_0.
9creator_token_1WATA المصدر لـ init_amount_1.
10creator_lp_tokenWالوجهة لـ LP (تُنشأ إذا فقدت).
11token_0_vaultWتُهيأ هنا. مملوكة بواسطة authority.
12token_1_vaultW
13create_pool_feeWATA الوجهة لـ create_pool_fee المدفوعة من قبل المنشئ.
14observation_stateWتُهيأ هنا.
15token_programSPL Token (لـ LP mint).
16token_0_programSPL Token أو Token-2022.
17token_1_programSPL Token أو Token-2022.
18associated_token_program
19system_program
20rent
* يوقّع pool_state فقط على مسار زوج المفاتيح العشوائي؛ مسار PDA القانونية يعمل بدون توقيع pool_state. الشروط المسبقة
  • الرموز مرتبة (token_0_mint < token_1_mint بترتيب البايت).
  • لا تستخدم أي من الرموز ملحقاً خارج قائمة السماح بـ CPMM (TransferFeeConfig، MetadataPointer، TokenMetadata، InterestBearingConfig، ScaledUiAmount) — انظر products/cpmm/accounts. قائمة سماح صغيرة لكل رمز داخل البرنامج تتجاوز الفحص للاستخدام حالة بحالة.
  • يمتلك creator على الأقل init_amount_0 وinit_amount_1 في الـ ATAs الخاصة بهما.
  • amm_config.disable_create_pool == false.
الشروط اللاحقة
  • يوجد pool_state مع lp_supply = sqrt(init_amount_0 * init_amount_1) − LOCKED_LP.
  • يتم قفل بادئ LP البالغ LOCKED_LP (100 لامبورت من رمز LP) بشكل دائم في التجمع — pool_state.lp_supply يسجل liquidity − 100 بينما يبقى 100 وحدة LP خارج التداول، مما يمنع التجمع من الاستنزاف الكامل والقسمة على صفر.
  • تُهيأ observation_state؛ observation_index = 0 وpool_id = pool_state.key().
  • يتم نقل create_pool_fee لامبورت من المنشئ إلى المستلم ومزامنتها بـ SOL أصلية (إنها ATA wSOL).
  • قناع حالة التجمع هو 0 (الإيداع / السحب / المبادلة كلها مفعلة).
  • enable_creator_fee = false وcreator_fee_on = BothToken. Initialize لا تدعم تفعيل رسوم المنشئ — هذا المسار هو InitializeWithPermission.
  • يتم زيادة open_time إلى block_timestamp + 1 إذا مرر المتصل قيمة <= block_timestamp. يتم رفض المبادلات قبل open_time؛ الإيداعات والسحوبات تعمل على الفور.
الأخطاء الشائعة (القائمة الكاملة في reference/error-codes)
  • InvalidInput — رموز غير مرتبة، أو رموز متطابقة.
  • NotSupportMint — ملحق Token-2022 محجوب.
  • ExceededSlippage — نادراً؛ إذا أسفر init_amount_0/1 عن صفر LP بسبب عدم تطابق الكسور العشرية.

Deposit

إضافة السيولة بكلا الرموز بما يتناسب مع التجمع. المعاملات
lp_token_amount:   u64   // how many LP tokens to mint to the LP
maximum_token_0:   u64
maximum_token_1:   u64
الحسابات
#الاسمWS
1ownerS
2authority
3pool_stateW
4owner_lp_tokenW
5token_0_accountW
6token_1_accountW
7token_0_vaultW
8token_1_vaultW
9token_program
10token_program_2022
11vault_0_mint
12vault_1_mint
13lp_mintW
الرياضيات
needed_token_0 = ceil(lp_token_amount * vault_0 / lp_supply)
needed_token_1 = ceil(lp_token_amount * vault_1 / lp_supply)
require(needed_token_0 <= maximum_token_0, "ExceededSlippage")
require(needed_token_1 <= maximum_token_1, "ExceededSlippage")
لا توجد تغييرات في تناسب k — تتوسع كلا الخزانات وlp_supply بنفس العامل. الشروط اللاحقة
  • lp_supply += lp_token_amount.
  • vault_0 += needed_token_0 (صافي أي رسم نقل Token-2022 على الإدخال).
  • vault_1 += needed_token_1 (صافي أي رسم نقل Token-2022 على الإدخال).
الأخطاء الشائعةExceededSlippage، ZeroTradingTokens، InvalidStatus إذا تم إيقاف الإيداع.

Withdraw

حرق رموز LP واستقبال كلا الرموز الأساسيين بنسبة. المعاملات
lp_token_amount:   u64
minimum_token_0:   u64
minimum_token_1:   u64
الحسابات
#الاسمWS
1ownerS
2authority
3pool_stateW
4owner_lp_tokenW
5token_0_accountW
6token_1_accountW
7token_0_vaultW
8token_1_vaultW
9token_program
10token_program_2022
11vault_0_mint
12vault_1_mint
13lp_mintW
(مطابقة لـ Deposit؛ lp_mint قابلة للكتابة لأن رموز LP تُحرق.) الرياضيات
out_token_0 = floor(lp_token_amount * vault_0 / lp_supply)
out_token_1 = floor(lp_token_amount * vault_1 / lp_supply)
require(out_token_0 >= minimum_token_0, "ExceededSlippage")
require(out_token_1 >= minimum_token_1, "ExceededSlippage")
الشروط اللاحقة
  • lp_supply -= lp_token_amount.
  • تُرسل الخزانات out_token_0 / out_token_1 (إجمالياً؛ يستقبل المستخدم صافي أي رسم نقل Token-2022).

SwapBaseInput

مبادلة دقيقة المدخلات. المعاملات
amount_in:            u64
minimum_amount_out:   u64
الحسابات
#الاسمWS
1payerS
2authority
3amm_config
4pool_stateW
5input_token_accountW
6output_token_accountW
7input_vaultW
8output_vaultW
9input_token_program
10output_token_program
11input_token_mint
12output_token_mint
13observation_stateW
الترتيب الإدخال → الإخراج هو باتجاه المستخدم، وليس بـ token_0 / token_1 القانونية للتجمع. يحدد البرنامج أي خزان هو أي عن طريق مطابقة الرموز. الرياضيات — انظر products/cpmm/math. الشروط المسبقة
  • open_time <= now.
  • تسمح pool_status بالمبادلة.
  • لم تتم إيقاف أي من الرموز أو تجميدها لهذه السلطة.
  • amount_in > 0.
الأخطاء الشائعة
  • ExceededSlippageamount_out < minimum_amount_out.
  • ZeroTradingTokens — تُقرب التجارة إلى صفر.
  • NotApproved — يتم إيقاف التجمع للمبادلات عبر UpdatePoolStatus.
  • InvalidInput — الرموز لا تطابق إما من خزانات التجمع.

SwapBaseOutput

مبادلة دقيقة المخرجات. المعاملات
max_amount_in:  u64
amount_out:     u64
الحسابات — نفسها كـ SwapBaseInput. الرياضيات — منحنى عكسي مع سقف، انظر products/cpmm/math. الأخطاء الشائعةExceededSlippage (gross_in > max_amount_inZeroTradingTokens، InvalidInput، NotApproved.

CollectProtocolFee

تجميع رسوم البروتوكول المتراكمة من الخزانات إلى وجهة البروتوكول. المعاملات — لا توجد. الحسابات
#الاسمWS
1ownerSيجب أن يطابق amm_config.protocol_owner.
2authority
3pool_stateW
4amm_config
5token_0_vaultW
6token_1_vaultW
7vault_0_mint
8vault_1_mint
9recipient_token_0_accountW
10recipient_token_1_accountW
11token_program
12token_program_2022
التأثير
transfer pool_state.protocol_fees_token0 from vault_0 to recipient_0
transfer pool_state.protocol_fees_token1 from vault_1 to recipient_1
pool_state.protocol_fees_token0 = 0
pool_state.protocol_fees_token1 = 0
لا توجد تغييرات في أرصدة المنحنى الفعلية (تم استبعاد الرسوم المتراكمة بالفعل). الخطأ الشائعNotApproved إذا لم يكن الموقّع protocol_owner.

CollectFundFee

نفس الشكل كـ CollectProtocolFee لكن يوقّع بواسطة fund_owner ويصفر عدادات fund_fees_*.

CollectCreatorFee

نفس الشكل مرة أخرى، موقّع بواسطة pool_state.pool_creator. يُصدر النقل فقط إذا تم تهيئة التجمع بمعدل رسوم منشئ غير صفري.

UpdatePoolStatus

إيقاف أو استئناف عمليات فردية على التجمع. حقل status هو قناع بت:
البتالعلمالتأثير عند التعيين
0DEPOSIT_DISABLEDDeposit ترفضها بـ NotApproved.
1WITHDRAW_DISABLEDWithdraw ترفضها.
2SWAP_DISABLEDSwapBaseInput / SwapBaseOutput ترفضها.
المعاملات
status: u8      // new bitmask
الحسابات
#الاسمWS
1authoritySيجب أن يطابق مفتاح الإدارة على برنامج CPMM.
2pool_stateW
مفتاح الإدارة هو سلطة الترقية على برنامج CPMM — في الممارسة العملية، مجموعة Raydium متعددة التوقيع. انظر security/admin-and-multisig.

CreateAmmConfig

إنشاء طبقة رسوم جديدة. المعاملات
index:             u16
trade_fee_rate:    u64
protocol_fee_rate: u64
fund_fee_rate:     u64
create_pool_fee:   u64
الحسابات
#الاسمWS
1ownerWSإدارة.
2amm_configWتُهيأ هنا.
3system_program
الشروط المسبقة
  • لا توجد AmmConfig موجودة بنفس index.
  • protocol_fee_rate + fund_fee_rate <= FEE_RATE_DENOMINATOR_VALUE.

UpdateAmmConfig

تغيير معدلات الرسوم أو الملكية على AmmConfig موجودة. يأخذ param: u8 (ممیز للحقل المراد تحديثه) وvalue: u64. دلالات القيمة لكل معامل موجودة في المصدر؛ عادة ما تكون:
  • param = 0trade_fee_rate
  • param = 1protocol_fee_rate
  • param = 2fund_fee_rate
  • param = 3new_protocol_owner (مرر بايتات Pubkey كإعادة تفسير)
  • param = 4new_fund_owner
  • param = 5create_pool_fee
  • param = 6disable_create_pool
يتم توقيع التغييرات بواسطة الإدارة وتؤثر على كل تجمع مرتبط بـ AmmConfig عند المبادلة التالية. لا توجد هجرة؛ التجمعات تقرأ ببساطة القيم الجديدة.

مصفوفة تغيير الحالة

التعليمةlp_supplyأرصدة الخزاناتحقول الرسوم المتراكمةobservation
Initialize+ init LP+ init_amount_{0,1}0init
InitializeWithPermission+ init LP+ init_amount_{0,1}0init
Deposit++ كلاهما
Withdraw− كلاهما
SwapBaseInput+ في، − خارج+ trade_fee منقسمة إلى بروتوكول/صندوق؛ + creator_fee إذا كانت مفعلة+ (إذا انقضت الفترة الزمنية)
SwapBaseOutput+ في، − خارج+ trade_fee منقسمة إلى بروتوكول/صندوق؛ + creator_fee إذا كانت مفعلة+ (إذا انقضت الفترة الزمنية)
CollectProtocolFee− (بواسطة سلات البروتوكول)protocol_* → 0
CollectFundFee− (بواسطة سلات الصندوق)fund_* → 0
CollectCreatorFee− (بواسطة سلات المنشئ)creator_* → 0
UpdatePoolStatus

إلى أين تذهب بعد ذلك

المصادر: