WithdrawExcessLamports ist Token-Program-Anweisung 38. Sie bewegt überschüssige Lamports aus einem Mint, Token-Konto oder Multisig, die nicht per normaler Token-Übertragung bewegt werden können.
Was macht WithdrawExcessLamports?
WithdrawExcessLamports verschiebt nur SOL oberhalb der Live-Rent-Reserve eines Token-Program-Kontos. Die Quelle bleibt offen und Token- oder Mint-Daten ändern sich nicht. Welche Signatur nötig ist, hängt vom Quelltyp ab.
Die Anweisung existiert für SPL Token und Token-2022. Das Verhalten steht in der Solana-Dokumentation, der Prozessor im öffentlichen Token-Repository.
| Konto | Writable? | Signierer? | Zweck |
|---|---|---|---|
source | Ja | Teilweise | Token-Konto, Mint oder Multisig mit Überschuss |
destination | Ja | Nein | Empfängt Lamports |
authority | Nein | Vom Quelltyp abhängig | Belegt Berechtigung |
multiSigners | Nein | Bei Nutzung ja | Erfüllen Multisig-Schwelle |
| Quelle | Erforderliche Authority |
|---|---|
| Wallet-eigenes Token-Konto | Token-Konto-Eigentümer |
| Token-Multisig-Konto | Erforderliche M-von-N-Mitglieder |
| Mint mit aktiver Mint Authority | Aktuelle Mint Authority |
| Mint ohne Mint Authority | Mint-Konto selbst |
| Multisig als Quellkonto | Konfigurierte M-von-N-Mitglieder |
Ein widerrufener On-Curve-Mint benötigt sein Keypair; ein Off-Curve-Mint eine CPI mit korrekten PDA-Seeds.
Client-Beispiel
import { getWithdrawExcessLamportsInstruction } from "@solana-program/token";
const instruction = getWithdrawExcessLamportsInstruction({
source,
destination,
authority,
});
await client.sendTransaction([instruction]);
authority ist ein passender TransactionSigner; Multisig-Cosignierer werden über multiSigners übergeben. Paketversionen sollten festgesetzt und kompiliert geprüft werden.
Das Beispiel verwendet @solana-program/token; Anwendungen können es mit @solana/kit zusammensetzen.
Stand 2026 musst du 2 Tokenprogramm-Familien unterscheiden; Token-2022 ist eine davon.
Verwende 0.00203928 SOL nicht als fest codierte Reserve. Das ist der bisherige Mindestwert eines Standardkontos mit 165 Byte, kein universeller Live-Wert. Frage unmittelbar vor Vorschau oder Build die Reserve für die echte Datenlänge ab.
Token-2022-Erweiterungen können statt 82 oder 165 Byte größere Konten erzeugen. Ein gesperrter CPI Guard kann Wrapper-Aufrufe verhindern. Native Wrapped-SOL-Konten liefern NativeNotSupported und müssen über einen anderen Schließpfad behandelt werden. Diese Regeln gelten für Token-2022-Vorschauen und Token-2022-Transaktionen.
Sol-Incinerator-API
Assetcinerator erzwingt Protokoll- und optionale Partnergebühren als Produktschicht; die rohe Token-Anweisung selbst verlangt diese Gebühr nicht.
curl -X POST https://v2.api.sol-incinerator.com/withdraw-excess-lamports/preview \
-H "content-type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"userPublicKey": "DESTINATION_WALLET",
"sourceAccount": "TOKEN_ACCOUNT_MINT_OR_MULTISIG"
}'
POST /withdraw-excess-lamportsPOST /withdraw-excess-lamports-instructions
userPublicKey ist Ziel und Standard-Authority. Optional sind authorityPublicKey sowie bis zu 11 multisigSignerPublicKeys. Die Basisgebühr beträgt 200 bps; Integratoren können partnerFeeAccount und partnerFeeBps hinzufügen. Nutze feeLamports und die Rückforderungsfelder der Antwort.
Behandle fehlenden Überschuss, falschen Owner oder Layout, ungültige Authority, unvollständiges Multisig, natives Konto, gesperrten CPI Guard, geänderten Zustand und unwirtschaftlich kleine Beträge als eigene Fehlerfälle.

Sol Incinerator
Prüfe Live-Überschuss oder erstelle über die v2 API eine signatursichere Auszahlung.