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

> حسابات الإعدادات على مستوى البروتوكول التي تحكم كل إطلاق LaunchLab — معدلات الرسوم، الحدود الدنيا للعرض، سقوف معدلات القفل، محافظ الهجرة التي تتحكم في التخرج، وخطة الفهرسة لكل منحنى.

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

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

<Info>
  حساب `GlobalConfig` هو حساب الإعدادات على **مستوى البروتوكول**. يمكن أن يكون هناك عدة منها — مفهرسة حسب `(curve_type, index)` — وكل إطلاق يختار واحدًا بالضبط في وقت `Initialize`. تصبح القيم الموجودة على `GlobalConfig` المختار بعد ذلك حدودًا صارمة لمعاملات الإطلاق. للتخصيص على مستوى المنصة (معدل الرسوم لكل منصة، أشكال المنحنيات المسموحة، تقسيمات NFT عند التخرج)، انظر [`products/launchlab/platform-config`](/ar/products/launchlab/platform-config).
</Info>

## ما هو

`GlobalConfig` هو حساب PDA فريد لكل `(curve_type, index)` يحدد قواعد جانب البروتوكول التي يجب على كل إطلاق الامتثال لها:

* نوع منحنى الربط المسموح به (`curve_type`).
* معدل رسوم التداول الذي يفرضه المنحنى على كل عملية شراء وبيع.
* رسوم الهجرة المفروضة عند التخرج.
* حدود دنيا على العرض ومعدل القفل ومعدل البيع ومعدل الهجرة.
* عملة الاقتباس (عادة SOL المرقومة أو USDC) — الأصل الذي يشتري به المستخدمون.
* ثلاث محافظ على جانب البروتوكول: مالك رسوم البروتوكول، مالك رسوم الهجرة، ومحفظتا التحكم في الهجرة اللتان تصرحان بالتخرج إلى AMM v4 / CPMM.
* علم اختياري (`requires_platform_auth`) يتحكم في المنصات التي يمكنها استخدام هذا الإعداد.

يتم إنشاء حسابات `GlobalConfig` وتحديثها بواسطة مسؤول برنامج LaunchLab (مفتاح المسؤول المشفر الذي يُستخدم عبر برامج Raydium المستندة إلى Anchor — انظر [`reference/program-addresses`](/ar/reference/program-addresses)).

## التخطيط

```rust theme={null}
// states/config.rs
pub const GLOBAL_CONFIG_SEED: &str = "global_config";

#[account]
pub struct GlobalConfig {
    pub epoch:                   u64,         // recent_epoch tracker
    pub curve_type:              u8,          // 0 = ConstantProduct, 1 = FixedPrice, 2 = LinearPrice
    pub index:                   u16,         // discriminator within a curve_type
    pub migrate_fee:             u64,         // SOL paid on graduation
    pub trade_fee_rate:          u64,         // 1/1_000_000 of volume
    pub max_share_fee_rate:      u64,         // 100 bps cap on platform share fee
    pub min_base_supply:         u64,         // floor on Initialize supply (no decimals)
    pub max_lock_rate:           u64,         // ceiling on vesting locked / supply
    pub min_base_sell_rate:      u64,         // floor on base_supply_graduation / supply
    pub min_base_migrate_rate:   u64,         // floor on tokens that seed the post-graduation pool
    pub min_quote_fund_raising:  u64,         // floor on quote_reserve_target (with decimals)
    pub quote_mint:              Pubkey,
    pub protocol_fee_owner:      Pubkey,      // claims protocol fees via CollectFee
    pub migrate_fee_owner:       Pubkey,      // claims migration fees via CollectMigrateFee
    pub migrate_to_amm_wallet:   Pubkey,      // can sign MigrateToAmm
    pub migrate_to_cpswap_wallet:Pubkey,      // can sign MigrateToCpswap
    pub requires_platform_auth:  u8,          // 0/1 flag
    pub padding_alignment:       [u8; 7],
    pub padding:                 [u64; 15],
}
```

اشتقاق PDA:

```ts theme={null}
const [globalConfig] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    Buffer.from(quoteMint.toBytes()),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);
```

(تحقق من ترتيب البذور الدقيق من حساب on-chain قبل التوقيع — تعليمات `create_config` للبرنامج هي مصدر الحقيقة.)

## دلالات المجالات

### `curve_type` و `index`

معًا يقومان بتحديد `GlobalConfig` بشكل فريد. يوجد واحد `GlobalConfig` لكل زوج `(curve_type, index)`:

* `curve_type = 0` — منحنى الاحتياطي الافتراضي ذي المنتج الثابت. الخيار الافتراضي والأكثر استخدامًا.
* `curve_type = 1` — منحنى السعر الثابت.
* `curve_type = 2` — منحنى السعر الخطي.

