> ## 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.

# حسابات LaunchLab

> PoolState (جذر الإطلاق الواحد)، والمخزنان الأساسي والاقتباسي، PDA السلطة، والرسم البياني الصغير لحسابات الإطلاق الواحد. GlobalConfig على مستوى البروتوكول و PlatformConfig على مستوى المنصة يقيمان في صفحات منفصلة.

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

  [عرض النسخة الإنجليزية →](/products/launchlab/accounts)
</Info>

<Info>
  توثق هذه الصفحة رسم البيان الحسابي **لكل إطلاق**: `PoolState` (حساب الحالة الجذري لإطلاق واحد)، ومخزناه الاثنان، PDA السلطة، والمراجع التي يكتسبها بعد استقرار الإطلاق.

  لمعرفة إعدادات البروتوكول على مستوى الكل التي تحدد كل إطلاق، اطلع على [`products/launchlab/global-config`](/ar/products/launchlab/global-config). للطبقة الإضافية لكل منصة، اطلع على [`products/launchlab/platform-config`](/ar/products/launchlab/platform-config). لحسابات الاستحقاق (`VestingSchedule` على `PoolState`، و`VestingRecord` لكل مستفيد)، اطلع على [`products/launchlab/vesting`](/ar/products/launchlab/vesting).
</Info>

## جرد الحسابات

| الحساب                                                     | المالك                 | الغرض                                                                                                                  |
| ---------------------------------------------------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| [`GlobalConfig`](/ar/products/launchlab/global-config)     | برنامج LaunchLab       | قواعد البروتوكول: الرسوم، حدود الإمدادات، محافظ الهجرة. واحد لكل `(curve_type, index)`.                                |
| [`PlatformConfig`](/ar/products/launchlab/platform-config) | برنامج LaunchLab       | طبقة إضافية لكل منصة: العلامات التجارية، رسوم المنصة، تقسيم NFT عند التخرج، قائمة بيضاء لشكل المنحنى.                  |
| `PoolState`                                                | برنامج LaunchLab       | حالة جذر الإطلاق الواحد: الإصدارات، المخزن، معاملات المنحنى، عدادات البيع، عدادات الرسوم، جدول الاستحقاق، حالة التخرج. |
| `authority`                                                | برنامج LaunchLab       | PDA واحد عند بذرة `[b"vault_auth_seed"]` يمتلك المخازن عبر جميع الإطلاقات ويوقع CPI بعد التخرج.                        |
| `base_vault`                                               | SPL Token / Token-2022 | مخزن الإطلاق الواحد يحتفظ بالرموز الأساسية غير المباعة.                                                                |
| `quote_vault`                                              | SPL Token              | مخزن الإطلاق الواحد يحتفظ برموز الاقتباس المتراكمة.                                                                    |
| [`VestingRecord`](/ar/products/launchlab/vesting)          | برنامج LaunchLab       | سجل التحرر المتدرج + المشروط لكل مستفيد. اختياري.                                                                      |
| `creator_fee_vault`                                        | SPL Token              | مخزن الرسوم المستحقة لكل منشئ + لكل رمز اقتباس، يتم مسحه بواسطة `ClaimCreatorFee`.                                     |
| `platform_fee_vault`                                       | SPL Token              | مخزن الرسوم المستحقة لكل منصة + لكل رمز اقتباس، يتم مسحه بواسطة `ClaimPlatformFeeFromVault`.                           |
| (بعد التخرج) `cpmm_pool_state` *أو* `amm_pool_state`       | برنامج CPMM / AMM v4   | الـ pool الذي أنشأته `MigrateToCpswap` / `MigrateToAmm`.                                                               |
| (بعد التخرج) Fee Key NFT                                   | برنامج LP-Lock         | يغلف حصة المنشئ من LP عند تخرج CPMM؛ يخول حامله الحصول على `ClaimCreatorFee` على pool CPMM.                            |

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

## `PoolState`

حالة جذر الإطلاق الواحد. أسماء الحقول أدناه تتطابق مع struct Rust على السلسلة (`states/pool.rs`)؛ بعض القيم مبسطة من أجل الوضوح — استشر المصدر لمخطط الذاكرة الدقيق.

