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

# Kira ve Geri Alınabilir Kira

> Solana, SIMD-0437 kapsamında kira-muaf minimum tutarını beş adımda %90 oranında azaltıyor. Her adımdan önce oluşturulan hesaplar, ihtiyaç duydukları miktardan daha fazlasını tutuyor — bu fazlalık nedir, hangi programlar bunu geri verir ve nasıl bulup geri alırsınız.

<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 →](/solana-fundamentals/rent-and-reclaimable-rent)
</Info>

<Info>
  Kira bir ücret değil, iade edilebilir bir depozitodur. SIMD-0437, her hesabın tutması gereken depozitoyu beş bağımsız kapılı adımda azaltır. Bir adımdan önce oluşturulan hesaplar, finanse edildikleri bakiyeyi tutar; bu nedenle her adım onları aşırı finanse eder. SPL Token ve Token-2022 programları, hesabı kapatmadan veya token bakiyesine dokunmadan `WithdrawExcessLamports` aracılığıyla bu farkı geri verebilir. Hiçbir şey sona ermez — fazlalık, onu taşımayı seçene kadar kendi hesaplarınızda kalır.
</Info>

Solana hesaplarının nasıl finanse edildiğini yeni öğreniyorsanız, önce [Hesap Modeli](/tr/solana-fundamentals/account-model) bölümünü okuyun.

## Kira aslında nedir

Solana'daki her hesap, kapladığı alan tarafından boyutlandırılan bir SOL depozitosu tutar. Harcanmaz — hesap kapatıldığında tamamen iade edilir. Formül şu şekildedir:

```
minimum_balance(data_len) = (ACCOUNT_STORAGE_OVERHEAD + data_len) × lamports_per_byte
```

`ACCOUNT_STORAGE_OVERHEAD`, yükü ne olursa olsun her hesabın ödediği sabit 128 bayttır. `lamports_per_byte`, SIMD-0437'nin değiştirdiği ağ genelinde sabittir.

Standart 165 baytlık bir SPL token hesabı bu nedenle her zaman `(128 + 165) × 6,960 = 2,039,280` lamport maliyeti — bir cüzdan ilişkili token hesabı açtığında görülen \~0.00203928 SOL.

## SIMD-0437 ne değiştirir

SIMD-0437, `lamports_per_byte` değerini 6,960'tan 696'ya düşürür — %90 azalış — beş ayrı özellik kapısı aracılığıyla dağıtılır, böylece doğrulayıcılar durum büyümesi etkisini bir seferde bir adım absorbe edebilir.

| Adım         | `lamports_per_byte` | Orijinalden Azalış | 165 baytlık token hesabı için Kira |
| ------------ | ------------------- | ------------------ | ---------------------------------- |
| — (orijinal) | 6,960               | —                  | 2,039,280 lamport                  |
| 1            | 6,333               | %9                 | 1,855,569 lamport                  |
| 2            | 5,080               | %27                | 1,488,440 lamport                  |
| 3            | 2,575               | %63                | 754,475 lamport                    |
| 4            | 1,322               | %81                | 387,346 lamport                    |
| 5            | 696                 | %90                | 203,928 lamport                    |

Adım 1, mainnet'te 3 Eylül 2026'da etkinleştirildi. Kalan adımlar, özellik kapıları etkinleştirildikçe yayınlanır; zamanlamayı değişebilir olarak kabul edin ve canlı değeri kodlamak yerine kümeden okuyun.

<Note>
  SIMD-0437, SIMD-0194'e bağlıdır; bu, kira muafiyet eşiğini "özellik etkinleştirmesinde kira parametrelerini ayarlarken gereksiz kayan nokta matematiğinden kaçınmak için" kullanımdan kaldırır. Uygulamada `Rent` sysvar artık `lamports_per_byte_year = 6,333` ile `exemption_threshold = 1.0` taşır; eski `3,480 × 2` bölünmesi yerine 6,960 üretir. Bu iki alanı kendiniz çarpmayın — `getMinimumBalanceForRentExemption` çağırın ve kümenin cevap vermesine izin verin.
</Note>

## Neden mevcut hesaplar çok fazla tutuyor

Sabiti düşürmek, bir hesabın *ihtiyaç duyduğu* şeyi değiştirir. Bir hesabın *sahip olduğu* şeyi değiştirmez. Adım 1 etkinleştirilmeden sonra 6,960 lamport başına finanse edilen bir hesap bu bakiyeyi tutar; bu nedenle aşırı finanse edilir:

```
excess = (128 + data_len) × (old_rate − new_rate)
```

Adım 1'den sonra 165 baytlık bir SPL token hesabı için bu `293 × (6,960 − 6,333) = 183,711` lamport veya hesap başına \~0.000184 SOL'dir. Uzantı taşıyan bir Token-2022 hesabı daha büyüktür; bu nedenle orantılı olarak daha fazla tutar — 182 baytlık bir hesap `310 × 627 = 194,370` lamport tarafından aşırı finanse edilir.

