
Blockchain teknolojisi son on yılın en önemli yeniliklerinden biri olarak finans, lojistik, sağlık, oyun ve diğer pek çok alanda devrim yaratıyor. Bu teknolojinin gücünden yararlanarak yapılan projeler, merkezsizleşme, şeffaflık ve güvenlik gibi birçok avantaj sunuyor. Bu projelerin temel yapı taşlarından biri de akıllı sözleşmelerdir. Akıllı sözleşmeler, blockchain üzerinde çalışan, kendi kendini yürüten programlardır. İşte bu akıllı sözleşmelerin geliştirilmesinde kullanılan en popüler programlama dillerinden biri Solidity’dir.
Bu konumuzda Solidity'nin ne olduğunu, nasıl çalıştığını, neden bu kadar önemli olduğunu ve nasıl kullanıldığını detaylı bir şekilde ele alacağız. Ayrıca Solidity’nin geleceği ve potansiyel kullanım alanlarına da göz atacağız.
Solidity Nedir?
Solidity akıllı sözleşmelerin oluşturulması için özel olarak tasarlanmış bir programlama dilidir.
Akıllı sözleşmeler belirli koşullar gerçekleştiğinde otomatik olarak kendiliğinden çalışan sözleşmelerdir.
Solidity özellikle Ethereum platformu için geliştirilmiş olmasına rağmen zamanla diğer blockchain platformlarıyla da uyumlu hale gelmiştir.
Yani Solidity Ethereum Virtual Machine (EVM) üzerinde çalışan akıllı sözleşmelerin geliştirilmesinde kullanılır.
Solidity; JavaScript, Python ve C++ dillerine oldukça benzer bir yapıya sahiptir bu da programlama deneyimi olanlar için dilin öğrenilmesini kolaylaştırır.
Solidity’nin temel amacı blockchain üzerinde güvenli ve etkili bir şekilde akıllı sözleşmeler yazmaktır.
Akıllı sözleşmeler belirli koşullar gerçekleştiğinde otomatik olarak kendiliğinden çalışan sözleşmelerdir.
Solidity özellikle Ethereum platformu için geliştirilmiş olmasına rağmen zamanla diğer blockchain platformlarıyla da uyumlu hale gelmiştir.
Yani Solidity Ethereum Virtual Machine (EVM) üzerinde çalışan akıllı sözleşmelerin geliştirilmesinde kullanılır.
Solidity; JavaScript, Python ve C++ dillerine oldukça benzer bir yapıya sahiptir bu da programlama deneyimi olanlar için dilin öğrenilmesini kolaylaştırır.
Solidity’nin temel amacı blockchain üzerinde güvenli ve etkili bir şekilde akıllı sözleşmeler yazmaktır.
Solidity’nin Tarihçesi
Solidity’nin gelişimi 2014 yılında başladı. Ethereum’un kurucuları akıllı sözleşmelerin gelişimini daha kolay ve erişilebilir hale getirmek amacıyla yeni bir dil tasarlamaya karar verdiler.
Bu dili geliştiren en önemli isimlerden biri Gavin Wood’dur. 2015 yılında Etheryumun resmi olarak piyasaya sürülmesiyle birlikte Solidity de blockchain dünyasında yaygınlaşmaya başladı.
Başlangıçta Solidity sadece Ethereum platformu için geliştirilmişti. Ancak daha sonra farklı blockchain platformları da Solidity ile uyumlu hale getirildi.
Zaman içinde dilin kapasitesi arttı geliştirici topluluğu büyüdü ve Solidity
akıllı sözleşmelerin geliştirilmesinde en çok kullanılan dillerden biri haline geldi.
Bu dili geliştiren en önemli isimlerden biri Gavin Wood’dur. 2015 yılında Etheryumun resmi olarak piyasaya sürülmesiyle birlikte Solidity de blockchain dünyasında yaygınlaşmaya başladı.
Başlangıçta Solidity sadece Ethereum platformu için geliştirilmişti. Ancak daha sonra farklı blockchain platformları da Solidity ile uyumlu hale getirildi.
Zaman içinde dilin kapasitesi arttı geliştirici topluluğu büyüdü ve Solidity
akıllı sözleşmelerin geliştirilmesinde en çok kullanılan dillerden biri haline geldi.
Solidity’nin Temel Yapısı
Solidity blok zinciri üzerinde çalışan akıllı sözleşmeler yazmak için kullanılan bir yüksek seviye programlama dilidir.
Sözleşmeler genellikle iki veya daha fazla taraf arasında anlaşmaların otomatik olarak yürütülmesini sağlamak amacıyla yazılır. Bir Solidity programı fonksiyonlar, değişkenler ve yapılar içerir.
Bu temel bileşenleri inceleyecek olursak bunlar:
Sözleşmeler genellikle iki veya daha fazla taraf arasında anlaşmaların otomatik olarak yürütülmesini sağlamak amacıyla yazılır. Bir Solidity programı fonksiyonlar, değişkenler ve yapılar içerir.
Bu temel bileşenleri inceleyecek olursak bunlar:
1-Veri Türleri
Solidity çeşitli veri türlerini destekler. Bunlar arasında integer (tam sayı), string (metin), address (adres), bool (mantıksal) ve daha birçok tür bulunur.
Veri türleri Solidityde bellek yönetimi açısından önemlidir çünkü blockchain üzerindeki her bir işlem için belirli bir miktarda gas harcanır.
Veri türleri Solidityde bellek yönetimi açısından önemlidir çünkü blockchain üzerindeki her bir işlem için belirli bir miktarda gas harcanır.
2-Fonksiyonlar
Fonksiyonlar Soliditynin en temel yapı taşıdır. Akıllı sözleşmelerin işlevselliğini sağlamak için kullanılan fonksiyonlar belirli bir işlem yapar ve sözleşmeler arasında veri alışverişini sağlar.
Örneğin bir para transferi işlemi bir fonksiyon aracılığıyla gerçekleştirilebilir.
Fonksiyonlar ayrıca Solidity’nin güvenliğini ve performansını artırmak için farklı erişim modlarına sahip olabilir.
Bir fonksiyonun public, private veya internal olarak belirlenmesi o fonksiyonun hangi bağlamlarda kullanılabileceğini kontrol eder.
Örneğin bir para transferi işlemi bir fonksiyon aracılığıyla gerçekleştirilebilir.
Fonksiyonlar ayrıca Solidity’nin güvenliğini ve performansını artırmak için farklı erişim modlarına sahip olabilir.
Bir fonksiyonun public, private veya internal olarak belirlenmesi o fonksiyonun hangi bağlamlarda kullanılabileceğini kontrol eder.
3-Sözleşme Yapısı
Solidityde her şey bir sözleşme etrafında döner. Bir sözleşme belirli bir işlevi yerine getiren kod ve verilerden oluşur.
Sözleşmeler bir sınıf gibi davranır ve bu sınıf içinde veri ve fonksiyonlar tanımlanır. Her sözleşme blockchain üzerinde bağımsız bir varlık gibi davranır ve kendi depolama alanına sahiptir.
Sözleşmeler bir sınıf gibi davranır ve bu sınıf içinde veri ve fonksiyonlar tanımlanır. Her sözleşme blockchain üzerinde bağımsız bir varlık gibi davranır ve kendi depolama alanına sahiptir.
4-Modifiers (Değiştiriciler)
Modifiers fonksiyonların davranışını değiştirmek için kullanılan kod bloklarıdır. Bir fonksiyona belirli bir koşul eklemek için kullanılırlar.
Örneğin sadece belirli bir adresin bir fonksiyonu çağırmasını sağlamak için bir modifier kullanılabilir.
Örneğin sadece belirli bir adresin bir fonksiyonu çağırmasını sağlamak için bir modifier kullanılabilir.
5-Events (Olaylar)
Olaylar Ethereum blockchain üzerinde belirli bir işlemin gerçekleştiğini bildirmek için kullanılır. Akıllı sözleşme üzerinde bir değişiklik yapıldığında veya önemli bir olay meydana geldiğinde olaylar tetiklenir ve bu olaylar blockchain üzerinde kaydedilir.


