Home/Wiki/İleri Seviye Teknik Konular: Token-2022, PDA, Multisig ve Hatalar

İleri Seviye Teknik Konular: Token-2022, PDA, Multisig ve Hatalar

İşlem başarısızlıkları, Token-2022 özellikleri, PDA hesap yönetimi, donanım cüzdanı entegrasyonu ve hata kodu yorumlamasını kapsayan ileri seviye teknik rehber.

#İşlemler neden başarısız olur: teknik sebepler?

Doğru biçimlendirilmiş işlemler bile bloğa girmeyebilir. Sebepleri anlamak zaman ve gaz kaybını önlemeye yardımcı olur.

Solana İşlem Mimarisi

Solana'daki her işlemin katı limitleri ve zaman kısıtlamaları vardır:

  • Maksimum boyut: 1232 bayt (ağ paketi MTU)
  • Compute Units limiti: İşlem başına 1,400,000 CU
  • Yaşam süresi: 150 slot (~60-90 saniye)
  • Blockhash geçerliliği: Sadece yakın bloklar için geçerlidir

Transaction Expired: En Yaygın Hata

Ne oldu: İşlem yakın blockhash'e (blok tanımlayıcısı) referans içerir. Kuyrukta beklerken 150 slot'tan fazla geçerse, ağ işlemi eskimiş olarak reddeder.

Teknik süreç:

  • N bloğunun blockhash'i ile işlem oluşturursunuz
  • İşlem bloka dahil olmayı bekler
  • Ağ N+150 bloğuna ulaşır
  • Blockhash'iniz artık "recent blockhashes" listesinde değil
  • Validatörler işlemi "Blockhash not found" hatası ile reddeder

Neden olur:

Ağ tıkanıklığı: Popüler NFT mint'leri veya token heyecanı sırasında ağ milyonlarca işlem alır. Priority Fee sırayı belirler.

Düşük Priority Fee: Minimum ücret belirlediyseniz, validatörler daha yüksek ödeme yapan işlemlere öncelik verir.

RPC sorunları: Genel RPC düğümleri yavaş olabilir veya bağlantıyı kaybedebilir.

Çözüm:

  • ✅ Priority Fee'yi cüzdan ayarlarında "Medium" veya "High"a artırın
  • ✅ 1-2 dakika sonra tekrar deneyin (blockhash otomatik güncellenir)
  • ✅ Stabilite için özel RPC endpoint'leri kullanın (Helius, Triton)

Önemli: Expired işlem ücret kesmez. Fonlarınız güvende.

Account State Changed: Veri Çakışması

Ne oldu: İşlem oluşturma ve yürütme arasında hesap durumu değişti.

Tipik senaryolar:

Senaryo 1: Cleanup sırasında para yatırma

  • Tarayıcı belirledi: hesap boş, bakiye = 0
  • CloseAccount işlemi oluşturuyorsunuz
  • Birisi size bu hesaba 1 token gönderiyor
  • İşlem bakiye > 0 olan hesabı kapatmayı deniyor
  • Hata: "Account has non-zero balance"

Senaryo 2: Başka işlemle race condition

  • A token'ını DEX'te swap gönderdiniz
  • Aynı anda A token hesabını kapatma işlemi gönderdiniz
  • Her iki işlem de aynı hesabı değiştirmeye çalışıyor
  • Biri geçer, diğeri reddedilir

Çözüm:

  • ✅ Taramayı yeniden çalıştırın - veriler güncellenecek
  • ✅ Ön-uçuş simülasyonu olan araçlar kullanın (göndermeden önce kontrol)
  • ✅ Aynı token ile eşzamanlı işlemlerden kaçının

Compute Budget Exceeded: Hesaplama Limiti Aşıldı

Ne oldu: İşlem çok karmaşık operasyonlar yapmayı denedi, 1.4M Compute Units limitini aştı.

