Blockchain Yazılımcısı Olmak (4) — Solidity Temelleri

Murat Celiktepe
BlockchainIST Center
3 min readMay 9, 2021

Evet gerekli blockchain ve ethereum temellerini aldığımıza göre şimdi de ethereumun en önemli parçası olan akıllı kontratlar dünyasına girelim. Akıllı kontrat yazabilmek için kullanabileceğiniz en popüler iki dil mevcuttur. Bunlardan ilki ve en popüleri Solidity, diğeri ise son zamanlarda sık kullanılmaya başladığını gördüğüm Vyper’dır.

Solidity, sadece akıllı kontrat yazma amacıyla geliştirilmiş ve geliştirilmeye devam eden bir dildir. Bu sebeple içerisinde sadece ethereuma özel tanımlamalar, değişken türleri vs. görmeniz kuvvetle muhtemel. Örnek olarak address diye bir değişken türünün bulunması örnek gösterilebilir. Versiyonları arasında bazı farklar bulunduğu için, yazdığınız solidity kodunun compiler versiyonuna çok dikkat etmeniz gerekmektedir.

Örnek vermek gerekirse, ilk yazımda paylaştığım kursların solidity versiyonları oldukça eski ve bu sebeple günümüzdeki versiyonunda değişmiş olabilecek özellikleri barındıran kodlar kullanılmış olabilir. Eğer 0.4.3 gibi bir solidity versiyonu ile yazılmış bir kodunuz var ise bunu aynı versiyona sahip compiler ile derlemeniz gerekiyor. Ne demek istediğimi remix kullanmayı öğrendiğinizde çok daha iyi anlayacaksınız, o yüzden endişe etmenize gerek yok.

Diğer yandan Vyper ise geçtiğimiz yıllarda çok eksik ve kullanışsız bir dildi. Fakat yapılan güncellemeler ve geliştirmelerle beraber şu an oldukça kullanışlı bir dil haline geldi. Python diline çok benzemesi ve kolaylığı sebebiyle günümüzde tercih edilmeye başlandı. Özellikle DeFi alanında çıkan bazı projeler kontratlarını vyper diline geçirmeye çalışıyor.

Amacınıza her iki dil de hizmet ediyor, yani bu iki dil ile istediğiniz uygulamaları geliştirebilirsiniz. Hangi dili kullanmak istediğiniz ise tamamen size bağlı. Şimdi ise solidity temellerini kısaca öğrenebileceğiniz kaynaklar paylaşacağım. Genel olarak kısa bir video ve solidity dökümanından yazı vererek ilerleyeceğim. Önce video sonrada daha detaylı bilgi için dökümana bakmanızı öneririm.

SOLIDITY TEMELLERİ

Veri Tipleri ve Değişkenler

  1. Veri tipleri ve değişkenler hakkında kısa video
  2. Bu konuda dökümandan bir yazı

Fonksiyonlar

  1. Fonksiyonlar hakkında kısa video
  2. Bu konuda dökümandan bir yazı
  3. Aynı dökümandan yazı

Storage ve Memory

Storage ve memory kontrat yazarken çok temkinli bir şekilde kullanmanız gereken kavramlardır. Aralarındaki farkı iyice anlamanız ve örneklere bakmanız yerinde olucaktır.

  1. Storage ve Memory hakkında kısa video
  2. Aralarındaki fark hakkında bir soru-cevap linki
  3. Solidity dökümanından bir yazı
  4. Aynı dökümandan ilgili bir yazı

Kontrat Yapısı

  1. Solidity dökümanından yazı
  2. State Machine hakkında bir yazı

Remix ile Akıllı Kontratlar

  1. Remix hakkında uzun ve bilgilendirici bir video
  2. Basit bir akıllı kontrat örneği
  3. Dökümandan solidity ile yazılmış kontrat örnekleri

Bu kontrat örnekleri önemli çünkü, akıllı kontratların neye benzediği, nasıl bir yapıları olduğu konusunda oldukça güzel bilgi verecektir.

Akıllı Kontrat ABI

ABI (Application Binary Interface), kısaca akıllı kontratlar ile iletişim kurabilmemize yarayan standart bir formdur. Daha detaylı bilgi için kaynaklara bakalım şimdi.

  1. ABI hakkında kısa bir video
  2. Dökümandan ABI içerikli bir yazı

Event’ler ve Log’lar

Event ve Log’lar ise genelde front-end tarafında kontratın hareketlerini, işlemlerini takip etmeye yardımcı olan kavramlardır. Örnek olarak kontrat her ödeme yaptığında bunu log’layarak bir yere kaydetmek isteyebiliriz.

  1. Consensys media tarafından yazılmış açıklayıcı bir yazı
  2. Dökümandan events hakkında yazı
  3. Web3.js ile eventleri nasıl kullanabileceğimize bu yazıyla bir bakalım.

Factory Kontratlar

Factory kontratlar ise adından da anlaşılacağı üzere kontrat yaratılan kontratlardır. Bunu Nesne yönelimli programlama bilen kişiler bir class’tan instance oluşturma şeklinde düşünebilirler. Sürekli yeni bir araba kontratı oluşturabildiğiniz bir kontrat fabrikasıda denebilir.

  1. Örnek üzerinden anlatılmış bir yazı
  2. EIP20(Ethereum Improvement Proposal) Factory kontratı

Evet solidity üzerinden akıllı kontratlara genel bir bakış attık. Tabi buradaki bilgiler sadece temeli almanız için, bunun üzerine kendiniz de araştırarak, örnekler inceleyerek, kendiniz alıştırmalar yaparak mutlaka bu bilgileri pekiştirmelisiniz. Paylaştıklarımdan daha fazlası solidity resmi dökümanında mevcuttur. Orayı da kurcalamanızı kesinlikle tavsiye ederim.

Bundan sonraki yazıda ise kontrat yazma egzersizleri için bir takım paylaşımlarda bulunuyor olacağım. Bu egzersizler öğrendiğiniz bilgileri pekiştirmenize yardımcı olacaktır.

Bir sonraki yazıda görüşmek üzere…

Murat ÇELİKTEPE

LinkedIn → celiktepemurat

Twitter → muratctp

--

--