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

# Miete und rückforderbare Miete

> Solana senkt das Rent-Exempt-Minimum um 90% in fünf Schritten unter SIMD-0437. Konten, die vor jedem Schritt finanziert wurden, halten mehr als nötig — was dieser Überschuss ist, welche Programme ihn zurückgeben, und wie man ihn findet und zurückfordert.

<Info>
  **Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.**

  [Englische Version ansehen →](/solana-fundamentals/rent-and-reclaimable-rent)
</Info>

<Info>
  Miete ist eine rückforderbare Kaution, keine Gebühr. SIMD-0437 senkt die Kaution, die jedes Konto halten muss, in fünf unabhängig gesteuerten Schritten. Konten, die vor einem Schritt erstellt wurden, behalten den Saldo, mit dem sie finanziert wurden, sodass jeder Schritt sie überfinanziert hinterlässt. Die SPL Token- und Token-2022-Programme können diese Differenz durch `WithdrawExcessLamports` zurückgeben, ohne das Konto zu schließen oder seinen Token-Saldo zu ändern. Nichts verfällt — der Überschuss bleibt in Ihren eigenen Konten, bis Sie ihn verschieben möchten.
</Info>

Lesen Sie zunächst [Account-Modell](/de/solana-fundamentals/account-model), wenn Sie neu in der Finanzierung von Solana-Konten sind.

## Was Miete wirklich ist

Jedes Konto auf Solana hält eine SOL-Kaution, deren Größe vom Speicherplatz abhängt, den es einnimmt. Sie wird nicht ausgegeben — sie wird vollständig zurückgegeben, wenn das Konto geschlossen wird. Die Formel lautet:

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

`ACCOUNT_STORAGE_OVERHEAD` sind feste 128 Bytes, die jedes Konto unabhängig von seiner Nutzlast zahlt. `lamports_per_byte` ist die netzwerkweite Konstante, die SIMD-0437 ändert.

Ein Standard-SPL-Token-Konto mit 165 Bytes kostet daher immer `(128 + 165) × 6.960 = 2.039.280` Lamports — die \~0,00203928 SOL, die Sie abgezogen sehen, wenn eine Wallet ein zugehöriges Token-Konto öffnet.

## Was SIMD-0437 ändert

SIMD-0437 senkt `lamports_per_byte` von 6.960 auf 696 — eine 90%-Reduktion — verteilt über fünf separate Feature Gates, damit Validatoren die Auswirkungen auf das Zustandswachstum nacheinander absorbieren können.

| Schritt      | `lamports_per_byte` | Reduktion vom Original | Miete für ein 165-Byte-Token-Konto |
| ------------ | ------------------- | ---------------------- | ---------------------------------- |
| — (Original) | 6.960               | —                      | 2.039.280 Lamports                 |
| 1            | 6.333               | 9%                     | 1.855.569 Lamports                 |
| 2            | 5.080               | 27%                    | 1.488.440 Lamports                 |
| 3            | 2.575               | 63%                    | 754.475 Lamports                   |
| 4            | 1.322               | 81%                    | 387.346 Lamports                   |
| 5            | 696                 | 90%                    | 203.928 Lamports                   |

Schritt 1 wurde am 3. September 2026 im Mainnet aktiviert. Die verbleibenden Schritte werden aktiviert, wenn ihre Feature Gates freigegeben werden; behandeln Sie den Zeitplan als änderbar und lesen Sie den aktuellen Wert vom Cluster, anstatt ihn fest zu codieren.

<Note>
  SIMD-0437 hängt von SIMD-0194 ab, das die Rent-Exemption-Schwelle veraltet macht, „um unnötige Gleitkommaarithmetik bei der Einstellung der Rent-Parameter bei Feature-Aktivierung zu vermeiden". In der Praxis trägt die `Rent`-Sysvar jetzt `lamports_per_byte_year = 6.333` mit `exemption_threshold = 1,0`, anstelle der alten `3.480 × 2`-Aufteilung, die 6.960 ergab. Multiplizieren Sie diese beiden Felder nicht selbst — rufen Sie `getMinimumBalanceForRentExemption` auf und lassen Sie den Cluster antworten.
</Note>

## Warum bestehende Konten zu viel halten

Das Senken der Konstante ändert, was ein Konto *braucht*. Es ändert nicht, was ein Konto *hat*. Ein Konto, das mit 6.960 Lamports pro Byte finanziert wurde, behält diesen Saldo, nachdem Schritt 1 aktiviert wird, sodass es überfinanziert ist um:

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

Für ein 165-Byte-SPL-Token-Konto nach Schritt 1 sind das `293 × (6.960 − 6.333) = 183.711` Lamports, oder \~0,000184 SOL pro Konto. Ein Token-2022-Konto mit Erweiterungen ist größer, daher hält es proportional mehr — ein 182-Byte-Konto ist überfinanziert um `310 × 627 = 194.370` Lamports.