Sebepler:

  • Batch'te çok fazla talimat: Bir seferde 30-40 hesap kapatma girişimi
  • Karmaşık akıllı sözleşmeler: Extension'lı bazı Token-2022'ler daha fazla hesaplama gerektirir
  • İç içe program çağrıları: Program A, B'yi çağırır, B de C'yi çağırır

Çözüm:

  • ✅ Batch'teki hesap sayısını azaltın (25-30 yerine 15-20 kapatın)
  • ✅ Batch boyutlarını otomatik optimize eden araçlar kullanın
  • ✅ Limiti artırmak için ComputeBudgetProgram.setComputeUnitLimit() talimatı ekleyin

Teknik detay: 1,400,000 CU'ya kadar talep edebilirsiniz, ancak bu orantılı olarak daha yüksek Priority Fee gerektirir:

Priority Fee = Talep edilen CU × CU başına Fiyat

Insufficient Lamports: Yetersiz Fon

Ne oldu: İşlemi yürütmek için bakiyede yeterli SOL yok.

Belirsiz sebepler:

Rent-exempt minimum: Tüm SOL'u transfer etmeye çalışıyorsanız ama açık boş hesaplarınız varsa, cüzdan tüm hesapların kirasını karşılamak için minimum tutmak zorundadır.

Dinamik gaz değişimleri: Tıkanıklık anlarında Priority Fee 10-100 kat büyüyebilir. 0.000005 SOL gaz hesabıyla oluşturulan işlem 0.0005 SOL gerektirebilir.

Birden fazla işlem: Arka arkaya 5 işlem gönderdiniz, her biri gaz rezerve eder. Sonuncusu yetersiz serbest fon nedeniyle geçmez.

Çözüm:

  • ✅ Bakiyede her zaman minimum 0.01-0.02 SOL tutun
  • ✅ Gaz rezervasyonunu kontrol için cüzdanda "Advanced" modu kullanın
  • ✅ İşlemleri sırayla gönderin, onay bekleyin

#Token-2022 nasıl çalışır ve kirası nasıl geri alınır?

Token Extensions Program (Token-2022), 2023'te başlatılan klasik SPL Token'ın evrimi.

SPL Token'dan Temel Farklar

SPL Token (klasik):

  • Program ID: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
  • Sabit boyut: 165 bayt
  • Temel işlevsellik: transfer, mint, burn, approve

