WithdrawExcessLamports é a instrução 38 do Token Program e move lamports excedentes de conta, mint ou multisig. Veja a documentação e o processador público.
Sempre faça o preview da instrução WithdrawExcessLamports antes de assinar.
| Conta | Writable? | Signer? | Uso |
|---|---|---|---|
source | Sim | Às vezes | Conta, mint ou multisig |
destination | Sim | Não | Recebe lamports |
authority | Não | Depende | Prova permissão |
multiSigners | Não | Se usado | Cumpre o multisig |
Conta de wallet usa owner; multisig usa membros M-de-N; mint usa mint authority; sem authority, o mint assina. Off-curve exige CPI/PDA.
import { getWithdrawExcessLamportsInstruction } from "@solana-program/token";
const instruction = getWithdrawExcessLamportsInstruction({
source,
destination,
authority,
});
await client.sendTransaction([instruction]);
authority é TransactionSigner; cosigners vão em multiSigners. Use @solana-program/token com @solana/kit. Em 2026, diferencie 2 famílias: Token-2022 é uma delas.
0.00203928 SOL: é o mínimo antigo de 165 bytes, não um valor universal.Token-2022 pode passar de 82 ou 165 bytes. CPI Guard pode bloquear o wrapper; Wrapped SOL nativo retorna NativeNotSupported. Vale para previews Token-2022 e transações Token-2022.
Integrações Token-2022 devem sempre usar o tamanho real.
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 é destino e authority padrão. authorityPublicKey e até 11 multisigSignerPublicKeys são opcionais. A taxa-base é 200 bps; podem ser usados partnerFeeAccount, partnerFeeBps e feeLamports.
