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

جرد الحسابات

يعيد SDK raydium.launchpad.getLaunchById PoolState بالإضافة إلى علم يشير إلى ما إذا كان الإطلاق قد تخرج؛ إذا كان الأمر كذلك، يتم تضمين معرف المجموعة بعد الهجرة.

PoolState

حالة الجذر لكل إطلاق. أسماء الحقول أدناه تطابق بنية Rust على السلسلة (states/pool.rs)؛ تم تبسيط بعض القيم لسهولة القراءة — استشر المصدر للتخطيط الدقيق للذاكرة.
قيم PoolStatus (من Anchor IDL):
الحقول الموجهة للمدمج:
  • status — ثلاث قيم، رتيبة (Funding → Migrate → Migrated). القراءات آمنة دائماً؛ الكتابات مبوابة.
  • 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 لإطلاق.
  • mint_authority على base_mint لكل إطلاق (قبل التخرج).
  • الموقع على CPI تخرج CPMM، وعلى تخرج AMM v4 القديم للحالة الموجودة.
  • الموقع على تحويلات ClaimVestedToken خارج الخزانة الأساسية.
  • transfer_fee_config_authority على TransferFeeConfig لنعت أساس Token-2022، لكل المرحلة قبل التخرج — و withdraw_withheld_authority أيضاً، لكن فقط عندما لم تعين المنصة PlatformConfig.transfer_fee_extension_auth.
يتم إلغاء mint_authority فوراً بعد استدعاء MigrateToCpswap أو MigrateToAmm القديم، لذا يتم إصلاح العرض بشكل دائم. اثنان من 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 ينتهي بها الحال مع خزانة واحدة لكل نعت، كما فعلت بالفعل لنعتي اقتباس قديمين مختلفين. نمط الخزانة المجمعة هو ما يسمح لمنشئ أو منصة عالية الحجم بإطفاء تكلفة الإيجار لتراكم الرسوم عبر العديد من الإطلاقات.

خزانة الاقتباس ↔ 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) والمفكك يجب ألا يفترض حجماً ثابتاً. يتم ORing المجموعات: يُسمح بإطلاق بمجرد أن تحتفظ مجموعة واحدة بجميع قيودها. صفر مجموعات يعني لا تقييد. اقرأها فقط عندما يكون 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.