Einzeln ist das Kleingeld. Eine Wallet, die im Laufe der Jahre mit einigen hundert Token interagiert hat, hält ein aussagekräftiges Vielfaches davon, und nach Schritt 5 hat jedes 165-Byte-Konto 1.835.352 Lamports (\~0,00184 SOL) über seinem Minimum.

## Welche Konten können es zurückgeben

Überschüssige Lamports in einem programmgesteuerten Konto können nur von diesem Programm verschoben werden. Ob Sie Miete ohne Schließung des Kontos zurückfordern können, hängt daher vollständig davon ab, welches Programm es besitzt.

<CardGroup cols={2}>
  <Card title="SPL Token und Token-2022" icon="circle-check">
    Beide stellen `WithdrawExcessLamports` bereit. Das Konto bleibt offen, behält seinen Token-Saldo und sinkt einfach auf das aktuelle Minimum.
  </Card>

  <Card title="Alles andere" icon="circle-xmark">
    Keine entsprechende Anweisung. Die Miete wird nur freigegeben, wenn das Konto geschlossen wird — eine destruktive Operation mit ihren eigenen Vorbedingungen, keine Miet-Sweep.
  </Card>
</CardGroup>

Konkret für die Kontotypen, die Raydium-Benutzer halten:

| Konto                             | Besitzer                                      | Kann Überschuss an Ort und Stelle zurückgeben?                        |
| --------------------------------- | --------------------------------------------- | --------------------------------------------------------------------- |
| SPL-Token-Konto                   | `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA` | Ja — `WithdrawExcessLamports`                                         |
| Token-2022-Token-Konto            | `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb` | Ja — `WithdrawExcessLamports`                                         |
| Wrapped SOL (natives) Token-Konto | eines der Token-Programme                     | Nein — siehe unten                                                    |
| CLMM-Position                     | Raydium CLMM                                  | Nein — Miete wird zurückgegeben, wenn die Position geschlossen wird   |
| OpenBook v1 offene Bestellungen   | OpenBook v1                                   | Nein — nur `CloseOpenOrders`                                          |
| OpenBook v2 offene Bestellungen   | OpenBook v2                                   | Nein — nur `close_open_orders_account`                                |
| Stake-Konto                       | Stake-Programm                                | Nein — SIMD-0490 fixiert `rent_exempt_reserve` auf 2.282.880 Lamports |

Wrapped SOL-Konten sind die eine Token-Programm-Ausnahme: ihr Lamport-Saldo *ist* ihr Token-Saldo, daher lehnen beide Programme sie mit `TokenError::NativeNotSupported` ab. Token-2022 hat `UnwrapLamports` (Diskriminant 45) für diesen Fall hinzugefügt; `@solana/spl-token` liefert `createUnwrapLamportsInstruction` dafür ab Version 0.4.15. Überspringen Sie native Konten in einer Miet-Sweep und behandeln Sie sie bewusst.

## Die `WithdrawExcessLamports`-Anweisung

Diskriminant **38** in den Anweisungs-Enums beider Token-Programme. Aus `spl-token-interface`:

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

Drei Eigenschaften machen es sicher, sie gegen jedes Konto in einer Wallet abzufeuern:

* **Sie nimmt keinen Betrag.** Das Programm berechnet `source.lamports − rent.minimum_balance(source.data_len())` selbst, sodass es ein Konto niemals unter das aktuelle Minimum bringen kann, und es bleibt korrekt, wenn später Schritte aktiviert werden.
* **Es schließt nichts.** Das Konto behält seine Daten, seinen Besitzer und seinen Token-Saldo.
* **Es ist idempotent.** Das Ausführen gegen ein Konto, das bereits am Minimum ist, verschiebt null Lamports und erfolgreich.

Ein gefrorenes Token-Konto ist immer noch berechtigt: Einfrieren beschränkt Token-Bewegung, nicht Lamports.

### Anweisung erstellen

`@solana/spl-token` exportiert keinen Builder dafür. Ab `0.4.15` ist der Enum-Eintrag noch auskommentiert:

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

Codieren Sie es direkt. Die Nutzlast ist ein einzelnes Diskriminant-Byte:

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

Übergeben Sie die `programId` jedes Kontos. SPL Token- und Token-2022-Anweisungen können eine Transaktion teilen, aber jede muss an das Programm adressiert werden, das sein Quellkonto besitzt.

Gemessen im Mainnet kostet die Anweisung 270 Compute Units im SPL Token-Programm und 1.414 in Token-2022 — in beiden Fällen vernachlässigbar. Die echte Einschränkung ist die Transaktionsgröße, nicht Compute.

## Rückforderbare Konten finden

Leiten Sie den Überschuss nicht von einer fest codierten Rate ab. Fragen Sie den Cluster, was jedes Konto gerade jetzt braucht, damit derselbe Code durch alle fünf Schritte funktioniert:

