Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
توثق هذه الصفحة رسم البياني للحسابات لكل إطلاق: PoolState (حساب الحالة الجذري لإطلاق واحد)، وخزائنه الاثنتان، وسلطة PDA، والمراجع اللاحقة للتخرج التي يكتسبها عند استقرار الإطلاق.للحصول على الإعدادات على مستوى البروتوكول التي تحد من كل إطلاق، انظر products/launchlab/global-config. للحصول على الطبقة الإضافية لكل منصة، انظر products/launchlab/platform-config. لحسابات الاستحقاق (VestingSchedule على PoolState، VestingRecord لكل مستفيد)، انظر products/launchlab/vesting.

جرد الحسابات

يقرأ SDK هذا عبر raydium.launchpad.getRpcPoolInfo({ poolId })، التي تُعيد PoolState المفكوك مع GlobalConfig المرتبط مُلحقًا باسم configInfogetRpcPoolsInfo({ poolIdList }) للشكل المجمّع). ولا وجود لـ getLaunchById. ومعرّف المجمع نفسه هو PDA من (programId, mintA, mintB)getPdaLaunchpadPoolId.

PoolState

حالة الجذر لكل إطلاق. أسماء الحقول أدناه تطابق بنية Rust على السلسلة (states/pool.rs)؛ تم تبسيط بعض القيم لسهولة القراءة — استشر المصدر للحصول على تخطيط الذاكرة الدقيق.
قيم PoolStatus (أسماء المتغيرات في IDL هي Fund / Migrate / Trade):
الحقول الموجهة للمدمج:
  • status — ثلاث قيم، رتيبة (FundMigrateTrade). القراءات آمنة دائماً؛ الكتابات مقيدة. وتتطلب ClaimVestedToken الحالة Trade.
  • real_base, real_quote — حالة المنحنى الحالية. مع virtual_base / virtual_quote فهي كافية لحساب سعر الفائدة دون لمس الخزائن. انظر bonding-curve.
  • total_base_sell مقابل real_base — نسبة “التقدم نحو التخرج” لواجهات المستخدم.
  • migrate_type — يتطلب التهيئة الجديدة 1 (CPSWAP). يبقى 0 المخزن ذا معنى فقط لإطلاق موجود تم إنشاؤه قبل فرض CPMM فقط.
  • amm_creator_fee_on — يختار creator_fee_on = OnlyQuoteToken (0) أو BothToken (1) على مجموعة CPMM بعد التخرج. لا يختار هدف الهجرة. انظر creator-fees.
  • token_program_flag — حقل بت، وليس منطقي. Bit0 هو نعت الأساس و bit1 هو نعت الاقتباس، كل منهما 0 لـ SPL Token و 1 لـ Token-2022، لذا يأخذ البايت أربع قيم: 0 (كلاهما قديم)، 1 (Token-2022 أساس)، 2 (Token-2022 اقتباس)، 3 (كلاهما Token-2022). اقرأ نعت واحد مع (token_program_flag >> bit) & 1. مقارنة البايت بالكامل مقابل 0 لتصنيف نعت الأساس تحل 2 إلى البرنامج الخاطئ. كان Bit1 ثابتاً 0 حتى تم دعم نعات اقتباس Token-2022.
  • quote_protocol_fee / platform_fee / migrate_fee — ثلاثة عدادات رسوم مستقلة. لكل منها تعليمة مطالبة خاصة بها؛ انظر instructions.
  • vesting_schedule — موجود على كل PoolState لكن غير نشط عندما total_locked_amount == 0. انظر vesting للدورة الحياة الكاملة.

سلطة PDA

يستخدم LaunchLab سلطة PDA واحدة عبر جميع الإطلاقات، مشتقة بدون بذرة لكل إطلاق:
هذا PDA الواحد هو:
  • السلطة على base_vault و quote_vault لكل إطلاق.
  • لا شيء على base_mint — يتم إلغاء سلطة النعت قبل عودة InitializeV2 (انظر أدناه).
  • الموقّع على CPI تخرج CPMM، وعلى تخرج AMM v4 القديم للحالة الموجودة.
  • الموقّع على تحويلات ClaimVestedToken خارج base vault.
  • transfer_fee_config_authority على TransferFeeConfig لنعت أساس Token-2022، لمرحلة ما قبل التخرج بالكامل — و withdraw_withheld_authority أيضاً، لكن فقط عندما تترك المنصة PlatformConfig.transfer_fee_extension_auth غير محدد.
يتم إلغاء mint_authority في تعليمة التهيئة، وليس عند التخرج: InitializeV2 و InitializeWithToken2022 تصك العرض الكامل في base_vault ثم تعيّن MintTokens إلى None في نفس التعليمة. العرض ثابت إذاً من لحظة وجود الإطلاق، والهجرة ليس لها خطوة سلطة نعت. تأثير جانبي: لا أحد يمكنه التوقيع على نعت الأساس، لذا لا يمكن استرجاع إيجاره بواسطة CollectExcessLamports. اثنان من PDAs الإضافية يحكمان خزائن الرسوم:
هذه توقّع التحويل خارج خزائن الرسوم المقابلة أثناء ClaimCreatorFee و ClaimPlatformFeeFromVault.

نعت الأساس

تم إنشاؤه بشكل مضمّن بواسطة Initialize مع:
  • mint_authority = authority (ملغى عند التخرج).
  • freeze_authority = None.
  • supply = supply، مصكوك بالكامل في base_vault.
  • decimals اختاره المنشئ عند Initialize (عادة 6).
