Solana Flash Loan Nedir, Nasıl Çalışır?
Solana flash loan teminatsız bir borçtur ve aynı işlemde geri ödenir. Borç veren geri ödemeyi nasıl denetler, maliyet ve sınırlar neler?

Solana flash loan, teminat istemeden, kredi geçmişine de bakmadan verilen bir borçtur. Tek şartı var: para, işlem bitmeden geri dönmeli. Geri ödeme yoksa ya da başarısız olursa ağ işlemin tamamını reddeder ve borç hiç verilmemiş sayılır. Açıkta kalan bir alacak hiç oluşmadığı için borç veren protokol bu borcu herhangi bir cüzdana verebilir.
İlk duyuşta sistemde bir açık varmış gibi gelir. Oysa ortada açık yok, iki sıradan kural birlikte çalışıyor: bir işlem ya bütünüyle gerçekleşir ya hiç gerçekleşmez; bir program da içinde çalıştığı işlemin diğer komutlarını okuyabilir. Bir Solana flash loan'un yaptığı her şey, başarısız olduğu durumlar da dahil, bu iki kuraldan çıkar.
Solana flash loan tek işlemin içinde nasıl çalışır
Solana bir işlemi sıralı bir komut listesi olarak çalıştırır. Solana'nın işlemler dokümantasyonu kuralı açıkça yazar: komutlardan biri başarısız olursa işlemin tamamı başarısız olur ve bütün durum değişiklikleri geri alınır. Flash loan da bu kuralın üstüne kurulmuş bir komut listesidir.
- Borç al. Borç verme programı kasasındaki tokenleri senin token hesabına aktarır.
- Kullan. Kendi komutların bu tokenleri harcar: bir takas, bir tasfiye, başka bir protokole yatırma.
- Geri öde. Program aynı tutarı, ücreti varsa ücretiyle birlikte geri çeker.
Üçüncü adım çalışamazsa, örneğin takastan beklenenden az token çıktıysa, ilk adım da her şeyle birlikte geri alınır ve kasa başladığı yere döner. Teminatın gerekmemesinin sebebi de bu. Sıradan bir borçta parayı almanla geri ödemen arasında zaman geçer ve borçlu o arada ortadan kaybolabilir. Flash loan'da böyle bir ara yok.