Solidity ile Nasıl Akıllı Sözleşme Yazılır?
Solidity ile akıllı sözleşme yazmaya başlamak için öncelikle Ethereum platformunu anlamak gerekir.
Ethereum Solidity tarafından yazılan akıllı sözleşmeleri çalıştıran bir blockchain ağıdır. Akıllı sözleşmeler Ethereum Virtual Machine (EVM) üzerinde çalışır ve bu sözleşmelerin çalıştırılması için gas adı verilen bir işlem ücreti ödenir.
Solidityde bir akıllı sözleşme yazabilmemiz için aşağıdaki adımlar izlenir:
Ethereum Solidity tarafından yazılan akıllı sözleşmeleri çalıştıran bir blockchain ağıdır. Akıllı sözleşmeler Ethereum Virtual Machine (EVM) üzerinde çalışır ve bu sözleşmelerin çalıştırılması için gas adı verilen bir işlem ücreti ödenir.
Solidityde bir akıllı sözleşme yazabilmemiz için aşağıdaki adımlar izlenir:
- Geliştirme Ortamı Kurulumu Solidity sözleşmelerini yazmak için popüler araçlardan biri Remix IDE’dir. Remix, tarayıcı tabanlı bir geliştirme ortamıdır ve Solidity kodlarını derleyip çalıştırmanızı sağlar.
- Akıllı Sözleşmenin Tanımlanması Sözleşme, contract anahtar kelimesiyle tanımlanır. İçerisinde fonksiyonlar, değişkenler ve yapılar tanımlanabilir.
- Fonksiyonların Tanımlanması Akıllı sözleşmenin işlevselliğini sağlamak için çeşitli fonksiyonlar yazılır. Örneğin, bir para transferi veya bir verinin kaydedilmesi gibi işlemler fonksiyonlar aracılığıyla yapılır.
Solidity’nin Güçlü Yönleri
Solidity blockchain teknolojisinin en büyük avantajlarından biri olan güvenlik ve merkezsizleşmeden yararlanarak birçok güçlü özelliğe sahiptir.
Solidity’nin öne çıkan güçlü yönleri:
Solidity’nin öne çıkan güçlü yönleri:
1-Güvenlik
Solidity ile yazılan akıllı sözleşmeler blockchain üzerinde çalıştıkları için son derece güvenlidir.
Blockchain verilerin değiştirilmesini zorlaştıran bir yapıya sahip olduğundan sözleşmeler de bu güvenlik katmanından yararlanır.
Ancak akıllı sözleşmelerde yapılan hatalar veya güvenlik açıkları geri döndürülemez sonuçlara yol açabileceği için Solidity ile yazılan sözleşmelerin dikkatle test edilmesi gerekir.
Blockchain verilerin değiştirilmesini zorlaştıran bir yapıya sahip olduğundan sözleşmeler de bu güvenlik katmanından yararlanır.
Ancak akıllı sözleşmelerde yapılan hatalar veya güvenlik açıkları geri döndürülemez sonuçlara yol açabileceği için Solidity ile yazılan sözleşmelerin dikkatle test edilmesi gerekir.
2-Merkeziyetsizlik
Solidity ile yazılan akıllı sözleşmeler herhangi bir merkezi otoriteye ihtiyaç duymadan çalışabilir. Bu sözleşmelerin daha şeffaf ve güvenilir olmasını sağlar.
Örneğin bir para transferi sözleşmesi herhangi bir bankaya veya finans kurumuna ihtiyaç duymadan doğrudan taraflar arasında gerçekleşebilir.
Örneğin bir para transferi sözleşmesi herhangi bir bankaya veya finans kurumuna ihtiyaç duymadan doğrudan taraflar arasında gerçekleşebilir.
3-Ethereum Ekosistemiyle Uyum
Solidity Ethereum platformu için özel olarak geliştirildiğinden Ethereum ekosistemiyle mükemmel uyum sağlar.
Ethereum dünyanın en büyük ikinci blockchain platformu olduğu için Solidity ile yazılan sözleşmeler de geniş bir kullanıcı tabanına ve geliştirici topluluğuna sahiptir.
Ethereum dünyanın en büyük ikinci blockchain platformu olduğu için Solidity ile yazılan sözleşmeler de geniş bir kullanıcı tabanına ve geliştirici topluluğuna sahiptir.
4-Esneklik ve Genişletilebilirlik
Solidity geliştiricilere akıllı sözleşmeler üzerinde tam kontrol sağlar. Bu geliştiricilerin sözleşmeleri ihtiyaçlarına göre özelleştirmelerine ve genişletmelerine olanak tanır.
Ayrıca Solidity’nin sürekli güncellenen yapısı dilin esnek ve gelişime açık olduğunu gösterir.