```rust theme={null}
// states/pool.rs (abridged)
pub struct PoolState {
    pub epoch:                     u64,        // recent_epoch tracker
    pub auth_bump:                 u8,
    pub status:                    u8,         // PoolStatus enum
    pub base_decimals:             u8,
    pub quote_decimals:            u8,
    pub migrate_type:              u8,         // 0 = AMM v4, 1 = CPMM
    pub supply:                    u64,        // total base tokens (no decimals)
    pub total_base_sell:           u64,        // base supply allocated to the curve
    pub virtual_base:              u64,        // virtual-reserve seed
    pub virtual_quote:             u64,        // virtual-reserve seed
    pub real_base:                 u64,        // base sold so far
    pub real_quote:                u64,        // quote raised so far (excl. fees)
    pub total_quote_fund_raising:  u64,        // graduation threshold in quote

    pub quote_protocol_fee:        u64,        // accrued, pending CollectFee
    pub platform_fee:              u64,        // accrued, pending ClaimPlatformFee
    pub migrate_fee:               u64,        // accrued, pending CollectMigrateFee
    pub vesting_schedule:          VestingSchedule,

    pub global_config:             Pubkey,
    pub platform_config:           Pubkey,
    pub creator:                   Pubkey,
    pub base_mint:                 Pubkey,
    pub quote_mint:                Pubkey,
    pub base_vault:                Pubkey,
    pub quote_vault:               Pubkey,

    pub amm_creator_fee_on:        u8,         // 0 = QuoteToken, 1 = BothToken (CPMM-only)
    pub token_program_flag:        u8,         // bit flags for SPL Token vs Token-2022
    pub padding:                   [u8; 54],
}

#[derive(Default, Debug, Clone)]
pub struct VestingSchedule {
    pub total_locked_amount:    u64,
    pub cliff_period:           u64,
    pub unlock_period:          u64,
    pub start_time:             u64,           // set at graduation
    pub allocated_share_amount: u64,           // running sum across VestingRecords
}
```

قيم `PoolStatus` (من Anchor IDL):

```
0 = Funding         — قبول الشراء / البيع؛ أسفل quote_reserve_target
1 = Migrate         — تم الوصول إلى quote_reserve_target؛ في انتظار MigrateTo*
2 = Migrated        — تم بالفعل تنفيذ MigrateTo*؛ ساعة الاستحقاق تعمل
```

الحقول المواجهة للمدمج:

* **`status`** — ثلاث قيم، رتيبة (Funding → Migrate → Migrated). القراءات آمنة دائماً؛ الكتابات محمية.
* **`real_base`**، **`real_quote`** — حالة المنحنى الحالية. مدمجة مع `virtual_base` / `virtual_quote` يكفيان لحساب سعر البقعة دون اللمس المخازن. انظر [`bonding-curve`](/ar/products/launchlab/bonding-curve).
* **`total_base_sell`** مقابل `real_base` — نسبة "التقدم نحو التخرج" لواجهات المستخدم.
* **`migrate_type`** — يختار ما إذا كانت `MigrateToAmm` أو `MigrateToCpswap` هي مسار التخرج الصحيح. يجب أن تستخدم إطلاقات Token-2022 CPMM.
* **`amm_creator_fee_on`** — ذات معنى فقط عند التخرج إلى CPMM. يختار `creator_fee_on = OnlyQuoteToken` (`0`) أو `BothToken` (`1`) على pool CPMM بعد التخرج. *على الرغم من الاسم، يؤثر هذا التعداد بشكل فعال على هدف الهجرة أيضاً — `BothToken` يقترن مع `MigrateToAmm` في الممارسة العملية الحالية؛ `QuoteToken` مع `MigrateToCpswap`.* انظر [`creator-fees`](/ar/products/launchlab/creator-fees).
* **`quote_protocol_fee` / `platform_fee` / `migrate_fee`** — ثلاثة عدادات رسوم مستقلة. لكل منها تعليمة مطالبة خاصة بها؛ انظر [`instructions`](/ar/products/launchlab/instructions).
* **`vesting_schedule`** — موجود على كل `PoolState` لكن غير نشط عندما `total_locked_amount == 0`. اطلع على [`vesting`](/ar/products/launchlab/vesting) لدورة الحياة الكاملة.

## PDA السلطة

يستخدم LaunchLab PDA سلطة **واحد** عبر جميع الإطلاقات، مشتق بدون بذرة خاصة بالإطلاق:

```ts theme={null}
const LAUNCHLAB_PROGRAM_ID = new PublicKey("<LAUNCHLAB_ID>"); // see reference/program-addresses

const [authority, bump] = PublicKey.findProgramAddressSync(
  [Buffer.from("vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);
```

هذا PDA الواحد هو:

* السلطة على `base_vault` و `quote_vault` لكل إطلاق.
* `mint_authority` على `base_mint` لكل إطلاق (قبل التخرج).
* الموقّع على CPI بعد التخرج إلى AMM v4 / CPMM (`MigrateTo*`).
* الموقّع على تحويلات `ClaimVestedToken` خارج مخزن الأساس.

