Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
يكشف LaunchLab عن مجموعة تعليمات محكمة: ستة استدعاءات موجهة للمستخدمين بالإضافة إلى عدد قليل من البدائيات الإدارية. يغلف SDK جميعها؛ تتناول هذه الصفحة السطح الخام للمجمعات وأدوات المراقبة والبرامج التي تحتاج إلى CPI.أعاد ترقية البرنامج 2026-09 بناء LaunchLab على Anchor 1.0.2 / Solana 3.1.10 وأزال ثلاث آليات انتقالية: Initialize المهجور الآن يفشل دائمًا، فقد MigrateToAmm ثلاث وسائط وكل حساب OpenBook، وذهبت بوابة get_upgrade_timestamp التي جعلت عدة فحوصات مشروطة بالساعة. كما يضيف تعليمة إدارية واحدة، CollectExcessLamports. انظر إلى إدخال السجل 2026-09-09.

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

ينعكس الانقسام “ExactIn/ExactOut” في SwapBaseInput / SwapBaseOutput الخاص بـ CPMM — على السلسلة يكونان مميزات تعليمات منفصلة برقم تقريبي مختلف قليلاً. اختيار مسار التخرج. يجب على كل استدعاء InitializeV2 و InitializeWithToken2022 جديد تعيين migrate_type = 1 (CPSWAP). أي محاولة لتهيئة مجموعة مرتبطة بـ AMM v4 جديدة تُرجع MigrateTypeNotMatch. amm_creator_fee_on يختار فقط ما إذا كانت رسوم منشئ CPMM الناتجة تنطبق على رمز الاقتباس أو كلا الرمزين؛ فهو لا يختار البرنامج المستهدف. لا يمكن لـ Initialize القديم إنشاء إطلاق على الإطلاق بعد الآن (انظر أدناه). يبقى MigrateToAmm قابلاً للاستدعاء لـ PoolState موجود تم تهيئته مع migrate_type = 0 قبل هذا التقييد. لا تعيد الإصدار كتابة حالة المجموعة الموجودة أو تزيل التعليمة القديمة. برنامج رمز الاقتباس. قد تكون عملة الاقتباس مملوكة لبرنامج SPL Token أو Token-2022. كل تعليمة تلمسها — CreateConfig و InitializeV2 و InitializeWithToken2022 وجميع التعليمات التجارية الأربع و CollectFee و CollectMigrateFee و ClaimCreatorFee و ClaimPlatformFee و ClaimPlatformFeeFromVault — تأخذ البرنامج المالك في فتحة حسابها برنامج الاقتباس. لم تتغير مواضع الحساب؛ فقط القيمة المقبولة. مرر البرنامج الذي يمتلك فعلاً GlobalConfig.quote_mint، والذي يمكنك قراءته من بت PoolState.token_program_flag 1 لإطلاق موجود (انظر accounts) أو من مالك حساب العملة بخلاف ذلك. Initialize المهجور غير ذي صلة هنا: حساب برنامج الاقتباس الخاص به لا يزال مكتوبًا إلى SPL Token، وبما أن ترقية 2026-09 تفشل التعليمة قبل قراءة أي حساب. قم بالإطلاق من خلال InitializeV2 أو InitializeWithToken2022. MigrateToCpswap هو الاستثناء الآخر، في الاتجاه المعاكس — فهو يأخذ كلا البرنامجين بدون شروط بدلاً من واحد لكل عملة. انظر حسابات الهجرة أدناه.

Initialize