`index` هو `u16` يسمح للمسؤول بنشر عدة تكوينات لكل نوع منحنى (على سبيل المثال، واحدة برسوم أضيق، وواحدة برفع اقتباس أعلى). في `Initialize`، يوفر الإطلاق زوج `(curve_type, index)` والبرنامج يحمل `GlobalConfig` المطابق.

### الرسوم

* `trade_fee_rate` — يُقاس بـ `1/1_000_000` من حجم التداول. يُطبق على كل عملية شراء وبيع على المنحنى. يقوم `protocol_fee_owner` بالمطالبة بحصته عبر `CollectFee`.
* `migrate_fee` — رسم ثابت بوحدات lamports (أو وحدات الاقتباس، حسب الإعداد) يُفرض مرة واحدة عند التخرج. يُطالب بها `migrate_fee_owner` عبر `CollectMigrateFee`.
* `max_share_fee_rate` — يُهيأ إلى `10_000` (100 bps). يحد من معدل رسوم حصة **المنصة** من `PlatformConfig` المُلزم (انظر [`platform-config`](/ar/products/launchlab/platform-config)). يفرض البرنامج `trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE`.

### حدود العرض والمعدل

تحد هذه الحدود من معاملات شكل المنحنى التي يمكن لإطلاق اختيارها في `Initialize`. إذا انتهكت `CurveParams` الخاصة بالمُنشئ أيًا منها، ستعود `Initialize` مع `InvalidInput`.

* `min_base_supply` — الحد الأدنى `supply` (بدون عشريات) الذي يمكن للمنحنى أن يعلنه. الافتراضي هو `10_000_000`.
* `max_lock_rate` — يُقاس بـ `1/1_000_000`؛ الافتراضي `300_000` (30%). يحد من الاستحقاق عبر `total_locked_amount <= supply * max_lock_rate / 1_000_000`.
* `min_base_sell_rate` — يُقاس بـ `1/1_000_000`؛ الافتراضي `200_000` (20%). يحد من `base_supply_graduation / supply` من الأسفل.
* `min_base_migrate_rate` — يُقاس بـ `1/1_000_000`؛ الافتراضي `200_000` (20%). يحد من عدد الرموز المتبقية لتجهيز المجموعة بعد التخرج.
* `min_quote_fund_raising` — الحد الأدنى `quote_reserve_target` الذي قد يعلنه إطلاق (مع عشريات). الافتراضي هو `30_000_000_000` وحدة من عملة الاقتباس.

### عملة الاقتباس ومحافظ البروتوكول

* `quote_mint` — الأصل الذي يشتري به المستخدمون. تستخدم معظم الإطلاقات SOL المرقومة (`So111…112`) أو USDC (`EPjF…Dt1v`). يُرتبط `GlobalConfig` الواحد بعملة اقتباس واحدة؛ الإطلاقات التي تحتاج إلى هدف اقتباس مختلف تستهدف `(curve_type, index)` مختلفًا.
* `protocol_fee_owner` — مفتاح عام يوقع `CollectFee` ويطالب برسوم البروتوكول المتراكمة على كل إطلاق مرتبط بهذا الإعداد. مخزنة على السلسلة؛ يمكن للمسؤول تدويرها عبر `UpdateConfig`.
* `migrate_fee_owner` — مفتاح عام يوقع `CollectMigrateFee`.

### محافظ الهجرة

يتطلب مساران التخرج موقعين مختلفين:

* `migrate_to_amm_wallet` — يجب أن يوقع `MigrateToAmm`. يُستخدم للإطلاقات ذات `migrate_type = 0` (التخرج إلى AMM v4 + OpenBook).
* `migrate_to_cpswap_wallet` — يجب أن يوقع `MigrateToCpswap`. يُستخدم لـ `migrate_type = 1` (التخرج إلى CPMM). تأخذ إطلاقات Token-2022 هذا المسار دائمًا.

عادة ما تُحتفظ بها بواسطة crank التخرج الذي تديره Raydium، لذا ينهي التخرج بعد وقت قصير من وصول المنحنى إلى العتبة بدلاً من الانتظار لاستدعاء المُنشئ.

### `requires_platform_auth`

علم `u8` (`0` = يمكن لأي شخص استخدام هذا الإعداد؛ غير صفري = فقط المنصات التي لديها PDA `PlatformGlobalAccess` صحيح قد تطلق ضده). عند التعيين، يجب على كل `Initialize` ضد هذا `GlobalConfig` أن يتضمن حساب `PlatformGlobalAccess` مطابق يثبت أن المنصة تم تفويضها مسبقًا عبر `CreatePlatformGlobalAccess` (تعليمات حصرية للمسؤول). انظر [`platform-config`](/ar/products/launchlab/platform-config) لميكانيكا جانب المنصة.

## الافتراضيات عند التهيئة

