Fazla Lamport Çekme Ne İşe Yarar?
WithdrawExcessLamports, bir Token Program hesabının kira muafiyeti
minimumunun üzerinde tuttuğu SOL'u hedef bir hesaba taşır. Token bakiyeleri ve
mint arzı değişmez — yalnızca fazla lamport'lar hareket eder.
Bu işlem, daha önce kilitli kalan SOL'u geri kazandırır: bir token account, mint veya multisig'e (hepsi Token Program tarafından sahiplenilir) gönderilen lamport'lar başka türlü taşınamazdı.
Kaynak Referans
| Öğe | Açıklama | Kaynak |
|---|---|---|
WithdrawExcessLamports | Talimat (ayırt edici 38). | Kaynak |
process_withdraw_excess_lamports | İşlemci mantığı ve yetki kontrolleri. | Kaynak |
Hesaplar
| Hesap | Açıklama |
|---|---|
source | Yazılabilir. Çekim yapılacak token account, mint veya multisig. |
destination | Yazılabilir. Fazla lamport'ları alır. |
authority | Kaynak hesap türüne göre imzalar (aşağıya bakın). |
Kim İmzalayabilir
Gerekli imzalayan, source hesabının türüne bağlıdır:
| Kaynak hesap | İmzalayan |
|---|---|
| Token account | Token account sahibi (veya multisig imzalayanları). |
| Mint authority'ye sahip mint | Mint authority. |
| Mint authority'ye sahip olmayan mint | mint account'un kendisi imzalamalıdır (aşağıdaki nota bakın). |
| Multisig | Yapılandırılmış M-of-N imzalayanlar. |
"Mint authority'si olmayan mint" durumu nadiren karşılaşılan bir durumdur. Bu durumun geçerli olduğu hallerde, mint hesabı imzalayan taraftır: program tarafından sahip olunan (off-curve) bir mint, sahibi olan programdan gelen bir CPI aracılığıyla imzalar; keypair (on-curve) mint ise kendi anahtarıyla imzalar.
Yerel (sarmalanmış SOL) token account'lar desteklenmez ve
NativeNotSupported döndürür. Para çekme işlemi, kaynak hesabı kira
muafiyeti asgari bakiyesinin altına düşüremez.
Fazla lamport Nasıl Çekilir
Örnek, yapılandırılmış bir
@solana/kit istemcisi
kullanmaktadır — istemci kurulumu için
Token Transferi bölümüne bakın.
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]);
Çoklu imza yetkisi için, ortak imzalayanları multiSigners ile birlikte
iletin.
Is this page helpful?