تم الحذف فعليًا اعتبارًا من ترقية 2026-09 — هذه التعليمة تفشل دائمًا. معالج initialize الآن لا شيء سوى سجل Not supported. Please use initialize_v2 instruction و NotApproved (6000). يتم الاحتفاظ به بحتة حتى يبقى مميزه مشغولاً ويحافظ IDL على شكل مستقر. (هيكل Accounts لم يتغير، لذا لا تزال التحقق المُنشأ من Anchor يعمل أولاً؛ تنعكس المعاملة بغض النظر.)في السابق، كانت مبوابة على الساعة: عملت حتى ثلاثة أيام بعد قطع get_upgrade_timestamp وفشلت بعد ذلك. اختفى مساعد الطابع الزمني، لذا الفشل الآن غير مشروط. الإطلاقات الموجودة التي تم إنشاؤها من خلالها لم تتأثر — فهي تتداول وتتخرج بشكل طبيعي من خلال MigrateToAmm أو MigrateToCpswap اعتمادًا على migrate_type المخزن.الوسائط وقائمة الحسابات أدناه هي الخاصة بـ InitializeV2. أما Initialize المهجورة فتأخذ الحسابات الـ 18 نفسها بالترتيب نفسه والوسائط الثلاثة الأولى فقط — وليس لديها amm_fee_on — وخانة quote_token_program فيها مكتوبة كـ SPL Token وليس Interface<TokenInterface>.
إنشاء إطلاق جديد. InitializeV2 يضيف فقط وسيط amm_fee_on على Initialize المهجورة؛ فعدد الحسابات وترتيبها متطابقان، والفرق الوحيد على مستوى الحسابات هو أن quote_token_program مكتوب كـ Interface<TokenInterface> بحيث تُقبل عملة اقتباس من Token-2022. الوسائط أربعة وسائط موضعية، وليست هيكلاً واحداً. (تُلحق InitializeWithToken2022 وسيطاً خامساً هو transfer_fee_extension_param: Option<TransferFeeExtensionParams>؛ أما Initialize المهجورة فتُسقط amm_fee_on.)
يجب أن يطابق المتغير global_config.curve_type وإلا عادت التعليمة بخطأ InputNotMatchCurveConfig (6003). ولا يوجد open_time، ولا وسيط quote_mint (فهو يأتي من global_config)، ولا هيكل fees، ولا post_graduation_lp_policy — إذ يُحدَّد التصرف في LP على PlatformConfig، وليس لكل إطلاق. الحسابات — 18 في المجموع (16 مُعلَناً بالإضافة إلى الإلحاقين من #[event_cpi]) الشروط المسبقة
  • quote_mint ∈ launch_config.allowed_quote_mints.
  • base_supply_graduation ≤ base_supply_max.
  • معاملات الرسوم تمرر فحوصات launch_config.max_*_fee_rate.
  • open_time ≥ now − slop (SDK يفرض ≥ now؛ البرنامج يتسامح مع التأخير البسيط).
  • curve_type معروف.
الشروط اللاحقة
  • base_mint له supply = curve_param.supply، الكل في base_vault.
  • تُلغى سلطة الصك في هذه التعليمة نفسها (set_authority(MintTokens, None)) مباشرة بعد صك العرض — وليس عند التخرج. لذا فإن عملة الأساس ثابتة العرض بشكل دائم، ولا يمكن لأي تعليمة لاحقة صك المزيد.
  • PoolState مهيأ مع status = Fund (0)، real_a = 0، real_b = 0.
  • total_fund_raising_b يأتي مباشرة من curve_param.total_quote_fund_raising.
  • لـ InitializeWithToken2022 مع TransferFeeConfig مرفق: transfer_fee_config_authority = launch_authority، و withdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth عندما يتم تعيين هذا الحقل، وإلا launch_authority. يتم كتابة جانب السحب عند إنشاء العملة بالضبط حتى تتمكن المنصة من مسح الرسوم المحتفظ بها قبل التخرج. انظر platform-config.
الأخطاء الشائعة — NotApproved (6000، دون شرط، لـ Initialize المهجورة)، InvalidInput (6002، انتهاك حد عرض / معدل / جمع تمويل من GlobalConfig)، InputNotMatchCurveConfig (6003، متغير curve_param لا يطابق global_config.curve_type)، MigrateTypeNotMatch (6007، migrate_type != 1)، MathOverflow (6008)، VestingRatioTooHigh (6010)، NoSupportExtension (6017)، NotEnoughRemainingAccounts (6018)، InvalidPlatformAllowConfig (6022)، CurveParamNotMatchPlatformRule (6025). أما فحص Anchor الفاشل من نوع address = / constraint = فيظهر برمز 2xxx، لا بأحد هذه الرموز — ولا وجود لأي من InvalidQuoteMint أو FeeRateTooHigh أو InvalidCurveParams في تعداد أخطاء البرنامج.

Buy (المتغير الأساسي: BuyExactIn)

يوفر المستخدم مبلغ إدخال ثابتًا؛ ويحسب المنحنى المخرَج. الوسائط
الحسابات الحسابات المتبقية — تمديدات الرسوم، تُقرأ بهذا الترتيب بالضبط:
  1. share_fee_receiver — فقط عندما share_fee_rate > 0.
  2. system_program — دائمًا؛ يُفحص أنه == System::id()، وإلا InvalidInput.
  3. platform_fee_vault — PDA [platform_config, quote_token_mint]؛ يُنشأ عند أول استخدام.
  4. creator_fee_vault — PDA [creator, quote_token_mint]؛ يُنشأ عند أول استخدام.
والنقص فيها يُرجع NotEnoughRemainingAccounts (6018). ولا توجد خانة associated_token_program، و system_program هو حساب متبقٍّ وليس حسابًا مُعلَنًا. الشروط المسبقة
  • launch_state.status == Active.
  • now ≥ open_time.
  • user_quote_ata.balance ≥ quote_in.
  • quote_in > 0.
التأثير
  1. قسّم quote_in إلى quote_in_after_fee وأجزاء الرسوم.
  2. حل Newton للمنحنى لـ base_out بالنظر إلى الاقتباس بعد الرسوم.
  3. require(base_out ≥ minimum_base_out) وإلا عكس ExceededSlippage.
  4. انقل quote_in المستخدم → الخزان. انقل base_out الخزان → المستخدم.
  5. حدّث base_sold += base_out، quote_reserve_real += quote_in_after_fee × (lp_share / total_share).
  6. حدّث عدادات الرسوم (protocol_fees_quote، creator_fees_quote).
  7. state_data.num_buys += 1.
  8. إذا كان quote_reserve_real ≥ quote_reserve_target بعد التحديث، فإن SDK عادة ما يسلسل Graduate ix في نفس المعاملة. البرنامج لا يتخرج تلقائيًا داخل Buy — يلزم Graduate لاحق.

BuyExactOut

يحدد المستخدم base_out الدقيق؛ يحسب البرنامج quote_in. الوسائط
نفس الحسابات ونفس عقد الحسابات المتبقية كما في BuyExactIn. يستخدم التكامل التربيعي بالشكل المغلق (أو معكوس CPMM، لـ curve_type 1) بدلاً من تكرار Newton.

Sell / SellExactIn / SellExactOut

مرآة Buy. يعيد المستخدم base_in إلى المنحنى ويتلقى quote_out. يتم خصم الرسوم من quote_out، لذا يتلقى المستخدم أقل من العائدات المتكاملة الخام. الشروط المسبقة —
  • user_base_ata.balance ≥ base_in.
  • البيع لا يمكن أن يدفع base_sold تحت 0 (زائد مع ما ورد أعلاه بالنظر إلى أن المحاسبة متسقة).
  • الإطلاق هو Active.
التأثير — متماثل مع Buy. base_sold ينخفض، quote_reserve_real ينخفض. الرسوم لا تزال تتراكم.

رسوم نقل جانب الاقتباس

عندما تحمل عملة الاقتباس TransferFeeConfig، يختلف المبلغ الذي ينقله الخزان والمبلغ الذي يتم خصمه أو إضافته للدافع، وتُفحص حد الانزلاق مقابل جانب الدافع. على عملة اقتباس بدون الامتداد، كل حالة أدناه متطابقة مع عملة قديمة عادية. نتيجتان للاقتباس:
  • يتم رفض حد محسوب كما لو كانت العملة خالية من الرسوم. تمرير التكلفة الخالية من الرسوم كـ maximum_amount_in، أو العائدات الخالية من الرسوم كـ minimum_amount_out، ينعكس مع ExceededSlippage.
  • real_quote يتقدم فقط بما وصل إلى الخزان. BuyExactIn من amount_in على عملة اقتباس 5٪ ينقل real_quote بـ amount_in × 0.95.
لا يمكن عكس عملة اقتباس برسوم 100٪ (10000 نقطة أساس) وتنعكس مع CalculateOverflow على مسارات exact-out. كلا عملات جانب التداول مقيدة أيضًا بالبرنامج الذي تم تمريره في فتحتها المطابقة، لذا فإن base_token_program غير المتطابق الآن يفشل بدلاً من تجاهله. انظر algorithms/token-2022-transfer-fees لرياضيات الرسوم الأساسية.

حسابات التداول المتبقية

تأخذ جميع التعليمات التجارية الأربع أنابيب الرسوم الخاصة بها من خلال remaining_accounts، بهذا الترتيب:
تم التغيير في 2026-09: الثلاثة الأخيرة الآن غير مشروطة، و system_program تم التحقق منه. قبل هذا الإصدار، كان البرنامج يقرأها فقط عندما unix_timestamp >= get_upgrade_timestamp()، وتخطى تقسيم رسوم المنصة/المنشئ بالكامل قبل تلك اللحظة. الطابع الزمني بعيد جدًا، لذا السلوك على mainnet لم يتغير عمليًا — لكن الفرع اختفى من الكود، والمنشئ الذي لا يزال يحذف الحسابات الثلاثة الآن يفشل دائمًا مع NotEnoughRemainingAccounts (6018) بدلاً من فقط بعد القطع. يتم التحقق من فتحة system_program بالإضافة إلى ذلك مقابل System::id() وتُرجع InvalidInput (6002) إذا كانت تحتوي على أي شيء آخر، حيث تم قبول أي حساب في هذا الموضع سابقًا.

MigrateToAmm / MigrateToCpswap

تخرج إطلاق إلى مجموعة قابلة للتداول بمجرد أن يصل المنحنى إلى total_quote_fund_raising. الإطلاقات الجديدة هي CPMM فقط. يتم الاحتفاظ بـ MigrateToAmm للمجموعات الموجودة التي يكون migrate_type المخزن فيها 0. من يوقع
  • MigrateToAmm — migrate_to_amm_wallet المسجل على ربط GlobalConfig.
  • MigrateToCpswap — migrate_to_cpswap_wallet المسجل على ربط GlobalConfig.
عادة ما يتم الاحتفاظ بهذه المحافظ بواسطة كرنك التخرج الذي تديره Raydium؛ عمليًا، يحدث التخرج ثوانٍ بعد تجاوز الحد الأدنى، بغض النظر عمن أطلق الشراء الأخير. الوسائط لا أحد يأخذ أي.
تغيير كسر (محفظة الهجرة فقط، 2026-09). أسقط MigrateToAmm جميع الوسائط الثلاثة — base_lot_size، quote_lot_size، market_vault_signer_nonce — وتسعة حسابات. بيانات التعليمة الخاصة به الآن هي المميز العاري فقط، لذا فإن المنشئ القديم يرسل 17 بايت وسيط غير متوقع ويوفر قائمة حسابات لم تعد متوافقة.يتبع هذا إزالة OpenBook الخاصة بـ AMM v4: لم تعد Initialize2 الخاصة بـ AMM v4 تأخذ market_program أو amm_open_orders، لذا لم يكن لدى LaunchLab شيء متبقي للأمام. توقف البرنامج أيضًا عن CPI-ing initialize_openbook_market، وهو ما كانت الوسائط الثلاثة تكوّنه.الحسابات المحذوفة: openbook_program، request_queue، event_queue، bids، asks، market_vault_signer، market_base_vault، market_quote_vault، و amm_open_orders. حساب market يبقى في موضعه — AMM v4 لا يزال يسجله كحقل مرجعي — لكنه الآن معلن كـ #[account(mut)] عاري: لا مالك، عنوان أو قيود البذور. إنه غير مُتحقق منه تمامًا، يتم إعادة توجيهه مباشرة إلى CPI Initialize2 الخاص بـ AMM v4، والبرنامج لم يعد يهيئه. يجب على المتصل الذي يريد أن يكون حساب السوق سوقًا حقيقيًا مهيأً أن ينشئه بنفسه مسبقًا.قائمة الحسابات المتبقية البالغ عددها 23 حسابًا، بالترتيب: payer، base_mint، quote_mint، market، amm_program، amm_pool، amm_authority، amm_lp_mint، amm_base_vault، amm_quote_vault، amm_target_orders، amm_config، amm_create_fee_destination، authority، pool_state، global_config، base_vault، quote_vault، pool_lp_token، spl_token_program، associated_token_program، system_program، rent_program.MigrateToCpswap لم يتأثر — لم يكن لديه وسائط أبدًا.
التأثير (مشترك بين الاثنين)
  1. تحقق من pool_state.status == Migrate (أي، تم الوصول إلى quote_reserve_target). وإلا انعكس مع PoolMigrated (كانت الحالة بالفعل Migrated) أو PoolFunding (لا تزال في التمويل).
  2. تحقق من أن pool_state.migrate_type يطابق التعليمة (0 لـ AMM، 1 لـ CPMM). وإلا انعكس مع MigrateTypeNotMatch.
  3. احسب الاحتياطيات بعد التخرج:
    • base_amount_out = base_vault.amount − vesting_schedule.total_locked_amount
    • quote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
  4. CPI في البرنامج المستهدف (AMM v4 Initialize2 أو CPMM InitializeWithPermission) مع تلك الاحتياطيات لإنشاء مجموعة ما بعد التخرج.
  5. بالنسبة لهجرات CPMM التي تم تنفيذها بعد ترقية 2026-08-17، دمج platform_scale + creator_scale في حصة LP مقفلة مملوكة للمنصة واحدة وضرب على الأكثر مفتاح رسوم NFT واحد إلى platform_nft_wallet. احرق بقية burn_scale. قبل الترقية، كانت creator_scale مقفلة بشكل منفصل وذهب مفتاح الرسوم الخاص بها إلى منشئ الرمز. لم يتم تعديل الهجرات التاريخية المكتملة. بالنسبة لتخرج AMM v4 القديم، يتبع تخصيص LP تدفق التعليمات الموجود.
  6. (لا توجد خطوة سلطة النعناع. تم بالفعل تعيين base_mint.mint_authority إلى None عند إنشاء الإطلاق — انظر الملاحظة أدناه.)
  7. اقلب pool_state.status = Migrated، اضبط vesting_schedule.start_time = block_time + cliff_period.
Token-2022 transfer-fee authority handover — عندما تكون العملة الأساسية عملة Token-2022 تحمل TransferFeeConfig و PlatformConfig.transfer_fee_extension_auth غير افتراضي، تعيد الهجرة أيضًا تعيين سلطات هذا الامتداد إلى مفتاح المنصة:
  • يتم إعادة تعيين transfer_fee_config_authority دائمًا. يحتفظ بها PDA authority الإطلاق لمرحلة ما قبل التخرج بأكملها، لذا هناك دائمًا شيء للنقل.
  • يتم إعادة تعيين WithheldWithdraw فقط عندما يحتفظ بها PDA authority لا تزال. الإطلاقات التي تم إنشاؤها من 2026-08-27 فصاعدًا تحمل بالفعل transfer_fee_extension_auth على تلك السلطة من إنشاء العملة، لذا يتم تخطي الخطوة. الحراسة هي ما يمنع الهجرة من الانعكاس على تلك العملات — لا يمكن لـ PDA التوقيع على سلطة لم تعد تحتفظ بها.
إذا كان transfer_fee_extension_auth هو Pubkey::default() في وقت الهجرة، فلا تتحرك السلطات ويبقيان مع PDA authority بشكل دائم. انظر platform-config.
يتم إصلاح إمداد العملة الأساسية من الإنشاء، وليس من التخرج. InitializeV2 و InitializeWithToken2022 تضرب الإمداد بالكامل في الخزان الأساسي ثم تلغي فورًا MintTokens في نفس التعليمة، لذا base_mint.mint_authority هو None لحياة الإطلاق بأكملها. الهجرة لا تلمسها. (وضعت الإصدارات السابقة من هذه الصفحة الإلغاء عند التخرج؛ كان ذلك خطأ.) السلطات الوحيدة التي يمكن للهجرة نقلها هي Token-2022 transfer-fee الموصوفة أدناه.
الشروط اللاحقة — BuyExactIn، BuyExactOut، SellExactIn، SellExactOut سترفض من هذه النقطة فصاعدًا مع PoolMigrated. مجموعة AMM الناتجة قانونية وتتداول مثل أي مجموعة AMM v4 / CPMM أخرى. الأخطاء الشائعة — PoolFunding، PoolMigrated، MigrateTypeNotMatch، InvalidCpSwapConfig، MathOverflow.

حسابات هجرة CPMM المتبقية

يجب على العملاء الذين يبنون MigrateToCpswap استخدام فهارس remaining_accounts الثابتة هذه: تتطلب التعليمة على الأقل عشرة حسابات متبقية. حسابات support-mint هي مدخلات CPI للقراءة فقط. اشتق كلا العنوانين حتى عندما لا يكون للعملة سجل دعم مهيأ. يجب تحديث المنشئين الأقدم الذين لا يزالون يضيفون حسابات قفل المنشئ أو يحذفون الفهارس 8–9.
تم التغيير في 2026-09. تنظيفان، لا أحدهما يغير منشئًا صحيحًا:
  • مسار CPMM المرخص الآن هو المسار الوحيد. اعتادت MigrateToCpswap على الاختيار بين InitializeCpSwap و InitializeCpSwapWithPermission بناءً على unix_timestamp >= get_upgrade_timestamp(). اختفى مساعد الطابع الزمني و CPI القديم، لذا ينطبق المسار المرخص — وبالتالي الحد الأدنى من عشرة حسابات — بدون شروط.
  • تم نقل ثلاثة قيود عنوان من هيكل الحساب إلى جسم التعليمة. platform_config و base_vault و quote_vault لا تزال مطلوبة للمطابقة مع القيم المخزنة على PoolState، لكن عدم التطابق الآن يتم رفعه بواسطة require_keys_eq! بدلاً من قيد Anchor address =. الفحص معادل؛ فقط سطح الخطأ يختلف — تحصل على RequireKeysEqViolated (2502) العام من Anchor بدلاً من ConstraintAddress (2012)، ويتم الإبلاغ عنه بدون اسم حساب. حدّث أي معالجة خطأ طابقت على 2012 لهذه الحسابات الثلاثة.

برامج رمز هجرة CPMM

MigrateToCpswap يأخذ كلا برنامجي الرمز بدون شروط ويعرف أي واحد يمتلك كل عملة بنفسه. تمت إعادة تسمية حسابات برنامج الرمز الخاصة به وفقًا لذلك: يحلان محل base_token_program السابق (أي برنامج امتلك العملة الأساسية) و quote_token_program (دائما قديم). المواضع لم تتغير، لذا هذا تغيير قيمة وليس تغيير تخطيط — لكن القيمتين قريبتان من الانعكاس، والمنشئ الذي يستمر في تمرير زوجه القديم سيوفر Token-2022 حيث يكون البرنامج القديم مطلوبًا بمجرد أن تكون أي عملة عملة Token-2022. البرنامج القديم مطلوب حتى عندما لا تستخدم أي عملة، لأن عملة LP الخاصة بـ CPMM ومفتاح رسوم NFT السيولة المقفلة يعيشان دائمًا عليها.

قائمة السماح GlobalConfig للمنصة

PlatformConfig.restrict_global_config يتحكم في الفحص:
  • 0: تقبل المنصة أي GlobalConfig صحيح بخلاف ذلك؛ لا يلزم حساب السماح.
  • 1: يجب على Initialize و InitializeV2 و InitializeWithToken2022 تضمين PlatformAllowConfig المطابق في أي مكان في remaining_accounts.
ينشئ مسؤول المنصة أو يغلق PDA باستخدام CreatePlatformAllowConfig و ClosePlatformAllowConfig. بذوره هي [b"platform_allow_config", platform_config, global_config]. تم إيقاف تعليمات PlatformGlobalAccess المدارة من قبل الإدارة السابقة و PDA.

قواعد معاملات الإطلاق للمنصة

تدير أربع تعليمات حساب PlatformCurveRule واحد. يتم توقيع جميعها بواسطة PlatformConfig.curve_rule_manager أو مسؤول المنصة — يقبل البرنامج الإدارة بإعادة اشتقاق PDA PlatformConfig من الموقّع، لذا لا يثبت حساب منفصل. الموقّع الذي ليس أحدهما يُرجع InvalidCurveRuleAuthority. platform_curve_rule هو PDA في [b"platform_curve_rule", platform_config, global_config].
  • Create يخصص الحساب الذي لا يحتوي على مجموعة. تلك الحالة لا تقيد أي شيء.
  • Update يدرج المجموعة مع group_id ذلك، مستبدلاً بالكامل إذا كانت موجودة. يعيد حجم الحساب ليناسب، لذا يضيف الموقّع الإيجار الذي ينمو به ويتلقى الإيجار الذي ينكمش به. مجموعة جديدة تتجاوز العاشرة تُرجع CurveRuleGroupsExceeded؛ أكثر من 25 قيد، حقل غير معروف أو عامل، أو نفس زوج (field, op) مرتين في مجموعة واحدة تُرجع InvalidCurveRuleConstraint؛ الحقول الأربعة المشتقة من TotalSellA على إعدادات غير ثابتة الناتج تُرجع CurveRuleFieldNotSupportedByCurve.
  • Remove يسقط مجموعة واحدة حسب المعرّف، ينكمش الحساب ويسترد الفرق. معرّف غير معروف يُرجع CurveRuleGroupNotExist.
  • Close يعيد الإيجار بالكامل إلى الموقّع. الإعدادات غير مقيدة بعد ذلك حتى عندما يبقى restrict_curve_param 1.
لا يغير أي من الأربعة ما إذا كانت القواعس مفروضة. هذا هو UpdatePlatformConfig::RestrictCurveParam(0 | 1)، والذي يمكن فقط لمسؤول المنصة استدعاؤه. على مسار الإطلاق. بينما restrict_curve_param هو 1، يتطلب InitializeV2 و InitializeWithToken2022 PDA القاعدة في remaining_accounts — بما في ذلك عندما لا توجد، بحيث لا يمكن حذفها تخطي الفحص. الحساب المفقود هو NotEnoughRemainingAccounts؛ إطلاق لا يرضي أي مجموعة هو CurveParamNotMatchPlatformRule. يعمل الفحص قبل حدود GlobalConfig الخاصة به ويمكن فقط تضييقها. النموذج والكتيبات: products/launchlab/curve-rules. كلا الخطأين قابلان للتجنب من جانب العميل — يعكس SDK هذا الفحص كدالة نقية، انظر تحقق قبل الإرسال.

CollectFee

مسح إداري لرسوم البروتوكول المتراكمة على إطلاق واحد. الوسائط — لا أحد. الحسابات
يأتي quote_mint قبل recipient_token_account هنا — بعكس ClaimCreatorFee و ClaimPlatformFee و ClaimPlatformFeeFromVault، التي تضع المستقبِل أولاً كلها. وللخانتين نوعان مختلفان في Anchor (Mint مقابل TokenAccount)، لذا فإن تبديلهما يفشل في إلغاء التسلسل في وقت التشغيل ويُقرأ كأنه خطأ حساب خاطئ. و CollectMigrateFee لها الترتيب نفسه الذي لـ CollectFee.
التأثير — نقل pool_state.quote_protocol_fee من quote_vault إلى recipient_token_account، ثم صفر العداد. قابل للاستدعاء في أي وقت بعد الشراء الأول.

CollectMigrateFee

مسح إداري لرسم الهجرة المتراكم عند التخرج. نفس شكل الحساب مثل CollectFee مع migrate_fee_owner كموقّع (بدلاً من protocol_fee_owner) و pool_state.migrate_fee كعداد مصرف.

ClaimCreatorFee

مسح لكل منشئ للرسوم المتراكمة للمنشئ عبر كل إطلاق يمتلكه المنشئ الذي يستخدم نفس عملة الاقتباس. يصرف خزان رسوم لكل منشئ، وليس خزان لكل مجموعة. الوسائط — لا أحد. الحسابات التأثير — نقل الرصيد الكامل لـ creator_fee_vault إلى recipient_token_account. ينعكس مع فحص require-greater-than-zero إذا كان الخزان فارغًا.

ClaimPlatformFee

مسح لكل منصة يصرف خزان الاقتباس الخاص بالإطلاق مباشرة. استخدم هذا عندما تريد منصة المطالبة بحصتها لإطلاق محدد واحد دون المرور عبر خزان المنصة المجمع. الوسائط — لا أحد. الحسابات التأثير — نقل pool_state.platform_fee من quote_vault إلى recipient_token_account، صفر العداد.

ClaimPlatformFeeFromVault

مسح مجمع لكل منصة. يصرف خزان رسوم عملة الاقتباس لكل منصة الذي يتراكم الرسوم من كل إطلاق موجه عبر المنصة. الوسائط — لا أحد. الحسابات التأثير — نقل الرصيد الكامل لـ platform_fee_vault إلى recipient_token_account. ينعكس إذا كان الخزان فارغًا.

CollectExcessLamports

مسح إداري لـ lamports الجالسة فوق الحد الأدنى المعفي من الإيجار على الحسابات التي يتحكم فيها LaunchLab. تمت الإضافة في ترقية 2026-09 حتى يتمكن البروتوكول من استرجاع الإفراط في التمويل الذي يتركه SIMD-0437 rent reduction خلفه على الحسابات التي تم إنشاؤها قبل كل خطوة. فقط الزيادة تتحرك. أرصدة الرموز وبيانات الحساب والمالكون وحالة المنحنى والاستحقاق لم تتغير، والتعليمة هي عدم عملية ضد حساب بالفعل في الحد الأدنى — لذا من الآمن إعادة التشغيل بعد كل خطوة طرح. الوسائط — لا أحد. الحسابات