Ayrıca Solidity’nin sürekli güncellenen yapısı dilin esnek ve gelişime açık olduğunu gösterir.

Solidity’nin Zayıf Yönleri ve Zorluklar
Her ne kadar Solidity birçok avantaja sahip olsa da bazı zayıf yönleri ve zorlukları da bulunmaktadır bunlar:
1-Güvenlik Riskleri
Akıllı sözleşmelerin güvenliği büyük bir sorumluluk gerektirir. Solidity güvenli bir dil olsada yanlış kodlamalar büyük güvenlik açıklarına yol açabilir.
Özellikle kod hataları ve eksiklikler blockchain üzerinde geri döndürülemez sorunlar yaratabilir.
Örneğin DAO Hack adı verilen olayda bir güvenlik açığı yüzünden milyonlarca dolar değerinde Ethereum çalınmıştır.
Özellikle kod hataları ve eksiklikler blockchain üzerinde geri döndürülemez sorunlar yaratabilir.
Örneğin DAO Hack adı verilen olayda bir güvenlik açığı yüzünden milyonlarca dolar değerinde Ethereum çalınmıştır.
2-Öğrenme Eğrisi
Solidity diğer programlama dillerine benzer olmasına rağmen blockchain ve merkeziyetsiz uygulamalar konularına hakim olmayı gerektirir.
Bu nedenle Solidity yi öğrenmek isteyen yeni başlayanlar için dilin karmaşık yapısı ve blockchain teknolojisinin temelleri bir öğrenme eğrisi oluşturabilir.
Bu nedenle Solidity yi öğrenmek isteyen yeni başlayanlar için dilin karmaşık yapısı ve blockchain teknolojisinin temelleri bir öğrenme eğrisi oluşturabilir.
3-Gas Ücretleri
Solidity ile yazılan her sözleşme Ethereum blockchain üzerinde çalışırken gas adı verilen bir işlem ücreti gerektirir.
Bu ücretler işlemin karmaşıklığına ve Ethereum ağının o anki yoğunluğuna göre değişiklik gösterebilir.
Gas ücretlerinin yüksek olması bazı projelerin uygulanabilirliğini zorlaştırabilir.

