Akıllı Sözleşme
Basit Anlatım: Akıllı sözleşme, blokzincirinde yaşayan ve otomatik olarak çalışan bilgisayar kodudur — hiçbir insan onu durduramaz, sansürleyemez veya dağıtımdan sonra şartları değiştiremez. Bir otomat gibidir: içine token koyarsın, karşılığını alırsın, kasiyer gerekmez. DeFi'nin büyüsü budur. Aynı zamanda tehlikesidir: kodda bir hata varsa, otomat paranı yiyebilir ve şikayet edecek bir yönetici yoktur.
Akıllı sözleşme, önceden belirlenmiş koşullar karşılandığında bir anlaşmanın şartlarını otomatik olarak uygulayan, blokzincirine dağıtılmış kendi kendine çalışan bir programdır. Bu programlar, kesinti, sansür, dolandırıcılık veya üçüncü taraf müdahalesi olasılığı olmadan tam olarak programlandığı gibi çalışır. Akıllı sözleşmeler DeFi'deki her şeyi güçlendirir: merkezi olmayan borsalar, borç verme protokolleri, stablecoin'ler, türevler, getiri toplayıcıları — zincir üstü finansal sistemi oluşturan her "para legosu".
Yatırımcılar için akıllı sözleşmeler aynı anda hem fırsatın motoru hem de riskin birincil vektörüdür. Bir DeFi protokolüyle her etkileşime girdiğinde — bir DEX'te takas yapmak, bir borç verme havuzuna yatırmak, bir getiri toplayıcıda stake etmek — akıllı sözleşme kodunun doğru, güvenli ve kötü niyetli olmadığına güveniyorsundur. Akıllı sözleşme istismarları milyarlarca dolar kayba neden olmuştur (Wormhole bridge hack: 326 milyon dolar; Ronin bridge hack: 625 milyon dolar; Euler hack: 197 milyon dolar). Akıllı sözleşmelerin nasıl çalıştığını, nasıl denetlendiğini ve yükseltildiğini ve akıllı sözleşme riskini nasıl değerlendireceğini anlamak, DeFi'de sermayesi olan her yatırımcı için temel bir hayatta kalma becerisidir.
Nasıl Çalışır
Akıllı sözleşmeler, blokzincirine özel programlama dillerinde (Ethereum/EVM zincirleri için Solidity, Solana için Rust, Aptos/Sui için Move) yazılır, bytecode'a derlenir ve bir işlemle blokzincirine dağıtılır. Dağıtıldıktan sonra sözleşme benzersiz bir adres alır ve herkes uygun fonksiyon çağrıları ve parametrelerle o adrese işlemler göndererek onunla etkileşime girebilir.
Temel özellikler:
Değişmezlik (bir nevi): Dağıtılmış bir akıllı sözleşmenin kodu değiştirilemez — geliştirici bir yükseltme mekanizması eklemediyse. Bununla ilgili daha fazlası aşağıda.
Belirlilik: Aynı girdiler ve blokzincir durumu verildiğinde, bir akıllı sözleşme her zaman aynı çıktıyı üretir. Sözleşmeyi çalıştıran tüm düğümler, mutabakatın işlemesi için aynı sonuca ulaşmalıdır.
Birleştirilebilirlik: Akıllı sözleşmeler diğer akıllı sözleşmeleri çağırabilir ve karmaşık otomatik etkileşim zincirlerini mümkün kılar. Bu, DeFi'yi mümkün kılan ancak aynı zamanda sistematik risk yaratan "para legoları" özelliğidir — bir sözleşmedeki hata, ona bağlı tüm protokoller boyunca kademeli olarak ilerleyebilir.
Şeffaflık: Sözleşme kodu zincir üstünde görünürdür (doğrulanmışsa). Herkes onu denetleyebilir, arka kapıları kontrol edebilir veya dağıtılan bytecode'un yayınlanan kaynak koduyla eşleştiğini doğrulayabilir. Bu şeffaflık bir güvenlik özelliğidir ancak aynı zamanda bilgisayar korsanlarının kodu denetçiler kadar kolay inceleyebileceği anlamına gelir.
Yükseltilebilirlik desenleri: Gerçek değişmezlik DeFi'de nadirdir. Çoğu protokol, kullanıcıya dönük sözleşmenin (proxy) tüm mantığı, protokol yöneticileri tarafından değiştirilebilen bir uygulama sözleşmesine devrettiği proxy desenleri kullanır. Bu, hata düzeltmelerine ve özellik yükseltmelerine izin verir ancak güven sorunu yaratır: yönetici anahtarları potansiyel olarak uygulamayı kötü niyetli kodla değiştirmek için kullanılabilir. Herhangi bir DeFi protokolünü değerlendirirken, yönetici anahtarlarının kimde olduğunu, bir multisig, zaman kilidi veya yönetişim oyu arkasında olup olmadığını ve en kötü durum yönetici anahtarı ele geçirme senaryosunun ne olduğunu anla.
Yatırımcılar İçin Neden Önemli
Akıllı sözleşme riski, DeFi'deki en büyük karşılıksız risktir. Bir DeFi protokolüne fon yatırdığında, getiri kazanırsın (likidite riski, IL riski, token değer kaybı riski için tazmin edilirsin), ancak akıllı sözleşme riski (kod istismarı sonucu toplam kayıp olasılığı) neredeyse hiçbir zaman açıkça tazmin edilmez. Bu risk ikili ve şiddetlidir — sıfır kayıp veya toplam kayıp. Protokoller arasında çeşitlendirme bu riski azaltır. Ayrıca kapsamlı denetim geçmişine, önemli hata ödüllerine ve olaysız uzun operasyonel geçmişe sahip protokolleri tercih etmek de riski azaltır.
Sözleşme yükseltmeleri seni dolandırabilir. Bir protokolün geliştiricileri, tüm kullanıcı fonlarını boşaltmak için sözleşme mantığını değiştiren bir "yükseltme" önerebilir. Bu olmuştur: Uranium Finance istismarı (2021'de 50 milyon dolar kayıp), geçiş sırasında değiştirilmiş bir sözleşmeyi içeriyordu. Meşru yükseltmeler, kullanıcılara değişiklikler yürürlüğe girmeden önce çıkış zamanı veren şeffaf yönetişim (multisig + zaman kilidi veya DAO oyu) kullanır. Bir protokol sözleşmeleri haber vermeden veya zaman kilidi olmadan yükseltebiliyorsa, fonların yönetici anahtarı sahiplerinin insafına kalmıştır.
Denetimler gerekli ancak yeterli değildir. Saygın bir firma (Trail of Bits, OpenZeppelin, Quantstamp) tarafından yapılan akıllı sözleşme denetimi riski azaltır ancak ortadan kaldırmaz. Denetimler, kodun belirli bir sürümünün belirli bir zamandaki değerlendirmeleridir. Şunları kapsamazlar: (a) denetimden sonraki yükseltmeler, (b) kapsam dışındaki diğer sözleşmelerle etkileşimler, (c) kod hatalarından ziyade ekonomik saldırılar (oracle manipülasyonu, yönetişim saldırıları) ve (d) denetçilerin insan hatası. Farklı firmalardan birden çok denetim, cömert bir hata ödül programı ve güvenli operasyon geçmişi, akıllı sözleşme güvenliğinin mevcut en iyi göstergeleridir.
Sık Yapılan Hatalar
- "Denetlenmiş"i "güvenli" olarak görmek. Denetim, hatasız anlamına gelmez. Denetlenmiş protokoller birçok kez hacklenmiştir (Euler, Nomad, Wormhole'un hepsi denetlenmişti). Denetim, profesyonel incelemecilerin belirli bir zamanda belirli hata sınıflarını incelediği anlamına gelir. Bir kalite sinyalidir, garanti değil.
- Yönetici anahtarı ve yükseltme riskini görmezden gelmek. Önemli sermaye yatırmadan önce sor: Bu sözleşmeyi kim yükseltebilir? Zaman kilidi var mı? Multisig'de kaç imzacı var? Yöneticinin yapabileceği en kötü şey nedir? Cevaplar "tek geliştirici, zaman kilidi yok, tüm fonları anında boşaltabilir" ise ve hala yatırıyorsan, anonim bir geliştiriciye teminatsız kredi veriyorsun demektir. Bu bazen ödeyen ve bazen anaparayı yok eden asimetrik bir bahistir.
- Sözleşmeleri yanlış gezginde veya yanlış parametrelerle doğrulamak. Bir sözleşme Etherscan'de "doğrulanmış" olabilir ancak gerçek dağıtılan bytecode ile eşleşmeyen kaynak kodu gösterebilir (doğrulama yanlış yapıldıysa). Dağıtılan bytecode'un yayınlanan kaynakla eşleştiğini her zaman doğrula veya binlerce bağımsız doğrulamaya sahip yerleşik protokollere güven. Yeni protokoller için, aksi kanıtlanana kadar kodun kötü niyetli olduğunu varsay.
SSS
S: Bir akıllı sözleşmenin güvenli olup olmadığını nasıl kontrol edebilirim? C: (1) Blok gezgininde eşleşen kaynak kodla doğrulandığını onayla. (2) Saygın firmalardan denetimleri kontrol et ve denetim raporlarını oku (kritik/yüksek bulgulara ve çözülüp çözülmediklerine odaklan). (3) Protokolün operasyonel geçmişine bak — ne kadar süredir canlı, güvence altına aldığı maksimum değer nedir, geçmiş olaylar var mı? (4) Yönetici anahtarı yapısını kontrol et — zaman kilidi ile multisig mi yoksa tek anahtar mı? (5) Hata ödül programı boyutunu ve geçmişini incele. (6) Herhangi bir güvenlik endişesi için topluluk tartışmalarını kontrol et. Bu bir garanti değildir ancak en bariz riskleri filtreler.
S: Akıllı sözleşmede hata olursa ve fonlarım çalınırsa ne olur? C: Çoğu durumda, hiçbir şey. Sigorta, müşteri desteği veya yasal başvuru yoktur (istismarcı anonimdir ve protokol merkeziyetsizdir). Bazı protokollerin kullanıcıları tazmin edebilecek sigorta fonları (Aave'in Güvenlik Modülü, Nexus Mutual teminatı) vardır, ancak teminat sınırlıdır ve talepler yavaştır. Akıllı sözleşmedeki herhangi bir fonun sıfırlanabileceğini varsay. Tek kurtarma bazen beyaz şapka müzakereleri (istismarcının ödül karşılığında fonları iade etmesi) veya kolluk kuvvetleri (istismarcı tanımlanırsa ve izlenirse) yoluyla olur.
S: Proxy sözleşmeleri nedir ve neden önemlidirler? C: Proxy sözleşmesi, kullanıcı fonlarının tüm fonksiyon çağrılarını bir uygulama (mantık) sözleşmesine devreden bir proxy sözleşmesinde tutulduğu bir tasarım desenidir. Uygulama değiştirilebilir ve protokolün kullanıcıların fonları taşımasına gerek kalmadan yükseltme yapmasına izin verir. Bu, hata düzeltmeleri için gereklidir ancak risk getirir: yönetici anahtarı ele geçirilirse, tüm kullanıcı fonlarını çalan kötü niyetli bir uygulama dağıtılabilir. Protokoller bunu multisig yönetici anahtarları, zaman kilitleri (yükseltme teklifi ile yürütme arasında gecikme, kullanıcılara çıkış zamanı verir) ve yönetişim oylarıyla azaltır. Önemli sermaye yatırmadan önce her zaman yükseltme mekanizmasını kontrol et.