Borç veren, geri ödemenin geleceğini nereden bilir?
Borç komutu önce çalışır, yani geri ödeme gerçekleşmeden karar vermek zorundadır. Bu kararı, işlemde kendinden sonra gelen komutları okuyarak verir. Solana, çalışan işlemin bütün üst düzey komutlarını instructions sysvar denen özel bir hesap üzerinden programlara açar. Solana'nın instruction introspection rehberi de tam bu kullanımı anlatır: belirli bir komutun aynı işlemde yer aldığını doğrulamak.
Kamino Lend programının kaynak kodu açık ve denetimin nasıl yapıldığı orada görülebiliyor. Flash borrow komutu kendinden sonra gelen her komutu tarar ve aşağıdaki koşulları sağlayan tam olarak bir geri ödeme bulamazsa borç vermez:
- geri ödemedeki tutar borçla aynıdır;
- geri ödeme aynı hesapları aynı sırayla listeler;
- borç komutunun işlemdeki yerini gösterir;
- arkasından ikinci bir flash borrow gelmez.
Kamino, aşağıdaki tablodaki diğer iki protokol gibi, başka bir programın içinden çağrılan borç komutunu da reddeder. Sebep yine sysvar: yalnızca üst düzey komutları listeler, başka bir programın içinden yapılan çağrı orada görünmez. marginfi borcu biraz farklı kurar: başlangıç komutu işlemin devamında bir bitiş komutu olduğunu kontrol eder, bitiş komutu da hesabın sağlık kontrolünü çalıştırır.
Küçük bir ayrıntı burada sonucu değiştirir. Kamino'nun geri ödemesi, borç komutunun sırasını bir sayı olarak taşır. Cüzdan borcun önüne kendi koruma komutunu eklerse bu sayı yanlış komutu gösterir ve geri ödeme reddedilir. Jupiter Lend'in geri ödemesi böyle bir sıra numarası taşımaz; Flaş Hacim aracının borcu Jupiter Lend'den almasının bir nedeni bu.
Solana'da flash loan sunan borç verme protokolleri
Üç borç verme protokolü Solana flash loan'u kendi geliştirici dokümantasyonunda anlatıyor.
| Protokol | Borç verenin ücreti |
|---|---|
| Jupiter Lend | Dokümantasyona göre yok, ama programda yöneticinin değiştirebildiği bir ücret ayarı var |
| Kamino Lend | Rezerv başına belirlenir; bir rezerv flash loan'u tamamen kapatabilir |
| marginfi (dokümantasyonu artık Project 0 adı altında) | Dokümantasyona göre yok |
Flash loan ne işe yarar
Aşağıdaki işlerin hepsi büyük bir tutara yalnızca birkaç komut boyunca ihtiyaç duyar, sonrasında o paraya gerek kalmaz.
- Arbitraj. Tokeni ucuz olduğu yerden al, pahalı olduğu yerde sat, borcu kapat. Fark kapanmışsa satış geri ödemeyi karşılamaz ve işlem geri alınır.
- Tasfiye. Ödünç tutar, sağlık oranı sınırın altına düşmüş bir hesabın borcunu öder; indirimle alınan teminat takasla borç alınan tokene çevrilir ve flash loan'u kapatır.
- Teminat değiştirme ve yeniden finansman. Mevcut borcu ödünç tokenle kapat, teminatı çek, takasla değiştir ya da başka bir protokole taşı, yeniden borçlan, flash loan'u öde.
- Kendi pozisyonunu tasfiye etmek. Borcu kendi teminatınla tasfiyeciden önce kapatırsan onun alacağı primi kendinde tutarsın. Kamino'nun repay-with-collateral akışı bunu yapar.
- Döngü. Borç al, teminat varlığına takasla, yatır, yatırdığını teminat göstererek borçlan, öde. Kamino'nun Multiply ürünü bunun üstüne kurulu.
- İşlem hacmi. Tokeni aynı havuzda al ve geri sat; cüzdandan yalnızca gidiş dönüşün maliyeti çıkar.
Son madde Flaş Hacim aracının yaptığı iştir. Jupiter Lend'den SOL ödünç alır, tokenini Pump.fun bonding curve'ünde ya da PumpSwap, Raydium, Orca veya Meteora'daki tek bir havuzda alır, geri satar, borcu kapatır ve ücretini öder; hepsi tek imzayla olur. İşlemin toplam maliyetini cüzdanın açılmasından önce gösterir. İşlemi bir explorer'da açan herkes aynı cüzdandan bir borç, bir alış ve bir satış görür. Tokeni elinde tutmak istiyorsan doğru araç Jupiter rotalı token takası.
Bir Solana flash loan'un maliyeti
Anapara maliyet değildir; aynı işlemin içinde geri döner. Senin ödediğin, borcun çevresindeki kalemlerdir.
Borç verenin ücreti. Jupiter Lend ve marginfi, dokümantasyonlarına göre flash loan için ücret almıyor; Kamino ise ücreti rezerv başına belirliyor. Jupiter Lend'in yöneticisi ücret ayarını yine de değiştirebilir. Flaş Hacim bu yüzden her borçtan önce ayarı okur ve sıfır değilse işlemi kurmaz.
Takas ücreti ve fiyat etkisi. Borcun içindeki her takas kendi havuzunun ücretini öder. Sığ bir havuzda büyük tutarla işlem yapmak, fiyatı hem girişte hem çıkışta aleyhine oynatır; likidite havuzu derinliği nasıl okunur yazısı nedenini gösterir. Her takasa bir minimum çıktı koy, çünkü eksik kalan geri ödeme bütün işlemi düşürür. Bu sınırın ne kadar dar olması gerektiğini doğru slippage değerini seçmek yazısı anlatır.
Ağ ücreti. Temel ücret imza başına 5.000 lamport. Buna, talep ettiğin compute unit başına fiyatlanan öncelik ücreti (priority fee) eklenir ve flash loan basit bir transferden çok daha fazla compute ister. Ne kadar priority fee ödemeli yazısı bu ücreti nasıl ayarlayacağını anlatır.
Başarısız bir flash loan ucuzdur ama bedava değildir. Bloğa girip geri alınan işlem ağ ücretini yine öder; bunu hem Solana dokümantasyonu hem Jupiter'in flash loan rehberi yazar. Simülasyonda takılıp hiç gönderilmeyen işlemin maliyeti sıfırdır.

