Mitä ylimääräisten lamport-yksiköiden nostaminen tekee?
WithdrawExcessLamports siirtää Token Program -tilin hallussa pitämän
SOL:n, joka ylittää vuokravapautusminimin, kohdepankkitilille. Token-saldot ja
mint-tarjonta pysyvät koskemattomina — vain ylimääräiset lamport-yksiköt
siirtyvät.
Tämä palauttaa aiemmin jumiin jääneen SOL:n: lamport-yksiköitä, jotka oli lähetetty token account-, mint- tai multisig-tilille (kaikki Token Program -ohjelman omistamia), ei muutoin voinut siirtää.
Lähdeviite
| Kohde | Kuvaus | Lähde |
|---|---|---|
WithdrawExcessLamports | Käsky (erottelija 38). | Lähde |
process_withdraw_excess_lamports | Prosessorin logiikka ja valtuustarkistukset. | Lähde |
Tilit
| Tili | Kuvaus |
|---|---|
source | Kirjoitettava. token account, mint tai multisig, jolta nostetaan. |
destination | Kirjoitettava. Vastaanottaa ylimääräiset lamport-yksiköt. |
authority | Allekirjoittaa lähdepankkitilin tyypin perusteella (katso alta). |
Kuka voi allekirjoittaa
Vaadittu allekirjoittaja riippuu source-tilin tyypistä:
| Lähdetili | Allekirjoittaja |
|---|---|
| Token account | token account -tilin omistaja (tai sen multisig-allekirjoittajat). |
| Mint, jolla on mint-valtuutus | Mint-valtuutus. |
| Mint, jolla ei ole mint-valtuutusta | mint account -tilin on itse allekirjoitettava (katso alla oleva huomio). |
| Multisig | Määritetyt M-of-N-allekirjoittajat. |
"Mint ilman mint-auktoriteettia" -tapaus on harvinainen. Kun se on voimassa, mint-tili on allekirjoittaja: ohjelman omistama (off-curve) mint allekirjoittaa CPI:n kautta omistavasta ohjelmastaan, ja keypair (on-curve) mint allekirjoittaa avaimellaan.
Natiiveja (wrapped SOL) token account -tilejä ei tueta, ja ne palauttavat
NativeNotSupported. Nosto ei voi pudottaa lähdetilin saldoa alle sen
vuokravapautusminimin.
Ylimääräisten lamport-yksiköiden nostaminen
Esimerkki käyttää konfiguroitua
@solana/kit -asiakasta — katso
Siirrä tokeneita asiakkaan asetuksista.
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]);
Multisig-auktoriteettia varten välitä allekirjoittajat multiSigners:llä.
Is this page helpful?