Akıllı Sözleşmeler(Smart Contracts) ve Merkeziyetsiz Uygulamalar(Decentralized Apps)

Akıllı Sözleşmeler(Smart Contracts) ve Merkeziyetsiz Uygulamalar(Decentralized Apps)

Merhaba, Blok zincir yazı dizimizin dördüncü bölümünde Akıllı Sözleşmeler ve Merkeziyetsiz Uygulamalar konularına değiniyoruz.

Akıllı sözleşme kavramı ilk olarak 1994 yılında Amerikalı bilgisayar bilimci Nick Szabo tarafından kullanılmıştır. Nick Szabo akıllı sözleşmeleri “bir sözleşmenin şartlarını yürüten bilgisayarlı bir işlem protokolü” olarak tanımlamıştır. Szabo akıllı sözleşmelerin sözleşme hukuku, ekonomisi ve stratejik sözleşme taslağı hazırlama üzerindeki etkisinin henüz yeterli oranda keşfedilmediğini belirtmiş ve çalışmanın devamında bazı sözleşme türlerini yürütmenin işlem maliyetlerini büyük ölçüde azaltma olasılıklarının ve akıllı sözleşmelere dayalı yeni tür işletmeler ve sosyal kurumlar yaratma fırsatlarının çok geniş olmasına rağmen çok az keşfedilmiş olmasından bahsetmiştir. [1]

Günümüzde akıllı sözleşmeler, 1994 yılında Nick Szabo’nun hedeflediği şekilde evrimleşmiştir ve finans, sağlık, ulaşım ve eğitim gibi alanlarda kullanılması söz konusu olmuştur. Ethereum sanal makinesinin Turing complete yapısı nedeniyle akıllı sözleşmeler birçok alanda kullanılmaya başlanmıştır. Geliştiriciler Ethereum sanal makinesinin desteklediği Solidity, Vyper ve Serpent gibi yüksek seviyeli programlama dilleri ile akıllı sözleşmeler oluşturabilirler. Oluşturulan bu sözleşmeler derleyici yardımıyla bayt koda dönüştürülürler. Dönüştürülen bayt kod transaksiyonlar ile Ethereum blok zincirine dâhil edilir. Böylece akıllı sözleşmeler daha önce tanımlanan şekilde işlevlerini yerine getirmekle birlikte blok zinciri teknolojisinin merkeziyetsiz ve müdahale edilemez yapısı ile birlikte güvenle saklanabilmektedir.

Hali hazırda akıllı sözleşmeler oluşturabilmek için en yaygın kullanılan programlama dili Ethereum kurucularından Gavin Wood tarafından geliştirilmiş olan Solidity’ dir. Solidity, akıllı sözleşmeler oluşturabilmek için kullanılan nesne yönelimli bir programlama dilidir. Genel anlamda Java ve C dilleri ile benzerlik gösterir. Akıllı sözleşmeleri çeşitli blok zinciri platformlarında, özellikle de Ethereum’da uygulamak için kullanılır. Solidity tarafından derlenen programların Ethereum Sanal Makinesi üzerinde çalıştırılması amaçlanmıştır.

akıllı sözleşme örneği

Şekil 1.1. Solidity ile yazılmış akıllı sözleşme örneği.

Merkeziyetsiz uygulamalar blok zincirdeki akıllı sözleşmeler ile ön yüz (front end) adı verilen kullanıcı ara yüzü aracılığıyla etkileşime girmeye yarayan uygulamalardır. Standart uygulamalardan farklı olarak merkeziyetsiz uygulamalar arka uç olarak blok zincir teknolojisini kullanılır ve yazma, ekleme ve güncelleme gibi işlemlerini blok zincir üzerinde gerçekleştirir.

Blok zincirdeki akıllı sözleşmeleri merkeziyetsiz uygulamalarda gerçeklesen olaylar ile tetikleyebilmek için akıllı sözleşmeler ABI (Application Binary Interface) olarak adlandırılan JSON formatında bir veriye dönüştürür. ABI dosyaları sözleşmelerdeki tüm fonksiyonları ve fonksiyonların alacağı parametreleri belirtir.

akıllı sözleşme abi örneği

Şekil 1.2. Akıllı sözleşmenin ABI formatında karşılığı.

Diğer bir tanımla ABI ön üç kullanıcı ara yüzünün yazıldığı Javascript ve akıllı sözleşmemizin arka uç kodlarını oluşturan Solidity programlama dili arasında bir iletişim katmanı görevini görür.

Ethereum blok zincirinde ABI ile veri yazma ve okuma

Şekil 1.3. Ethereum blok zincirinde ABI ile veri yazma ve okuma[2].

Kaynaklar:

[1]      SZABO, Nick, et al. Smart contracts. 1994.

[2]       https://hackernoon.com/ethernaut-lvl-0-walkthrough-abis-web3-and-how-to-abuse-them-d92a8842d71b

5. Bölüm ->



Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir