logologo

Solidity Programlama Dili

Bilişim Ve İletişim Teknolojileri+1 Daha
fav gif
Kaydet
viki star outline
QmYYEgXv7146gL6tRt3E8wYcJZhtYJZdQZcrFhPFkZFKH1.webp
Adı
Solidity
Kurucusu
Gavin WoodChristian Reitwiessner
Çıkış Tarihi
2014
Tür
Programlama Dili
Blockchain Platformu
Ethereum
Altyapı
Ethereum Virtual Machine (EVM)

Solidity, Ethereum Virtual Machine (EVM) üzerinde çalışan akıllı sözleşmeleri yazmak için tasarlanmış, yüksek seviyeli ve nesne yönelimli bir programlama dilidir. Ethereum blokzinciri platformunun ihtiyaçları doğrultusunda, güvenli ve verimli akıllı sözleşmelerin geliştirilmesi amacıyla yaratılmıştır. Solidity, Ethereum platformunun yanında, diğer blokzincir ağlarında da kullanılabilen, merkeziyetsiz uygulamalar (dApps) ve dijital varlıkların geliştirilmesinde temel bir araç haline gelmiştir. Solidity, yalnızca bir programlama dili olmanın ötesinde, Web3 ekosisteminin temel yapı taşlarından biri olarak kabul edilmektedir.

Tarihçe

Solidity'nin tarihi, Ethereum’un ilk yaratıcılarından olan Gavin Wood’un 2014 yılında Ethereum için geliştirdiği fikirlerin bir parçası olarak başlar. Ethereum'un amacı sadece bir dijital para birimi olmak değil, aynı zamanda merkeziyetsiz uygulamaların çalıştırılabileceği bir platform olmaktı. Bu amaç doğrultusunda, akıllı sözleşmelerin yazılması ve bu sözleşmelerin güvenli bir şekilde çalıştırılması için özel bir programlama diline ihtiyaç duyuluyordu. Solidity, bu ihtiyaçtan doğmuş ve Ethereum'un platformu için uygun bir dil olarak geliştirilmiştir. Dilin tasarımı, Ethereum’un fonksiyonelliğini ve güvenliğini göz önünde bulundurarak yapılmıştır.


Solidity’nin ilk sürümleri, Ethereum'un ihtiyaçlarını karşılamak üzere geliştirilmiş olsa da zamanla özellikleri genişlemiş ve diğer blokzincir platformlarında da kullanılmaya başlanmıştır. Dil, sürekli gelişen bir yapıya sahip olup, topluluk tarafından desteklenen açık kaynaklı bir projedir. Ethereum Foundation, Solidity'nin geliştirilmesi için gereken kaynakları sağlamaktadır, ancak dilin evrimleşmesinde önemli katkılar, bağımsız geliştiriciler ve diğer topluluk üyelerinden gelmektedir.

Temel Özellikler

Solidity'nin temel özellikleri aşağıdaki gibi sıralanabilir:

Statik Tip Tanımlı

Solidity, her değişkenin türünün derleme zamanında tanımlanmasını zorunlu kılar. Bu, kodun doğruluğunu artırır, hata olasılıklarını azaltır ve derleyici tarafından hataların daha erken tespit edilmesine olanak sağlar. Değişkenler, belirli türlerde tanımlanmalı ve tür uyuşmazlıkları derleme sırasında hata olarak rapor edilir.

Yüksek Seviyeli ve İnsan Tarafından Okunabilir

Solidity, JavaScript, Python ve C++ gibi modern programlama dillerine benzer bir sözdizimine sahiptir. Bu, geliştiricilerin dili öğrenmesini ve kullanmasını kolaylaştırır. İnsan tarafından okunabilir olması, dilin yazılmasını, denetlenmesini ve hataların giderilmesini daha erişilebilir kılar.

Nesne Yönelimli Yapı (Object-Oriented Programming)

Solidity, nesne yönelimli bir dil olup, sözleşmeler (contracts) nesneler gibi davranır. Bu sözleşmeler, fonksiyonlar, değişkenler ve yapılar (structs) içerir. Her sözleşme, bağımsız bir varlık olarak işlem yapabilir ve diğer sözleşmelerle etkileşime geçebilir.

EVM Uyumlu

Solidity ile yazılan kod, Ethereum Virtual Machine (EVM) üzerinde çalışacak şekilde derlenir. EVM, Ethereum ağındaki tüm akıllı sözleşmeleri çalıştıran sanal bir makinedir. Solidity'nin amacı, yazılan kodu EVM'in anlayacağı bytecode'a dönüştürmek ve Ethereum blokzincirinde çalıştırılmasını sağlamaktır.

Akıllı kontrat çağırma işlemi (Kredi: Engin Ünal)

Kalıtım ve Modülerlik

Solidity, nesnelerin miras almasını sağlar. Bu, bir sözleşmenin işlevselliğini başka bir sözleşmeye devretmesini ve geliştiricilerin tekrar kullanılabilir, modüler kodlar yazmasını mümkün kılar. Bu özellik, kodun verimli bir şekilde organize edilmesini sağlar.

Yüksek Performans ve Gas Verimliliği

Solidity, Ethereum ağındaki işlemler için bir işlem ücreti (gas) ödenmesini gerektirir. Gas, işlem süresi ve karmaşıklığına göre değişir. Solidity, geliştiricilere daha verimli kod yazma fırsatı sunar, böylece ağda daha düşük maliyetlerle işlem yapılabilir.

Kullanım Alanları

Solidity’nin yaygın olarak kullanıldığı başlıca alanlar aşağıda sıralanmıştır:

Merkeziyetsiz Finans (DeFi)

DeFi, finansal hizmetlerin merkeziyetsiz bir biçimde sağlanmasını amaçlayan uygulamalardır. Solidity, bu tür uygulamaların temel dilidir. Örneğin, Uniswap, Aave, Compound gibi platformlar, Solidity ile yazılmış akıllı sözleşmeler üzerinde çalışmaktadır. Kullanıcılar, bankalar ve finansal aracı kurumlar olmadan birbirleriyle doğrudan işlem yapabilmektedir.

Non-Fungible Tokens (NFT)

NFT’ler, dijital varlıkların benzersizliğini ve sahipliğini belirten tokenlerdir. Solidity, ERC-721 ve ERC-1155 gibi NFT token standartlarını tanımlar ve bu tokenlerin alınıp satılmasını sağlar. NFT’ler, dijital sanat, koleksiyon ürünleri ve oyun içi varlıklar gibi birçok alanda kullanılmaktadır.

Merkeziyetsiz Otonom Organizasyonlar (DAO)

DAO’lar, merkeziyetsiz bir şekilde işleyen ve üyeleri tarafından yönetilen organizasyonlardır. Solidity, DAO’ların oluşturulmasında önemli bir rol oynar. DAO'lar, üyelerinin ortak kararlar almasını ve oylama yoluyla yönetim gerçekleştirmesini sağlar.

Blokzincir Tabanlı Oyunlar

Solidity, oyun sektöründe de kullanılmaktadır. Blokzincir tabanlı oyunlar, oyuncuların dijital varlıkları gerçek değer taşıyan varlıklara dönüştürmesine ve bunları serbestçe alıp satmalarına olanak tanır. Axie Infinity, Gods Unchained gibi oyunlar, Solidity ile yazılmış akıllı sözleşmelerle çalışmaktadır.

Kimlik Doğrulama ve Sertifikasyon

Blockchain, dijital kimliklerin doğrulanmasında ve şeffaflık sağlayan sertifikasyon sistemlerinde de kullanılır. Solidity, bu tür sistemlerin yazılmasında etkin bir rol oynar. Merkeziyetsiz kimlik doğrulama, kişisel verilerin kontrolünü kullanıcıda tutarak güvenli bir ortam sunar.

Programlama Yapısı ve Dil Özellikleri

Solidity'de her şey bir sözleşme (contract) olarak tanımlanır. Sözleşmeler, yapıcılar (constructor), olaylar (events), özel veya genel fonksiyonlar (functions), yapılandırmalar (structs), haritalamalar (mappings), ve diziler (arrays) gibi öğeler içerebilir. ERC-20, ERC-721 ve ERC-1155 gibi standartlar da Solidity ile tanımlanmış şablonlardır.


