Wat Doet Overtollige Lamports Opnemen?
WithdrawExcessLamports verplaatst SOL die door een Token Program-account
wordt aangehouden boven het huurvrije minimum naar een bestemmingsaccount.
Tokenbalansen en mint-voorraad blijven onaangetast — alleen de overtollige
lamports worden verplaatst.
Dit herstelt SOL die eerder vast zat: lamports die naar een token account, mint of multisig (allemaal eigendom van het Token Program) werden gestuurd, konden anders niet worden verplaatst.
Bronverwijzing
| Item | Beschrijving | Bron |
|---|---|---|
WithdrawExcessLamports | De instructie (discriminator 38). | Bron |
process_withdraw_excess_lamports | Processorlogica en autoriteitscontroles. | Bron |
Accounts
| Account | Beschrijving |
|---|---|
source | Schrijfbaar. Het token account, de mint of het multisig om van op te nemen. |
destination | Schrijfbaar. Ontvangt de overtollige lamports. |
authority | Ondertekent op basis van het type bronaccount (zie hieronder). |
Wie Kan Ondertekenen
De vereiste ondertekenaar hangt af van het type source-account:
| Bronaccount | Ondertekenaar |
|---|---|
| Token account | De eigenaar van het token account (of de bijbehorende multisig-ondertekenaars). |
| Mint met een mint-autoriteit | De mint-autoriteit. |
| Mint zonder een mint-autoriteit | Het mint account zelf moet ondertekenen (zie de opmerking hieronder). |
| Multisig | De geconfigureerde M-van-N-ondertekenaars. |
Het geval "mint zonder mint authority" is ongebruikelijk. Wanneer dit van toepassing is, is het mint-account de ondertekenaar: een programma-eigendom (off-curve) mint ondertekent via een CPI van het eigenaarsprogramma, en een keypair (on-curve) mint ondertekent met zijn sleutel.
Native (wrapped SOL) token accounts worden niet ondersteund en retourneren
NativeNotSupported. De opname kan het bronaccount niet onder het minimale
rent-exempt bedrag brengen.
Hoe overtollige lamports op te nemen
Het voorbeeld gebruikt een geconfigureerde
@solana/kit client — zie
Tokens overmaken voor de
clientinstelling.
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]);
Voor een multisig authority geeft u de mede-ondertekenaars mee met
multiSigners.
Is this page helpful?