Akıllı sözleşmeler, blokzincirinde kodlanan ve kayıt altına alınan anlaşmalardır. Akıllı sözleşmeler, anlaşmaların aracılara ihtiyaç duyulmadan icra edilmesini otomatikleştirerek, tüm tarafların ortaya çıkan sonucu anında görebilmesini ve teyit edebilmesini sağlar. İşte değişikliğe kapalı olan ve geri alınamayan bu sözleşmeleri “akıllı” yapan, otomasyona elverişli olmalarıdır. Otomasyona elverişli olmayan, yani bir bilgisayar programı ile icra edilemeyen anlaşmalar “akıllı” olarak nitelendirilemez. Bir akıllı sözleşme sadece dijital ortamda ifade edilebilen şeyleri konu edinebilir. Mesela elektronik taahhütler veya dijital varlıklar akıllı sözleşmelerle değiş tokuş edilebilir. Dijital malların değiş-tokuş edilmesi ya da belli bir miktar kripto paranın devredilmesi akıllı sözleşmelerle gerçekleştirilebilir. Dijital ortamda yer almayan örneğin ev, araba, ünlü bir ressamın tablosu gibi malvarlığı değerleri de token’a dönüştürülerek akıllı sözleşmenin konusunu oluşturabilir.
Otomasyonun bir diğer yüzü ise şudur: Akıllı sözleşmeler “eğer… o halde (if… then)” mantığına dayalı olarak çalışır. Bu nedenle, akıllı sözleşme kodunun icra edilmesi için gerçekleşmesi gereken şartların, doğru veya yanlış şeklinde dijital olarak denetlenebilir olması gerekir. Bu nedenle yoruma açık, muğlak, belirsiz kavramların akıllı sözleşmede yer alması problem yaratabilir. Çünkü akıllı sözleşme kodu, bu kavramları denetleyemez.
Bilgisayar kodlarının parametreleri kesindir; tek bir doğru veya yanlış vardır. Akıllı sözleşmeler de bu anlamda net ve kesin olan akıllı sözleşme koduna dayanır. Akıllı sözleşme, bir kod parçası olarak, bilgisayar programında verilmiş olan komutları veya yönergeleri harfi harfine yerine getirir. X girdisi, her zaman Y çıktısını ortaya çıkarır. Bu anlamda akıllı sözleşmeler deterministik programlardır. Eğer bir husus akıllı sözleşme koduna açıkça programlanmadıysa, akıllı sözleşme tarafından dikkate alınamaz. Akıllı sözleşmeler, mantık kuralları ve matematik formüllerine dayandığından, değerlendirmeye açık olmayan kodlardan oluşur.
İşte akıllı sözleşmelerde, geleneksel sözleşmelerde sıklıkla yer verilen “haklı sebep”, “kusur”, “mücbir sebep”, “makul süre” gibi soyut ifadeler yer alırsa, akıllı sözleşme beklenen sonucu vermez. Çünkü akıllı sözleşme kodu, bu gibi soyut hukuki ifadeleri veya subjektif değer yargılarını kendi kendine denetleyemez. Bu nedenle akıllı sözleşmeler ilk ve öncelikli olarak otomasyona elverişli olan bankacılık ve finans sektörlerinde tercih edilmiştir. Bu alanlar yeni teknolojilere daha kolay ayak uydurabilir olduklarından yapılan sözleşmelerde yer alan şartların bir kod hâline getirilmesi daha kolaydır. Ancak teknolojinin hızla gelişmesiyle birlikte, akıllı sözleşmelerin çok daha farklı kullanım amaçları da ortaya çıkmıştır.
Blokzincirinin dışındaki veri kaynakları “zincir dışı” (off-chain) olarak kabul edilirken, zaten blokzincirinde depolanan veriler “zincir içi” (on-chain) olarak nitelendirilir. Blokzincirleri internete bağlı değildir; kasıtlı olarak harici sistemlerden izole edilmişlerdir. Bu nedenle blokzincirinde çalışan akıllı sözleşmeler, internete bağlanarak akıllı sözleşmenin tetiklenmesi için tespit edilmesi gereken harici bir veriyi araştırıp elde edemez. Bu aynı zamanda akıllı sözleşmelerin temel bir yetersizliğini ortaya koyar. Akıllı sözleşmeler kendi yerel blokzinciri ortamlarının dışındaki veri ve sistemlerle kendiliğinden etkileşime giremezler. Güvenilir harici kaynaklardan veri girdisine ihtiyaç duyarlar: oracle’lar. Oracle, Türkçe’ye “kâhin” olarak çevrilse de bu tercüme, kavramın ne anlama geldiğini tam olarak ortaya koyamıyor.
Oracle, akıllı sözleşmeyle dış dünya arasında köprü görevi gören arayüzler olarak tanımlanabilir. Buna göre, bir kişi, bir program veya bir web sitesi oracle görevi görerek akıllı sözleşmenin tetiklenmesi için gereken bilgileri sağlayabilir. Akıllı sözleşmelerde, fiyat değişiklikleri, hava durumu bilgisi, riskin gerçekleşip gerçekleşmediği, satış rakamları, gibi bilgilerin edinilmesi için oracle’lardan yararlanılmaktadır. Mesela uçağın geciktiği bilgisi akıllı sözleşmeye geldiğinde, yolcuya otomatik olarak sigorta tazminatı ödemesi yapılmasını sağlayan bir akıllı sözleşme kodlanabilir.
Akıllı sözleşmelerin kullanım senaryolarının (use-case) birçoğu, gerçek dünyada bulunan verilere ve zincir dışında meydana gelen olaylara ulaşılabilmesini gerektirir. Akıllı sözleşmelerin etkileşim içinde olduğu DeFi (“decentralised finance”) sektöründe, varlıklar ve piyasalara dair finansal verilere ihtiyaç duyulur. Dinamik NFT’ler ve GameFi bakımından da oracle’lar özellikle önem arz eder. Ayrıca belkemiği akıllı sözleşmeler olan DAO’ların (merkeziyetsiz otonom kuruluş) yönetişimi bakımından da oracle’lar önem arz etmektedir. Tedarik zincirlerinde ise nesnelerin interneti (“internet of things”) oracle görevi görür ve tedarik zincirinin şeffaf bir şekilde izlenmesini ve işlemesini sağlar.
Oracle’lar bazı riskler de barındırır: Oracle’lar tarafından iletilen veriler doğrudan akıllı sözleşmelerin sonuçlarını belirler. Bu nedenle akıllı sözleşmenin tam olarak beklendiği gibi icra edilmesi isteniyorsa oracle kaynağının da doğru/gerçek olması gerekir. Oysa akıllı sözleşmeler, bir oracle’ın doğru veri sağlayıp sağlamadığını teyit edemez. Yani oracle, blokzincirinin temel özelliklerinden biri olan “güvenilirlik” özelliğine sahip değildir. Hele insanların “güvenilir kişi” oracle olarak akıllı sözleşme süreçlerinde yer aldığı durumlarda, akıllı sözleşmeye sağlanan veriler gerçek veya doğru olmayabilir. Bu şekilde ortaya çıkabilecek veri manipülasyonu, yanlış ya da istenmeyen sonuçlar ve kesinti süresini benzeri problemlerin önlenmesi için merkezi olmayan oracle’lar geliştiriliyor.