Solidity'yi yakından incelemeden önce karşılaşacağımız bazı kavramlarıa göz atmamızda yarar var.
High level language, geliştiricilerine rahatlık sağlayan, kullanıcı dostu programlama dilleridir ve genellikle bilgisayar donanımından bağımsızdır.
Object-Oriented Language (OOL), nesne tabanlı programlama dili anlamına gelen OOL, daha okunabilir programlar oluşturmak için nesnelerin ve bunlarla ilişkili fonksiyonların entegre edillemsine izin veren high level language bir programlama dilidir. C++, Java, Javascript, Ruby gibi diller nesne yönelimli programlama dillleridir.
Curly-bracket languages, kod bloklarının parantez işaretleri ile tanımlandığı { ... }
programlama dilleridir ve C dili ile popülerleşmiştir.
C dilinde örnek kod bloğu, (curly bracket dil örneği)
/* If num2 is maximum */ if(num2 > num1) { printf("%d is maximum", num2); } /* Additional condition check for equality */ if(num1 == num2) { printf("Both are equal"); }
Python dilinde örnek kod bloğu, (curly-bracket olmayan bir dil)
if pwd == 'apple': print('Logging on ...') else: print('Incorrect password.') print('All done!')
Solidity, akıllı kontratların oluşturulmasını sağlayan nesne yönelimli (OOL), yüksek seviyeli (HLL) ve curly-bracket bir programlama dilidir. C++, Python, Javascript gibi dillerden örnek alınarak oluşturulan yeni bir programlama dilidir.
Ek olarak Solidity, kalıtım(Inheritance), kütüphaneler ve daha karmaşık kullanıcı tanımlı kodları destekleyen statik yazımlı bir dildir.
Solidity diliyle kitle fonlaması, oylama, para transferleri, açık arttırmalar gibi işlemler için akıllı kontratlar oluşturulabilir.
2022 Şubat itibariyle Solidity v0.8.11 kullanılmaktadır.
Akıllı kontratlar, if-else şart presibiyle çalışan, taraflar arasındaki güveni sağlayan ve birden fazla programlama diliyle yazılabilen dijital sözleşmelerdir.
Akıllı kontratlarla ilgili daha detaylı bilgiyi Akıllı Kontrat Nedir? yazımızdan öğrenebilirsiniz.
Aşağıda Solidity programlama dili ile yazılmış örnek bir Simple Storage kod bloğu görmekteyiz. Bloktaki kodların tanımlarına göz atalım.
pragma solidity [pragma]
pragma, Solidity dilinin derleyicisinin(compiler) hangi özellikleri ve denetimleri etkinleştireceğini belirtir. Her pragma kodu bulunduğu dosyaya özeldir. Eğer derleyicinin ilerleyen süreçte akıllı kontratınızı sorunsuz şekilde okumasını istiyorsanız güncel versiyonlara göre yerleştirilen pragma kod parçasını kaldırmamanız ve değiştirmemeniz gerekir. Örnekteki akıllı kontrat Solidity dilinin 0.4.16 - 0.9.0 versiyonları arasındaki derleyicilerle derleneceğini ve daha yüksek ya da düşük versiyonlardan etkilenmeyeceğini belirtir.
contract, içerisinde verileri ve fonksiyonların barındıran, akıllı kontrat olduğunu tanımlayan bir kod parçasıdır. Her contract kodu ardından ismini alır ve bu şekilde tanımlanmış olur.
uint (256 bitlik işaretsiz tam sayı) türündeki bir veri türünü temsil eder.
Javascript dilindeki gibi function
kodu, fonksiyonu tanımlar. function
kodları içerisine farklı veri türlerinde parametreler alabilmektedir. public
kodu fonksiyonun diğer akıllı kontratlar tarafından okunmasını mümkün kılarken private
kodu fonksiyonun yalnızca bulunduğu contract içerisinde çalıştırılmasını sağlar. returns(type)
kodu ise fonksiyonun returns parantezindeki parametre türünde (type)
geriye bir değer döndüreceğini belirtir. view
kodu, eklendiği fonksiyonun durumunun değiştirilemeyeceğini belirtir.
return
kodu bulunduğu fonksiyon içerisinde beklendiği türde bir değer döndürür.
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.4.16 <0.9.0; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; }
Bu yazımda Solidity dilinin ne olduğu, ne için kullanıldığı, basit bir Solidity kodundaki kavramların ne olduğuna değindim. Yazının devamında daha kapsamlı başlıkları ve daha karmaşık kodları incelemeyi planlıyorum. Takipte kalın!
Yorumunu Bırak
Yorumlar
1 Yorum yokAlper Çubukçu
22.07.2022Gerçekten konuyu çok güzel ele almışsınız. Elinize sağlık. :D