Yeni Başlayanlar için: Solidity

Yeni Başlayanlar için: Solidity

Son güncelleme: Eylül 18, 2017

Solidity, akıllı sözleşme yazmak için kullanılan nesne yönelimli bir programlama dilidir. Çeşitli blockchain platformlarında akıllı sözleşmeleri çalıştırmak ve yürütmek için kullanılır. Ethereum gibi blockchain platformlarında akıllı sözleşmeleri imzalamayı sağlayan eski Ethereum çekirdeği geliştiricilerinden Gain Wood, Christian Reitwiessner, Alex Beregszaszi ve Yoichi Hirai tarafından geliştirildi.

Tarihçesi

Solidity başlangıçta Ağustos 2014’te Gavin Wood tarafından önerildi; daha sonra Ethereum projesi bünyesindeki Christian Reitwiessner yönetimindeki Solidity ekibi tarafından tarafından yönetildi. Ethereum Sanal Makinesi’ni (EVM) hedeflemek için tasarlanmış üç dilden biridir (diğerleri Serpent ve LLL’dir).

Günümüzde Solidity, Ethereum’daki ana dildir. Ayrıca Ethereum ile rekabet eden bazı diğer blockchain platformlarda da kullanılır. SWIFT, Burrow’da çalışan Solidity’yi kullanarak bir konsept ispatını dağıttı.

Cornell Üniversitesi’nden bir araştırmacı, 2016’da gerçekleşen DAO saldırısında Solidity’nin kısmen sorumlu olduğunu belirtti. Bu aslında DAO sözleşmesinde bir kusur veya istismar değildi: teknik olarak EVM amaçlandığı şekilde çalışıyordu, ancak Solidity sözleşmelere -hem topluluk hem de geliştiricilerinin gözünden kaçan- güvenlik açıklarını getiriyordu.

Solidity Nedir

Solidity, EVM’de çalışan akıllı sözleşmeleri geliştirmek için tasarlanmış statik olarak yazılmış bir programlama dilidir. Solidity, EVM’de yürütülebilen baytcode olarak derlenir. Solidity ile geliştiriciler, akıllı sözleşmelere dönüştürülmüş kendi kendini force eden iş mantığını uygulayan uygulamalar yazabilir ve işlemin yetkili bir kaydını bırakabilir. Solidity gibi akıllı sözleşmeye özgü dillerde akıllı sözleşmeler yazmak kolay (görünüşte programlama becerisine sahip olanlar için) olarak anılır.

Wood’un belirttiği gibi, mevcut web geliştiricilerin aşina olduğu ECMAScript sintaksı etrafında tasarlanmıştır. ECMAScript’in aksine statik yazım ve değişken dönüş türleri vardır. Serpent ve Mutan gibi diğer EVM hedefleyen dillerle karşılaştırıldığında, Solidity bazı önemli farklılıklar içerir. Sözleşmeler için keyfi hiyerarşik eşlemeler ve yapılar da dahil olmak üzere kompleks üye değişkenleri desteklenmektedir. Sözleşmeler, C3 linearizasyonu ile çoklu kalıtım da dahil olmak üzere devralmayı (inheritance) destekler. Tek bir sözleşmeyle birden fazla türde emniyetli işlevi kolaylaştıran bir uygulama ikili arabirimi (ABI) de Serpent tarafından tanıtıldı.

Solidity Kod Örneği

contract GavCoin
{
mapping(address=>uint) balances;
uint constant totalCoins = 100000000000;

/// Endows creator of contract with 1m GAV.
function GavCoin(){
balances[msg.sender] = totalCoins;
}

/// Send $((valueInmGAV / 1000).fixed(0,3)) GAV from the account of $(message.caller.address()), to an account accessible only by $(to.address()).
function send(address to, uint256 valueInmGAV) {
if (balances[msg.sender] >= valueInmGAV) {
balances[to] += valueInmGAV;
balances[msg.sender] -= valueInmGAV;
}
}

/// getter function for the balance
function balance(address who) constant returns (uint256 balanceInmGAV) {
balanceInmGAV = balances[who];
}
}

Solidity nedir sorunuza umarım cevap bulabilmişsinizdir. Yorumlarınız varsa eklemeyi unutmayın.

Bir Cevap Yazın