Akıllı Sözleşme Nedir?
Akıllı sözleşme, bir blokzincir üzerinde belirli bir adreste çalışan, durum bilgisi tutabilen ve gelen işlemlere önceden yazılmış kurallara göre yanıt veren programdır. Adındaki “sözleşme” kelimesi her zaman hukuken bağlayıcı bir anlaşma bulunduğu anlamına gelmez. Kavram, çoğu kullanımda dijital varlıkların aktarılması, kullanıcı yetkilerinin kontrol edilmesi, kayıtların güncellenmesi ve uygulama kurallarının otomatik uygulanması için kullanılan zincir üstü kodu ifade eder. Akıllı sözleşmeler merkeziyetsiz borsalardan NFT’lere, borç verme protokollerinden DAO yönetişimine kadar geniş bir ekosistemin teknik temelidir.
Akıllı Sözleşmeler Ne İşe Yarar?
Akıllı sözleşmeler, aynı kuralların tüm ağ düğümleri tarafından yürütülmesini sağlar. Bir token bakiyesi güncellendiğinde, bir likidite havuzunda takas yapıldığında veya bir NFT başka adrese aktarıldığında sonuç sözleşmenin koduna göre hesaplanır. Kullanıcılar çoğu zaman bir web arayüzü üzerinden işlem başlatsa da asıl işlem blokzincirdeki sözleşme fonksiyonuna gönderilir. Böylece uygulamanın kritik kuralları yalnızca şirket sunucusunda değil, ağın doğruladığı ortak durum içinde uygulanabilir.
Otomasyon, aracı ihtiyacını azaltabilir ve işlemlerin denetlenebilirliğini artırabilir. Ancak kodun açık olması herkesin onu kolayca anlayacağı anlamına gelmez. Karmaşık protokoller birbirine bağlı çok sayıda sözleşme, oracle ve yönetici yetkisi içerebilir. Bu nedenle “kod kuralları uygular” ifadesi, kodun hatasız veya adil olduğu varsayımına dönüştürülmemelidir.
Akıllı Sözleşme Nasıl Çalışır?
Geliştirici sözleşme kodunu derleyerek blokzincirin çalıştırma ortamının anlayacağı biçime dönüştürür ve bir dağıtım işlemiyle ağa gönderir. Dağıtım tamamlandığında sözleşme bir adres kazanır. Kullanıcılar bu adrese veri ve gerektiğinde kripto varlık içeren işlemler yollar. Ağ doğrulayıcıları işlemi yürütür, sözleşmenin mevcut durumunu okur, kodu çalıştırır ve ortaya çıkan yeni durumu konsensüs kurallarına göre kaydeder. Ethereum’da bu hesaplama için gas adı verilen kaynak ölçümü kullanılır.
Sözleşmeler başka sözleşmeleri çağırabilir, token transfer edebilir ve olay kayıtları üretebilir. Buna karşılık blokzincir dışındaki web sitelerine doğrudan erişemezler. Dış dünyaya ait fiyat, hava durumu veya teslimat bilgisi gerektiğinde oracle sistemlerinden veri alınır. Oracle yanlış veri sağlarsa sözleşme programlandığı şekilde fakat yanlış girdiye dayanarak işlem yapabilir. Bu nedenle veri kaynağı tasarımı, sözleşme güvenliğinin ayrılmaz parçasıdır.
Değiştirilebilirlik ve Yönetici Yetkileri
Birçok sözleşme dağıtıldıktan sonra kodu doğrudan değiştirilemeyecek biçimde tasarlanır. Bu özellik kuralların tek taraflı değiştirilmesini zorlaştırır; aynı zamanda bulunan bir hatanın kolayca düzeltilememesi riskini doğurur. Güncellenebilir sözleşmelerde proxy mimarileri kullanılarak kullanıcıların aynı adresle etkileşmeye devam etmesi, arka plandaki uygulama kodunun ise yetkili hesap veya yönetişim kararıyla değiştirilmesi sağlanabilir.
Güncellenebilirlik esneklik sunar ancak yönetici anahtarının ele geçirilmesi veya yetkinin kötüye kullanılması hâlinde ciddi sonuçlar doğurabilir. Bir sözleşme incelenirken sahibi kim, sözleşme duraklatılabilir mi, yeni token basılabilir mi, ücret oranları değiştirilebilir mi ve zaman kilidi var mı soruları sorulmalıdır. Çoklu imza ve yönetişim mekanizmaları tek anahtar riskini azaltabilir; fakat imza sahiplerinin bağımsızlığı ve karar süreçleri de önemlidir.
Güvenlik ve Kullanıcı Onayları
Akıllı sözleşmeler yazılım hatalarına açıktır. Yeniden giriş, erişim kontrolü, matematik, oracle manipülasyonu ve iş mantığı hataları geçmişte önemli kayıplara yol açmıştır. Kod denetimi ve biçimsel doğrulama riski azaltabilir, ancak tüm ekonomik senaryoları garanti edemez. Protokol başka sözleşmelere bağlıysa güvenlik, bağımlılık zincirinin en zayıf halkasına kadar genişler.
Kullanıcı açısından en önemli konulardan biri token harcama onayıdır. Bir DApp’e sınırsız harcama izni verildiğinde ilgili sözleşme veya yetkili adres, belirlenen tokenı daha sonra da çekebilir. İşlem imzalamadan önce hedef sözleşme adresi, fonksiyon adı, aktarılacak miktar ve izin kapsamı kontrol edilmelidir. Kullanılmayan onayların iptal edilmesi ve yüksek değerli varlıkların ayrı cüzdanlarda tutulması, olası zararı sınırlamaya yardımcı olur.
İlgili Kavramlar
Smart Contract konusunu daha bütünlüklü değerlendirmek için DApp, DeFi, gas ücreti, DAO başlıkları da incelenebilir. Bu kavramlar birlikte ele alındığında ağın teknik yapısı, kullanıcı sorumluluğu ve işlem akışları arasındaki ilişki daha açık hâle gelir.
Kavramı Değerlendirirken
Bir blokzincir uygulaması incelenirken görünen web arayüzü ile zincir üstündeki gerçek sözleşmeler birbirinden ayrılmalıdır. Alan adı değişebilir, arayüz geçici olarak kapanabilir veya sahte bir site aynı tasarımı kopyalayabilir; kullanıcı fonlarını etkileyen asıl yetkiler sözleşme adreslerinde ve verilen imzalarda bulunur. Sözleşmenin güncellenebilir olup olmadığı, yönetici anahtarlarının kimlerde bulunduğu, acil durdurma yetkisinin varlığı, kullanılan oracle ve köprüler ile bağımsız güvenlik incelemeleri kontrol edilmelidir. Denetim raporu yalnızca belirli kod sürümünü ve kapsamı değerlendirir; sonraki güncellemeleri ya da ekonomik tasarım hatalarını kapsamayabilir. Kullanıcılar işlem ön izlemesini, token harcama iznini, hedef ağı ve sözleşme adresini doğrulamalıdır. Uygulamanın merkeziyetsizlik iddiası da ön yüz, veri kaynağı, sıralayıcı, yönetişim ve hazine kontrolü gibi katmanlar üzerinden ayrı ayrı ele alınmalıdır.
