Snapshot Tabanlı Airdrop Solana'da Nasıl Yapılır
Solana'da snapshot tabanlı airdrop adım adım: holder listesi alma, sybil temizleme, miktar hesaplama, dağıtım. Gerçek araçlarla pratik rehber.

Open claim airdrop'lar bot çiftlikleri için bir buffet. Bağlan, doldur, claim et, sat. Snapshot tabanlı bir airdrop tam tersi: belirlediğin bir anda zincirden eligible adresleri çekersin, çift hesapları filtrelersin, sonra direkt o cüzdanlara gönderirsin. Alıcının onaylaması gereken bir form yok; tokenler bir sabah cüzdana iner.
JTO bunu yaptı, BONK retroactive dağıtımını bu mantıkla yaptı, W ve JUP da temel olarak aynı kalıbı izledi. Ortak nokta: dağıtım anı belli, eligibility kriteri zincirde okunabilir, manipülasyon yüzeyi minimum.
Bu yazıda Solana'da snapshot tabanlı bir airdrop'u baştan sona, j.tools'un Solana token snapshot aracı ve Solana multi sender aracı üzerinden anlatıyorum.
Snapshot tam olarak ne yapar
Solana'da bir token'ın holder'ları zincirde token account'lar olarak tutulur. Her hesap (mint, owner, balance) üçlüsünden oluşur. Snapshot dediğin şey, belirli bir slot'ta (ya da pratik olarak "şu an") bu hesapları okuyup bir liste haline getirmek. Veri zaten orada, sadece tek seferlik bir foto çekiyorsun.
Mekanik olarak araç RPC üzerinden getProgramAccounts çağrısı yapıyor, mint filter'ı ile sadece o token'ın hesaplarını çekiyor, sonra her hesabın owner'ı ile balance'ını eşleyip aynı owner'ın tüm ATA'larını topluyor. Aynı kişi birden çok token account tutabilir, snapshot bunları bir cüzdana indirger.
Snapshot zamanı önemli. Çekmeden önce duyurursan insanlar son dakika token transfer eder, listeyi şişirir. Sessizce çek, sonra "X slot için snapshot alındı" diye duyur.
1. Eligibility kriterini tanımla
Snapshot'tan önce kimin alacağına karar vermen gerekiyor. Üç yaygın eligibility modeli:
- Pure holder: X miktar üstü token tutan herkes. En basit, sybil'e en açık.
- Aktiflik tabanlı: Holder + son N gün içinde en az bir işlem yapmış. Pasif cüzdanları eler.
- Stake / LP eligibility: Holder + token'ı stake etmiş veya LP'ye koymuş. En kaliteli grup ama snapshot mantığı daha karmaşık.
Karar verirken kabaca şunu sor: "Bu cüzdan tek airdrop için açıldı mı, yoksa ben olmasam da burada olur muydu?" İkinci grup gerçek topluluk.
2. Snapshot'ı al
j.tools'taki snapshot tool'u mint adresini ve istediğin top holder sayısını alıyor (100, 500, 1000, 5000 veya 10000). Çıktıdaki her satır: owner adresi, toplam balance, supply'a oranı, kaç token account'u var (sybil sinyali için faydalı), istenirse SOL balance'ı.
Tipik akış:
- Mint adresini gir.
- Top holder sayısını seç. 5000 çoğu launch için yeterli.
- "Include SOL balances" işaretliyse her holder'ın boş cüzdan mı yoksa aktif cüzdan mı olduğunu görürsün.
- Tool çıktıyı JSON veya CSV olarak indirir.
Snapshot bittikten sonra ham dosyayı yedekle. Sonraki adımlarda bu liste birden fazla tur işlenir; orijinali kaybetme.
3. Ham listeyi filtrele
Snapshot tek başına dağıtılacak liste değil. Çıkarman gereken adresler:
- CEX cüzdanları (Binance hot wallet, Coinbase, OKX, Kraken). Bunlara airdrop atarsan token borsaya gider, hiçbir kullanıcıya değil. Public listeler mevcut, çekip blocklist'e koy.
- Smart contract'lar (LP pool'ları, lending vault'ları, vesting kontratları). Bunlar program-owned, airdrop atılırsa token kontratta sıkışır.
- Kendi team / hazine cüzdanların. Kendine airdrop dağıtma.
- Tozluk holder'lar. Eşik belirle (örn. 0.001 token altı), bu cüzdanlara gönderim fee'sini airdrop'un değerinden fazla yapar.
Sybil temizleme daha derin bir konu. Kabaca üç sinyalden başla:
- Cüzdan yaşı. Snapshot'tan 7 gün önce oluşmuş cüzdanların büyük kısmı airdrop farm. Solana holder snapshot aracı account creation slot'unu da verir, ona göre filtrele.
- Onchain aktivite. Sadece token transfer'i olan, başka hiçbir program ile etkileşmemiş cüzdanlar büyük olasılıkla bot.
- Transfer pattern'i. Aynı miktarın birden çok yeni cüzdana dağılması klasik sybil cluster sinyali.
Mükemmel sybil temizliği yok. Hedef "%100 sybil'siz" değil, "ekonomik olarak sybil cluster'ın maliyeti getiriden büyük olsun". Çok agresif filtre meşru kullanıcıları yakar.
4. Dağıtım miktarını hesapla
Üç yaygın dağıtım modeli:
| Model | Nasıl çalışır | Avantajı |
|---|---|---|
| Flat | Eligible herkese eşit miktar. | En basit, "fair distribution" hikayesine uyar. |
| Tiered | Bakiyeye göre kademe (örn. 100-1k holder = X, 1k-10k = 2X, 10k+ = 5X). | Büyük holder'ları ödüllendirir, küçükleri yine kapsar. |
| Sqrt | Holder bakiyesinin karekökü üzerinden orantılı. | Whale dominasyonunu yumuşatır, küçüklere görece daha çok pay verir. |
Toplam dağıtılacak miktarı eligible cüzdan sayısına bölmeden önce sanity check yap: cüzdan başına düşen miktar gas fee'sini karşılayacak kadar değerli mi? Değilse modeli değiştir veya eşiği yükselt.
5. Dağıtımı yap
Liste hazırsa Solana multi sender aracı CSV veya JSON formatında alıcı listesini alıp binlerce transfer'i batch'lere bölerek tek formdan gönderir. Tek Solana transaction'ı yaklaşık 20-30 transfer kaldırır, tool bunu arka planda halleder.
// Multi-sender input shape (j.tools Multi Sender)
{
tokenMint: "Token...mint",
tokenType: "SPL",
recipients: [
{ address: "Recipient1...", amount: 1000 },
{ address: "Recipient2...", amount: 1000 },
// ...binlerce satır
],
senderPrivateKey: process.env.AIRDROP_SENDER_KEY,
rpcEndpoint: process.env.RPC_URL,
}
Eğer birden fazla kaynak cüzdandan göndereceksen many-to-many transfer aracı cross product'u halleder. Çok büyük listelerde fonlanmış aracı cüzdanlar üzerinden relay etmek tek-gönderici batch'inden ucuza geldiğinde multi-to-multi relay aracı bu paterni alır.
Mainnet dağıtımından önce devnet'te 20 alıcılık küçük bir test airdrop'u çalıştır. CSV format hatası, sender balance eksikliği veya RPC rate limit problemini orada yakalarsın; mainnet'te yakalarsan fee'yi iki kere ödersin.
6. Doğrula ve duyur
Batch'ler bittikten sonra tool sana başarılı / başarısız transfer listesi verir. Başarısızları (genelde RPC timeout, geçersiz adres) ayır, ikinci tur dene. Hala başarısız olanları yayınladığın airdrop raporuna ekle, transparan ol.
Duyuru template'i:
- Snapshot slot'u veya zaman damgası.
- Eligibility kriterleri (kelime kelime).
- Uygulanan filtreler ve eleme sayıları (kaç cüzdan elendi, sebebi).
- Toplam dağıtılan miktar ve eligible cüzdan sayısı.
- Dağıtım transaction'larından örnek bir batch (Solscan link'leri).
- Başarısız adresler için claim window (eğer açacaksan).
Bu netlik, sonradan "ben neden almadım" sorularının yüzde doksanını cevaplar.
Yaygın hatalar
- Snapshot'ı önceden duyurmak. Listeyi şişirir, sonradan filtrelemen gereken sybil'i sen yaratırsın.
- CEX cüzdanlarını blocklist'e koymamak. Token doğrudan exchange spot wallet'ına iner, kullanıcı için kaybedilmiş gönderim.
- Tek transaction'da çok alıcı. Solana transaction size limit (1232 byte) belirli sayıdan fazla transfer'i kaldırmaz. Tool zaten batch'liyor ama elle yazıyorsan bunu unutmazsın.
- Gönderici cüzdanın fee SOL'ü yetmiyor. Tahmini gönderim sayısı × per-tx fee + margin koy.
- Unclaimed handling planı yok. Failed transfer'leri tut, claim window kapatıldıktan sonra hazineye geri çekmek veya Solana token yakma aracı ile kapatmak için bir plan hazırla.
Daha fazla launch ve token mekaniği yazısı için Solana rehberleri kategorisi ve token tarafına dair derinleme için Solana etiketli tüm yazılar sayfasına bakabilirsin.
İyi planlanmış bir snapshot airdrop 4-5 saatlik bir iştir: bir saat eligibility tartışması, yarım saat snapshot, bir saat filtreleme, bir saat hesaplama, bir saat dağıtım, biraz da hata düzeltme. Açık claim'in kaosuna göre ucuz bir takas.


