Akıllı Kontratlar ve Solidity

Blockchain ile tanışmamızın ardından sıklıkla duymaya başladığımız bir kavram var: Akıllı Kontratlar. Akıllı kontrat nedir? Nasıl hazırlanır? Gelin beraberce bakalım.

Ethereum ağı hayatımıza girdiğinden beri “akıllı kontrat” kavramıyla başbaşayız. Hemen herkes akıllı kontratlar hakkında bir şeyler yazıp çiziyor, geleceği inşaa etmekten bahsediyor ancak akıllı kontrat tam olarak nedir, nasıl yazılır, her iş modelinde kullanılabilir mi sorularına tatminkar cevaplar veren yok. Bu yazı aslında giriş seviyesinde bir yazı olacak. Amacım akıllı kontrat nedir, ne işe yarar ve nasıl yazılır gibi soruları yanıtlamak. Daha sonra her başlık için detaylı yazı dizileri hazırlayıp yayımlamayı planlıyorum. Tabii vakit buldukça… Eh, hadi başlayalım o zaman.

Akıllı kontrat denildiğinde hemen herkesin aklına kağıt yoğun iş modellerinde kullanılan akit ve sözleşmelerin dijital varyasyonu geliyor. Aslında çok yanlış olmamakla birlikte bayağı eksik bir betimleme diyebilirim. Akıllı kontrat dediğimiz yapılar aslen Ethereum ağı üzerinde çalışan programlardır. Evet, program dedim. Hemen her gün kullandığınız ofis uygulamalarınız, web tarayıcınız ya da cep telefonunuzda severek oynadığınız oyunlar gibi programlar. Bu programlar özel bir dille kodlanırlar ve Ethereum ağına bağlı çalışan EVM (Ethereum Virtual Machine) tarafından yorumlanıp, ağdaki tüm düğümlere dağıtılarak çalışırlar. Bu EVM yapısı Java programlama dilinin VM yapısına çok yakındır ve hemen hemen aynı amaca hizmet eder.

Akıllı kontratlar birer program olduğu için aslında bildiğimiz antlaşma veya sözleşme yerine de kullanılabilir. Ancak bunun dışında yapabilecekleriniz hayal gücünüzle ve cüzdanınızdaki para miktarıyla alakalıdır. Ne alaka demeyin, işin “cüzdan” tarafına ilerleyen satırlarda değineceğim.

Pratikteyse, akıllı sözleşmeler genellikle kripto para borsalarında yatırımcılara yeni oyuncaklar sunmak ve ICO yapılarında para toplamak için kullanılacak “token”ler üretmek amacıyla kodlanıyor. Token ibaresini kullandığıma dikkat edin. Genellike Coin ve Token hemen hemen aynı anlama gelen İngilizce kelimeler olsa da Token genellikle bildiğimiz jeton mantığında yapıları anlatmak için kullanılıyor. Eskiler vapur, telefon ve atari salonlarının vazgeçilmezi jetonları hatırlayacaktır. İşte gerçek para ile satın aldığımız ve kapalı devre amaçlara hizmet eden yapılara jeton demeyi tercih ediyoruz. Kripto para dünyasında da kendi blockchain ağ yapısı olmayan sanal paralara Token demeyi tercih ediyoruz. Ethereum üzerinde akıllı sözleşmelerle oluşturulmuş tüm sanal paralar birer Token’dir. Kendi ağları yoktur ve akıllı sözleşme bozulduğu an kullanılamaz ve tanımsız hale gelirler.

Akıllı kontrat dediğimiz programları kodlarken Solidity adı verilen özel bir dil kullanıyoruz. Solidty, Ethereum çekirdek ekibi tarafından geliştirilmekte olan ağa özel bir geliştirme dilidir. Dolayısıyla yazılan kodlar Ethereum ağı dışında çalışamazlar.

Solidity dilinin yapısı biraz Python, biraz C/C++ ama daha çok da Javascript dillerinin yazım yapısına benzer. Solidity ile bir akıllı sözleşme programladığınızda kodlarınızın Solidity derleyebilen bir derleyici ile derlenmesi gerekir. Ardından derlenen uygulamanızın Ethereum ağına gönderisi (transaction) yapılır. Böylece uygulamanız dağıtık yapı içerisinde çalışmaya başlamış olur.

Solidity kodlayabilmek için bir derleyiciye ihtiyacınız var. Ethereum ekibi bunun için browser tabanlı çalışan ve internet bağlantınız yokken de kod yazabileceğiniz bir test ortamı geliştirmiş durumda. Kullanımı oldukça pratik olan derleyiciyi Chrome motoru ile kullanabilirsiniz. Pakete https://github.com/ethereum/browser-solidity/tree/gh-pages adresinden ulaşabilirsiniz. Ama bunun dışında benim de tercih ettiğim daha pratik bir yol var: Remix.

Remix online bir derleyici ve güçlü bir Solidity IDE’si. http://remix.ethereum.org adresini tarayıcınızda açarak hemen kullanmaya başlayabilirsiniz. Gelişmiş birçok IDE’nin sunduğu özelliğe sahiptir.

Remix Solidity dili için geliştirilmiş çok başarılı bir online IDE’dir.

Peki, Solidity neye benziyor? Nasıl bir yazım biçimi var diye merak ediyorsanız küçük bir Merhaba Dünya örnek kodu paylaşayım.

pragma solidity ^0.4.22;
contract MerhabaDunya {
    // bu bir akıllı sözleşmedir
}
function birseyYaz() {
    // yapılacak iş
}
return “merhaba dünya”;
function birseyYaz() returns (string) { 
}

Gördüğünüz gibi Solidity öğrenmesi ve yazması oldukça kolay bir script dili. Hele ki Remix sayesinde kodlaması ve çalıştırılması oldukça pratik. Bu makalenin amacını aşmamak adına örnek kod bloğunu parçalayarak detaylı anlatımlara girmiyorum. Nedenini yazının son paragrafında bulabilirsiniz.

Şimdi gelelim işin cüzdan boyutuna… Ethereum ağı üzerinde yazacağınız her akıllı kontrat derlenmek ve çalışmak için Gas adı verilen ücretlere (fee) ihtiyaç duyar. Bu ücretler Ethereum ağının ana token’i olan Ether (ETH) ile ödenir. Yani cüzdanınızda paranız yoksa kodunuz derlenmeyecek ve ağda dağıtık olarak çalışmaya başlamayacaktır. Şimdi olmadı dediğinizi duyar gibiyim, ancak Ethereum ağının gelir modeli budur.

Bu yazımı burada noktalamak istiyorum. Sanırım makale amacına ulaşmış oldu: Akıllı kontrat nedir, Nasıl yazılır ve Ne işe yarar gibi soruları basitçe cevapladığımı düşünüyorum. Bundan sonra blog menüsüne Solidity başlığını ekleyerek, bu dili basit dersler tadında yazı dizisi olarak kaleme alacağım.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir