Preleva Lamport in Eccesso

Cosa fa Preleva Lamport in Eccesso?

WithdrawExcessLamports sposta il SOL detenuto da un account del Token Program al di sopra del suo minimo esente da rent verso un account di destinazione. I saldi dei token e la supply del mint rimangono invariati — si spostano solo i lamport in eccesso.

Questo recupera il SOL precedentemente bloccato: i lamport inviati a un token account, a un mint o a un multisig (tutti di proprietà del Token Program) non potevano altrimenti essere spostati.

Riferimento al Codice Sorgente

ElementoDescrizioneSorgente
WithdrawExcessLamportsL'istruzione (discriminatore 38).Sorgente
process_withdraw_excess_lamportsLogica del processore e controlli di autorità.Sorgente

Account

AccountDescrizione
sourceScrivibile. Il token account, mint o multisig da cui prelevare.
destinationScrivibile. Riceve i lamport in eccesso.
authorityFirma in base al tipo di account sorgente (vedi sotto).

Chi Può Firmare

Il firmatario richiesto dipende dal tipo di account source:

Account sorgenteFirmatario
Token accountIl proprietario del token account (o i suoi firmatari multisig).
Mint con una mint authorityLa mint authority.
Mint senza una mint authorityIl mint account stesso deve firmare (vedi la nota in basso).
MultisigI firmatari M-di-N configurati.

Il caso "mint senza mint authority" è poco comune. Quando si applica, l'account mint è il firmatario: un mint di proprietà di un programma (off-curve) firma tramite una CPI dal programma proprietario, e un keypair mint (on-curve) firma con la propria chiave.

I token account nativi (SOL wrapped) non sono supportati e restituiscono NativeNotSupported. Il prelievo non può portare l'account sorgente al di sotto del minimo esente da rent.

Come Prelevare i lamport in Eccesso

L'esempio utilizza un client @solana/kit configurato — consulta Trasferire Token per la configurazione del client.

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]);

Per un'authority multisig, passa i co-firmatari con multiSigners.

Is this page helpful?

Indice dei contenuti

Modifica pagina
© 2026 Solana Foundation. Tutti i diritti riservati.