Wrapped SOL (wSOL) Nedir, Ne Zaman Wrap ve Unwrap Edilir?
wSOL nedir, neden gerekir, ne zaman wrap ve unwrap edilir? Cüzdanında takılı kalan wSOL bakiyesini geri çevirmenin pratik rehberi.

Native SOL cebindeki nakit gibidir. Cüzdanından doğrudan harcarsın, gas öder, başkasına yollarsın. wSOL ise tam olarak aynı paranın SPL token üniformasını giymiş halidir. Değeri birebir aynı, kuralları farklı. Jupiter'da bir swap yaptıktan sonra cüzdanın bir köşesinde 0.0001 wSOL belirdiyse veya Raydium'da likidite eklemeye çalışırken arayüz "wSOL'ünüz yok" dediyse, gördüğün şey hata değil. Solana DeFi'ın çalışma biçimi. Bu yazıda wSOL'ün ne olduğunu, neden var olmak zorunda kaldığını, ne zaman elle wrap edip ne zaman geri çevirmen gerektiğini ve cüzdanında biriken küçük wSOL hesaplarından kirayı nasıl geri alacağını anlatıyoruz.
wSOL nedir, gerçekten?
wSOL, mint adresi So11111111111111111111111111111111111111112 olan sıradan bir SPL token'dır. Bridge'lenmiş bir varlık değil, sentetik bir türev değil, başka bir zincirden gelen bir kopya değil. Bakiyesi, token hesabının içinde kilitli duran native SOL lamport'ları tarafından birebir destekleniyor. 1 wSOL gördüğünde, o hesabın rent + lamport bakiyesinde 1 SOL'lük gerçek lamport oturuyor demektir.
Bunu mümkün kılan şey, SPL Token programının wSOL hesaplarına özel bir muamele yapmamasıdır. Tıpkı USDC, BONK veya kendi yarattığın bir meme coin gibi davranır. Aradaki tek fark, hesabı sahibi kapattığında içindeki lamport'ların otomatik olarak native SOL'e dönüp cüzdana geri akmasıdır. Bu davranış syncNative ve closeAccount komutlarıyla yönetilir.
// Wrapped SOL mint
const WSOL_MINT = new PublicKey('So11111111111111111111111111111111111111112');
Kısa bilgi: wSOL ile stSOL, jitoSOL, mSOL, bSOL aynı şey değildir. Bu sonuncular liquid staking token'larıdır (LST), validator'lara stake edilmiş SOL'ün makbuzu gibidir ve zaman içinde değer kazanır. wSOL ise her zaman birebir SOL'dür, faiz işlemez, değer kaymaz.
Neden wrap gerekiyor?
Solana'daki çoğu DeFi programı tek bir varsayımla yazılmıştır: gelen her varlık bir SPL token'dır. Bir AMM havuzu iki SPL mint tutar, iki SPL token hesabı yönetir, SPL transfer komutlarıyla swap eder. Native SOL ise SPL token değil, bir sistem hesabıdır. Lamport'ları transfer etmenin yöntemi bambaşkadır.
Bu yüzden Raydium'daki SOL/USDC havuzu aslında wSOL/USDC havuzudur. Orca Whirlpool'da pozisyon açtığında token A olarak SOL seçsen bile program seni bir wSOL hesabı oluşturmaya zorlar. Jupiter ise bunu kullanıcıdan gizler: arayüzde SOL görürsün, arka planda swap'ın ilk adımı wrap, son adımı unwrap olur. J Tools Jupiter swap terminali de aynı mantıkla çalışır; sen sadece "SOL ver, USDC al" dersin, wSOL'le ilgili her şey kapakta hallolur.
Manuel wrap gerektiren senaryolar nadirdir ama ortaya çıktıklarında işin tıkanır. Likidite ve token operasyonu rehberlerimiz bu tıkanıklıkların büyük kısmını adım adım kapsıyor.
Hangi durumda elle wrap?
Üç pratik durum var. Birincisi, AMM'in pozisyon yaratma akışının iki tarafa da hazır SPL token hesabı beklemesi. Raydium CLMM, Meteora DLMM veya Orca Whirlpool üzerinde yoğun bir konsantre likidite pozisyonu açtığında, arayüz bazen senin yerine wrap yapar, bazen yapmaz. Yapmadığı an, transaction "Insufficient wSOL balance" hatasıyla düşer.
İkincisi, SPL transfer talimatı bekleyen bir kontrata SOL göndermek. Bazı yield farm sözleşmeleri, staking pool'ları ve özel launchpad'ler sadece SPL transfer instruction'ı kabul eder. Native SOL gönderirsen ya transaction reddedilir ya da SOL kontrata gider ama hesaplanmaz, bakiyen orada kalır.
Üçüncüsü, çok bacaklı bir versioned transaction içinde SOL'ü tek bir atomik adımda harcamak. Örneğin LP oluştur ve aynı blokta al aracını kullandığında, işlemin bir bacağında SOL ile token alımı, diğerinde havuz oluşturma var. Bu tip atomik kombinasyonlarda SOL'ün önceden wSOL'e dönüşmesi gerekir, çünkü tek transaction içinde SOL üzerinden geçecek kadar zaman yoktur.
Hangi durumda unwrap?
Unwrap iki yerde gerekir. Biri şu: bir swap'tan çıktığında rotanın son ayağı wSOL'de bittiyse ve cüzdanın gas için native SOL beklerken sana wSOL gösteriyorsa. Bu özellikle bazı Jupiter rotalarında ve doğrudan Raydium üzerinden yapılan işlemlerde olur. Borsaya çekim yapacaksan da unwrap şart, çünkü merkezi borsalar mint adresine bakar ve wSOL'ü "bilinmeyen token" diye reddederler.
İkincisi de rent kurtarmak. Boş bir wSOL associated token hesabı yaklaşık 0.002 SOL rent tutar. Onlarca farming, snapshot ve airdrop turunun ardından cüzdanında 30-40 tane boş veya dust wSOL hesabı birikmiş olabilir. Tek bir hesabı kapatmak için close-account aracı yeterli; düzinelerce hesabı tek seferde toplamak için ise batch collector aracıyla toplu kapatma daha hızlı çalışır.
| Senaryo | Elle wrap gerekir mi? | İlgili araç |
|---|---|---|
| Jupiter'da token alımı | Hayır, otomatik | /tools/swap |
| Raydium CLMM pozisyonu açma | Çoğu zaman evet | /tools/wsol-wrapper |
| CEX'e SOL çekimi | wSOL varsa önce unwrap | /tools/wsol-wrapper |
| Dust wSOL hesaplarını kapatıp rent geri almak | Unwrap + kapatma | /tools/batch-collector |
| Snapshot listesini hazırlamak | İlgisiz | /tools/token-snapshot |
j.tools wsol-wrapper ile adım adım
Tool basit kalsın diye iki düğmeden ibaret. Cüzdanı bağla, yönü seç (Wrap SOL → wSOL ya da Unwrap wSOL → SOL), miktarı gir veya "max" tıkla, tek bir transaction imzala.
Arka planda olan şey şu. Wrap tarafında, eğer cüzdanın için henüz bir wSOL associated token hesabı yoksa j.tools wsol-wrapper aracı önce onu yaratır. Sonra istediğin lamport miktarını bu hesaba aktarır ve syncNative instruction'ını çağırır. syncNative, hesaba gerçekten ne kadar lamport oturduğuna bakıp wSOL bakiyesini ona göre günceller. Burası önemli: lamport transferi yapmadan bakiye otomatik güncellenmez.
Unwrap tarafında ise tool closeAccount komutunu kullanır. Bu komut wSOL hesabını tamamen kapatır, içindeki lamport'ları sahip cüzdana geri yollar ve rent depositini de aynı anda iade eder. Yani 1.5 wSOL'ün varsa unwrap sonrası cüzdanına 1.5 SOL artı yaklaşık 0.002 SOL rent geri döner.
Dikkat: Kısmi unwrap diye bir şey yok. closeAccount tüm hesabı kapatır. Eğer 1 SOL wrap edip yarısını kullandıktan sonra geri kalan yarısını çıkarmak istersen, hesap tamamen kapanır ve bir sonraki wrap'te yeni bir ATA yaratılır. Bu yüzden sürekli wrap-unwrap döngüsü yapıyorsan rent ücretini her seferinde yeniden ödüyorsun demektir.
Sık yapılan hatalar
SPL transfer bekleyen bir kontrata native SOL göndermek listenin başında. Transaction ya tamamen reddedilir ya da daha sinsi bir biçimde geçer; SOL kontrata ulaşır, kontrat onu kayda almaz, sen de bakiyeyi göremezsin. Geri almak ancak destek talebi veya kontrat sahibinin kurtarma fonksiyonu varsa mümkündür.
İkinci tuzak, wSOL'ü stSOL veya jitoSOL gibi LST'lerle karıştırmak. Onlar staking makbuzlarıdır, faiz işler, değer SOL'den ayrılır, geri çevirmek için liquid staking protokolüne uğramak gerekir. Bir araç sana "wSOL" deyip jitoSOL adresi gösteriyorsa orada bir terimsel karışıklık var demektir, devam etme.
Üçüncüsü dust birikimi. Her başarısız swap, her bitmiş LP pozisyonu, her kapanmış arbitraj bot turu cüzdanında küçük bir wSOL hesabı bırakabilir. Hesap başına 0.002 SOL diye düşünme; 50 hesap demek 0.1 SOL demek. Multi-sender ile dağıtım yapmadan önce veya eski dust token'ları yakmadan önce wSOL ATA'larını da toplu olarak kapatmak işin temizliği açısından mantıklı.
Dördüncüsü versioned transaction yazan geliştiriciler için: wrap'i ayrı transaction'a koymak yerine instruction olarak ana tx'in başına eklemek hem rent baskısını azaltır hem de kullanıcıya iki imza yerine bir imza gösterir. Solana geliştirici notlarımızdan daha fazla pattern bulabilirsin.
Bir sonraki cüzdan ekranında "0.0001 wSOL" satırını gördüğünde artık bunun ne olduğunu, neden orada bulunduğunu ve geri SOL'e döndürmek için hangi tek tuşa basacağını biliyorsun.


