WithdrawExcessLamports est l'instruction 38 du Token Program. Elle déplace les lamports excédentaires d'un mint, compte de token ou multisig.
Fonctionnement
WithdrawExcessLamports ne transfère que le SOL supérieur à la réserve live. La source reste ouverte et les données token/mint ne changent pas. La signature dépend du type de source.
Elle existe pour SPL Token et Token-2022. Voir la documentation Solana et le processeur public.
| Compte | Writable ? | Signer ? | Rôle |
|---|---|---|---|
source | Oui | Parfois | Compte, mint ou multisig excédentaire |
destination | Oui | Non | Reçoit les lamports |
authority | Non | Selon la source | Prouve l'autorisation |
multiSigners | Non | Si utilisé | Satisfont le seuil multisig |
| Source | Authority requise |
|---|---|
| Compte détenu par wallet | Owner du compte |
| Compte multisig | Membres M-sur-N |
| Mint avec mint authority | Mint authority active |
| Mint sans mint authority | Compte mint lui-même |
| Multisig source | Membres M-sur-N configurés |
Un mint on-curve révoqué exige sa keypair ; un mint off-curve, un CPI avec les bons seeds PDA.
Exemple client
import { getWithdrawExcessLamportsInstruction } from "@solana-program/token";
const instruction = getWithdrawExcessLamportsInstruction({
source,
destination,
authority,
});
await client.sendTransaction([instruction]);
authority est un TransactionSigner ; les cosignataires passent dans multiSigners. L'exemple utilise @solana-program/token et peut être composé avec @solana/kit.
En 2026, distinguez 2 familles de programmes token ; Token-2022 est l'une d'elles.
Ne codez pas en dur 0.00203928 SOL. C'est l'ancien minimum d'un compte de 165 octets, pas une valeur live universelle. Interrogez la réserve de la taille réelle juste avant la prévisualisation.
Les extensions Token-2022 peuvent dépasser 82 ou 165 octets. Un CPI Guard verrouillé peut bloquer le wrapper. Wrapped SOL natif renvoie NativeNotSupported. Ces règles valent pour les prévisualisations Token-2022 et transactions Token-2022.
API Sol Incinerator
Assetcinerator applique les frais de protocole et de partenaire comme couche produit ; l'instruction token brute ne les exige pas.
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 est destination et authority par défaut. authorityPublicKey et jusqu'à 11 multisigSignerPublicKeys sont optionnels. Frais de base : 200 bps ; les intégrateurs peuvent ajouter partnerFeeAccount et partnerFeeBps. Utilisez feeLamports et les montants renvoyés.
Traitez séparément : aucun excédent, mauvais owner/layout, authority invalide, multisig incomplet, compte natif, CPI Guard, état modifié ou montant non rentable.

Sol Incinerator
Prévisualisez l'excédent live ou construisez un retrait sûr via l'API v2.