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

# 2026-08-24 — LaunchLab: quote mints من Token-2022

> يقبل LaunchLab الآن quote mints من Token-2022 عبر الإعدادات وإنشاء المجمعات والمبادلات ومطالبات الرسوم والهجرة من CPMM. حدود انزلاق المبادلة تسعّر الآن رسم التحويل على جانب الـ quote، وتصبح بت PoolState.token_program_flag الثانية ذات معنى، وتعيد تسمية MigrateToCpswap حسابيها لحسابات برنامج الرمز.

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

  [عرض النسخة الإنجليزية →](/reference/changelog/2026-08-24-launchlab-token2022-quote-mint)
</Info>

<Info>
  يغطي هذا الإدراج تحديث برنامج LaunchLab القادم. تم التحقق منه مقابل فرع الإصدار المحلي قبل النشر. تأكد من البرنامج المنشور و IDL المنشور قبل تفعيل المسارات الجديدة في الإنتاج.
</Info>

يتيح هذا الإصدار اقتباس الإطلاق بعملة Token-2022. حتى الآن كان جانب الـ quote مرتبطًا بقوة ببرنامج SPL Token القديم، لذا فقط كان يمكن لـ base mint أن يكون Token-2022. في كل مكان يتم فيه لمس quote mint — إنشاء `GlobalConfig`، وتهيئة المجمع، والأربع تعليمات مبادلة، وجميع مطالبات الرسوم، وهجرة CPMM — يقبل الآن أي برنامج رمز، وتأخذ تعليمات المبادلة في الاعتبار رسم التحويل لـ quote mint.

## ملخص سريع للمدمجين

* **يمكن أن تكون Quote mints من Token-2022.** يقبل `CreateConfig` quote\_token\_mint من Token-2022، ويقبل `InitializeV2` / `InitializeWithToken2022` أي برنامج رمز في فتحة quote-program. ترتيب الحساب لا يتغير — القيمة التي تمررها في تلك الفتحة فقط.
* **الـ `Initialize` المهجور لا يزال قديمًا فقط.** حسابه quote-program لا يزال مكتوبًا إلى SPL Token، لذا لا يمكن إطلاق إعداد quote mint من Token-2022 إلا من خلال `InitializeV2` أو `InitializeWithToken2022`.
* **حدود الانزلاق تنتقل إلى ما يدفعه ويستقبله الدافع فعليًا.** يتم الآن مقارنة `minimum_amount_out` و `maximum_amount_in` مقابل المبلغ الصافي من رسم التحويل لـ quote mint، وليس المبلغ الذي نقله الخزان. منطق الاقتباس الموجود يقلل من تقدير التكلفة ويبالغ في تقدير الإيرادات على quote mint يحمل رسومًا.
* **تصبح بت `PoolState.token_program_flag` الثانية ذات معنى.** كانت دائمًا `0` بينما كانت quote mints قديمة فقط. العملاء الذين يقارنون البايت بالكامل مقابل `0` سيقرأون الآن base mint القديم كـ Token-2022 كلما كان quote mint من Token-2022. هذا هو الكسر الصامت الأكثر احتمالاً في هذا الإصدار.
* **تعيد `MigrateToCpswap` تسمية حسابيها لبرنامج الرمز.** يصبح `base_token_program` / `quote_token_program` إلى `token_program` / `token_program_2022`. كلاهما مطلوب دائمًا، والبرنامج يختار الصحيح لكل mint.
* **يتم التحقق من صحة أزواج Mint/program الآن.** كلا swap mints اكتسب قيد `mint::token_program`، وكذلك quote mint الخاص بـ `ClaimPlatformFee`، لذا يعود الزوج غير المتطابق بدلاً من تجاهله.
* **خطأ جديد `6023` `CalculateOverflow`.** الأكواد `6000`–`6022` لم تتغير. تم إخلاء `6023` من قبل الإصدار السابق وإعادة استخدامه الآن.
* **تتبع خزانات الرسوم quote mint.** خزانات رسوم المنشئ والمنصة، وحساب الرمز لمستقبل رسم المشاركة، تعيش على أي برنامج يمتلك quote mint.

## أي الحسابات غيرت النوع

لا يتغير أي من هذه المواضع في قائمة الحسابات الخاصة به. فقط القيمة المسموحة تتغير.