Bu ücretler işlemin karmaşıklığına ve Ethereum ağının o anki yoğunluğuna göre değişiklik gösterebilir.
Gas ücretlerinin yüksek olması bazı projelerin uygulanabilirliğini zorlaştırabilir.

Solidty Kullanım Alanları
Solidity akıllı sözleşmelerin yazılmasında kullanılan bir dil olmasına rağmen bu sözleşmelerin kullanım alanları oldukça geniştir.
Solidity’nin en yaygın kullanım alanları:
Solidity’nin en yaygın kullanım alanları:
1-DeFi (Merkeziyetsiz Finans)
Merkeziyetsiz finans (DeFi), blockchain teknolojisinin en büyük kullanım alanlarından biridir.
Solidity ile yazılan akıllı sözleşmeler DeFi projelerinin temelini oluşturur.
Örneği, merkeziyetsiz borsalar (DEX), kredi platformları ve sigorta hizmetleri Solidity kullanılarak geliştirilmiş akıllı sözleşmelerle çalışır.
Solidity ile yazılan akıllı sözleşmeler DeFi projelerinin temelini oluşturur.
Örneği, merkeziyetsiz borsalar (DEX), kredi platformları ve sigorta hizmetleri Solidity kullanılarak geliştirilmiş akıllı sözleşmelerle çalışır.
2-NFT (Non-Fungible Token)
NFT’ler dijital varlıkların sahipliğini ve transferini temsil eden benzersiz tokenlerdir.
Sanat eserleri müzik oyun içi eşyalar gibi dijital varlıklar NFT olarak temsil edilebilir.
Solidity NFT projelerinin geliştirilmesinde yaygın olarak kullanılır.
Sanat eserleri müzik oyun içi eşyalar gibi dijital varlıklar NFT olarak temsil edilebilir.
Solidity NFT projelerinin geliştirilmesinde yaygın olarak kullanılır.
3-Tedarik Zinciri Yönetimi
Blockchain ve akıllı sözleşmeler tedarik zinciri yönetiminde şeffaflık ve izlenebilirlik sağlar.
Solidity ile yazılan akıllı sözleşmeler ürünlerin tedarik zincirindeki her adımını takip edebilir ve kayıt altına alabilir. Bu sayede sahtecilik ve hileli işlemler önlenmiş olur.
Solidity ile yazılan akıllı sözleşmeler ürünlerin tedarik zincirindeki her adımını takip edebilir ve kayıt altına alabilir. Bu sayede sahtecilik ve hileli işlemler önlenmiş olur.
4-DAO (Decentralized Autonomous Organization)
DAOlar tamamen blockchain üzerinde çalışan ve herhangi bir merkezi otoriteye ihtiyaç duymayan otonom organizasyonlardır.
Solidity DAO’ların kurulmasında ve yönetilmesinde kullanılan bir dildir.

