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

> صيغ المنحنى التي يدعمها LaunchLab، وتكلفة الشراء والبيع بالشكل المغلق، واشتقاق عتبة التخرج، ومثال رقمي عملي لعملية إطلاق من أول عملية شراء إلى التخرج.

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

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

<Info>
  يدعم LaunchLab ثلاثة أشكال منحنيات يتم اختيارها عند `Initialize`: **constant-product** (الشكل الأكثر شيوعًا، صيغة الاحتياطي الافتراضي للمنحنى `x · y = k` القياسي)، **linear-price**، و**fixed-price**. صيغة عتبة التخرج موحدة عبر جميع الأشكال الثلاثة. تتناول هذه الصفحة رياضيات منحنى constant-product بالتفصيل؛ يتم تلخيص الأشكال الخطية والثابتة في النهاية.
</Info>

## المعاملات المخزنة على `LaunchState`

| الحقل                                                        | المعنى                                                                                                                            |
| ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| `curve_type`                                                 | `0` = constant-product (الاحتياطيات الافتراضية)، `1` = fixed-price، `2` = linear-price.                                           |
| `base_supply_max`                                            | إجمالي رموز الأساس التي يمكن للمنحنى أن يُصدرها على الإطلاق.                                                                      |
| `base_supply_graduation`                                     | رموز الأساس التي يجب بيعها للوصول إلى التخرج. عادةً `0.8 × base_supply_max`؛ الـ 20% المتبقية تصبح LP الأولي لمجمع ما بعد التخرج. |
| `quote_reserve_target`                                       | كمية الاقتباس التي تؤدي إلى التخرج. مشتقة عند `Initialize` من معاملات المنحنى + `base_supply_graduation`.                         |
| `virtual_base` / `virtual_quote`                             | بذور الاحتياطي الافتراضي لمنحنى constant-product.                                                                                 |
| `migrate_type`                                               | يختار هدف التخرج: AMM v4 مقابل CPMM. انظر [`instructions`](/ar/products/launchlab/instructions).                                  |
| `fees.buy_numerator / buy_denominator`                       | رسم الشراء، مثلاً `100 / 10_000 = 1.00%`.                                                                                         |
| `fees.sell_numerator / sell_denominator`                     | رسم البيع. غالبًا ما يكون مماثلاً للشراء.                                                                                         |
| `fees.protocol_share`, `fees.creator_share`, `fees.lp_share` | تقسيم الرسوم أعلاه، بمجموع المقسوم عليه.                                                                                          |

أسماء الحقول في بنية Rust تطابق حقول `PoolState` الموضحة في [`accounts`](/ar/products/launchlab/accounts)؛ الوحدات أعلاه مفاهيمية.

## منحنى ثابت المنتج مع الاحتياطيات الافتراضية (`curve_type = 0`)

المنحنى الافتراضي والأكثر استخدامًا. جميع عمليات الإطلاق على غرار Pump تستخدم هذا الشكل. يتظاهر المنحنى بأن هناك **احتياطي اقتباس افتراضي** `V_q` و**احتياطي أساس افتراضي** `V_b` من البداية (مخزن كـ `virtual_quote` و `virtual_base` على `PoolState`)، لذا المجمع الفعلي يبدو وكأنه CPMM بهذه الاحتياطيات. تتبع عمليات الشراء رياضيات `x · y = k`:

```
(V_q + real_quote_in_after_fee) × (V_b + real_base_remaining − base_out) = V_q × V_b
```

محلول بـ `base_out`:

```
base_out = (V_b + real_base_remaining) × quote_in_after_fee / (V_q + real_quote_in_after_fee)
```

السعر الفعلي عند base-sold `s`:

```
price(s) = (V_q + real_quote_in(s)) / (V_b + real_base_remaining(s))
```

نفس ثابت `x · y = k` الذي يطبقه LaunchLab قبل التخرج هو حرفيًا منحنى CPMM (أو AMM v4) بعد التخرج، لذا مرور التخرج سلس آليًا: السعر الهامشي عند `base_sold = base_supply_graduation` يساوي السعر الذي يفتح به مجمع ما بعد التخرج مع `(quote_vault, base_vault_remaining)` كاحتياطياته.