İmzalamadan önce simüle et. Başarısız olacak bir flash loan simülasyonda hata verir ve o aşamada henüz hiçbir şey ödemiş olmazsın.
Sınırlar: işlem boyutu, compute ve kasadaki likidite
Flash loan tek bir işlemden büyük olamaz. Bu borçların kullandığı v0 işlemler en fazla 1.232 bayt taşır ve en fazla 1.400.000 compute unit harcayabilir. Borç, geri ödeme, takaslar ve hepsinin hesapları bu alana sığmak zorunda; geliştiricilerin address lookup table kullanmasının sebebi bu.
İki işleme de yayılamaz. Sysvar yalnızca o an çalışan işlemi gösterir. İkinci bir işlemdeki geri ödeme, ikisi aynı Jito bundle'da gitse bile borç komutuna görünmez. Jito bundle'ın gerçekte neyi garanti ettiği ayrı bir konu.
Son sınır, borç verenin kasasında o an ne kadar token olduğu. Borç kasadaki tokenlerden çıkar, bazı protokoller borç başına ayrıca tavan koyar ve borç verme durdurulabilir. Alınabilecek en yüksek tutar sabit bir sayı değil, o anki durumdan okunan bir değerdir. Kamino ve marginfi işlem başına tek flash loan'a izin verir.
Riskler: cüzdan uyarıları ve oracle saldırıları
Cüzdanın büyük ihtimalle bir uyarı gösterir. Phantom bir işlemi sorunsuz simüle edemediğinde uyarır ve sebepler arasında boyut sınırına yaklaşan işlemleri ve başarısız olan işlemleri sayar. Flash loan büyük bir işlemdir, aynı anda bir borç verme protokolünü ve bir DEX'i çağırır. Fiyat fazla oynadığında simülasyon başarısız olur; cüzdan bununla borcun geri ödenemeyeceğini haber verir.
Her flash loan herkese açıktır: işlemi görmek için bir explorer'da açmak yeterli. Wallet Scope toplu cüzdan analizi de arkasındaki cüzdanların alım satımlarını ve PnL'ini gösterir.
Flash loan'un kötü şöhreti başka protokollerin açıklarından gelir. Flash loan saldırısı fiyatı tek işlemin içinde manipüle eder: ödünç alınan tutar sığ bir havuzun fiyatını oynatır, o havuzu fiyat kaynağı olarak okuyan bir protokol de bozulmuş fiyatla işlem yapar. Kamino dokümantasyonu savunma olarak zaman ağırlıklı fiyatları ve fiyat bantlarını anlatır. Kendi takaslarına koyduğun minimum çıktı da büyük bir takasın etrafına kurulan sandviç saldırılarını sınırlar.
Flash loan, teminatlı borç ve marjin karşılaştırması
| Flash loan | Teminatlı borç | Marjin | |
|---|---|---|---|
| Teminat | Yok | Borçtan daha değerli | Yatırdığın tutar ve pozisyonun kendisi |
| Süre | Tek işlem | Ödeyene kadar | Hesap sağlıklı kaldıkça |
| Ödenmezse | İşlem geri alınır | Teminat tasfiye edilir | Pozisyon tasfiye edilir |
| Ne ödersin | Varsa borç verenin ücreti, takas ve ağ ücretleri | Açık kaldıkça faiz | Faiz ve işlem ücretleri |
Teminatlı borç da marjin de zaman içinde risk taşır, çünkü açık kaldıkları sürece fiyatlar oynar. Bir Solana flash loan'da böyle bir süre yok. Kaybedebileceğin, geri alınan bir işlemin ağ ücreti ve kendi bakiyenden karşıladığın takas zararıdır.
Bu yazı flash loan'un nasıl çalıştığını anlatır; finansal, yatırım, hukuki ya da vergi tavsiyesi değildir. Borcun içindeki işlemler zarar edebilir, borç verenler koşullarını değiştirebilir ya da borç vermeyi durdurabilir.
Sık sorulan sorular
Solana flash loan ücretsiz mi?
Borcun kendisi ücretsiz olabilir: Jupiter Lend ve marginfi dokümantasyonlarına göre flash loan için ücret almıyor, Kamino ise ücreti rezerv başına belirliyor. Takas ücretlerini, ağ ücretini ve kullandığın aracın ücretini yine sen ödersin.
Teminat ya da kredi geçmişi gerekir mi?
Hayır. Geri ödemenin aynı işlemde yer alması ve başarılı olması yeterli. Cüzdanında yine de ağ ücreti ve takasların bıraktığı olası açık için SOL bulunmalı.
Borç geri ödenemezse ne olur?
İşlemin tamamı reddedilir ve borç dahil içindeki her değişiklik geri alınır. Bloğa girmiş işlem ağ ücretini öder; simülasyonda takılıp hiç gönderilmeyen işlem hiçbir şey ödemez.
Flash loan iki işleme ya da bir Jito bundle'a yayılabilir mi?
Hayır. Borç veren geri ödemeyi instructions sysvar üzerinden bulur ve sysvar yalnızca çalışan işlemi listeler. Başka bir işlemdeki geri ödeme, aynı bundle'da olsa bile sayılmaz.
Flash loan'lar neden saldırı raporlarında geçer?
Çünkü herkese tek bir işlem boyunca büyük bir tutar kullandırırlar. Saldırıların hedefi, ödünç tutarla oynatılabilecek sığ bir havuzun anlık fiyatına güvenen protokoller oldu. Zaman ağırlıklı ortalama fiyat kullanmak bu saldırıyı çok zorlaştırır.