Bireysel olarak bu toz miktarıdır. Yıllar içinde birkaç yüz token ile etkileşim kurmuş bir cüzdan, bunun anlamlı bir katını tutuyor ve adım 5'e kadar her 165 baytlık hesap, minimumunun üzerinde 1,835,352 lamport (\~0.00184 SOL) tutuyor.

## Hangi hesaplar bunu geri verebilir

Program tarafından sahip olunan bir hesaptaki fazla lamportlar yalnızca o program tarafından taşınabilir. Hesabı kapatmadan kira geri alıp alamayacağınız tamamen hangi programın sahip olduğuna bağlıdır.

<CardGroup cols={2}>
  <Card title="SPL Token ve Token-2022" icon="circle-check">
    Her ikisi de `WithdrawExcessLamports` sunar. Hesap açık kalır, token bakiyesini tutar ve basitçe geçerli minimuma düşer.
  </Card>

  <Card title="Diğer Her Şey" icon="circle-xmark">
    Eşdeğer bir talimat yok. Kira yalnızca hesap kapatıldığında serbest bırakılır — kendi ön koşulları olan yıkıcı bir işlem, kira taraması değil.
  </Card>
</CardGroup>

Somut olarak, Raydium kullanıcılarının tuttuğu hesap türleri için:

| Hesap                           | Sahip                                         | Fazlalığı yerinde geri verebilir mi?                                            |
| ------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------- |
| SPL token hesabı                | `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA` | Evet — `WithdrawExcessLamports`                                                 |
| Token-2022 token hesabı         | `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb` | Evet — `WithdrawExcessLamports`                                                 |
| Sarılı SOL (yerel) token hesabı | her iki token programı                        | Hayır — aşağıya bakın                                                           |
| CLMM pozisyonu                  | Raydium CLMM                                  | Hayır — kira pozisyon kapatıldığında iade edilir                                |
| OpenBook v1 açık emirler        | OpenBook v1                                   | Hayır — yalnızca `CloseOpenOrders`                                              |
| OpenBook v2 açık emirler        | OpenBook v2                                   | Hayır — yalnızca `close_open_orders_account`                                    |
| Stake hesabı                    | Stake programı                                | Hayır — SIMD-0490 `rent_exempt_reserve` değerini 2,282,880 lamport'ta sabitledi |

Sarılı SOL hesapları tek token programı istisnasıdır: lamport bakiyeleri *token* bakiyesidir; bu nedenle her iki program da `TokenError::NativeNotSupported` ile reddeder. Token-2022, bu durum için `UnwrapLamports` (discriminant 45) ekledi; `@solana/spl-token` 0.4.15 itibariyle `createUnwrapLamportsInstruction` gönderir. Yerel hesapları kira taramasında atlayın ve bunları kasıtlı olarak işleyin.

## `WithdrawExcessLamports` Talimatı

Her iki token programının talimat enum'larında **38** discriminant'ı. `spl-token-interface` kaynağından:

```rust theme={null}
/// This instruction is to be used to rescue SOL sent to any TokenProgram
/// owned account by sending them to any other account, leaving behind only
/// lamports for rent exemption.
///
/// 0. `[writable]` Source Account owned by the token program
/// 1. `[writable]` Destination account
/// 2. `[signer]` Authority
/// 3. `..3+M` `[signer]` M signer accounts
WithdrawExcessLamports,
```

Üç özellik, bunu bir cüzdandaki her hesaba karşı güvenli bir şekilde ateşlemeyi sağlar:

* **Bir miktar almaz.** Program `source.lamports − rent.minimum_balance(source.data_len())` değerini kendisi hesaplar; bu nedenle bir hesabı hiçbir zaman geçerli minimumun altına alamaz ve sonraki adımlar etkinleştirildikçe doğru kalır.
* **Hiçbir şeyi kapatmaz.** Hesap verilerini, sahibini ve token bakiyesini tutar.
* **İdempotent'tir.** Zaten minimumda olan bir hesaba karşı çalıştırmak sıfır lamport taşır ve başarılı olur.

Dondurulmuş bir token hesabı hala uygun: dondurmak token hareketini kısıtlar, lamportları değil.

### Talimatı Oluşturma

`@solana/spl-token` bunun için bir oluşturucu dışa aktarmaz. `0.4.15` itibariyle enum girişi hala yorum satırı içinde:

```ts theme={null}
// packages/spl-token/src/instructions/types.ts
export enum TokenInstruction {
    // ...
    TransferHookExtension = 36,
    // ConfidentialTransferFeeExtension = 37,
    // WithdrawalExcessLamports = 38,   // ← not exposed
    MetadataPointerExtension = 39,
    // ...
}
```