## منحنى السعر الثابت (`curve_type = 1`)

منحنى بسعر ثابت. كل عملية شراء/بيع تحدث بسعر ثابت، قابل للتكوين عند `Initialize`:

```
price(s) = virtual_quote / virtual_base    (ثابت لجميع s)
```

مفيد لعمليات الإطلاق العادلة حيث يريد الفريق تسعيرًا موحدًا لجميع المشاركين بغض النظر عن وقت شرائهم. يُطلق التخرج عندما يتم بيع `base_supply_graduation` (علاقة التكلفة الخطية تجعل اشتقاق `quote_reserve_target` مباشرًا).

## منحنى السعر الخطي (`curve_type = 2`)

السعر يزداد خطيًا مع `base_sold`:

```
price(s) = a · s     (a = slope، مشتق من virtual_base / virtual_quote)
```

التكلفة المتكاملة:

```
cost(s_0, s_1) = a · (s_1² − s_0²) / 2
```

تربيعي في `base_sold` — المشترون الأوائل يدفعون قريبًا من الصفر، المشترون المتأخرون يدفعون أكثر بكثير، مع ارتفاع السعر الهامشي دائمًا بميل ثابت. التطبيق على السلسلة يعيش في `curve/linear_price.rs`.

## مقارنة أشكال المنحنى

```
price
  │   linear (steep tail)               linear (curve_type = 2)
  │       ╱
  │      ╱
  │     ╱            const-product (curve_type = 0)
  │    ╱            ╱
  │   ╱           ╱
  │  ╱         ╱
  │ ╱       ╱
  │╱_____╱_______________________  fixed-price (curve_type = 1)
  └──────────────────────────────── base_sold
  0                  S_grad         S_max
```

## عتبة التخرج

يتم حساب `quote_reserve_target` عند `Initialize` كقيمة الاقتباس المطلوبة لنقل `base_sold` من 0 إلى `base_supply_graduation`:

```
quote_reserve_target = cost(0, base_supply_graduation) × (1 + buy_fee_rate)
                                                         ^^^^^^^^^^^^^^^^^
                                                         تقريبي؛ الشكل الدقيق
                                                         يطابق تقريب الرسوم
                                                         المستخدم على Buy.
```

يتخرج الإطلاق بمجرد `quote_vault.balance ≥ quote_reserve_target`. نظرًا لأن عمليات الشراء تأتي بأحجام منفصلة، قد يتجاوز الرصيد الفعلي عند التخرج الهدف قليلاً — يصبح الفائض سيولة إضافية على جانب الاقتباس في مجمع CPMM الناتج.

## مثال عملي — إطلاق تربيعي

المعاملات:

* `base_supply_max        = 1_000_000_000` (مليار رمز أساس، 6 منازل عشرية)
* `base_supply_graduation = 800_000_000`   (بيع 80% يؤدي إلى التخرج)
* `k                      = 40` (مقياس السعر)
* الرسوم: 1% شراء، 1% بيع، تقسيم `lp:creator:protocol = 60:20:20`.

**السعر الأولي** (`s = 0`): `0` (المربع البحت يبدأ من صفر).

**السعر عند بيع 50%** (`s = 500_000_000`):

```
price = 40 × (500e6 / 1e9)² = 40 × 0.25 = 10  (اقتباس لكل أساس، 6 منازل عشرية)
```

**السعر عند التخرج** (`s = 800_000_000`):

```
price = 40 × (800e6 / 1e9)² = 40 × 0.64 = 25.6
```

**قيمة الاقتباس المطلوبة للوصول إلى التخرج** (التكلفة المتكاملة):

```
cost(0, 800_000_000) = (40 / (3 × 1e18)) × ((800e6)³ − 0)
                     = (40 / 3e18) × 5.12e26
                     ≈ 6.827e9
```

إذاً ≈ 6.827 وحدة اقتباس أصلية (في أي عملة اقتباس 6 منازل عشرية محددة، مثلاً \~6,827 USDC إذا كان الاقتباس USDC).

