هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
يعرّض LaunchLab مجموعة تعليمات محكمة: ستة استدعاءات موجهة للمستخدمين بالإضافة إلى عدد قليل من البدائيات الإدارية. يغلّف SDK جميعها؛ توثّق هذه الصفحة السطح الخام للمجمّعات وأدوات المراقبة والبرامج التي تحتاج إلى CPI.
جرد التعليمات
ينعكس الانقسام “ExactIn/ExactOut” في CPMM
SwapBaseInput / SwapBaseOutput — على السلسلة يكونان محددات تعليمات منفصلة برقم تقريبي مختلف قليلاً.
اختيار مسار التخرج. يجب أن تعيّن كل استدعاء Initialize و InitializeV2 و InitializeWithToken2022 جديد migrate_type = 1 (CPSWAP). أي محاولة لتهيئة مجموعة مرتبطة بـ AMM v4 جديدة تُرجع MigrateTypeNotMatch. amm_creator_fee_on يختار فقط ما إذا كانت رسوم منشئ CPMM الناتجة تنطبق على رمز الاقتباس أو كلا الرمزين؛ لا يختار برنامج الهدف.
يبقى MigrateToAmm قابلاً للاستدعاء لـ PoolState موجود تمت تهيئته باستخدام migrate_type = 0 قبل هذا التقييد. الإصدار لا يعيد كتابة حالة المجموعة الموجودة أو يزيل التعليمة القديمة.
برنامج رمز الاقتباس. قد يكون رمز الاقتباس مملوكًا لبرنامج SPL Token أو Token-2022. كل تعليمة تلمسه — CreateConfig و InitializeV2 و InitializeWithToken2022 وجميع التعليمات التجارية الأربع و CollectFee و CollectMigrateFee و ClaimCreatorFee و ClaimPlatformFee و ClaimPlatformFeeFromVault — تأخذ البرنامج المالك في فتحة حسابها. لم تتغير مواضع الحسابات؛ فقط القيمة المقبولة تغيرت. مرّر البرنامج الذي يملك فعلاً GlobalConfig.quote_mint، والذي يمكنك قراءته من بت PoolState.token_program_flag bit1 لإطلاق موجود (انظر accounts) أو من مالك حساب الرمز بخلاف ذلك.
Initialize المهجور هو الاستثناء: حسابه برنامج الاقتباس لا يزال مكتوبًا لـ SPL Token، لذا يجب إطلاق إعداد رمز اقتباس Token-2022 من خلال InitializeV2 أو InitializeWithToken2022.
MigrateToCpswap هو الاستثناء الآخر، في الاتجاه المعاكس — يأخذ كلا البرنامجين بدون شروط بدلاً من واحد لكل رمز. انظر حسابات الهجرة أدناه.
Initialize
إنشاء إطلاق جديد.
الوسائط
الشروط السابقة
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 = base_supply_max، الكل فيbase_vault.base_mint.mint_authority = launch_authority،freeze_authority = None.LaunchStateمهيأ معstatus = Active،base_sold = 0،quote_reserve_real = 0.quote_reserve_targetمحسوب من معاملات المنحنى +base_supply_graduation+buy_numerator(تقريبًا).- لـ
InitializeWithToken2022معTransferFeeConfigمرفق:transfer_fee_config_authority = launch_authority، وwithdraw_withheld_authority = PlatformConfig.transfer_fee_extension_authعندما يكون هذا الحقل معيّنًا، وإلاlaunch_authority. يُكتب جانب السحب عند إنشاء الرمز بالضبط حتى تتمكن المنصة من مسح الرسوم المحتفظ بها قبل التخرج. انظرplatform-config.
InvalidQuoteMint، FeeRateTooHigh، InvalidCurveParams، MathOverflow.
Buy (المتغير الكنسي: BuyExactIn)
يوفر المستخدم quote_in ثابت؛ يحسب المنحنى base_out.
الوسائط
الشروط السابقة
launch_state.status == Active.now ≥ open_time.user_quote_ata.balance ≥ quote_in.quote_in > 0.
- قسّم
quote_inإلىquote_in_after_feeوأجزاء الرسوم. - حل المنحنى بـ Newton للحصول على
base_outمن الاقتباس بعد الرسوم. require(base_out ≥ minimum_base_out)وإلا عكّسExceededSlippage.- انقل
quote_inمن المستخدم → الخزينة. انقلbase_outمن الخزينة → المستخدم. - حدّث
base_sold += base_out،quote_reserve_real += quote_in_after_fee × (lp_share / total_share). - حدّث عدادات الرسوم (
protocol_fees_quote،creator_fees_quote). state_data.num_buys += 1.- إذا كان
quote_reserve_real ≥ quote_reserve_targetبعد التحديث، يسلسل SDK عادةً تعليمةGraduateفي نفس المعاملة. البرنامج لا يتخرج تلقائيًا داخل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.
10000 نقطة أساس) لا يمكن عكسه ويعكّس مع CalculateOverflow على مسارات الإخراج الدقيق.
كلا رموز جانب التداول مقيدة أيضًا ببرنامج مرّر في فتحتها المطابقة، لذا base_token_program غير متطابق الآن يفشل بدلاً من تجاهله. انظر algorithms/token-2022-transfer-fees لرياضيات الرسوم الأساسية.
MigrateToAmm / MigrateToCpswap
تخرج إطلاق إلى مجموعة قابلة للتداول بمجرد أن يصل المنحنى إلى total_quote_fund_raising. الإطلاقات الجديدة هي CPMM فقط. يُحتفظ بـ MigrateToAmm للمجموعات الموجودة التي يكون migrate_type المخزن فيها 0.
من يوقّع
MigrateToAmm—migrate_to_amm_walletالمسجل علىGlobalConfigالملزم.MigrateToCpswap—migrate_to_cpswap_walletالمسجل علىGlobalConfigالملزم.
MigrateToAmm ثلاثة (بشكل أساسي معاملات سوق OpenBook التي يمرّرها البرنامج إلى AMM v4):
MigrateToCpswap لا يأخذ أي شيء.
التأثير (مشترك بين الاثنين)
- تحقق من
pool_state.status == Migrate(أي تم الوصول إلىquote_reserve_target). وإلا عكّس معPoolMigrated(كانت الحالة بالفعلMigrated) أوPoolFunding(لا تزال في التمويل). - تحقق من أن
pool_state.migrate_typeيطابق التعليمة (0لـ AMM،1لـ CPMM). وإلا عكّس معMigrateTypeNotMatch. - احسب الاحتياطيات بعد التخرج:
base_amount_out = base_vault.amount − vesting_schedule.total_locked_amountquote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
- CPI إلى برنامج الهدف (
AMM v4 Initialize2أوCPMM InitializeWithPermission) مع تلك الاحتياطيات لإنشاء مجموعة ما بعد التخرج. - لهجرات CPMM المنفذة بعد ترقية 2026-08-17، دمج
platform_scale + creator_scaleفي حصة LP مقفلة مملوكة للمنصة واحدة وأصدر على الأكثر مفتاح رسوم NFT واحد إلىplatform_nft_wallet. احرق بقيةburn_scale. قبل الترقية، كانتcreator_scaleمقفلة بشكل منفصل وذهب مفتاح الرسوم الخاص بها إلى منشئ الرمز. الهجرات التاريخية المكتملة لم تُعدّل. لتخرج AMM v4 القديم، يتبع توزيع LP تدفق التعليمة الموجود. - اسحب
base_mint.mint_authority(عيّن إلىNone). - اقلب
pool_state.status = Migrated، عيّنvesting_schedule.start_time = block_time + cliff_period.
TransferFeeConfig و PlatformConfig.transfer_fee_extension_auth غير افتراضي، الهجرة تعيد أيضًا سلطات هذا الامتداد إلى مفتاح المنصة:
transfer_fee_config_authorityيُعاد تعيينه دائمًا. PDA سلطة الإطلاق يحتفظ به لمرحلة ما قبل التخرج بأكملها، لذا هناك دائمًا شيء للنقل.WithheldWithdrawيُعاد تعيينه فقط عندما يحتفظ به PDA السلطة. الإطلاقات المنشأة من 2026-08-27 فما بعده تحمل بالفعلtransfer_fee_extension_authعلى تلك السلطة من إنشاء الرمز، لذا يُتخطى الخطوة. الحراسة هي ما يمنع الهجرة من الانعكاس على تلك الرموز — لا يمكن لـ PDA التوقيع على سلطة لم تعد تحتفظ بها.
transfer_fee_extension_auth هو Pubkey::default() في وقت الهجرة، لا تتحرك السلطات ولا تبقى كلاهما مع authority PDA بشكل دائم. انظر platform-config.
الشروط اللاحقة — BuyExactIn، BuyExactOut، SellExactIn، SellExactOut سترفض من هذه النقطة فصاعدًا مع PoolMigrated. مجموعة AMM الناتجة كنسية وتتداول مثل أي مجموعة AMM v4 / CPMM أخرى.
الأخطاء الشائعة — PoolFunding، PoolMigrated، MigrateTypeNotMatch، InvalidCpSwapConfig، MathOverflow.
حسابات هجرة CPMM المتبقية
يجب على العملاء الذين يبنونMigrateToCpswap استخدام فهارس remaining_accounts الثابتة هذه:
تتطلب التعليمة على الأقل عشرة حسابات متبقية على المسار المحدّث. حسابات دعم الرمز هي مدخلات CPI للقراءة فقط. اشتق كلا العنوانين حتى عندما لا يكون للرمز سجل دعم مهيأ. يجب تحديث المنشئين الأقدم الذين لا يزالون يضيفون حسابات قفل المنشئ أو يحذفون الفهارس 8–9.
برامج هجرة رموز 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وInitializeWithToken2022PlatformAllowConfigالمطابق في أي مكان فيremaining_accounts.
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يسقط مجموعة واحدة بـ id، ينكمش الحساب ويسترد الفرق. معرّف غير معروف يُرجعCurveRuleGroupNotExist.Closeيعيد الإيجار بأكمله إلى الموقّع. الإعداد غير مقيد بعد ذلك حتى عندما يبقىrestrict_curve_param1.
UpdatePlatformConfig::RestrictCurveParam(0 | 1)، الذي يمكن فقط لمسؤول المنصة استدعاؤه.
على مسار الإطلاق. بينما restrict_curve_param هو 1، تتطلب InitializeV2 و InitializeWithToken2022 PDA القاعدة في remaining_accounts — بما في ذلك عندما لا توجد، حتى لا يمكن حذفها لتخطي الفحص. حساب مفقود هو NotEnoughRemainingAccounts؛ إطلاق لا يرضي أي مجموعة هو CurveParamNotMatchPlatformRule. يعمل الفحص قبل حدود GlobalConfig الخاصة به ويمكن فقط تضييقها. نموذج وكتيبات: products/launchlab/curve-rules. كلا الخطأين قابلان للتجنب من جانب العميل — يعكس SDK هذا الفحص كدالة نقية، انظر تحقق قبل الإرسال.
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. ينعكس إذا كانت الخزينة فارغة.
تعليمات الاستحقاق وإعدادات المنصة
توثّق هذه على صفحات مخصصة لأن لكل منها نموذج حالة خاص بها:CreateVestingAccount،CreatePlatformVestingAccount،ClaimVestedTokenCreatePlatformConfig،UpdatePlatformConfig،CreatePlatformAllowConfig،ClosePlatformAllowConfigCreatePlatformCurveRule،UpdatePlatformCurveRule،RemovePlatformCurveRule،ClosePlatformCurveRuleCreateConfig،UpdateConfig
مصفوفة تغيير الحالة
أين تذهب بعد ذلك
products/launchlab/code-demos— أمثلة TypeScript لكل تعليمة.products/launchlab/accounts— شكل الحالة الكامل.reference/error-codes— تعداد خطأ LaunchLab.
- وحدة Raydium SDK v2
LaunchLab - مصدر برنامج Raydium LaunchLab