Doğrudan kodlayın. Yük tek bir discriminant baytıdır:

```ts theme={null}
import { PublicKey, TransactionInstruction } from "@solana/web3.js";

export function createWithdrawExcessLamportsInstruction(params: {
  source: PublicKey;        // the token account holding excess lamports
  destination: PublicKey;   // where the excess goes — usually the wallet itself
  authority: PublicKey;     // owner of `source`, or the multisig account
  multiSigners?: PublicKey[];
  programId: PublicKey;     // TOKEN_PROGRAM_ID or TOKEN_2022_PROGRAM_ID
}): TransactionInstruction {
  const { source, destination, authority, multiSigners = [], programId } = params;
  return new TransactionInstruction({
    programId,
    keys: [
      { pubkey: source, isSigner: false, isWritable: true },
      { pubkey: destination, isSigner: false, isWritable: true },
      { pubkey: authority, isSigner: !multiSigners.length, isWritable: false },
      ...multiSigners.map((pubkey) => ({ pubkey, isSigner: true, isWritable: false })),
    ],
    data: Buffer.from([38]),
  });
}
```

Her hesabın kendi `programId` değerini geçin. SPL Token ve Token-2022 talimatları bir işlemde paylaşılabilir, ancak her biri, kaynak hesabına sahip olan programa adreslenmelidir.

Mainnet'te ölçüldüğünde, talimat SPL Token programında 270 işlem birimi ve Token-2022'de 1,414 işlem birimi maliyeti — her iki şekilde de ihmal edilebilir. Gerçek kısıtlama işlem boyutu, işlem değil.

## Geri Alınabilir Hesapları Bulma

Fazlalığı kodlanmış bir oranından türetmeyin. Her hesabın şu anda ihtiyaç duyduğu şeyi kümeden sorun; böylece aynı kod beş adımın tamamında çalışmaya devam eder:

```ts theme={null}
const [tokenResp, token2022Resp] = await Promise.all([
  connection.getTokenAccountsByOwner(owner, { programId: TOKEN_PROGRAM_ID }),
  connection.getTokenAccountsByOwner(owner, { programId: TOKEN_2022_PROGRAM_ID }),
]);
const raw = [...tokenResp.value, ...token2022Resp.value];

// one lookup per distinct account size — a wallet normally has two or three
const spaces = Array.from(new Set(raw.map(({ account }) => account.data.length)));
const minimums = new Map(
  await Promise.all(
    spaces.map(async (space) => [space, await connection.getMinimumBalanceForRentExemption(space)] as const),
  ),
);

const reclaimable = raw.filter(({ account }) => {
  // wrapped SOL carries its token balance as lamports — both programs refuse it.
  // The `is_native` COption tag sits at offset 109 in the token account layout,
  // which Token-2022 preserves before its extension data.
  if (account.data.readUInt32LE(109) === 1) return false;
  return account.lamports > minimums.get(account.data.length)!;
});
```

`getMinimumBalanceForRentExemption(0)` yararlı bir yan kanal: tam olarak `128 × lamports_per_byte` döndürür; bu nedenle 128'e bölmek, `Rent` sysvar'ı ayrıştırmadan kümenin hangi dağıtım adımında olduğunu söyler.

## Toplu İşleme: Bir İşleme Kaç Tane Sığar

Her `WithdrawExcessLamports` talimatı, bir benzersiz yazılabilir hesap anahtarı — derlenmiş mesajda 32 bayt — artı yaklaşık 7 bayt talimat kodlaması katkıda bulunur. Hedef, otorite ve ücret ödeyici hepsi aynı cüzdan; bu nedenle aralarında bir anahtar maliyeti vardır.

1,232 baytlık işlem sınırına karşı, işlem bütçesi talimatları ve blockhash sayıldığında kabaca 26 talimat sığar. **İşlem başına yirmi** güvenli çalışma numarasıdır ve Raydium'un kendi uygulaması bunu kullanır. 116 geri alınabilir hesabı olan bir cüzdan bu nedenle altı işlemde tarar; her biri bir 5,000 lamport taban ücreti.

Ekonomiyi not edin: ücret işlem başına alınır, hesap başına değil. Daha az hesap geri almak daha az maliyeti yoktur; bu nedenle kısmi bir tarama nadiren ekstra gidiş dönüşlere değer.

## Raydium Aracılığıyla Geri Alma