لأن العرض الكامل مصكوك مسبقاً، base_mint.supply ثابت لحياة الإطلاق. عمليات شراء المنحنى تنقل الرموز من base_vault إلى المشتري، لكن لا تستدعي mint_to. Initialize / InitializeV2 تنشئ نعات أساس SPL Token. تعليمة InitializeWithToken2022 المخصصة تسمح بأن يكون نعت الأساس نعت Token-2022 (مع TransferFeeConfig اختياري). جميع مسارات التهيئة الثلاثة تتطلب تخرج CPMM. عندما ترفق InitializeWithToken2022 TransferFeeConfig، يتم إنشاء النعت مع transfer_fee_config_authority = authority و withdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth، العودة إلى authority عندما لم تعيّن المنصة هذا الحقل. يتم إعادة تعيين كلا السلطتين إلى مفتاح المنصة عند التخرج، الجانب الانسحاب فقط إذا كان PDA لا يزال يحتفظ به. انظر platform-config. نعت الاقتباس مستقل عن نعت الأساس وقد يكون بنفسه نعت Token-2022 — InitializeV2 و InitializeWithToken2022 يقبلان أي برنامج في فتحة برنامج الاقتباس. Initialize المهجور لا يفعل: حساب برنامج الاقتباس الخاص به لا يزال مكتوباً لـ SPL Token، لذا يمكن فقط إطلاق إعداد نعت اقتباس Token-2022 من خلال الاثنين الآخرين. لا يتم إنشاء نعت الاقتباس بواسطة LaunchLab؛ إنه ما يسميه GlobalConfig.quote_mint. انظر global-config و reference/token-2022-support.

الخزائن

كل من base_vault و quote_vault هما حسابات رموز يملكها LaunchLab authority PDA، كل منهما تم إنشاؤه على البرنامج الذي يمتلك نعته الخاص — لذا يمكن لإطلاق أن يكون لديه خزانة أساس قديمة وخزانة اقتباس Token-2022، أو أي مزيج آخر. token_program_flag يسجل أي منهما. يتم تخزين العناوين على PoolState ويمكن أيضاً اشتقاقها:
(تحقق من بادئات البذور الدقيقة من بنية حسابات Initialize في المصدر قبل الاعتماد على الاشتقاق في الإنتاج.)

خزائن الرسوم

اثنان من PDAs يجمعان الرسوم عبر الإطلاقات:
  • خزانة رسوم المنشئ — PDA عند البذور [creator, quote_mint]. كل إطلاق يكسب رسوم منشئ على نفس نعت الاقتباس يصب في نفس الخزانة. المنشئ يمسحها عبر ClaimCreatorFee.
  • خزانة رسوم المنصة — PDA عند البذور [platform_config, quote_mint]. كل إطلاق موجه عبر نفس المنصة التي تستخدم نفس نعت الاقتباس يصب في نفس الخزانة. platform_fee_wallet للمنصة يمسحها عبر ClaimPlatformFeeFromVault. هناك أيضاً متغير مسح لكل إطلاق (ClaimPlatformFee) يسحب من quote_vault للإطلاق مباشرة دون المرور عبر الخزانة المجمعة.
كلاهما يتم إنشاؤه بكسل على أول مبادلة تتراكم رسوم، على أي برنامج يمتلك نعت الاقتباس. منشئ أو منصة تشغل إطلاقات ضد كل من نعت اقتباس قديم و Token-2022 ينتهي بها الحال مع خزانة واحدة لكل نعت، كما كانت بالفعل لنعتي اقتباس قديمين مختلفين. نمط الخزانة المجمعة هو ما يسمح لمنشئ أو منصة عالية الحجم بإطفاء تكلفة الإيجار لتراكم الرسوم عبر العديد من الإطلاقات.

Quote vault ↔ real_quote

quote_vault.balance و PoolState.real_quote يجب أن يبقيا متزامنين. يمكنهما الانجراف بحد أقصى مجموع عدادات الرسوم الثلاثة المعلقة (quote_protocol_fee, platform_fee, migrate_fee)، التي تجلس في الخزانة لكنها تنتمي إلى عدادات الرسوم وليس احتياطي المنحنى. رياضيات المنحنى تستخدم دائماً real_quote، أبداً رصيد الخزانة الخام. ثابت ما قبل التخرج:

PlatformCurveRule

حساب واحد لكل زوج (PlatformConfig, GlobalConfig)، يحتفظ بأشكال الإطلاق التي تسمح بها تلك المنصة على هذا الإعداد. بذور PDA هي [b"platform_curve_rule", platform_config, global_config].
يتم إنشاء الحساب بدون مجموعة وتغيير حجمه عند كل تغيير مجموعة، لذا طوله 150 + Σ(14 + 18 × constraints) والمفكّكات يجب ألا تفترض حجماً ثابتاً. المجموعات مرتبطة بـ OR: يُسمح بإطلاق بمجرد أن تحتفظ جميع قيود مجموعة واحدة. صفر مجموعات يعني لا تقييد. اقرأها فقط عندما يكون PlatformConfig.restrict_curve_param المالك 1 — عند 0 يتجاهل البرنامج الحساب، وقد تكون هناك قاعدة قديمة جالسة هناك. معرفات الحقول والمشغلات والكتيبات موجودة في products/launchlab/curve-rules.

انتقالات دورة حياة الحساب

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

المصادر:
  • raydium-launch/programs/launchpad/src/states/pool.rsPoolState, PoolStatus, VestingSchedule, AmmCreatorFeeOn.
  • raydium-launch/programs/launchpad/src/lib.rs — ثوابت بذور PDA (AUTH_SEED, CREATOR_FEE_VAULT_AUTH_SEED, PLATFORM_FEE_VAULT_AUTH_SEED).
  • وحدة Raydium SDK v2 launchpad.