```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)` ist ein nützlicher Seitenkanal: es gibt genau `128 × lamports_per_byte` zurück, sodass die Division durch 128 Ihnen sagt, in welchem Rollout-Schritt sich der Cluster befindet, ohne die `Rent`-Sysvar zu analysieren.

## Batching: wie viele passen in eine Transaktion

Jede `WithdrawExcessLamports`-Anweisung trägt einen eindeutigen beschreibbaren Kontoschlüssel bei — 32 Bytes in der kompilierten Nachricht — plus etwa 7 Bytes Anweisungs-Codierung. Ziel, Autorität und Gebührenzahler sind alle dieselbe Wallet, daher kosten sie einen Schlüssel zusammen.

Gegen das 1.232-Byte-Transaktionslimit passen ungefähr 26 Anweisungen, wenn Compute-Budget-Anweisungen und der Blockhash gezählt werden. **Zwanzig pro Transaktion** ist die sichere Arbeitszahl, und das ist, was Raydiums eigene Implementierung verwendet. Eine Wallet mit 116 rückforderbaren Konten fegt daher in sechs Transaktionen, jeweils mit einer 5.000-Lamport-Basisgebühr.

Beachten Sie die Wirtschaft: die Gebühr wird pro Transaktion berechnet, nicht pro Konto. Das Zurückfordern weniger Konten kostet nicht weniger, weshalb eine teilweise Sweep selten die zusätzlichen Roundtrips wert ist.

## Rückforderung durch Raydium

Die Seite [raydium.io/reclaim-rent](https://raydium.io/reclaim-rent) scannt die SPL Token- und Token-2022-Konten der verbundenen Wallet, zeigt die Gesamtsumme aufgeteilt nach Programm und fegt alles in Batch-Transaktionen. Der Scan ist schreibgeschützt — keine Signatur, bis Sie **Reclaim all rent** drücken.

Die Seite behandelt absichtlich nur Token-Konten. Kontotypen, die Miete nur durch Schließen freigeben können, werden ausgeschlossen, anstatt als nicht verfügbar aufgelistet zu werden, da das Schließen eines Kontos eine andere, destruktive Aktion ist.

## Rückforderung aus der SDK-Demo

<Info>
  **Versionsbanner.** Demos zielen auf `@raydium-io/raydium-sdk-v2@0.2.42-alpha` gegen Solana mainnet-beta, verifiziert 2026-09. `WithdrawExcessLamports` wird von Hand codiert und ist unabhängig von der SDK-Version; das SDK wird nur für Transaktionserstellung und Batching verwendet.
</Info>

Zwei Skripte in [`raydium-sdk-V2-demo/src/rent`](https://github.com/raydium-io/raydium-sdk-V2-demo/tree/master/src/rent):

```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` batched bei 20 Konten pro Transaktion und signiert alle Batches in einem Durchgang:

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

Simulieren Sie, bevor Sie senden. `simulateTransaction` mit `accounts.addresses` gibt Post-Execution-Lamport-Salden zurück, was die billigste Möglichkeit ist, zu bestätigen, dass die Arithmetik dem entspricht, was der Cluster tatsächlich tun wird.

## Sollten Sie jetzt zurückfordern oder warten?

Beides ist in Ordnung, und der Unterschied ist in beiden Fällen klein:

* **Der Überschuss geht nirgendwohin.** Er bleibt in Ihren eigenen Konten. Nichts verfällt, nichts wird gefegt, kein Stichtag gilt.
* **Warten verstärkt sich.** Jeder Schritt gibt mehr aus denselben Konten frei, und eine Sweep nach Schritt 5 kostet in Gebühren genauso viel wie eine Sweep heute.
* **Jetzt zurückfordern verzichtet nicht auf spätere Schritte.** Ein Konto, das Sie heute fegen, ist einfach am aktuellen Minimum; der nächste Schritt macht es wieder überfinanziert und Sie können es erneut fegen.

Die einzige echte Kosten des frühen Zurückforderns ist die Basisgebühr, und die einzige echte Kosten des Wartens ist, dass die Lamports eine Weile länger unbeweglich bleiben.

## Weitere Lektüre

<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">
    Der Vorschlag selbst — die fünf Feature Gates und die Begründung für die schrittweise Reduktion.
  </Card>

  <Card title="Reduzierte Miete" icon="book" href="https://solana.com/upgrades/reduced-rent">
    Solanas Rollout-Seite: aktueller Schritt, Zeitplan und was sich für neue Konten ändert.
  </Card>

  <Card title="Mietreduktion: eine datengestützte Analyse" icon="chart-line" href="https://solana.com/news/rent-reduction-deep-dive">
    Die Wirtschaft und das Zustandswachstum-Risiko, das der schrittweise Rollout verwalten soll.
  </Card>

  <Card title="Account-Modell" icon="database" href="/de/solana-fundamentals/account-model">
    Wie Solana-Konten finanziert, besessen und geschlossen werden — der Hintergrund für alles oben.
  </Card>
</CardGroup>