عندما يتم استدعاء `CreateConfig`، يقوم البرنامج بزراعة العديد من الحقول مع القيم الافتراضية المشفرة:

```rust theme={null}
self.max_share_fee_rate     = 10_000;                  // 100 bps
self.min_base_supply        = 10_000_000;              // no decimals
self.max_lock_rate          = 300_000;                 // 30%
self.min_base_migrate_rate  = 200_000;                 // 20%
self.min_base_sell_rate     = 200_000;                 // 20%
self.min_quote_fund_raising = 30_000_000_000;
self.requires_platform_auth = 0;
```

يعين المسؤول `curve_type` و `index` و `migrate_fee` و `trade_fee_rate` و `quote_mint` والمفاتيح العامة الأربعة للمحفظة بشكل صريح في وقت الإنشاء؛ يمكن ضبط القيم اللاحقة عبر `UpdateConfig`.

## كيف يختار إطلاق `GlobalConfig`

في `Initialize`، يمرر المُنشئ:

* `(curve_type, index)` لاختيار PDA `GlobalConfig` الذي سيتم تحميله.
* `CurveParams` الذي يصف شكل المنحنى (`supply`، `total_base_sell`، `total_quote_fund_raising`، `migrate_type`).
* `VestingParams` يصف العرض المقفول.
* `MintParams` للعملة الأساسية.

يفرض البرنامج:

* `curve_type` يطابق `global_config.curve_type`.
* `supply >= global_config.min_base_supply`.
* `total_locked_amount <= supply * max_lock_rate / 1_000_000`.
* `total_base_sell >= supply * min_base_sell_rate / 1_000_000`.
* `(supply − total_base_sell − total_locked_amount) >= supply * min_base_migrate_rate / 1_000_000` — أي، توجد رموز كافية متبقية لتجهيز المجموعة بعد التخرج.
* `total_quote_fund_raising >= min_quote_fund_raising`.
* إذا كان `requires_platform_auth != 0`، يتم تضمين PDA `PlatformGlobalAccess` صحيح.

بعد `Initialize`، يقوم `PoolState` الخاص بالإطلاق بتخزين مفتاح `global_config` العام مباشرة، لذا يكون الربط دائمًا.

## مسار التحديث

`UpdateConfig` حصري للمسؤول ويأخذ زوج `(param: u8, value: u64)`. تختار كل قيمة `param` الحقل الذي سيتم تغييره:

| `param` | الحقل المتغير            |
| ------- | ------------------------ |
| 0       | `migrate_fee`            |
| 1       | `trade_fee_rate`         |
| 2       | `max_share_fee_rate`     |
| 3       | `min_base_supply`        |
| 4       | `max_lock_rate`          |
| 5       | `min_base_sell_rate`     |
| 6       | `min_base_migrate_rate`  |
| 7       | `min_quote_fund_raising` |

تدويرات المحفظة (`protocol_fee_owner`، `migrate_fee_owner`، `migrate_to_amm_wallet`، `migrate_to_cpswap_wallet`) تأخذ شكل حجة `Pubkey` منفصلة؛ تحقق من مصدر `update_config` لجدول التوزيع الدقيق قبل تكوين معاملة مسؤول.

يتم تبديل `requires_platform_auth` عبر `set_requires_platform_auth(bool)`.

## قراءة `GlobalConfig` من عميل

```ts theme={null}
import { Raydium } from "@raydium-io/raydium-sdk-v2";

// Fetch by PDA derivation:
const [configPda] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    quoteMint.toBytes(),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);

const config = await raydium.launchpad.getGlobalConfig(configPda);
console.log(config.tradeFeeRate, config.minQuoteFundRaising);
```

بالنسبة لواجهة مستخدم تسرد جميع الإعدادات المتاحة، تابع مساعد `getAllGlobalConfigs` للـ SDK أو استعلم عن نقطة نهاية LaunchLab API التي تعكسها؛ عدد الحسابات on-chain صغير (بضع وحدات عمليًا).

## مؤشرات

* [`products/launchlab/platform-config`](/ar/products/launchlab/platform-config) — طبقة تراكب لكل منصة تقيد شكل المنحنى بشكل أكبر.
* [`products/launchlab/accounts`](/ar/products/launchlab/accounts) — رسم البيان الكامل للحسابات لإطلاق.
* [`products/launchlab/instructions`](/ar/products/launchlab/instructions) — تعليمات `Initialize` والتحديث.
* [`reference/program-addresses`](/ar/reference/program-addresses) — مفتاح المسؤول، معرّف البرنامج، السلطات المشتركة.

المصادر:

* `raydium-launch/programs/launchpad/src/states/config.rs` — هيكل `GlobalConfig` و `initialize`.
* `raydium-launch/programs/launchpad/src/lib.rs` — `create_config`، `update_config`.