| التعليمة                                                             | الحساب                | قبل            | بعد               |
| -------------------------------------------------------------------- | --------------------- | -------------- | ----------------- |
| `CreateConfig`                                                       | `quote_token_mint`    | SPL Token mint | mint من أي برنامج |
| `InitializeV2`                                                       | `quote_token_program` | SPL Token      | أي برنامج         |
| `InitializeWithToken2022`                                            | `quote_token_program` | SPL Token      | أي برنامج         |
| `BuyExactIn` / `BuyExactOut` / `SellExactIn` / `SellExactOut`        | `quote_token_program` | SPL Token      | أي برنامج         |
| `CollectFee` / `CollectMigrateFee`                                   | `token_program`       | SPL Token      | أي برنامج         |
| `ClaimCreatorFee` / `ClaimPlatformFee` / `ClaimPlatformFeeFromVault` | `token_program`       | SPL Token      | أي برنامج         |

`Initialize` (مسار V1 المهجور) متعمدًا ليس في هذا الجدول. حسابه quote-program يبقى مكتوبًا إلى SPL Token.

عدة من هذه أيضًا شددت قيود mint الخاصة بها، لذا فإن زوج mint/program غير المتطابق يعود الآن حيث تم قبوله أو عدم التحقق منه سابقًا:

* تقيد الأربع تعليمات مبادلة كلاً من `base_token_mint` و `quote_token_mint` للبرنامج الذي تم تمريره في الفتحة المطابقة. لم يحمل أي منهما هذا القيد من قبل، لذا تم قبول برنامج base خاطئ بصمت.
* يضيف `ClaimPlatformFee` نفس القيد على `quote_mint`.
* يصحح `ClaimPlatformFeeFromVault` قيده من نموذج حساب رمز إلى نموذج mint على ما هو حساب mint.

## محاسبة رسم التحويل على جانب Quote

هذا هو الجزء الذي يغير الأرقام بدلاً من قوائم الحسابات. على quote mint بدون `TransferFeeConfig` كل صيغة أدناه تنهار إلى السلوك السابق، لذا المجمعات القديمة والمجمعات الخالية من الرسوم Token-2022 لم تتغير بت واحد.

| التعليمة       | ما يعنيه الحجة الآن                                                                                                                                                                                                                           |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `BuyExactIn`   | `amount_in` هو الخصم الإجمالي. يتم تسعير المنحنى على `amount_in − transfer_fee(amount_in)`، وهو ما يصل إلى الخزان. عند الملء الكامل يتم فرض رسوم على الدافع بالضبط `amount_in`؛ عند الملء الجزئي الرسوم هي مبلغ الخزان المستهلك مرفوع للأعلى. |
| `BuyExactOut`  | يتم مقارنة `maximum_amount_in` مقابل مبلغ الخزان **زائد** رسم التحويل العكسي — الخصم الحقيقي — بدلاً من مبلغ الخزان وحده.                                                                                                                     |
| `SellExactIn`  | يتم مقارنة `minimum_amount_out` مقابل ما تبقى للبائع بعد أن يحتفظ الـ mint برسومه، وليس مقابل المبلغ الإجمالي المُفرج عنه من الخزان.                                                                                                          |
| `SellExactOut` | `amount_out` هو ما ينتهي به البائع. يستهدف المنحنى `amount_out` زائد رسم التحويل العكسي، لذا يصل المبلغ المطلوب بالضبط.                                                                                                                       |

نتيجتان تستحق الذكر بوضوح:

* الحد المحسوب من مجمع خالٍ من الرسوم المكافئ لم يعد مقبولاً. `BuyExactOut` مع تكلفة خالية من الرسوم كـ `maximum_amount_in` يعود الآن مع `ExceededSlippage`، وكذلك `SellExactIn` مع إيرادات خالية من الرسوم كـ `minimum_amount_out`. هذا هو السلوك المقصود — المقارنة القديمة سمحت للدافع بفرض رسم التحويل على رأس حد وافق عليه بالفعل.
* يسجل المجمع فقط ما وصل إلى الخزان. بعد `BuyExactIn` من `amount_in` على mint quote بنسبة 5%، يتقدم `real_quote` بـ `amount_in × 0.95`، وليس `amount_in`.

أسقطت `get_transfer_inverse_fee` أيضًا حالتها الخاصة لـ mint برسوم 100%: بدلاً من العودة إلى `maximum_fee`، تعود الآن خطأ `CalculateOverflow` الجديد عندما لا يمكن حساب الرسم العكسي. quote mint في `10000` نقطة أساس لذلك يفشل مسارات exact-out بدلاً من التعامل بصمت عند حد الرسوم.