يتم إلغاء `mint_authority` فوراً بعد `MigrateToAmm` / `MigrateToCpswap` بحيث يكون الإمداد ثابت دائماً.

PDA إضافيان يحمياān مخازن الرسوم:

```ts theme={null}
const [creatorFeeVaultAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("creator_fee_vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);

const [platformFeeVaultAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("platform_fee_vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);
```

هذان يوقعان نقل خارج مخزن الرسوم المقابل أثناء `ClaimCreatorFee` و `ClaimPlatformFeeFromVault`.

## Base mint

تم إنشاؤه بشكل مضمن بواسطة `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` برمز base mint يكون Token-2022 mint (مع اختياري `TransferFeeConfig`)؛ رمز الاقتباس لا يزال SPL Token. يجب أن تتخرج إطلاقات Token-2022 إلى pool CPMM لأن AMM v4 يدعم فقط مخازن SPL Token.

## المخازن

كلا من `base_vault` و `quote_vault` عبارة عن حسابات SPL Token قياسية مملوكة لـ `authority` PDA الخاص بـ LaunchLab. يتم تخزين العناوين على `PoolState` ويمكن أيضاً اشتقاقها:

```ts theme={null}
const [baseVault] = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), baseMint.toBuffer()],
  LAUNCHLAB_PROGRAM_ID,
);
const [quoteVault] = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), quoteMint.toBuffer()],
  LAUNCHLAB_PROGRAM_ID,
);
```

(تحقق من بادئات البذور الدقيقة من struct حسابات `Initialize` في المصدر قبل الاعتماد على اشتقاق في الإنتاج.)

## مخازن الرسوم

يجمع PDA اثنان الرسوم عبر الإطلاقات:

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

يسمح نمط المخزن المجمع لمنشئ أو منصة عالية الحجم بإطفاء تكلفة الإيجار لتراكم الرسوم عبر العديد من الإطلاقات.

## Quote vault ↔ `real_quote`

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

ثابت قبل التخرج:

```
quote_vault.balance ==
   real_quote
 + quote_protocol_fee
 + platform_fee
 + migrate_fee
```

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

| الحدث                                   | الحالة                       | `real_base` | `real_quote`            | pool بعد التخرج                                |
| --------------------------------------- | ---------------------------- | ----------- | ----------------------- | ---------------------------------------------- |
| `Initialize`                            | Funding                      | 0           | 0                       | —                                              |
| `BuyExactIn` / `BuyExactOut`            | Funding                      | `+base_out` | `+quote_in_after_fee`   | —                                              |
| `SellExactIn` / `SellExactOut`          | Funding                      | `−base_in`  | `−quote_out_before_fee` | —                                              |
| `MigrateToAmm` / `MigrateToCpswap`      | Funding → Migrate → Migrated | (مجمد)      | (مجمد)                  | تم الإنشاء، تقسيم LP لكل `PlatformConfig`      |
| `ClaimCreatorFee` / `ClaimPlatformFee*` | أي                           | —           | —                       | يستنزف مخزن رسوم                               |
| `CreateVestingAccount`                  | Funding                      | —           | —                       | يزيد `vesting_schedule.allocated_share_amount` |
| `ClaimVestedToken`                      | Migrated only                | —           | —                       | يستنزف `base_vault`                            |

## الخطوات التالية

* [`products/launchlab/bonding-curve`](/ar/products/launchlab/bonding-curve) — الرياضيات وراء `real_base` ↔ `real_quote`.
* [`products/launchlab/instructions`](/ar/products/launchlab/instructions) — قوائم الحسابات لكل تعليمة.
* [`products/launchlab/global-config`](/ar/products/launchlab/global-config) — الربط على مستوى البروتوكول.
* [`products/launchlab/platform-config`](/ar/products/launchlab/platform-config) — طبقة المنصة الإضافية.
* [`products/launchlab/vesting`](/ar/products/launchlab/vesting) — ميكانيكا الإمدادات المقفولة.
* [`products/cpmm/accounts`](/ar/products/cpmm/accounts) — كيف يبدو `cpmm_pool_state` بعد التخرج.

المصادر:

* `raydium-launch/programs/launchpad/src/states/pool.rs` — `PoolState`, `PoolStatus`, `VestingSchedule`, `AmmCreatorFeeOn`.
* `raydium-launch/programs/launchpad/src/lib.rs` — ثوابت بذرة PDA (`AUTH_SEED`, `CREATOR_FEE_VAULT_AUTH_SEED`, `PLATFORM_FEE_VAULT_AUTH_SEED`).
* [وحدة `launchpad` من Raydium SDK v2](https://github.com/raydium-io/raydium-sdk-V2).
