Akıllı sözleşme riski, köprüler ve saldırılar
Akıllı sözleşmelerin ve köprülerin nasıl başarısız olduğunu anlayın, belgelenmiş saldırılardan ders çıkarın ve üst üste binen risklerin bir DeFi getirisini nasıl azalttığını tahmin edin.
Neler öğreneceksiniz
- Akıllı sözleşmelerin başlıca başarısızlık biçimleri: kod hataları, yönetici anahtarları, oracle’lar ve yükseltmeler.
- Zincirler arası köprülerin nasıl çalıştığı ve neden büyük hedefler olduğu.
- Belgelenmiş üç köprü saldırısının farklı başarısızlık türleri hakkında öğrettikleri.
- Birkaç risk katmanının, beklenen kayba ilişkin tek bir kaba tahminde nasıl birleştirileceği.
Açıklama
Akıllı sözleşme, bir blokzincirde saklanan ve sabit kurallara göre token tutan ve taşıyan bir programdır. Dolandırıcılıklar ve oltalama (phishing) “Bitcoin ve Kripto Temelleri” kursunda ele alındı. Bu ders farklı bir tehlikeyle ilgilidir: Protokol dürüsttür, ancak kod veya kurulumu başarısız olur.
Başlıca başarısızlık türleri
- Kod hataları: Örneğin yeniden giriş (reentrancy); bir sözleşme kayıtlarını güncellemeden önce fon gönderir, böylece bir saldırgan onu tekrar çağırıp defalarca çekim yapabilir. Ethereum’daki The DAO, 2016’da bu yolla yaklaşık 3.6 milyon ETH kaybetti.
- Yönetici anahtarları: Birçok protokolün sözleşmeleri duraklatabilen, değiştirebilen veya yükseltebilen ayrıcalıklı anahtarları vardır. Bir anahtar çalınırsa veya kötüye kullanılırsa, kod doğru olsa bile kullanıcılar fon kaybeder. Bir multisig (çoklu imzalı cüzdan), bir işlemi onaylamak için birkaç anahtar gerektirir; örneğin 9 anahtardan 5’i.
- Yükseltilebilir sözleşmeler: Kod değiştirilebilir. Bir zaman kilidi (timelock), yükseltmeleri örneğin 48 saat geciktirir; böylece kullanıcılar önce çıkabilir.
- Oracle manipülasyonu: Bir oracle, bir sözleşmeye harici fiyatları aktarır. Sığ bir piyasayı okuyorsa, bir saldırgan bir flash loan (tek bir işlem içinde alınıp geri ödenen kredi) ile fiyatı hareket ettirip bir borç verme protokolünü kandırabilir.
Denetim (audit), kodun bir güvenlik firması tarafından incelenmesidir. Riski azaltır ancak ortadan kaldırmaz; saldırıya uğrayan protokollerin birçoğu denetlenmişti.
Köprüler
Köprü (bridge), değeri blokzincirler arasında taşır. Yaygın “kilitle ve bas” (lock-and-mint) tasarımı, token’ları A zincirindeki bir sözleşmede kilitler ve B zincirinde bir sarılı token (wrapped token) basar. Sarılı token yalnızca bir borç senedidir (IOU). Kilitli token’lar çalınırsa veya karşılıksız token’lar basılırsa, sarılı token değerinin büyük bölümünü kaybedebilir. Köprüler büyük havuzları tek bir yerde tutar; bu da onları cazip hedefler hâline getirir.
| Vaka (2022) | Yaklaşık kayıp | Temel neden |
|---|---|---|
| Wormhole, Şubat | yaklaşık $320 milyon | İmza kontrolü hatası: Solana’da yatırım yapılmadan 120,000 sarılı ETH basıldı |
| Ronin, Mart | yaklaşık $625 milyon | Saldırganlar 9 doğrulayıcı anahtarından 5’ini ele geçirdi (kod değil, operasyonel bir başarısızlık) |
| Nomad, Ağustos | yaklaşık $190 milyon | Hatalı bir yükseltme geçersiz mesajların geçerli görünmesine yol açtı; çok sayıda taklitçi de katıldı |
Ders: Risk; kodda, anahtar yönetiminde ve yükseltmelerde yer alır. Wormhole vakasında bağlantılı bir şirket fonları yerine koydu; diğer vakalarda kullanıcılara tam olarak geri ödeme yapılmadı. Geri ödeme asla garanti değildir.
Çözümlü örnek
Varsayımsal örnek: Bir Layer 2 ağındaki bir borç verme protokolüne köprülenmiş bir stablecoin’den €5,000 yatırıyor ve yılda %6 getiri bekliyorsunuz. Her katmana kaba, uydurma yıllık başarısızlık olasılıkları atıyorsunuz: köprü %2, Layer 2 ağı %1, borç verme protokolü %3, fiyat oracle’ı %1. Varsayımlar: Katmanlar birbirinden bağımsız olarak başarısız olur; herhangi bir başarısızlık tam kayıp anlamına gelir; ücretler, gas ve vergiler dikkate alınmaz.
- Hiçbir katmanın başarısız olmama olasılığı = 0.98 × 0.99 × 0.97 × 0.99 ≈ 0.932.
- En az bir başarısızlık olasılığı ≈ 1 − 0.932 = 0.068, yaklaşık %6.8.
- Beklenen kayıp ≈ €5,000 × 0.068 ≈ €342.
- Beklenen getiri = €5,000 × %6 = €300.
- Riske göre düzeltilmiş sonuç ≈ €300 − €342 ≈ yılda −€42.
Karşılaştırın: Stablecoin’i kendi yerel zincirinde, %1 ve %2 risklere sahip daha basit bir protokolde tutmak 1 − (0.99 × 0.98) ≈ %3.0 verir; bu, belki %3’lük (€150) bir getiriye karşılık yaklaşık €149’luk beklenen kayıp demektir. Eklenen her katman kendi maliyetini karşılamalıdır.
Sık yapılan hata
Uygulama etkinliği
Kâğıt üzerinde: Yılda %9 vaat eden bir havuza €10,000 yatırmayı düşünüyorsunuz. Token’lar bir köprü aracılığıyla geliyor (yıllık %3 başarısızlık riski varsayın), zincirin kendisi %2 ve havuz sözleşmesi %4. Bağımsızlık ve herhangi bir başarısızlıkta tam kayıp varsayın. En az bir başarısızlık olasılığını, beklenen kaybı ve riske göre düzeltilmiş sonucu hesaplayın.
Çözümü göster
Başarısızlık olmaması = 0.97 × 0.98 × 0.96 ≈ 0.9126. En az bir başarısızlık ≈ %8.7.
Beklenen kayıp ≈ €10,000 × 0.087 ≈ €874. Beklenen getiri = €900.
Riske göre düzeltilmiş sonuç ≈ €900 − €874 ≈ yılda €26: büyük bir olası tam kayba karşılık neredeyse hiçbir şey.
Sınırlamalar: Gerçek olasılıklar bilinmez, başarısızlıklar çoğu zaman birbiriyle bağlantılıdır (bir saldırı başkalarını tetikleyebilir) ve kısmi kayıplar veya geri ödemeler mümkündür. Yöntem gerçek riski ölçmenize değil, yapıları karşılaştırmanıza yardımcı olur.
Önemli çıkarımlar
- Akıllı sözleşme riski; kod hatalarını, yönetici anahtarlarını, yükseltmeleri ve oracle’ları kapsar.
- Sarılı token’lar borç senetleridir (IOU); köprü başarısız olursa neredeyse değersiz hâle gelebilirler.
- Eklediğiniz her katman (köprü, ağ, protokol, oracle) başarısızlık olasılığını katlar.
- Denetimler ve zaman kilitleri riski azaltır; asla ortadan kaldırmaz ve bir saldırı sonrasında geri ödeme garanti değildir.
Sonraki adım
Bir sonraki ders NFT’lere ve gerçek dünya varlıklarının tokenizasyonuna bakıyor: Token’ın size gerçekte ne sağladığı ve risklerin nerede olduğu.
Öz değerlendirme
Soruları yanıtlayın, ardından yanıtlarınızı kontrol edin. İstediğiniz kadar tekrar deneyebilirsiniz.
Kendi tekrarınız için otomatik öz değerlendirme. Cevaplarınız tarayıcınızda kontrol edilir; bunları görmez ve değerlendirmeyiz. Bu bir sınav veya yeterlilik değildir.
İlerlemeniz
“Tamamlandı” yalnızca dersi bitirdiğinizi işaretlediğiniz anlamına gelir. Anlayışınızın bir sınavı değildir. İlerleme ve notlar yalnızca bu cihazdaki bu tarayıcıda saklanır — bir hesapta değil.