## بت `token_program_flag` الثانية

`PoolState.token_program_flag` هو حقل بت، وكان دائمًا:

```text theme={null}
bit0  base mint  0 = SPL Token, 1 = Token-2022
bit1  quote mint 0 = SPL Token, 1 = Token-2022
```

الحقل، ومواضع البت، والكود الذي يكتب كلا البتين كل هذا يسبق هذا الإصدار. ما يتغير هو أن bit1 يمكن الآن أن يكون فعليًا `1`، لأن quote mint يمكن الآن أن يكون mint من Token-2022. القيم الأربع هي:

| القيمة | Base mint  | Quote mint |
| ------ | ---------- | ---------- |
| `0`    | SPL Token  | SPL Token  |
| `1`    | Token-2022 | SPL Token  |
| `2`    | SPL Token  | Token-2022 |
| `3`    | Token-2022 | Token-2022 |

اقرأ برنامج كل mint مع `(token_program_flag >> bit) & 1`. أي عميل يتعامل مع البايت كقيمة منطقية لـ base mint — `flag === 0 ? Token : Token-2022` — يحل قيمة `2` إلى base mint من Token-2022 وسيبني حساب الرمز على جانب base والتحويل مقابل البرنامج الخاطئ. لا توجد تغييرات في حجم الحساب أو إزاحة الحقل، لذا لا تحتاج الفهارس إلى هجرة تخزين، فقط إصلاح فك التشفير.

## إعادة تسمية حساب هجرة CPMM

أخذت `MigrateToCpswap` سابقًا برنامج رمز واحد لكل mint، وقرر المتصل أيهما. الآن تأخذ كلا البرنامجين بدون شروط وتشتق التعيين من الـ mints نفسها:

| الموضع              | قبل                                                    | بعد                                              |
| ------------------- | ------------------------------------------------------ | ------------------------------------------------ |
| برنامج الرمز الأول  | `base_token_program` — أي برنامج يمتلك base mint       | `token_program` — دائمًا برنامج SPL Token القديم |
| برنامج الرمز الثاني | `quote_token_program` — دائمًا برنامج SPL Token القديم | `token_program_2022` — دائمًا برنامج Token-2022  |

الموضعان لم يتغيرا، لذا هذا تغيير قيمة، وليس تغيير تخطيط — لكن القيم قريبة من الانعكاس، والمنشئ الذي يستمر في تمرير زوجه القديم سيمرر Token-2022 حيث يكون البرنامج القديم مطلوبًا بمجرد أن يكون أي mint من Token-2022 mint.

البرنامج القديم لا يزال مطلوبًا بدون شروط بغض النظر عن أي mint، لأن LP mint من CPMM و NFT Fee Key المقفول دائمًا يعيشان عليه. تخطيط `remaining_accounts` من [إصدار 2026-08-17](/ar/reference/changelog/2026-08-17-launchlab-cpmm-only-platform-config) لم يتغير.

## يتم قبول Quote mints بتقدير الإدارة فقط

بخلاف CPMM و CLMM، لا يقوم LaunchLab بأي فحص قائمة السماح للامتداد مقابل quote mint. يقبل `CreateConfig` حساب الـ mint كما هو، لذا البوابة الوحيدة هي أي mints يربطها الإدارة بـ `GlobalConfig`. فحص `NoSupportExtension` الخاص بالبرنامج ينطبق فقط على Token-2022 base mints التي ينشئها LaunchLab نفسه، حيث يُسمح فقط بـ `MetadataPointer` و `TransferFeeConfig`.

تعامل مع ربط Token-2022 quote mint كإجراء عالي الثقة بنفس المنطق مثل قوائم CPMM/CLMM البيضاء الثابتة في [`reference/token-2022-support`](/ar/reference/token-2022-support). quote mint من `TransferHook` أو `PermanentDelegate` سيتم قبوله في وقت إنشاء الإعداد وسيعمل بعد ذلك على، أو يكون قادرًا على مسح، كل مجمع مقتبس فيه.

## بوابة الطابع الزمني `amm_creator_fee_on`

