Solana Üzerinde WithdrawExcessLamports: SPL Token ve Token-2022 Kılavuzu
Fiyatlandırma ve özelliklere ilişkin kanıtlar kontrol edildi 3 Eylül 2026.
WithdrawExcessLamports Token Programı talimatı 38'dır. Dar kapsamlı bir sorunu çözer: Bir mint, token hesabı veya çoklu imza hesabı kiradan muafiyet için gerekenden fazla lamport tutabilir, ancak bu lamport'lar sıradan bir token aktarımıyla taşınamaz.
WithdrawExcessLamports ne yapar?
WithdrawExcessLamports yalnızca bir Token Programı hesabının anlık kiradan muafiyet asgari tutarının üzerindeki SOL miktarını taşır. Kaynak açık kalır ve token ya da mint verileri değişmez. Gerekli imzalayıcı; kaynağın bir token hesabı, mint veya token çoklu imza hesabı olmasına bağlıdır.
Talimat hem klasik SPL Token Programı'nda hem de Token-2022 içinde mevcuttur. 2026 kira önerisinden önce token sahipli hesaplara yanlışlıkla gönderilen lamport'ları geri almak için kullanışlıydı. Daha düşük bir asgari kira tutarı, kullanım alanını genişletir: eski hesaplar daha küçük bir rezerv gerektirirken orijinal bakiyelerini koruyabilir.
Referans davranış ve güncel istemci örneği şurada yer alır: Solana'ın Withdraw Excess Lamports belgeleri. İşleyici uygulaması da Token Programı deposunda herkese açıktır.
Talimat hangi hesapları gerektirir?
| Hesap | Yazılabilir mi? | İmzalayıcı mı? | Amaç |
|---|---|---|---|
source | Evet | Bazen | Fazla lamport tutan token hesabı, mint veya çoklu imza hesabı |
destination | Evet | Hayır | Çekilen lamport'ları alır |
authority | Hayır | Kaynak türüne bağlıdır | Çekme iznini kanıtlar |
multiSigners | Hayır | Kullanıldığında evet | Yapılandırılmış token çoklu imza eşiğini karşılamak |
İşleyici, kaynağın veri uzunluğunu ve mevcut kira ayarlarını okur, asgari bakiyesini hesaplar ve farkı aktarır. Çağırıcı tarafından sağlanan, güncelliğini yitirmiş veya manipüle edilmiş olabilecek bir rezerv değerini kabul etmez.
Her kaynak türü için kim imzalamalıdır?
| Kaynak | Gerekli yetkili |
|---|---|
| Cüzdan sahibi olan token hesabı | Token hesabı sahibi |
| Token çoklu imza hesabının sahip olduğu token hesabı | Gerekli N'de M- çoklu imza üyesi |
| Etkin basım yetkilisi olan mint | Mevcut mint yetkilisi |
| Basım yetkilisi olmayan mint | Kaynak mint hesabının kendisi |
| Çoklu imza kaynak hesabı | Yapılandırılmış N'de M- üye |
İptal edilmiş mint durumu özel dikkat gerektirir. Kaynak mint on-curve bir anahtar çiftinden oluşturulduysa, bu orijinal anahtar çifti imzalamalıdır. Off-curve ise, onu kontrol eden program doğru PDA imzalayıcı seed'leriyle Token Programı'nı çağırmalıdır. Bir token sahibi veya eski mint yetkilisi, kaynak imzasının yerine geçemez.
Solana istemcisiyle talimat nasıl oluşturulur?
Güncel resmî örnek şunu kullanır: @solana-program/token yapılandırılmış bir @solana/kit istemci:
import { getWithdrawExcessLamportsInstruction } from "@solana-program/token";
const instruction = getWithdrawExcessLamportsInstruction({
source,
destination,
authority,
});
await client.sendTransaction([instruction]);
Burada authority bir TransactionSigner kaynak için uygun olmalıdır. Çoklu imza yetkilisi için, ortak imzalayıcılarını şunun aracılığıyla ekleyin: multiSigners. Üretimde paket sürümlerini sabitleyin ve tam olarak kullandığınız istemci sürümüne göre derleyin; zincir üzerindeki hesap sözleşmesi değişmese bile istemci türleri değişebilir.
Sabit kodlamayın 0.00203928 SOL rezerv olarak. Bu, standart 165 baytlık bir token hesabının eski asgari tutarıdır; evrensel ve güncel bir değer değildir. İşlemi oluşturmadan veya önizlemeden hemen önce kaynağın gerçek veri uzunluğu için güncel asgari tutarı sorgulayın.
SPL Token ile Token-2022 burada nasıl farklılık gösterir?
Talimatın temel etkisi aynıdır, ancak Token-2022 veri uzunluğu varsayımlarını özellikle riskli kılar. Mint ve hesap uzantıları serileştirilmiş boyutu, dolayısıyla gerekli rezervi artırır. Her kaynak için standart 82 veya 165 bayt boyutlarını kullanan bir entegrasyon fazlalığı olduğundan yüksek gösterebilir.
Token-2022'ın CPI Guard özelliği, sarmalayıcılar açısından bir başka pratik farktır. Guard kilitliyken cüzdan normalde geçerli bir yetkili olsa bile programlar arası çağrı reddedilebilir. Sol Incinerator, kesin olarak başarısız olacak tek bir işlemi daha büyük bir temizleme işlemine eklemek yerine bu kaynakları atlar.
Yerel sarılmış SOL token hesapları şu hatayla reddedilir: NativeNotSupported. Yerel SOL'ın sarmalamasını kaldırmak farklı bir hesap kapatma yolunu izler; bu, fazla lamport çekimi değildir.
Sol Incinerator API talimatı nasıl sarmalar?
Sol Incinerator v2 API, protokol ve isteğe bağlı iş ortağı ücretlerinin zincir üzerinde uygulanması için Token Programı çağrısını Assetcinerator üzerinden oluşturur. Bu sarmalayıcı bir ürün katmanıdır; ham Token Programı talimatının kendisi Sol Incinerator ücretini uygulamaz.
Kullanıcıdan imza istemeden önce doğrulanmış önizlemeyi kullanın:
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"
}'
İlgili işlem ve talimat yolları şunlardır:
POST /withdraw-excess-lamportsPOST /withdraw-excess-lamports-instructions
userPublicKey hedef cüzdan ve varsayılan yetkilidir. Şunu sağlayın: authorityPublicKey farklı bir mint, kaynak veya çoklu imza yetkilisinin imzalaması gerektiğinde. En fazla 11 sağlayın multisigSignerPublicKeys bir token çoklu imza akışı oluştururken. Tüm özel anahtarlar yerelde kalır; API, gerekli imzalayıcıların onaylaması için materyal döndürür.
Temel protokol ücreti 200 bps. Doğrudan bir entegratör bir partnerFeeAccount ve partnerFeeBps, normal Solana işlem ücreti ise ayrı kalır. Döndürülen feeLamports ve önbelleğe alınmış bir yüzde hesaplamasını yeniden kullanmak yerine geri alma alanlarını kullanın.
Bir entegrasyon hangi hataları ele almalıdır?
- Fazlalık yok: kaynak bakiyesi zaten mevcut rezerv seviyesindedir.
- Yanlış hesap sahibi veya düzeni: kaynak, desteklenen bir Token Programı hesabı değildir.
- Geçersiz yetki: sağlanan imzalayıcı, çözümlenen kaynak durumuyla eşleşmiyor.
- Eksik çoklu imza: yetersiz sayıda geçerli yapılandırılmış imzalayıcı sağlandı.
- Yerel hesap: sarılmış SOL başka bir işlem kullanır.
- Kilitli CPI Guard: Token-2022, sarmalayıcı CPI işlemini reddeder.
- Durum değişti: önizlemeden sonra bir bakiye, yetki veya kira ayarı değişti.
- İşlem maliyeti değeri aşıyor: çok küçük bir çekim, ağ ücretlerinden sonra ekonomik olmayabilir.
Durum değişmiş olabileceğinde yeniden önizleyin, kaynak seçimini idempotent tutun ve uygun olmadığı bilinen bir kaynağı asla diğer geçerli işlemlerle gruplandırmayın.

