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

# مصفوفة دعم Token-2022

> برامج Raydium التي تدعم Token-2022، وقائمة الامتدادات المسموحة الصريحة التي يفرضها كل برنامج عند إنشاء Pool، ومسارات الالتفاف (قائمة العملات البيضاء الثابتة، السجل لكل عملة، كشف Superstate) التي تقبل العملات المرفوضة بخلاف ذلك.

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

  [عرض النسخة الإنجليزية →](/reference/token-2022-support)
</Info>

Raydium **لا تقبل** عملات Token-2022 عشوائية. كل من CPMM و CLMM يعملان في **وضع قائمة سماح صارم**: فقط مجموعة صغيرة من الامتدادات تمر بشكل افتراضي؛ كل شيء آخر مرفوض عند إنشاء Pool. يتم قبول عدد قليل من العملات الموثوقة بواسطة عناوين مشفرة بقوة؛ يدعم CLMM بشكل إضافي سجل إداري لكل عملة وكشف رموز Superstate في وقت التشغيل. هذه الصفحة هي المرجع الوحيد لما يتم فرضه وأين، مع إشارات الملفات والأسطر إلى مصدر البرنامج.

## دعم على مستوى البرنامج

| البرنامج        | عملات Token-2022 الأساسية والمقتبسة؟ | الوضع                                                                                                                                                                                                                                                                                         |
| --------------- | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **CPMM**        | نعم — مبوب                           | قائمة سماح امتدادات صارمة + 4 عملات قائمة بيضاء ثابتة.                                                                                                                                                                                                                                        |
| **CLMM**        | نعم — مبوب                           | قائمة سماح امتدادات صارمة + 6 عملات قائمة بيضاء ثابتة + سجل إداري لكل عملة + كشف Superstate.                                                                                                                                                                                                  |
| **AMM v4**      | لا                                   | البرنامج يسبق Token-2022؛ يجب أن تكون كلا العملتين من Token الكلاسيكي.                                                                                                                                                                                                                        |
| **Stable AMM**  | لا                                   | نفس القيود مثل AMM v4.                                                                                                                                                                                                                                                                        |
| **Farm v6**     | نعم، جزئيًا                          | يمكن أن تكون عملة المكافأة Token-2022 (تخضع لنفس قائمة السماح عندما تغلف Farm أ LP من CPMM/CLMM)؛ عملات LP للرهن من قبل المستخدم ترث من Pool المغلفة.                                                                                                                                         |
| **LaunchLab**   | نعم، مُدارة بواسطة البرنامج          | يمكن أن تكون العملة الأساسية Token-2022، ولكن فقط عبر التعليمات المخصصة `initialize_with_token_2022`؛ ينشئ البرنامج نفسه العملة باستخدام `MetadataPointer` (دائمًا) و `TransferFeeConfig` اختياريًا (معدل ≤ 5%). لا يمكن استخدام عملات Token-2022 الموجودة مسبقًا مع امتدادات عشوائية كقاعدة. |
| **Burn & Earn** | مرايا برنامج Pool                    | يرث بوابة CPMM / CLMM.                                                                                                                                                                                                                                                                        |

تعيش فحوصات قائمة السماح في:

* **CPMM**: `is_supported_mint` في [`raydium-cp-swap/programs/cp-swap/src/utils/token.rs:178`](https://github.com/raydium-io/raydium-cp-swap)، مُستدعاة من `Initialize`.
* **CLMM**: `is_supported_mint` في [`raydium-clmm/programs/amm/src/util/token.rs:280`](https://github.com/raydium-io/raydium-clmm)، مُستدعاة من `CreatePool`.
* **LaunchLab**: `initialize_with_token_2022` في `raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs` (المصدر غير متاح للعامة).

لا توجد **أي** فحص عملة في وقت المبادلة على CPMM أو CLMM — البوابة تُطلق فقط عند إنشاء Pool. بمجرد وجود Pool، تثق المبادلات بأن العملات لم تتغير، وهذا صحيح للأجزاء غير القابلة للتغيير من حالة عملة Token-2022.

## قائمة السماح الامتدادات CPMM و CLMM

بعد اختصارات قائمة البيضاء الثابتة (مغطاة أدناه)، يكرر البرنامج امتدادات العملة ورفض العملة إذا كانت تحمل **أي** امتداد بخلاف هذه الخمسة:

| الامتداد                | السبب المسموح به                                                                                                                                                    |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `TransferFeeConfig`     | حسابات Pool تطرح الرسوم الواردة؛ يتعامل برنامج Token-2022 مع الرسوم الصادرة. انظر [`algorithms/token-2022-transfer-fees`](/ar/algorithms/token-2022-transfer-fees). |
| `MetadataPointer`       | تزييني — يشير إلى بيانات وصفية على السلسلة.                                                                                                                         |
| `TokenMetadata`         | تزييني — بيانات وصفية مضمنة.                                                                                                                                        |
| `InterestBearingConfig` | Pool يرى مبلغ رأس المال؛ مضاعف UI تزييني فقط والرصيد الأساسي محفوظ.                                                                                                 |
| `ScaledUiAmount`        | نفس شكل الفائدة — عامل القياس ينطبق على عرض UI فقط.                                                                                                                 |

أي شيء ليس في هذه القائمة — `TransferHook`، `NonTransferable`، `ConfidentialTransferMint`، `PermanentDelegate`، `MintCloseAuthority`، `DefaultAccountState`، `GroupPointer`، `GroupMemberPointer`، `MemberPointer`، `Pausable`، إلخ. — يتسبب في عودة `is_supported_mint` بـ `false` وانعكاس إنشاء Pool.

الأسطر الصلة (CPMM، شكل متطابق في CLMM):

```rust theme={null}
for e in extensions {
    if e != ExtensionType::TransferFeeConfig
        && e != ExtensionType::MetadataPointer
        && e != ExtensionType::TokenMetadata
        && e != ExtensionType::InterestBearingConfig
        && e != ExtensionType::ScaledUiAmount
    {
        return Ok(false);
    }
}
Ok(true)
```

— [`cp-swap/src/utils/token.rs:190–200`](https://github.com/raydium-io/raydium-cp-swap)

## مسارات الالتفاف

يمكن قبول عملة Token-2022 التي لا تناسب قائمة السماح عبر أحد مسارات الالتفاف الثلاثة الصريحة. يتم محاولتها بالترتيب، قبل تشغيل تكرار الامتداد.

### 1. قائمة العملات البيضاء الثابتة

مصفوفة `MINT_WHITELIST` ثابتة من سلاسل base58 مشفرة في كل برنامج. إذا طابقت عنوان العملة، تعود الدالة `true` فورًا ولا يتم إجراء فحص الامتداد.

| البرنامج | العملات المدرجة بقائمة بيضاء                                                                                                                                                                   |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CPMM     | `HVbpJAQGNpkgBaYBZQBR1t7yFdvaYVp2vCQQfKKEN4tM`، `Crn4x1Y2HUKko7ox2EZMT6N2t2ZyH7eKtwkBGVnhEq1g`، `FrBfWJ4qE5sCzKm3k3JaAtqZcXUh4LvJygDeketsrsH4`، `2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo` |
| CLMM     | نفس الأربعة، بالإضافة إلى `DAUcJBg4jSpVoEzASxYzdqHMUN8vuTpQyG2TvDcCHfZg`، `AUSD1jCcCyPLybk1YnvPWsHQSrZ46dxwoMniN4N2UEB9`                                                                       |

يتم حفر هذه العناوين في البرنامج؛ تحديث القائمة يتطلب ترقية برنامج عبر multisig ترقية 3/4.

### 2. سجل لكل عملة — CLMM فقط

يستشير CLMM بالإضافة PDA `SupportMintAssociated` في البذرة `[b"support_mint", mint]`. إذا كان هذا PDA موجودًا للعملة، يتم قبولها بغض النظر عن مجموعة الامتدادات الخاصة بها.

يتم إنشاء PDA بواسطة `CreateSupportMintAssociated` ([`admin/create_support_mint_associated.rs`](https://github.com/raydium-io/raydium-clmm)). التعليمات مبوبة لموقعين:

* `crate::admin::ID` — سلطة الإدارة القياسية لـ Raydium.
* `crate::create_support_mint_associated_owner::ID` — سلطة مخصصة لهذا الغرض: `RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY` (mainnet)، `rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5` (devnet).

التأثير: يمكن لفريق CLMM اختيار عملة Token-2022 محددة لإنشاء Pool دون ترقية برنامج. لا يوجد CPMM معادل — قائمة السماح الخاصة به مشفرة بصرامة في المصدر.

### 3. كشف Superstate — CLMM فقط

يحتوي CLMM على مسار ثالث محدد لأصول Superstate المُرمزة، التي تستخدم امتداد `ScaledUiConfig` الذي إصدار `spl-token-2022` المرتبط ببرنامج CLMM لا يمكنه فك تعبئته. بدلاً من ترقية المتكل، يكتشف CLMM رموز Superstate من خلال شكل سلطتها:

```rust theme={null}
superstate_allowlist::ID == freeze_authority
    && *mint_account_info.owner == spl_token_2022::ID
    && default_account_state_freeze
    && maybe_permanent_delegate
```

— [`raydium-clmm/programs/amm/src/util/token.rs:485`](https://github.com/raydium-io/raydium-clmm)

عملة تمر هذا الفرع إذا **كان جميع الأربعة** صحيحًا:

* برنامجها المالك هو برنامج Token-2022.
* سلطة التجميد الخاصة بها تساوي `superstate_allowlist::ID`. Mainnet: `2Yq4T3mPNfjtEyTxSbRjRKqLf1pwbTasuCQrWe6QpM7x`. Devnet: `3TRuL3MFvzHaUfQAb6EsSAbQhWdhmYrKxEiViVkdQfXu`.
* امتداد `DefaultAccountState` الخاص بها معيّن على `Frozen`.
* المفوض الدائم أيضًا `superstate_allowlist::ID`.

هذا حدس، وليس سجل — أي عملة مستقبلية Superstate يصدرها مع نفس شكل السلطة ستكون مقبولة تلقائيًا.

## ما لا تتنازل عنه مسارات الالتفاف

تتخطى مسارات الالتفاف قائمة السماح الامتداد، لكن البرنامج يفرض بعد ذلك:

* العملة مملوكة لـ `Token` أو `Token-2022`. يتم رفض برنامج رمز مخصص في المنبع.
* يتم إنشاء أوعية Pool مع امتدادات ATA الصحيحة لـ pools Token-2022 (`ImmutableOwner`، إلخ).
* تذهب جميع التحويلات عبر `transfer_checked` — عملات رسوم تهبط المبلغ الصحيح في الخزينة.

عملة موجودة بقائمة بيضاء أو مسجلة في PDA التي تضيف `TransferHook` لاحقًا لا تحصل على فحص في وقت المبادلة؛ ستعمل الخطاف على كل تحويل ويمكن أن تفسد المبادلات. لذا فإن القوائم البيضاء عمل عالي الثقة.

## دلالات "محظور"

عندما تعود `is_supported_mint` بـ `false`، ينعكس إنشاء Pool مع `ErrorCode::NotSupportMint` (CPMM) / `ErrorCode::NotSupportMint` (CLMM). انظر [`reference/error-codes`](/ar/reference/error-codes) للأكواد الرقمية.

الـ Pools الموجودة لا يمكن أن تفشل هذا الفحص بأثر رجعي — البوابة تعمل فقط عند الإنشاء. امتدادات العملة غير قابلة للتغيير للفئات التي ترفضها Raydium (transfer hook، non-transferable، confidential transfer لا يمكن إضافتها بعد الإنشاء)، لذا فإن الفحص الثابت كافٍ.

## لماذا يتم استثناء كل امتداد

* **TransferHook** — يستدعي برنامج مخصص على كل تحويل، مع استهلاك CU عشوائي، شروط فشل عشوائية، والقدرة على إعادة الدخول إلى البرنامج الاستدعاء. لا يوجد sandbox آمن. بعض DEXes تحتفظ بقوائم سماح الخطاف؛ Raydium لا.
* **NonTransferable** — `Transfer` يفشل دائمًا. لا يمكن لـ Pool أخذ الحضانة.
* **ConfidentialTransfer** — مبالغ التحويل مشفرة؛ لا يمكن للمنحنى تسعير المبادلة.
* **PermanentDelegate** — حامل المفوض يمكنه مسح أي حساب رمز، بما فيه خزينة Pool. مسموح فقط عبر قائمة البيضاء الثابتة للمصدرين الموثوقين (مثل العملات المستقرة المنظمة).
* **MintCloseAuthority** — يمكن إغلاق العملة؛ تصبح الـ Pools الموجودة غير قابلة للاستخدام. ممنوعة افتراضيًا.
* **DefaultAccountState (Frozen)** — سيهبط ATA من Pool في حالة `Frozen` ويتطلب إذابة لكل حساب. مسموح فقط عبر كشف Superstate، الذي يفترض أن المصدر يذيب الحسابات المؤسسية عند التسجيل.
* **مؤشرات Group/Member** — ليست ضارة بنشاط، لكن لم تُراجع. ممنوعة افتراضيًا للحفاظ على السطح ضيقًا.

## محاسبة رسوم التحويل

بالنسبة للعملات التي تحمل `TransferFeeConfig`، كل مبادلة وإيداع وسحب ينقل أقل من المبلغ الاسمي. سطح SDK كلا نصفي الحساب:

```ts theme={null}
const { amountIn, amountOut, feeAmount, token2022FeeIn, token2022FeeOut } =
  await raydium.cpmm.computeSwapAmount({ ... });
```

يظهر UI صحيح:

* `amountIn + token2022FeeIn` كـ "ترسل"
* `amountOut - token2022FeeOut` كـ "تستقبل"
* `feeAmount` كرسم Pool (LP + بروتوكول)، وهو منفصل عن رسم نقل Token-2022

UI ساذج يظهر فقط `amountIn → amountOut` يقلل من التكاليف.

### حد `maximumFee`

رسوم نقل Token-2022 محدودة لكل نقل. بالنسبة لعملة 1٪ برسم حد 10,000، نقل 100,000,000 رمز يدفع فقط 10,000 كرسم. يطبق SDK `computeSwapAmount` الحد؛ يجب على مستدعي البرنامج المباشرة تكرار ذلك.

### انتقال الحقبة

يمكن لسلطة العملة جدولة تغيير معدل الرسم الذي يتفعل عند الحقبة التالية. أثناء نافذة الانتقال، تعيش تكوينان (`older`، `newer`) على العملة في نفس الوقت و `TransferChecked` يختار بحسب الحقبة الحالية. كل من CPMM `SwapV2` و CLMM `SwapV2` تمرران حساب العملة الكامل في `accounts`، حتى يقرأ البرنامج التكوين الصحيح دون بحث إضافي.

إذا اقتبسْت أكثر من حقبة واحدة مقدمًا عبر Trade API أو SDK، قد يختلف الرسم المنفذ عن الرسم المقتبس — محدود بـ `maximum_fee_basis_points` للتكوين الأقدم.

## الفائدة والمبلغ المُقاس للـ UI

يحتفظ Pool برأس المال؛ "مبلغ UI" هو رأس المال مضروب في عامل قياس يعتمد على الوقت أو يعينه الإدارة. حسابات المبادلة تعمل على رأس المال:

```
principal_in = ui_amount_in / ui_multiplier(now)
```

يحول SDK تلقائيًا. يجب على قراء RPC المباشرين معاملة `pool.token0Vault.amount` كرأس مال.

## تعريف "Pool Token-2022"

Pool هو Pool Token-2022 إذا **كانت أي** عملة لديها `programId == TokenzQdB...`. يسطح API هذا:

```
GET /pools/info/ids?ids=<POOL_ID>
```

```json theme={null}
{
  "data": [{
    "mintA": { "programId": "TokenzQdB...", "hasTransferFee": true, ... },
    "mintB": { "programId": "Tokenkeg...", ... }
  }]
}
```

استخدم `programId` للـ dispatch، و `hasTransferFee` لعرض تحذير UI.

## مساعدات SDK

```ts theme={null}
import { Raydium, TOKEN_2022_PROGRAM_ID } from "@raydium-io/raydium-sdk-v2";
import { ExtensionType, getExtensionTypes, unpackMint } from "@solana/spl-token";

const raydium = await Raydium.load({ owner, connection });

const acct = await connection.getAccountInfo(mintPubkey);
if (!acct) throw new Error("mint not found");
const mint = unpackMint(mintPubkey, acct, acct.owner);

if (acct.owner.equals(TOKEN_2022_PROGRAM_ID)) {
  const extensions = getExtensionTypes(mint.tlvData);
  const accepted = new Set([
    ExtensionType.TransferFeeConfig,
    ExtensionType.MetadataPointer,
    ExtensionType.TokenMetadata,
    ExtensionType.InterestBearingConfig,
    ExtensionType.ScaledUiAmount,
  ]);
  const rejecting = extensions.filter(e => !accepted.has(e));
  if (rejecting.length) {
    console.warn("Pool creation will revert unless this mint is whitelisted:", rejecting);
  }
}
```

## أخطاء التكامل الشائعة

* **فحص معرّف البرنامج فقط مسبقًا.** يمكن أن تكون العملة Token-2022 *و* غير مدعومة. امش في قائمة الامتدادات مقابل قائمة السماح (وقائمة البيضاء الثابتة) قبل السماح بإنشاء Pool.
* **الوثوق باقتباس SDK عندما لا تكون العملة مقبولة على الإطلاق.** API الاقتباس لا يرفض الاقتباس — إنشاء Pool هو ما ينعكس. تأكد من دلالات `is_supported_mint` خارج السلسلة قبل كشف إنشاء Pool في UI.
* **الاقتباس دون قطع رسوم النقل.** عملة رسوم نقل 1٪ على كلا جانبي CPMM 0.25٪ لديها رسم فعّال حوالي 2.25٪، وليس 0.25٪. استخدم SDK quote أو Trade API quote — لا تحسب الرسم يدويًا من طبقة رسم Pool وحدها.
* **استدعاء تعليمات `Swap` الموروثة على Pool Token-2022.** `Swap` يسبق Token-2022. استخدم `SwapV2` كلما كانت أي عملة Token-2022.
* **قائمة جديدة تلقائية لعملات Token-2022.** يجب على المحافظ والموزعات التحقق من `TransferHook` و `NonTransferable` قبل سطح عملة للمستخدمين؛ كل منهما معادية لـ Raydium.

## العمل المستقبلي

عناصر خريطة الطريق لنظام Solana والبروتوكول التي ستغير هذه المصفوفة:

* برامج transfer-hook مدرجة بقائمة السماح على مستوى Solana (اتفاقية النظام البيئي تتطور).
* AMMs متوافقة مع التحويل السري (مرحلة البحث).
* سجل CPMM أوسع لكل عملة (تكافؤ مع CLMM).
* ترقية المتكل بحيث فك تشفير `ScaledUiConfig` الخاص بـ CLMM يعمل بدون حدس Superstate.

ستُحدّث هذه الصفحة عند هبوط أي منها.

## المؤشرات

* [`algorithms/token-2022-transfer-fees`](/ar/algorithms/token-2022-transfer-fees) — حسابات الرسوم في المبادلات.
* [`products/cpmm/instructions`](/ar/products/cpmm/instructions) — `SwapV2`، `Initialize`.
* [`products/clmm/instructions`](/ar/products/clmm/instructions) — `SwapV2`، `CreatePool`، `CreateSupportMintAssociated`.
* [`reference/error-codes`](/ar/reference/error-codes) — أكواد رقمية `NotSupportMint` لكل برنامج.

المصادر:

* `raydium-cp-swap/programs/cp-swap/src/utils/token.rs` — `MINT_WHITELIST`، `is_supported_mint`.
* `raydium-clmm/programs/amm/src/util/token.rs` — `MINT_WHITELIST`، `superstate_allowlist`، `is_superstate_token`، `is_supported_mint`.
* `raydium-clmm/programs/amm/src/instructions/admin/create_support_mint_associated.rs` — تعليمات سجل لكل عملة.
* `raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs` — إنشاء قاعدة عملة Token-2022 للـ LaunchLab.