Token-2022:

  • Program ID: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
  • Değişken boyut: 165-500+ bayt (extension'lara bağlı)
  • Genişletilmiş işlevsellik: 16+ ek yetenek

Ana Extension'lar

Transfer Fee Extension:

Token yaratıcısının her transferde ücret almasına izin verir.

Örnek:

100 token transfer Ücret: %2 = 2 token Alıcı alır: 98 token Yaratıcı alır: 2 token ücret

Rent recovery'ye etkisi: Transfer Fee'li hesaplar daha fazla yer kaplar → kira ~0.0025 SOL'a yükselir.

Permanent Delegate:

Token yaratıcısı, sahibinin onayı olmadan herhangi bir cüzdandan token transfer edebilen bir adres atar.

Uygulama:

  • Merkezi stablecoin'ler (USDC suçluların fonlarını dondurabilir)
  • Oyun token'ları (geliştirici ban durumunda el koyabilir)

Risk: Yaratıcının fonlarınıza arka kapı erişimi vardır.

Confidential Transfers:

Zero-knowledge proof'lar kullanarak bakiye şifreleme.

Nasıl çalışır:

  • Kamuya açık olarak sadece şifreli bakiye görünür
  • Gönderici ve alıcı gerçek miktarları bilir
  • Validatörler ifşa etmeden doğruluğu kontrol edebilir

Hesap boyutu: 400 bayta kadar → kira ~0.004 SOL'a kadar

Non-Transferable Tokens:

Transfer edilemeyen token'lar (soulbound).

Uygulama:

  • Sertifikalar ve diplomalar
  • Oyun başarıları
  • KYC token'ları (kimlik doğrulama)

Rent recovery özellikleri: Bu token'lar yakılamaz, ancak yaratıcı bu işlevi sağladıysa hesap kapatılabilir.

Eski Araçlar Neden Token-2022'yi Görmez

Teknik sebep: Klasik cleanup servisleri sadece SPL token'ları döndüren RPC metodu kullanır. Doğru yaklaşım SPL ve Token-2022 programları için iki ayrı sorgu gerektirir.

Token-2022 Kira Geri Alımı

Geri alım miktarları (yaklaşık):

  • Temel Token-2022: ~0.00204 SOL (SPL gibi)
  • Bir extension ile: ~0.0025 SOL
  • İki extension ile: ~0.003 SOL
  • Confidential Transfers ile: ~0.004 SOL

Önemli: Gerçek miktar bayt cinsinden tam hesap boyutuna bağlıdır.

Kapatma süreci: SPL token'larla aynı - Kalıntıları yakın (varsa), sonra CloseAccount talimatı. Tek fark: talimat oluştururken doğru Program ID'yi kullanmalısınız.

#PDA hesapları nedir ve kira geri alınabilir mi?

Program Derived Address (PDA) - kullanıcılar değil, programlar tarafından kontrol edilen hesaplar.

PDA Teknik Olarak Nedir

Normal hesap:

Private Key → Public Key (adres) İşlem imzası = sizin private key'iniz

PDA:

Program ID + Seeds → Deterministik adres İşlem imzası = program (invoke_signed ile)

Anahtar özellik: PDA'nın private key'i yoktur. Sadece program adına işlem imzalayabilir.

PDA'lar Nerede Kullanılır

Lending protokolleri (Solend, MarginFi):

Depozito yaptığınızda:

  • Program teminatınızı saklamak için PDA oluşturur
  • Siz sahibisiniz ama doğrudan kontrol etmiyorsunuz
  • Çekim sadece programın withdraw() fonksiyonu ile mümkün

DEX (Raydium, Orca):

Açık emirler PDA'larda saklanır - Order Book her açık emrin PDA'sını içerir. Emri iptal et = PDA'yı kapat + kirayı iade et

Staking programları:

Stake edilmiş token'larınız PDA'da durur - program unlock dönemini kontrol eder, süre dolmadan kendi token'larınızı "çalamazsınız"

PDA'dan Kira İade Edilebilir mi

Program uygulamasına bağlıdır.

Program kullanıcı için Close Authority sağladıysa:

✅ PDA'yı kapatıp kirayı iade edebilirsiniz
Örnekler: Eski Serum DEX versiyonları, eski lending protokolleri

Program sağlamadıysa:

❌ PDA sonsuza kadar açık kalır
Örnekler: Bazı staking programları kalıcı PDA'lar oluşturur

Fonlar hala kullanımdaysa:

❌ Çekene kadar kapatmak imkansız
Örnek: Lending'de aktif kredi olan PDA'yı kapatamazsınız

Kira İade Edip Edemeyeceğinizi Nasıl Belirlersiniz

Adım 1: Owner'ı Kontrol Edin

Hesabı Solscan'de açın ve Owner'ın bilinen bir program (Raydium, Orca) olup olmadığını kontrol edin.

Adım 2: Bakiyeyi Kontrol Edin

Bakiye = sadece kira (token/veri yok) ise, kapatma mümkün olabilir.

Adım 3: Close Authority'yi Kontrol Edin

Bazı explorer'lar Close Authority alanını gösterir. Adresinizse - kapatabilirsiniz.

Cleanup Araçlarında Otomatik Tespit

Kaliteli servisler:

  • Rent Payer olduğunuz tüm hesapları tarar
  • Bilinen mantığa sahip programlara göre filtreler
  • RPC üzerinden bakiye ve durumu kontrol eder
  • Sadece güvenli kapatılabilir PDA'ları gösterir

Uyarı: Anlamadan manuel olarak PDA'ları kapatmayın. Protokoldeki fonlara erişimi kaybedebilirsiniz.

#Cleanup için Ledger ve donanım cüzdanları nasıl kullanılır?

Donanım cüzdanları maksimum güvenlik sağlar ancak cleanup işlemleri için ek adımlar gerektirir.

Ledger Neden Karmaşık İşlemleri Bloklar

Ekran sınırlaması: Ledger Nano S/X 128×64 piksel ekrana sahiptir. Adresi (kısmen), transfer miktarını ve temel işlem bilgisini gösterebilir, ancak 20 CloseAccount talimatının detaylarını, etkilenen tüm hesapların listesini veya karmaşık akıllı sözleşme çağrılarını GÖSTEREMEZ.

Koruma mekanizması: Ledger işlem detaylarını gösteremezse, varsayılan olarak şu hata ile reddeder:

Condition of use not satisfied (0x6985)

Blind Signing Nedir

Blind Signing - Ledger'ın ekranda tam detay göstermeden işlemleri imzalamasına izin verdiğiniz moddur.

Nasıl etkinleştirilir:

  • Ledger'ı bilgisayara bağlayın
  • Cihazda Solana uygulamasını açın
  • Settings'e girmek için her iki düğmeye aynı anda basın
  • "Blind signing" seçeneğini bulun
  • "Enabled"a geçirin
  • Settings'ten çıkın

Önemli: Bu ayar Ledger'daki Solana uygulamasının içindedir, bilgisayardaki Ledger Live'da değil.

Blind Signing Riskleri

Cihaz doğrulamasının kaybı: Ne imzaladığınızı görmüyorsunuz. Teorik olarak kötü niyetli bir site tüm SOL'u hacker'a transfer eden ve hesaplarınızı kapatan işlem gönderebilir - ve bunu Ledger ekranında görmezsiniz.

Riskleri nasıl minimize edersiniz:

  • ✅ Blind Signing'i sadece belirli işlem için etkinleştirin
  • ✅ Sadece doğrulanmış servisleri kullanın
  • ✅ İşlem simülasyonunu Phantom/Solflare cüzdanında kontrol edin (arayüz olarak kullanıyorsanız)
  • ✅ Kullandıktan hemen sonra Blind Signing'i devre dışı bırakın

Blind Signing Olmadan Alternatif İş Akışı

Yöntem 1: Kısmi cleanup

Bazı basit işlemler Blind Signing gerektirmez - işlem başına 1-3 hesap kapatma, extension'sız basit SPL token'lar.

Yöntem 2: xpub üzerinden dışa aktarma

  • Ledger'dan extended public key dışa aktarın
  • Hot wallet'a içe aktarın (watch-only)
  • Hot wallet'ta cleanup yapın
  • Kurtarılan SOL'u Ledger'a geri gönderin

Yöntem 3: Ara cüzdan oluşturma

  • Fonları geçici hot wallet'a transfer edin
  • Hot wallet'ta cleanup yapın
  • Fonları Ledger'a geri gönderin

#Multisig cüzdanlardan kira nasıl geri alınır?

Multisignature cüzdanlar (Squads Protocol, Goki) işlemleri yetkilendirmek için birden fazla anahtar kullanır.

Solana'da Multisig Nasıl Çalışır

Yapı:

Multisig Vault (PDA) ├── İmzalayan 1: Alice (1/3 oy) ├── İmzalayan 2: Bob (1/3 oy) └── İmzalayan 3: Charlie (1/3 oy) Eşik: 2/3 (üçten ikisinin imzası gerekli)

İşlem süreci:

  • Alice Proposal oluşturur: "50 boş hesabı kapat"
  • Bob inceler ve Onaylar
  • Eşiğe ulaşıldı (2/3) → işlem otomatik yürütülür
  • Charlie daha sonra Onaylayabilir (ama gereksiz)

Normal Cleanup Araçları Neden Multisig ile Çalışmaz

Sorun: Standart servisler cüzdan bağlantısından hemen sonra işlem göndermeye çalışır. Ama Multisig'de:

  • Bir imza yeterli değil
  • Proposal oluşturmak gerekli
  • Diğer imzalayanları beklemek gerekli

Teknik nokta: Multisig Vault bir PDA'dır. Token'lar imzalayan adreslerinde değil Vault'ta saklanır. Bu yüzden Alice'in adresini taramak 0 hesap gösterir, oysa Vault yüzlerce hesaba sahiptir.

Multisig Cleanup İş Akışı

Adım 1: Vault adresini tarayın

Squads arayüzünde Multisig Vault adresini bulun, cleanup tarayıcıya yapıştırın (Read-Only).

Adım 2: Hesap listesini dışa aktarın

Bazı gelişmiş araçlar kapatılacak token hesaplarının listesini dışa aktarmaya izin verir.

Adım 3: Manuel olarak Proposal oluşturun

Squads arayüzünde:

  • New Proposal → Custom Instruction
  • Program: Token Program / Token-2022 Program
  • Instruction: CloseAccount
  • Account list: dışa aktarmadan yapıştır
  • Create Proposal

Adım 4: İmzaları toplayın

Proposal linkini diğer imzalayanlara gönderin. Eşiğe ulaştıktan sonra işlem yürütülür.

Multisig için Otomasyon

Geliştiriciler Squads SDK kullanarak proposal oluşturma, imza toplama ve yürütmeyi otomatikleştiren scriptler oluşturabilir. Maliyet Proposal oluşturma gazı artı işlem yürütme gazını içerir.

#Yaygın Solana hata kodları nasıl yorumlanır?

Solana kullanıcılara her zaman açık olmayan sayısal hata kodları kullanır.

Cleanup Sırasında Yaygın Hata Kodları

0x0 (Success): Hata değil. İşlem başarıyla yürütüldü.

0x1 (Insufficient funds): Gaz veya rent-exempt minimum ödemesi için yetersiz SOL. Çözüm: Bakiyeye para yatırın.

0x3 (Invalid account data): Hesabın hatalı veri yapısı var. Sebep: Hatalı token, bozuk metadata. Çözüm: Bu hesabı atlayın, diğerlerini kapatın.

0x7 (Account already in use): Başka bir işlem aynı anda bu hesabı değiştiriyor. Çözüm: 5-10 saniye bekleyin, tekrar deneyin.

0xBB8 (3000 - Account not rent exempt): Yeterli depozit olmadan hesap oluşturma girişimi. Cleanup bağlamında: Araç hatası (nadir hata).

0x1771 (6001 - Custom program error): Belirli programa özgü hata. Hata mesajı detaylarına bakmak gerekli.

Hata Detayları Nasıl Alınır

Phantom/Solflare'de:

Başarısız işlemden sonra görünür:

Transaction failed View in Explorer →

Tıklayın → tam log ile Solscan açılır.

Solscan'de:

  • "Program Logs" bölümünü bulun
  • "Error:" içeren satırları arayın
  • Genellikle insan tarafından okunabilir açıklama vardır

Örnek:

Program log: Error: Account has non-zero balance Program TokenkegQf... failed: custom program error: 0x10

Yorum: 0x10 = "Non-zero balance", token'lı hesap kapatılamaz.

SolChekers

Our mission is to make the Solana blockchain cleaner, lighter, and more efficient for everyone by reclaiming unused rent deposits.

Built with ❤️ by Solana enthusiasts

Important

SolChekers is a non-custodial tool. We do not have access to your private keys. Use at your own risk.

Official URL verification:
solchekers.com

© 2025 SolChekers.com. Not affiliated with the Solana Foundation.