[raydium.io/reclaim-rent](https://raydium.io/reclaim-rent) sayfası, bağlı cüzdanın SPL Token ve Token-2022 hesaplarını tarar, toplam tutarı programa göre bölünmüş olarak gösterir ve her şeyi toplu işlemler halinde tarar. Tarama salt okunur — **Tüm Kiraları Geri Al** düğmesine basana kadar imza yok.

Sayfa kasıtlı olarak yalnızca token hesaplarını kapsar. Kiraları yalnızca kapatarak serbest bırakabilen hesap türleri, kullanılamaz olarak listelenmek yerine hariç tutulur; çünkü bir hesabı kapatmak farklı, yıkıcı bir işlemdir.

## SDK Demosundan Geri Alma

<Info>
  **Sürüm başlığı.** Demolar, Solana mainnet-beta'ya karşı `@raydium-io/raydium-sdk-v2@0.2.42-alpha` hedefler; 2026-09 doğrulanmıştır. `WithdrawExcessLamports` elle kodlanır ve SDK sürümünden bağımsızdır; SDK yalnızca işlem oluşturma ve toplu işleme için kullanılır.
</Info>

[`raydium-sdk-V2-demo/src/rent`](https://github.com/raydium-io/raydium-sdk-V2-demo/tree/master/src/rent) içinde iki komut dosyası:

```bash theme={null}
# read-only: what can this wallet reclaim, and what would it be worth after all five steps
yarn dev src/rent/checkReclaimableRent.ts
yarn dev src/rent/checkReclaimableRent.ts <any wallet address>

# build, simulate (DRY_RUN = true by default), then send the batched sweep
yarn dev src/rent/reclaimRent.ts
```

`reclaimRent.ts`, işlem başına 20 hesapta toplu işleme yapar ve tüm toplu işlemleri bir geçişte imzalar:

```ts theme={null}
const batches = chunk(report.accounts, ACCOUNTS_PER_TX);

const builtTxs = await Promise.all(
  batches.map(async (batch) => {
    const builder = new TxBuilder({
      connection,
      feePayer: owner.publicKey,
      cluster: raydium.cluster,
      owner: raydium.owner,
    });
    builder.addInstruction({
      instructions: batch.map((account) =>
        createWithdrawExcessLamportsInstruction({
          source: account.pubkey,
          destination: owner.publicKey,
          authority: owner.publicKey,
          programId: account.programId,
        }),
      ),
    });
    return builder.versionBuild({ txVersion });
  }),
);

// versionMultiBuild puts the calling builder's transaction first and appends
// extraPreBuildData after it, so batch 1 drives and batches 2..n follow in order
const [firstTx, ...restTxs] = builtTxs;
const { execute } = await firstTx.builder.versionMultiBuild({ txVersion, extraPreBuildData: restTxs });
const { txIds } = await execute({ sequentially: true });
```

Göndermeden önce simüle edin. `simulateTransaction` ile `accounts.addresses`, yürütme sonrası lamport bakiyelerini döndürür; bu, aritmetiğin kümenin gerçekte yapacağı şeyle eşleştiğini doğrulamanın en ucuz yoludur.

## Şimdi mi Geri Almalı yoksa Beklemeli mi?

Her ikisi de iyidir ve fark her iki şekilde de küçüktür:

* **Fazlalık hiçbir yere gitmiyor.** Kendi hesaplarınızda kalır. Hiçbir şey sona ermez, hiçbir şey taranmaz, son tarih uygulanmaz.
* **Bekleme bileşik olur.** Her adım aynı hesaplardan daha fazlasını serbest bırakır ve adım 5'ten sonra bir tarama, bugün bir tarama kadar ücret maliyeti.
* **Şimdi geri almak sonraki adımları kaybettirmez.** Bugün taradığınız bir hesap basitçe geçerli minimumda; sonraki adım onu tekrar aşırı finanse eder ve bunu tekrar tarayabilirsiniz.

Erken geri almanın tek gerçek maliyeti taban ücreti; beklemenin tek gerçek maliyeti lamportların biraz daha uzun süre hareketsiz kalmasıdır.

## Daha Fazla Okuma

<CardGroup cols={2}>
  <Card title="SIMD-0437" icon="file-code" href="https://github.com/solana-foundation/solana-improvement-documents/blob/main/proposals/0437-incremental-rent-reduction.md">
    Teklif kendisi — beş özellik kapısı ve azalmayı adımlandırmanın mantığı.
  </Card>

  <Card title="Azaltılmış Kira" icon="book" href="https://solana.com/upgrades/reduced-rent">
    Solana'nın dağıtım sayfası: geçerli adım, zamanlama ve yeni hesaplar için ne değişir.
  </Card>

  <Card title="Kira azaltma: veriye dayalı analiz" icon="chart-line" href="https://solana.com/news/rent-reduction-deep-dive">
    Ekonomi ve adımlandırılmış dağıtımın yönetmek için tasarlandığı durum büyümesi riski.
  </Card>

  <Card title="Hesap Modeli" icon="database" href="/tr/solana-fundamentals/account-model">
    Solana hesaplarının nasıl finanse edildiği, sahip olunduğu ve kapatıldığı — yukarıdaki her şeyin arka planı.
  </Card>
</CardGroup>
