Solidity Nedir?

Solidity Nedir?

Akıllı kontrat geliştiricilerinin sıklıkla kullanacağı, Javascript, C++ ve Python dillerinden örnek alınarak oluşturulmuş yüksek seviyeli(high level), nesne yönelimli ve curly bracket bir programlama dili olan Solidity oylama, açık arttırma, para transferleri, kitle fonlama vb birçok konuda güvenilir çözümler üreten akıllı kontratların programlanmasını sağlamaktadır. Peki Solidity nedir? Solidity nasıl bir programlama dilidir? Solidity ne için kullanılır? Hadi başlayalım!

Ne bilmeliyiz?

Solidity'yi yakından incelemeden önce karşılaşacağımız bazı kavramlarıa göz atmamızda yarar var.

High level language

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)

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

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 Nedir?

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ı Anlamak

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.

Solidity Diliyle Yazılmış Basit Akıllı Kontrat Kodu

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

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

uint (256 bitlik işaretsiz tam sayı) türündeki bir veri türünü temsil eder.

function

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

Çok hızlısın. Biraz dinlendikten sonra tekrar devam edebilirsin.
Bugünlük gönderebileceğin kadar yorum gönderdin. Lütfen yarın tekrar dene.
Mesajınız bize başarılı bir şekilde ulaştırıldı. Teşekkürler.

Yorumlar

1 Yorum yok

Alper Çubukçu

22.07.2022

Gerçekten konuyu çok güzel ele almışsınız. Elinize sağlık. :D

Blog Yazarı

Ömer Faruk Coşkun
Yazar
@ofcskn

İstanbul Üniversitesi Bilgisayar Mühendisliği Öğrencisi