Akıllı Kontrat Dilleri
Akıllı Kontratlar
Ethereum’un en iyi özelliklerinden biri, akıllı kontratların yazılım geliştirici dostu diller kullanılarak programlanabilmesidir. Eğer daha önceden Python veya JavaScript konusunda deneyim sahibiyseniz, Ethereum programlama sürecinde tanıdık sözdizimlerine sahip bir dil bulabilirsiniz.
Ethereum platformunda akıllı kontrat geliştirmek için güncel olarak aktif şekilde kullanılan iki dil şunlardır:
- Solidity
- Vyper
Akıllı kontratları geliştirme sürecindeki ön koşullar:
- Diğer programlama dilleri, özellikle JavaScript veya Python bilgisi akıllı sözleşme dillerindeki farklılıkları anlamınızda sizlere yardımcı olabilir.
- Dil karşılaştırmalarını incelemeden önce akıllı sözleşmeleri bir kavram olarak anlamak faydalı olacaktır.
- Bunun için Ethereum.org sitesindeki “Intro to Smart Contracts” bölümünü ziyaret edebilirsiniz.
Solidity
• C++, Python ve JavaScript’ten etkilenilerek oluşturulmuştur.
• Statik tipli olarak inşa edildiği için bir değişkenin türü kod derlenileceği zaman bilinir.
Solidity aşağıdakileri desteklemektedir:
• Inheritance (diğer sözleşmeler arasında özellikler miras alınabilir)
- Kütüphaneler (farklı sözleşmelerden çağırabileceğiniz yeniden kullanılabilir kodlar oluşturabilirsiniz — diğer nesne yönelimli programlama dillerindeki statik sınıftaki statik işlevler gibi)
Akıllı Kontrat Örneği
// Bu örnek size Solidity sözdiziminin neye benzediğine dair bir fikir verecektir. Fonksiyonların ve değişkenlerin daha ayrıntılı açıklamaları için: dökümantasyona bakınız.pragma solidity >=0.4.22 <0.7.0;//solidity’nin versiyon tanımlamasıcontract Ilk{//contract tanımladığımız yer/class ile aynı mantık, her contract bir classdır// Her kod parçası belli bir miktarda gas harcıyor ve bu gaslar ödenekleri madencilere veriliyor “yani ne kadar temiz kod o kadar az para”string public mesaj = "Merhaba Dünya";//örnek bir get set methodu// SET ifadesi nesnenin özelliklerine değer atandığında çalışır.// GET ifadesi ise özellik değeri okunduğunda// ya da farklı bir ifadeye aktarılmaya çalıştığında çalışır.function getMessage() public view returns(string memory) {return mesaj;}function setMessage(string memory _mesaj) public {mesaj = _mesaj; }}