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

> Raydium programlarının hangileri Token-2022 desteğine sahiptir, her programın havuz oluştururken uyguladığı açık uzantı izin listesi ve aksi takdirde reddedilen mint'leri kabul eden bypass yolları (statik mint whitelist, mint başına kayıt, Superstate tespiti).

<Info>
  **Bu sayfa yapay zekâ tarafından otomatik olarak çevrilmiştir. İngilizce sürüm esas alınır.**

  [İngilizce sürümü görüntüle →](/reference/token-2022-support)
</Info>

Raydium keyfi Token-2022 mint'lerini **kabul etmez**. CPMM ve CLMM ikisi de katı **izin listesi modunda** çalışır: varsayılan olarak sadece küçük bir uzantı seti geçer; geri kalanı havuz oluşturmada reddedilir. Az sayıda güvenilen mint, hardcoded adresle kabul edilir; CLMM ek olarak yönetim tarafından yönetilen mint başına kayıt ve çalışma zamanında Superstate token tespitini destekler. Bu sayfa, hangi kontrollerin nerede uygulandığının tek sayfa referansıdır ve program kaynağına dosya ile satır atıfları içerir.

## Program düzeyinde destek

| Program         | Token-2022 base/quote mint'leri?   | Mod                                                                                                                                                                                                                                                                                                                |
| --------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **CPMM**        | Evet — kontrollü                   | Katı uzantı izin listesi + 4 mint statik whitelist.                                                                                                                                                                                                                                                                |
| **CLMM**        | Evet — kontrollü                   | Katı uzantı izin listesi + 6 mint statik whitelist + yönetim mint başına kayıt + Superstate tespiti.                                                                                                                                                                                                               |
| **AMM v4**      | Hayır                              | Program Token-2022 öncesinden; her iki mint'in klasik SPL Token olması gerekir.                                                                                                                                                                                                                                    |
| **Stable AMM**  | Hayır                              | AMM v4 ile aynı kısıtlamalar.                                                                                                                                                                                                                                                                                      |
| **Farm v6**     | Evet, kısmi                        | Reward mint Token-2022 olabilir (bir farm CPMM/CLMM LP'yi sarlıyorsa aynı izin listesine tabi); kullanıcı stake LP mint'leri sarılı havuzdan devralır.                                                                                                                                                             |
| **LaunchLab**   | Evet, program tarafından yönetilen | Base mint Token-2022 olabilir, ancak sadece `initialize_with_token_2022` talimatı aracılığıyla; program kendisi mint'i `MetadataPointer` (her zaman) ve isteğe bağlı olarak `TransferFeeConfig` (%5 ≤ oran) ile oluşturur. Rasgele uzantıları olan önceden var olan Token-2022 mint'leri base olarak kullanılamaz. |
| **Burn & Earn** | Havuz programını yansıtır          | CPMM / CLMM kapıyı devralır.                                                                                                                                                                                                                                                                                       |

İzin listesi kontrolleri şu yerlerde yer alır:

* **CPMM**: `is_supported_mint` in [`raydium-cp-swap/programs/cp-swap/src/utils/token.rs:178`](https://github.com/raydium-io/raydium-cp-swap), `Initialize` yapısından çağrılır.
* **CLMM**: `is_supported_mint` in [`raydium-clmm/programs/amm/src/util/token.rs:280`](https://github.com/raydium-io/raydium-clmm), `CreatePool` yapısından çağrılır.
* **LaunchLab**: `initialize_with_token_2022` in `raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs` (kaynak herkese açık değil).

CPMM veya CLMM'de swap zamanında mint kontrolü **yoktur** — kapı sadece havuz oluştururken açılır. Havuz oluşturulduktan sonra, swap'lar mint'lerin değişmediğine güvenir, bu Token-2022 mint durumunun değişmez kısımları için doğrudur.

## CPMM ve CLMM uzantı izin listesi

Statik whitelist kısayolundan sonra (aşağıda ele alınmıştır), program mint'in uzantılarını yineler ve **bu beşi dışında** başka bir uzantı taşıyorsa mint'i reddeder:

| Uzantı                  | Neden izinli                                                                                                                                                                   |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `TransferFeeConfig`     | Havuz matematiksel olarak gelen ücreti çıkarır; Token-2022 programı giden ücreti işler. Bkz. [`algorithms/token-2022-transfer-fees`](/tr/algorithms/token-2022-transfer-fees). |
| `MetadataPointer`       | Dekoratif — zincir üstü metaverileri işaret eder.                                                                                                                              |
| `TokenMetadata`         | Dekoratif — satır içi metaveri.                                                                                                                                                |
| `InterestBearingConfig` | Havuz ana miktarı görür; UI çarpanı sadece dekoratör ve altta yatan bakiye korunur.                                                                                            |
| `ScaledUiAmount`        | Faiz taşıyan ile aynı şekil — ölçek faktörü sadece UI görüntüsüne uygulanır.                                                                                                   |

Bu listede olmayan herhangi bir şey — `TransferHook`, `NonTransferable`, `ConfidentialTransferMint`, `PermanentDelegate`, `MintCloseAuthority`, `DefaultAccountState`, `GroupPointer`, `GroupMemberPointer`, `MemberPointer`, `Pausable`, vb. — `is_supported_mint` ifadesinin `false` döndürmesine ve havuz oluşturmanın geri alınmasına neden olur.

İlgili satırlar (CPMM, CLMM'de özdeş şekil):

```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)

## Bypass yolları

İzin listesine uymayan bir Token-2022 mint'i yine de üç açık bypass'dan biri aracılığıyla kabul edilebilir. Uzantı yinelemesi çalışmadan önce sırayla denenir.

### 1. Statik mint whitelist'i

Sabit bir `MINT_WHITELIST` base58 dizeleri dizisi her programda hardcoded'dir. Mint'in adresi eşleşirse, işlev hemen `true` döndürür ve uzantı kontrolü yapılmaz.

| Program | Whitelist'e eklenen mint'ler                                                                                                                                                                   |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CPMM    | `HVbpJAQGNpkgBaYBZQBR1t7yFdvaYVp2vCQQfKKEN4tM`, `Crn4x1Y2HUKko7ox2EZMT6N2t2ZyH7eKtwkBGVnhEq1g`, `FrBfWJ4qE5sCzKm3k3JaAtqZcXUh4LvJygDeketsrsH4`, `2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo` |
| CLMM    | Aynı dört, artı `DAUcJBg4jSpVoEzASxYzdqHMUN8vuTpQyG2TvDcCHfZg`, `AUSD1jCcCyPLybk1YnvPWsHQSrZ46dxwoMniN4N2UEB9`                                                                                 |

Bu adresler programa katıştırılmıştır; listeyi güncellemek 3/4 yükseltme multisig'i aracılığıyla program yükseltmesi gerekir.

### 2. Mint başına kayıt — sadece CLMM

CLMM ek olarak `SupportMintAssociated` PDA'sını `[b"support_mint", mint]` tohumunda danışır. Bu mint için PDA varsa, uzantı setine bakılmaksızın kabul edilir.

PDA `CreateSupportMintAssociated` tarafından oluşturulur ([`admin/create_support_mint_associated.rs`](https://github.com/raydium-io/raydium-clmm)). Talimat iki imza sahibine kısıtlanmıştır:

* `crate::admin::ID` — standart Raydium yönetim otoritesi.
* `crate::create_support_mint_associated_owner::ID` — bu amaç için ayrılmış otorite: `RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY` (mainnet), `rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5` (devnet).

Etki: CLMM ekibi, program yükseltmesi olmadan belirli bir Token-2022 mint'ini havuz oluşturmaya dahil edebilir. CPMM'nin eşdeğeri yoktur — izin listesi tamamen kaynak kodludur.

### 3. Superstate tespiti — sadece CLMM

CLMM, özellikle Superstate'in tokenize edilmiş varlıkları için, `ScaledUiConfig` uzantısı kullanırlar ve bu, CLMM programına bağlı `spl-token-2022` sürümü tarafından açılamaz. Bağımlılığı yükseltmek yerine, CLMM Superstate token'larını otorite şekline göre tespit eder:

```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)

Bir mint **dört de** tutar varsa bu dalı geçer:

* Sahibi olan programı Token-2022 programıdır.
* Freeze otoritesi `superstate_allowlist::ID` eşittir. Mainnet: `2Yq4T3mPNfjtEyTxSbRjRKqLf1pwbTasuCQrWe6QpM7x`. Devnet: `3TRuL3MFvzHaUfQAb6EsSAbQhWdhmYrKxEiViVkdQfXu`.
* `DefaultAccountState` uzantısı `Frozen` olarak ayarlanmıştır.
* Kalıcı delegesi de `superstate_allowlist::ID` dir.

Bu kayıt değil bir buluşsaldır — Superstate gelecekte aynı otorite şekliyle yayınladığı herhangi bir mint otomatik olarak kabul edilir.

## Bypass'ların feragat etmediği şeyler

Bypass'lar uzantı izin listesini atlar, ancak program yine de uygulanır:

* Mint `Token` veya `Token-2022` tarafından sahip olunur. Özel bir token programı yukarıda reddedilir.
* Havuz kasaları Token-2022 havuzları (`ImmutableOwner`, vb.) için doğru ATA uzantıları ile oluşturulur.
* Tüm transferler `transfer_checked` aracılığıyla yapılır — ücreti taşıyan mint'ler kasa içinde doğru tutarı belirler.

Whitelist'e veya PDA'ya kayıtlı bir mint, daha sonra örneğin `TransferHook` eklerse, swap zamanında kontrol kazanmaz; hook her transferde çalıştırılır ve swap'ları kırabilir. Bu nedenle whitelist oluşturma yüksek güven gerektiren bir işlemdir.

## "Engellendi" anlamı

`is_supported_mint` `false` döndürdüğünde, havuz oluşturma `ErrorCode::NotSupportMint` (CPMM) / `ErrorCode::NotSupportMint` (CLMM) ile geri alınır. Sayısal kodlar için [`reference/error-codes`](/tr/reference/error-codes) bakınız.

Mevcut havuzlar bu kontrol geriye dönük olarak başarısız olamaz — kapı sadece oluşturmada açılır. Mint uzantıları Raydium'un reddettiği kategoriler için değişmezdir (transfer hook, non-transferable, gizli transfer oluşturmadan sonra eklenemez), bu nedenle statik kontrol yeterlidir.

## Her dışarıda bırakılan uzantının neden dışarıda bırakıldığı

* **TransferHook** — her transferde özel bir programı çağırır, keyfi CU tüketimi, keyfi başarısızlık koşulları ve çağıran programı yeniden giriş yapabilme yeteneği. Güvenli bir sandbox yoktur. Bazı DEX'ler hook izin listeleri tutar; Raydium tutmaz.
* **NonTransferable** — `Transfer` her zaman başarısız olur. Havuz intiyat sağlayamaz.
* **ConfidentialTransfer** — transfer tutarları şifrelenir; eğri swap'ı fiyatlandıramaz.
* **PermanentDelegate** — temsilcinin sahibi, havuz kasası da dahil olmak üzere herhangi bir token hesabını temizleyebilir. Güvenilen ihraççılar (örneğin düzenlü stablecoin'ler) için statik whitelist aracılığıyla izinlidir.
* **MintCloseAuthority** — mint kapatılabilir; mevcut havuzlar kullanılamaz hale gelir. Varsayılan olarak yasaklanmıştır.
* **DefaultAccountState (Frozen)** — havuz ATA'ları `Frozen` durumda ve her hesap başına çözülmesi gerekir. Sadece Superstate tespiti aracılığıyla izinlidir, ihraççı kaydolmada kurumsal hesapları çözer.
* **Group/Member pointer'lar** — aktif olarak zararlı değildir, ancak gözden geçirilmemiştir. Yüzeyi dar tutmak için varsayılan olarak yasaklanmıştır.

## Transfer ücreti muhasebesı

`TransferFeeConfig` taşıyan mint'ler için, her swap, depozito ve çekim nominal tutardan daha az hareket ettirir. SDK hesaplamanın her iki yarısını ortaya çıkarır:

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

Doğru bir UI gösterir:

* `amountIn + token2022FeeIn` as "gönderdikleriniz"
* `amountOut - token2022FeeOut` as "aldıklarınız"
* `feeAmount` havuz ücreti olarak (LP + protokol), Token-2022 transfer ücretinden ayrı

Sadece `amountIn → amountOut` gösteren naif bir UI maliyetleri az gösterir.

### `maximumFee` sınırı

Token-2022 transfer ücretleri transfer başına sınırlanmıştır. %1 mint'i ve 10.000 token sınırı için 100.000.000 token transferi sadece 10.000 ücreti öder. SDK'nın `computeSwapAmount` sınırı uygular; doğrudan program çağıranları onu çoğaltmalıdır.

### Epok geçişi

Bir mint otoritesi, bir sonraki epochte etkinleşecek bir ücret oranı değişikliği planlayabilir. Geçiş penceresi sırasında, iki config (`older`, `newer`) mint'te aynı anda var olur ve `TransferChecked` geçerli epoche göre seçer. CPMM `SwapV2` ve CLMM `SwapV2` her ikisi de full mint hesabını `accounts`'de geçer, bu nedenle program ekstra bir lookup olmadan doğru config'i okur.

Trade API'sı veya SDK'sı aracılığıyla bir epochten fazla süre önceden alıntı yaparsanız, icra edilen ücret alıntı yapılan ücretten farklı olabilir — eski config'in `maximum_fee_basis_points` ile sınırlanmış.

## Faiz taşıyan ve ScaledUiAmount

Havuz ana tutarı tutar; "UI tutarı" ana tutarı zaman bağımlı veya yönetim tarafından ayarlanan ölçek faktörü ile çarpılır. Swap matematiği ana tutarında çalışır:

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

SDK otomatik olarak dönüştürür. Doğrudan RPC okuyucuları `pool.token0Vault.amount` öğesini ana tutarı olarak ele almalıdır.

## "Token-2022 havuzu" tanımı

Havuz **ya** mint'in `programId == TokenzQdB...` varsa Token-2022 havuzudur. API bunu ortaya çıkarır:

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

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

Göndermek için `programId` kullanın ve UI uyarısı ortaya çıkarmak için `hasTransferFee` kullanın.

## SDK yardımcıları

```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);
  }
}
```

## Ortak entegrasyon hataları

* **Sadece program kimliğini ön kontrol etme.** Bir mint Token-2022 *ve* desteklenmeyen olabilir. Havuz oluşturmaya izin vermeden önce uzantı listesini izin listesine (ve statik whitelist'e) göre yürütün.
* **Mint hiç kabul edilmediğinde SDK'nın alıntısına güvenme.** Alıntı API'sı alıntı yapmayı reddetmez — havuz oluşturma geri alınır. Havuz oluşturmayı UI'ınızda ortaya çıkarmadan önce `is_supported_mint` anlamını çevrimdışı olarak onaylayın.
* **Transfer ücreti kesintisi olmadan alıntı yapma.** Her iki tarafında %1 transfer ücreti mint'i 0,25% CPMM havuzun efektif ücret sınırı %0,25 değil, yaklaşık %2,25. SDK alıntısı veya Trade API alıntısı kullanın — asla havuzun ücret katmanından manuel olarak ücret hesaplamayın.
* **Token-2022 havuzunda eski `Swap` talimatını çağırma.** `Swap` Token-2022'yi önceden oluşturdu. Ya mint Token-2022 olduğunda her zaman `SwapV2` kullanın.
* **Otomatik olarak yeni Token-2022 mint'lerini listeleme.** Cüzdanlar ve toplayıcılar, bir mint'i kullanıcılara ortaya koymadan önce `TransferHook` ve `NonTransferable`'ı kontrol etmelidir; her ikisi de Raydium düşmanıdır.

## Gelecek çalışma

Bu matrisi değiştirecek Solana ekosistemi ve protokol yol haritası öğeleri:

* Solana düzeyinde izin listesi transfer-hook programları (ekosistem sözleşmesi gelişmekte).
* Gizli transfere uyumlu AMM'ler (araştırma aşaması).
* Daha geniş CPMM mint başına kayıt (CLMM ile eşlik).
* Bağımlılık yükseltmesi böylece CLMM'nin `ScaledUiConfig` dekodu Superstate sezgisel olmadan çalışır.

Bu sayfa hiçbiri iniş yaptığında güncellenecektir.

## İşaretçiler

* [`algorithms/token-2022-transfer-fees`](/tr/algorithms/token-2022-transfer-fees) — swap'lardaki ücret matematiği.
* [`products/cpmm/instructions`](/tr/products/cpmm/instructions) — `SwapV2`, `Initialize`.
* [`products/clmm/instructions`](/tr/products/clmm/instructions) — `SwapV2`, `CreatePool`, `CreateSupportMintAssociated`.
* [`reference/error-codes`](/tr/reference/error-codes) — program başına `NotSupportMint` sayısal kodları.

Kaynaklar:

* `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` — mint başına kayıt talimatı.
* `raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs` — LaunchLab Token-2022 base-mint oluşturma.