Sol Incinerator
Anlık fazla kirayı önizleyin veya imzalayıcı için güvenli bir çekim oluşturmak üzere v2 API kullanın.
İlgili İçerikler
Sıkça Sorulan Sorular
WithdrawExcessLamports, Solana üzerinde ne yapar?
WithdrawExcessLamports, bir Token Programı hesabının mevcut kiradan muafiyet asgari tutarını aşan lamport'ları hedef cüzdana aktarır. Kaynağı bir token hesabı, mint veya çoklu imza hesabı olabilir. Talimat; token miktarlarını, mint arzını, yetkileri, uzantıları ve serileştirilmiş diğer tüm hesap verilerini değiştirmez.
WithdrawExcessLamports için hangi yetkili imza atar?
Bir token hesabı, sahibini veya yapılandırılmış çoklu imza imzalayıcılarını kullanır. Etkin basım yetkilisi olan bir mint bu yetkiliyi kullanır. Basım yetkilisi olmayan bir mint ise kendi anahtar çiftini veya off-curve minti kontrol eden programdan gelen bir CPI imzalayıcı yolunu kullanarak kaynak hesabın kendisi olarak imzalamalıdır.
WithdrawExcessLamports, Token-2022 desteği sunuyor mu?
Evet. Talimat; klasik SPL Token ve Token-2022 hesapları, mintler ve çoklu imza hesapları için kullanılabilir. Token-2022 uzantıları hesapları büyütebildiğinden entegrasyonlar kirayı kaynağın gerçek veri uzunluğuna göre hesaplamalıdır; ayrıca kilitli bir CPI Guard, sarmalayıcı tabanlı yürütmeyi engelleyebilir.
WithdrawExcessLamports bir token hesabını kiradan muafiyet sınırının altına kadar boşaltabilir mi?
Hayır. Token Programı, kaynağın gerekli asgari tutarını hesaplar ve yalnızca bunun üzerindeki farkı aktarır. Yerel sarılmış SOL token hesapları reddedilir. Hesap bakiyeleri, veri uzunlukları, kira ayarları ve kullanılabilir yetki, işlem gönderilmeden önce değişebileceği için uygulamalar yine de anlık durumu önizlemelidir.