Überschüssige Lamports abheben

Was bewirkt „Überschüssige Lamports abheben“?

WithdrawExcessLamports verschiebt SOL, das von einem Token Program-Konten über seinem mietbefreiten Minimum gehalten wird, auf ein Zielkonto. Token-Guthaben und Mint-Angebot bleiben unberührt – nur die überschüssigen lamports werden bewegt.

Dies stellt SOL wieder her, das zuvor nicht zugänglich war: lamports, die an ein token account, einen Mint oder ein Multisig (alles im Besitz des Token Program) gesendet wurden, konnten andernfalls nicht verschoben werden.

Quellenreferenz

ElementBeschreibungQuelle
WithdrawExcessLamportsDie Anweisung (Diskriminator 38).Quelle
process_withdraw_excess_lamportsProzessorlogik und Berechtigungsprüfungen.Quelle

Konten

KontenBeschreibung
sourceBeschreibbar. Das token account, der Mint oder das Multisig, von dem abgehoben wird.
destinationBeschreibbar. Empfängt die überschüssigen lamports.
authorityUnterzeichnet basierend auf dem Typ des Quellkontos (siehe unten).

Wer kann unterzeichnen

Der erforderliche Signer hängt vom Typ des source-Kontos ab:

QuellkontoSigner
Token accountDer Eigentümer des token account (oder seine Multisig-Signer).
Mint mit einer Mint-AutoritätDie Mint-Autorität.
Mint ohne eine Mint-AutoritätDas mint account selbst muss unterzeichnen (siehe Hinweis unten).
MultisigDie konfigurierten M-von-N-Signer.

Der Fall „Mint ohne Mint-Autorität“ ist ungewöhnlich. Wenn er zutrifft, ist das Mint-Konten der Signer: Ein programmeigenes (off-curve) Mint signiert per CPI aus seinem besitzenden Programm, und ein keypair (on-curve) Mint signiert mit seinem Schlüssel.

Native (wrapped SOL) token accounts werden nicht unterstützt und geben NativeNotSupported zurück. Die Auszahlung darf das Quell-Konten nicht unter sein Rent-Exempt-Minimum senken.

So heben Sie überschüssige Lamports ab

Das Beispiel verwendet einen konfigurierten @solana/kit Client — siehe Token übertragen für die Client-Einrichtung.

Withdraw excess lamports (Kit)
import { getWithdrawExcessLamportsInstruction } from "@solana-program/token";
// source/destination: addresses of the account to drain and the lamport recipient.
// authority: a TransactionSigner that signs per the source account type.
const instruction = getWithdrawExcessLamportsInstruction({
source,
destination,
authority
});
await client.sendTransaction([instruction]);

Für eine Multisig-Autorität übergeben Sie die Mitsignierer mit multiSigners.

Is this page helpful?

Inhaltsverzeichnis

Seite bearbeiten
© 2026 Solana Foundation. Alle Rechte vorbehalten.