Solidity Dili

noktalıvirgül

Deneyimli Moderatör
17 Kas 2020
918
502
Solidity dilini açıklamadan önce bu dilin kullanıldığı alanların zaman içerisindeki gelişiminden bahsetmek, konunun netleşmesini sağlayacaktır. Açıklamaya TCP/IP sisteminden başlanacak olursa, tarayıcılar ve bazı protokoller kullanılarak IP adresleri üzerinden bağlantı oluşturan yapıları oluşturan internet sayesinde IP adresleriyle birbirine bağlanan cihazlar arasında bir bağlantı portu oluşturularak veri paketleri şeklinde aktarımlar sağlanıyor. WEB denilen sistem de bu bağlantı ve aktarımların oluşturduğu ağı belirtiyor. Arama motorlarıyla ziyaret edilen web sitelerine girildiğinde ve oradaki bilgiler tarandığında veri tabanına kaydedilmiş oluyor. O siteye, başka bir siteye ait bilgiler de paylaşıldığında o link üzerinden diğer web site de tanınmış oluyor ve o site ve içerikleri veritabanında kaydediliyor. Bu çok sayıda olasılıklar halinde web siteler birbirine bağlanmış oluyor. Bu da merkeziyetçi bir yapı halinde çalışıyor çünkü arama motorları kontrolünde gerçekleşiyor. Bu yapının değişmesi ve yeni yapıya geçilmesiyle internet üzerinden kurulan bağlantı trafiğinin kullanıcıların kendi kontrolünde olması sağlanır. Bu kontrol de yapay zekâ ve big data’nın çalışmasını sağlayan algoritmalarla sağlanıyor. Bundan sonra da blockchain teknolojisi işin içine giriyor.

Blockchain teknolojisinde veri aktarımı sırasında üçüncü kişilere ihtiyaç duymadan kullanıcıların doğrudan kendileri arasında iletişim (peer to peer ) kurmaları sağlanır, akıllı sözleşmeler yapılır.

WEB 1.0’da tek yönlü bir web sitesi ağından bahsedilir. Burada kullanıcılar, içeriğe herhangi bir şekilde katılamaz, onu etkileyemez, onu sadece bilgi edinmek amaçlı kullanmaktadır. Yani internet dünyasının bu kademesi, internetin başlangıcını ifade eder. Daha sonra, internetin çok daha fazla ve hızlı yayılımıyla birlikte gelişen teknolojik sistemlere uyum sağlayan web siteleri ile WEB 2.0 teknolojisinin gelişimi, kullanıcıların etkileşim haline girmelerini, kullanıcıların içeriklere müdahale edebilmesini ve etkileşim haline girebilmelerini sağlamıştır. Bu sistemler hala devam etmekte ve kullanılmaktadır. Yani internet hala bazen etkileşim kurmadan sadece bilgi almak için veya etkileşimli şekilde aktif olmak için kullanılmaktadır.

WEB 3.0 teknolojisinin gelişmesiyle birlikte internetin merkeziyetsiz ve peer to peer (eşten eşe) şekilde kullanılan, blockchain (blok zincir) destekli halde kullanılması durumu oluşmuştur. Blockchain, aynı ağdaki bilgisayarlar arasında sürekli güncellenen ve paylaşılan veri tabanıdır. Bu veri tabanına eklenen işlem kümelerine “blok” denir ve bu yüzden blok zincir adını almıştır.

Solidity, Ethereum adındaki teknolojinin akıllı sözleşme programlama dilidir. Ethereum, ağ geliştiricilerinin oluşturduğu ve diğer blok zincir ağlarında sorunsuzca kullanılabilmesini sağlayan ve çok tercih edilen bir yatırım aracı durumundadır. Geliştiricilerin ticari sözleşmeler, açık artırmalar, oyun, yönetim ve veri tabanlarından merkeziyetsiz finansal araçlara kadar birçok çeşitli uygulama geliştirmelerine olanak sağlar. Ethereum tabanlı bu uygulamalar, “akıllı sözleşmeler”le geliştirilir. Bu akıllı sözleşmelerde anlaşma yapılan kişi veya kişilerin kim oldukları bilinmese de koşullar sağlandığında sözleşme uygulanmaya başlar. Bu durumlarda aracıya da gerek yoktur. Yani Ethereum da Bitcoin gibi, tek bir kişiye ait olmayan açık kaynaklı ve merkeziyetsiz bir araçtır. Akıllı sözleşmeler, kendi kendini yürüten otomatik işlevler oluşturmayı sağlayan kod satırlarıdır. Python, JavaScript, C++ dillerinden örnek alınarak oluşturulmuştur.

Örneğin bir değişkene değer verilerek başka bir sözleşme ile bu değişkene erişim sağlanması için şu yol kullanılabilir:

Kod:
pragma solidity >=0.4.0 <0.6.0;


contract SimpleStorage {


uint storedData;


function set(uint x) public {


storedData = x;


}

function get() public view returns (uint) {


return storedData;


}


}
-

Burada ilk satır, kaynak kodun Solidity versiyon 0.4.0 veya daha yeni bir versiyon için yazıldığını ifade eder. Bu sözleşmenin farklı davranabileceği veya bozulabileceği yeni bir derleyici sürümüyle uyumlu olmasına engel olunmuş olunur.

Sürekli gelişen teknolojik sistemlerde uygulamalar geliştirmek için nesne yönelimli programlama dili olan Solidity, ethereum’un alt yapısına bağlı uygulamalar geliştirilmesini sağlar. Ayrıca Solidity ile yazılan akıllı sözleşmelerin blockchain sisteminde çalışmasını ve yürütme mekanizmasını sağlamak için kullanılır. Solidity, blockchain ve ethereum alt yapısına uygun şekilde geliştirildiği için bu sistemlere uygun “değişken tipleri” ve “fonksiyonları” barındırır. Böylelikle insanlar, Solidity ile akıllı sözleşmeler yazılarak ethereum alt yapısında kendi para birimlerini oluşturabilirler. Fakat bu ve bunun gibi sistemlerdeki sorunların varlığını da unutmamak gerekir. Bu sorunların bazıları şöyledir: İşlemlerin tutulduğu kayıtlar halka açık olduğundan gizlice değişiklik yapılamaz, değişiklik yapılmak istendiğinde de sistemdeki diğer parçaların hepsi tarafından değişiklik kabul edilmesi gerekir. Ayrıca halka açık blok zincirler saldırılara büyük oranda açık haldedir. Kötü niyetli bilgisayar korsanları tarafından blok zincirin bilgi işlem gücüne saldırı gerçekleştirebilirler ve ağın çoğunluğunu ele geçirerek tüm blok zincirin kontrolünü ele geçirebilirler. Merkezi olmayan bir sistemde hangi kurallar ve yasalar uygulanabilir? Bir kargaşa olduğunda kim sorumlu tutulabilir, kimden çözüm istenebilir? Akıllı sözleşmelerin aracıları ortadan kaldırması ve bu sözleşmelerin bilgisayar kodlarıyla yapıldığı düşünüldüğünde bir uyuşmazlık oluştuğunda hangi duruma göre mahkeme süreçleri uygulanabilir? Ayrıca bu blok zincirindeki verilerin kaybolma riski de yüksektir.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.