يسقط `InitializeV2` بوابة الطابع الزمني التي رفضت أي `amm_creator_fee_on` بخلاف `BothToken` قبل طابع زمني الترقية. البوابة المكافئة لا تزال موجودة في `InitializeWithToken2022`. عمليًا كلا المسارين يقبلان أي قيمة على mainnet-beta اليوم، لأن هذا الطابع الزمني (`1755522000`، 2025-08-18 13:00 UTC) بعيد جدًا — هذا تنظيف، وليس تغيير سلوك للمتصلين الحاليين.

## تأثير الخطأ و IDL

الأكواد `6000`–`6022` لم تتغير، بما في ذلك `6022` `InvalidPlatformAllowConfig`.

| الكود | الاسم               | المعنى                                                      |
| ----- | ------------------- | ----------------------------------------------------------- |
| 6023  | `CalculateOverflow` | لم يتمكن حساب رسم التحويل أو رسم التحويل العكسي من التمثيل. |

تقاعد الإصدار السابق `6023` القديم وتركه شاغرًا؛ يعيد هذا الإصدار استخدام الرقم. لا تفك تشفير `6023` باستخدام IDL من أي إصدار سابق.

حدّث LaunchLab IDL قبل تمرير برنامج quote من Token-2022، أو فك تشفير بت `token_program_flag` الثانية، أو بناء قائمة حساب `MigrateToCpswap` المعاد تسميتها.

## تأثير SDK

كان جانب quote من وحدة launchpad الخاصة بـ SDK مرمزًا بقوة إلى `TOKEN_PROGRAM_ID` في نفس الأماكن التي كان فيها البرنامج. الفرع الذي يرافق هذا الإصدار يحل مالك quote mint بدلاً من ذلك، ويمرره عبر إنشاء حساب الرمز، ATA لمستقبل رسم المشاركة، وفتحة quote-program للتعليمة، ويضيف `transferFeeConfigB` اختياري إلى أربع طرق `Curve` بحيث تعكس الاقتباسات الصيغ أعلاه. تكتسب نتائج `Curve` حقل `transferFeeB`؛ يحتفظ `amountB` بمعناه — ما ينفقه الدافع أو يستقبله البائع — لذا quote mint خالي من الرسوم ينتج أرقامًا متطابقة كما هو الحال من قبل.

هذه تغييرات SDK لم يتم إصدارها. الدبوس الكنسي على صفحات code-demo في مجموعة التوثيق هذه لم يتغير؛ تحقق من الإصدار المنشور قبل الاعتماد على المعاملات الجديدة.

## تطبيق مرجعي

يشترك عرض توضيحي جديد في برنامج LaunchLab عبر Yellowstone gRPC ويسجل، لكل تحديث `GlobalConfig` و `PoolState`، ما إذا كان كل mint من Token أو Token-2022 mint:

[`raydium-sdk-V2-demo/src/grpc/launchpadPoolInfo.ts`](https://github.com/raydium-io/raydium-sdk-V2-demo/blob/master/src/grpc/launchpadPoolInfo.ts)

إنه مرجع مضغوط لشيئين يجعلهما هذا الإصدار ضروريًا. يتم تصنيف المجمعات مباشرة من `token_program_flag`، فك تشفير كلا البتين بدون جلب mint على الإطلاق — هذا هو الإصلاح لكسر bit1 الموصوف أعلاه. لا يمكن تصنيف الإعدادات بهذه الطريقة، لأن `GlobalConfig` يخزن فقط عنوان quote mint الخاص به وليس علم البرنامج، لذا يقرأ العرض التوضيحي مالك حساب الـ mint مرة واحدة ويخزنه مؤقتًا لكل mint. رؤية كلا المسارين بجانب بعضهما البعض هي أسرع طريقة للتحقق من فك التشفير الخاص بك.

انظر [`products/launchlab/code-demos`](/ar/products/launchlab/code-demos#watch-configs-and-pools-over-grpc) للشرح.

## الصفحات المحدثة

* `products/launchlab/accounts` — برنامج رمز quote-mint، تخطيط بت `token_program_flag`، وملكية الخزان.
* `products/launchlab/instructions` — حسابات quote-program، دلالات انزلاق المبادلة، وحسابات الهجرة المعاد تسميتها.
* `products/launchlab/global-config` — قد يكون `quote_mint` من Token-2022 mint، وما يفتح وما لا يفتح.
* `products/launchlab/code-demos` — مراقب gRPC config/pool.
* `reference/token-2022-support` — صف LaunchLab وقسم quote-mint.
* `reference/error-codes` — `6023` `CalculateOverflow`.
