Sacar Lamports Excedentes

O Que Faz o Saque de Lamports Excedentes?

WithdrawExcessLamports move o SOL mantido por uma conta do Token Program acima do seu mínimo isento de aluguel para uma conta de destino. Os saldos de tokens e o fornecimento do mint permanecem intocados — apenas os lamports excedentes são movidos.

Isso recupera SOL que estava anteriormente bloqueado: lamports enviados para um token account, mint ou multisig (todos pertencentes ao Token Program) não podiam ser movidos de outra forma.

Referência do Código-Fonte

ItemDescriçãoFonte
WithdrawExcessLamportsA instrução (discriminador 38).Fonte
process_withdraw_excess_lamportsLógica do processador e verificações de autoridade.Fonte

Contas

ContaDescrição
sourceGravável. O token account, mint ou multisig do qual sacar.
destinationGravável. Recebe os lamports excedentes.
authorityAssina com base no tipo da conta de origem (veja abaixo).

Quem Pode Assinar

O signatário necessário depende do tipo da conta source:

Conta de origemSignatário
Token accountO proprietário do token account (ou seus signatários multisig).
Mint com autoridade de mintA autoridade de mint.
Mint sem autoridade de mintO próprio mint account deve assinar (veja a nota abaixo).
MultisigOs signatários M-de-N configurados.

O caso "mint sem uma mint authority" é incomum. Quando se aplica, a conta mint é o signatário: um mint de propriedade de programa (fora da curva) assina via CPI do seu programa proprietário, e um keypair mint (na curva) assina com sua chave.

Token accounts de SOL nativo (wrapped SOL) não são suportadas e retornam NativeNotSupported. O saque não pode reduzir a conta de origem abaixo do mínimo isento de aluguel.

Como Sacar Lamports Excedentes

O exemplo utiliza um cliente @solana/kit configurado — consulte Transferir Tokens para configuração do cliente.

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

Para uma authority multisig, passe os co-signatários com multiSigners.

Is this page helpful?

Índice

Editar Página
© 2026 Fundação Solana. Todos os direitos reservados.