Solidity DAO’ların kurulmasında ve yönetilmesinde kullanılan bir dildir.

Solidity’nin Geleceği
Bu konu hakkında da yorum yapmamız gerekirse, Blockchain teknolojisinin hızla gelişmesiyle birlikte Solidity’nin de gelecekte daha fazla kullanılacağını öngörmek zor değildir.
Özellikle Ethereum 2.0 güncellemesi ve diğer blockchain projelerinin gelişimi Solidity’ye olan talebi artıracaktır.
Ayrıca Solidity’nin güvenlik ve performans açısından daha da iyileştirilmesi beklenmektedir. Dilin esnek yapısı, geliştiricilerin ihtiyaçlarına göre uyarlanabilir ve bu da daha yenilikçi projelerin ortaya çıkmasını sağlar.
Özellikle Ethereum 2.0 güncellemesi ve diğer blockchain projelerinin gelişimi Solidity’ye olan talebi artıracaktır.
Ayrıca Solidity’nin güvenlik ve performans açısından daha da iyileştirilmesi beklenmektedir. Dilin esnek yapısı, geliştiricilerin ihtiyaçlarına göre uyarlanabilir ve bu da daha yenilikçi projelerin ortaya çıkmasını sağlar.
Genel olarak ele aldığımız da Solidity blockchain teknolojisinin kalbinde yer alan akıllı sözleşmelerin geliştirilmesi için en popüler programlama dilidir.
Ethereum ve diğer blockchain platformlarının büyümesiyle birlikte Solidity’nin önemi de artmaktadır. Geliştiricilere sunduğu esneklik, güvenlik ve geniş kullanım alanları Solidity’yi blockchain projeleri için vazgeçilmez bir araç haline getirmektedir.
Ancak Solidity ile akıllı sözleşmeler geliştirirken dikkat edilmesi gereken bazı zorluklar ve riskler de bulunmaktadır. Güvenlik açıkları, yüksek gas ücretleri ve öğrenme eğrisi gibi faktörler Solidity ile çalışan geliştiricilerin dikkat etmesi gereken unsurlardır.
Sonuç olarak Solidity, blockchain teknolojisinin sunduğu fırsatlardan yararlanmak isteyen geliştiriciler için güçlü ve etkili bir araçtır. Gelecekte bu dilin daha da gelişeceği ve blockchain dünyasında önemli bir rol oynamaya devam edeceği açıktır.
Solidty ile Akıllı Kontrat Yazalım
Evet yanlış okumadınız şimdi sizlerle beraber Solidty ile basit bir kontrat nasıl yazılıyor öğrenelim.
Amacımız basit bir depolama (storage) kontratı yazmak olacak. Bu kontrat sayesinde blockchain üzerinde bir değer depolayacağız ve bu değeri gerektiğinde güncelleyebileceğiz.
ilk olarak Solidty verisyonunu belirleyelim tabi daha öncesinde şunu belirteyim solidty dosyalarımızın uzantısı .sol’dur
Her Solidity dosyasının başında,hangi Solidity sürümüyle yazıldığını belirtmemiz gerekiyor. Bu derleyiciye hangi sürümün kullanılacağını bildirir.
Ethereum ve diğer blockchain platformlarının büyümesiyle birlikte Solidity’nin önemi de artmaktadır. Geliştiricilere sunduğu esneklik, güvenlik ve geniş kullanım alanları Solidity’yi blockchain projeleri için vazgeçilmez bir araç haline getirmektedir.
Ancak Solidity ile akıllı sözleşmeler geliştirirken dikkat edilmesi gereken bazı zorluklar ve riskler de bulunmaktadır. Güvenlik açıkları, yüksek gas ücretleri ve öğrenme eğrisi gibi faktörler Solidity ile çalışan geliştiricilerin dikkat etmesi gereken unsurlardır.
Sonuç olarak Solidity, blockchain teknolojisinin sunduğu fırsatlardan yararlanmak isteyen geliştiriciler için güçlü ve etkili bir araçtır. Gelecekte bu dilin daha da gelişeceği ve blockchain dünyasında önemli bir rol oynamaya devam edeceği açıktır.
Solidty ile Akıllı Kontrat Yazalım
Evet yanlış okumadınız şimdi sizlerle beraber Solidty ile basit bir kontrat nasıl yazılıyor öğrenelim.
Amacımız basit bir depolama (storage) kontratı yazmak olacak. Bu kontrat sayesinde blockchain üzerinde bir değer depolayacağız ve bu değeri gerektiğinde güncelleyebileceğiz.
ilk olarak Solidty verisyonunu belirleyelim tabi daha öncesinde şunu belirteyim solidty dosyalarımızın uzantısı .sol’dur
Her Solidity dosyasının başında,hangi Solidity sürümüyle yazıldığını belirtmemiz gerekiyor. Bu derleyiciye hangi sürümün kullanılacağını bildirir.
Kod:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
- pragma solidity ^0.8.0;
- Bu 0.8.0 ve üzeri Solidity sürümlerini kullanabileceğimiz anlamına gelir.
- SPDX-License-Identifier: MIT
- Bu ise kontratın açık kaynak MIT lisansıyla lisanslandığını belirtir.
Daha sonra kontratımızı tanımlayalım
Kod:
contract SimpleStorage {
uint256 public storedData;
}
Şimdi kullanıcıların bu kontrata bir değer kaydedebilmeleri için bir fonksiyon ekleyelim.
Kod:
function set(uint256 _data) public {
storedData = _data;
}
Buraya opsiyonel olarak bir getter() fonksiyonu yazabiliriz ama direkt otomatik bir şekilde geliyor bu fonksiyon yazmamıza gerek yok
Tam kontrat kodu:
Kod:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 public storedData;
// Veriyi kaydetmek için fonksiyon
function set(uint256 _data) public {
storedData = _data;
}
// Veriyi okumak için fonksiyon (opsiyonel)
function get() public view returns (uint256) {
return storedData;
}
}