pragma solidity ^0.8.0;
contract MerhabaDunya {
    string public mesaj = "Merhaba, blokzincir!";
    function guncelle(string memory yeniMesaj) public {
        mesaj = yeniMesaj;
    }
}


Bu örnekte, MerhabaDunya adlı bir sözleşme tanımlanmıştır. Sözleşme içinde mesaj isminde bir public değişken bulunur ve guncelle fonksiyonu ile dışarıdan bu mesaj güncellenebilir.

Güvenlik ve Riskler

Solidity ile yazılan akıllı sözleşmelerin güvenliği son derece önemlidir, çünkü bir kez Ethereum ağına dağıtıldığında, sözleşme geri alınamaz. Bu nedenle, yazılan sözleşmelerdeki olası güvenlik açıkları, ciddi finansal kayıplara yol açabilir. En yaygın güvenlik riskleri şunlardır:

Reentrancy (geri çağırma saldırıları)

Sözleşmelerde dışa bağımlı fonksiyonlar varsa, saldırganlar bu fonksiyonları kötüye kullanarak tekrar tekrar işlem yapabilir. Bu durum, örneğin DAO hacki olayında olduğu gibi ciddi zararlara yol açabilir.

Integer Overflow ve Underflow

Değişkenlerin beklenmedik şekilde büyük veya küçük değerlere ulaşması, sözleşmenin hatalı davranmasına neden olabilir. Solidity 0.8.0 sürümünde bu tür hatalar otomatik olarak kontrol altına alınmıştır.

Timestamp Manipulation

Akıllı sözleşmeler, bazen zamanı referans alarak işlem yapar. Saldırganlar, blokzincir zaman damgalarını manipüle ederek sözleşmenin işleyişini değiştirebilirler.

Gas Limit ve DoS Atakları

Akıllı sözleşmelerin çalışması için gas gereklidir. Eğer bir sözleşme yüksek gas kullanıyorsa veya gas limitine takılıyorsa, sözleşme çalışmaz. Bu durum, hizmet reddi (DoS) saldırılarına yol açabilir.

Geliştirme Araçları ve Ekosistem

Solidity ile geliştirme yapmak için çeşitli araçlar ve çerçeveler mevcuttur:

Remix IDE

Solidity ile yazılan akıllı sözleşmelerin geliştirilmesi ve test edilmesi için kullanılan web tabanlı bir geliştirme ortamıdır. Remix, kullanıcıların hızlıca prototipler oluşturmasına olanak tanır.

Truffle Framework

Truffle, Solidity projeleri için kapsamlı bir geliştirme çerçevesidir. Test ağlarında sözleşme dağıtımı, entegrasyon testleri ve veritabanı yönetimi gibi işlemleri kolaylaştırır.

Hardhat

Hardhat, Solidity ile akıllı sözleşme geliştirme için güçlü bir ortam sunar. Hardhat, yerel ağlarda akıllı sözleşmeleri test etmek ve dağıtmak için araçlar sağlar.

Ganache

Yerel blokzincir simülasyonudur ve geliştiricilerin kodlarını test etmeleri için kullanılır. Ganache, işlem hızlarını kontrol etme ve potansiyel hataları bulma konusunda faydalıdır.

OpenZeppelin

Güvenli ve doğrulanmış Solidity kütüphaneleri sağlar. Akıllı sözleşmelerin güvenliğini artırmaya yardımcı olmak için önceden denetlenmiş kodlar sunar.

Kaynakça

Reitwiessner, Christoph, et al. 2016. "Solidity Programming Language." Ethereum Foundation. Erişim Adresi.

Wood, Gavin. 2014. "Ethereum Whitepaper: A Next-Generation Smart Contract and Decentralized Application Platform." Ethereum Foundation. Erişim Adresi.

OpenZeppelin. "Secure Smart Contracts for Ethereum." Erişim Adresi.

Sen de Değerlendir!

0 Değerlendirme

Yazar Bilgileri

Avatar
Ana YazarSıla Temel9 Nisan 2025 13:06
KÜRE'ye Sor