**الرسم المطبق على الأعلى**:

```
quote_reserve_target ≈ 6.827e9 × 1.01 ≈ 6.895e9  (6,895 USDC)
```

**أول عملية شراء** بـ `10 USDC`:

* الحالة الافتراضية: `s = 0`، `quote_vault = 0`.
* اطرح الرسم: `quote_after_fee = 10 × 0.99 = 9.9`.
* حل `(40 / (3e18)) × s³ = 9.9` ⇒ `s ≈ 6.22e6` رموز أساس مشتراة.
* تقسيم رسم 1% (`0.1 USDC`): lp `0.06`، creator `0.02`، protocol `0.02`. يبقى حصة lp في `quote_vault`؛ الحصتان الأخريان توجهان إلى عدادات الاستحقاق الخاصة بهما.

**الشراء عند بيع 75%** (الاقتراب من التخرج):

نفس 10 USDC تشتري أساس أقل بكثير الآن لأن المنحنى حاد. يعطي حل Newton عند `s₀ = 750e6` مع `quote_in_after_fee = 9.9` تقريبًا `∆s ≈ 0.4e6` — تخفيض \~15× في الأساس لكل USDC مقارنة بأول عملية شراء.

## ميكانيكا الرسوم خلال مرحلة المنحنى

على كل `Buy`:

```
gross_fee      = ceil(quote_in_gross × buy_numerator / buy_denominator)
lp_share       = gross_fee × fees.lp_share / fees.total_share
protocol_share = gross_fee × fees.protocol_share / fees.total_share
creator_share  = gross_fee × fees.creator_share / fees.total_share
```

* يُترك `lp_share` في `quote_vault`. هذا ما يجعل المنحنى الفعلي أكثر إحكامًا (احتياطي اقتباس أكثر ضد نفس إمداد الأساس).
* تزيد `protocol_share` قيمة `LaunchState.state_data.protocol_fees_quote`.
* تزيد `creator_share` قيمة `LaunchState.state_data.creator_fees_quote`.

على `Sell` ينطبق نفس التقسيم لكن الرسم يُؤخذ من `quote_out` الخارج.

يتم مسح كلا العدادين عبر `CollectFees` (مسؤول أو منشئ، كل واحد إلى عدّاده الخاص).

## الدقة

* كميات جانب الأساس: `u64`.
* كميات جانب الاقتباس: `u64`.
* المكعبات / المنتجات الوسيطة: `u128`.
* حلول Newton لـ "شراء اقتباس دقيق" و "بيع اقتباس دقيق" تكرر في `u128` بنقطة ثابتة مع عدد تكرار أقصى قابل للتكوين (افتراضي 10). وضع الفشل هو `NotConverged` — نادر خارج حالات الحافة بالقرب من التخرج.

## التسليم إلى CPMM

عند حدوث `Graduate`:

```
cpmm_quote_reserve = quote_vault − swept_protocol_fees − swept_creator_fees
cpmm_base_reserve  = base_vault                       // أي base_supply_max − base_sold
cpmm_initial_price = cpmm_quote_reserve / cpmm_base_reserve
```

للمنحنى التربيعي، `cpmm_initial_price` هو `price(base_sold)` آليًا (إنه السعر الهامشي للمنحنى في لحظة التسليم). يفتح مجمع CPMM بدقة بهذا السعر، لذا المراقب الذي يتحول من واجهة المنحنى إلى واجهة CPMM لا يرى قفزة.

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

* [`products/launchlab/accounts`](/ar/products/launchlab/accounts) — حقول `LaunchState` التي تخزن هذه المعاملات.
* [`products/launchlab/instructions`](/ar/products/launchlab/instructions) — قوائم حساب `Buy`، `Sell`، `Graduate`.
* [`algorithms/constant-product`](/ar/algorithms/constant-product) — رياضيات CPMM التي يستخدمها مجمع ما بعد التخرج.

المصادر:

* [وحدة Raydium SDK v2 `LaunchLab`](https://github.com/raydium-io/raydium-sdk-V2)
* مصدر برنامج Raydium LaunchLab
