Solidity Programlama Dili ile Akıllı Sözleşmeye “Merhaba Dünya” Yazalım 👻
Selam değerli arkadaşlarım ve okuyucularım.👯♀️Ben Elif Hilal! Blockchain teknolojisi, akıllı sözleşmeler, web3 ve hukuk alanlarında türkçe ve ingilizce içerikler üretiyorum. Yazılarımı ilk defa okuyorsanız eğer benim dünyama hoşgeldiniz 🎀 Yazılarımı ilk kez okumayan arkadaşlarım bu girişten sıkıldılar biliyorum.😉🙃
Şimdi,bu yazımda; başlıktan da anlayacağınız üzere Solidity programlama dilinde “Merhaba Dünya/Hello world” nasıl yazılır bundan bahsedeceğim. Eğer ki, akıllı sözleşme geliştiricisi olmak istiyorsanız; bu yolculuğunuz, tek bir adımla başlar. Öğrenmeye hazır olun :)
Bu yazıyı okurken herhangi bir şey yapmanıza gerek yok, dikkatlice takip etmeniz yeterli. Yazdığım yazı, başlangıç seviyesi için uygundur. Developer olmasanız bile, Solidity dilini kullanarak ilk akıllı sözleşmenizi oluşturmak için adım adım talimatları takip edebilirsiniz🙂
Akıllı Sözleşme Nedir?
Akıllı sözleşmeler, bir blok zinciri ortamında yayınlanan ve yürütülen bilgisayar programlarıdır.
Akıllı sözleşmeler, blok zincirler üzerinde çalıştıkları için merkezi bir parti veya sunucu olmadan da çalıştırılabilirler.
Ufak bir hatırlatma yapmakta fayda var, biliyorsunuz ki Blockchainlerde işlemlerin geri alınamaz olması söz konusu. Akıllı bir sözleşme yayınlandıktan sonra, blok zincirlerdeki işlemlerin değiştirilemez olmaları nedeniyle kodunu güncellemek veya üzerinde herhangi bir değişiklik yapmak pek mümkün değildir.
Ancak akıllı sözleşme, verileri değiştirme işlevleriyle programlanmış olabilir. Bazı istisnaları gözden kaçırmamak gerekir. Bu bilgiler bir blokta kaydedilebilir ve diğerinde silinebilir, ancak geçmiş kalır ve denetlemek mümkündür.
Solidity Programlama Diline Bakalım 🤔
Solidity programlama dili, akıllı sözleşmeleri uygulamak için nesne yönelimli(object-oriented), üst düzey bir dildir. Kıvrımlı ayraçlı (curly-bracket) bir dildir, yani “{“ ..“}” karakterlerinin “ifade bloklarını” tanımladığını söyleyebiliriz.
Solidity, C++, Python ve JavaScript’ten etkilenmiş bir dildir ve Ethereum Virtual Machine (EVM) üzerinde çalışacak şekilde tasarlanmıştır.
Statik olarak yazılır ve diğer özelliklerin yanı sıra kitaplıkları ve “karmaşık kullanıcı tanımlı türleri” destekler bir yapıdadır.
Remix
Remix, aslında en basit ifadeyle çevrimiçi bir web aracıdır.
Solidity programlama dili ile kod yazmak, derlemek(compile), dağıtmak(deploy) ve hata ayıklamak(debug) için kullanılan bir IDE’dir (entegre geliştirme ortamı, integrated development environment).
Remix, bilgisayar tarayıcınızda çalışan bir blockchain simülatörü olan JavaScriptVM adlı bir ortama sahiptir. Bu yazının içeriğinde de bunu kullanacağız. Başlamak için remix.ethereum.org adresine gidebilirsiniz.
Akıllı Sözleşme Oluşturmaya İlk Adım
Ben sizlere sırayla adımları yazacağım.
İlk olarak, sol çubuktaki ikinci simgeye tıklayın, “File Explorers/ Dosya Gezgini”.
“Create a new file/ Yeni bir dosya oluştur” düğmesine tıklayın şimdi.
Burada bir Dosya adı girmemiz gerekecek.
Dosya adı: HelloWord.sol
Unutmadan ekleyelim, Solidity dili ile yazılan dosyalar “.sol” uzantısını kullanırlar.
Bu örneği kopyalayıp yapıştırabilirsiniz:
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;
contract HelloWorld {
function sayHelloWorld() public pure returns (string memory) {
return "Hello World";
}
}Şimdi, akıllı sözleşmenin içeriğine bir bakalım isterseniz:
// SPDX-License-Identifier (SPDX Lisans Tanımlayıcısı)
Burada yazılım dünyasına dair çok kullanılan bir bilgiyi yazayım. Developer ve mühendis arkadaşlar zaten biliyorlar ama sosyal bilimci arkadaşlarım için önemli bir ayrıntı ve yeni bir bilgi olabilir.
“//” bu işareti gördüğümüzde anlayacağımız şey , bunun bir kod satırı değil yorum satırı olduğudur.
Bu arada SPDX Lisans Listesi, ücretsiz (open source ya da işbirliğine dayalı da olabilir) olarak kullanılan yaygın lisansların bir listesidir.
Solidity 0.6.8 introduces SPDX license identifiers so developers can specify the license the smart contract uses.Bir diğer ifade, Solidity 0.6.8 ifadesidir. Bu ifade geliştiricilerin, akıllı sözleşmenin kullandığı lisansı belirleyebilmeleri için SPDX lisans tanımlayıcılarını tanıtır.
SPDX lisans tanımlayıcıları, “//” tanımlayıcısı kullanılarak akıllı sözleşme dosyalarının en üstüne eklenmelidir. Aşağıya örneğini bırakıyorum :
// SPDX-License-Identifier: MIT
Pragma Nedir?
Bupragma anahtar sözcüğü belirli derleyici özelliklerini veya denetimlerini etkinleştirmek için kullanılır. Aslında sürüm belirttiğini söyleyebiliriz. Pragma hakkında daha fazla detaylı bilgiye şuradan ulaşabilirsiniz. Pragma şöyle kullanılır:
pragma solidity 0.8.13;
Sözleşmeye Başladık, “HelloWorld”
Burada sözleşme adını tanımladık “HelloWorld” bizim sözleşmemizin ismi.
Bir akıllı sözleşme, işlevler ve veriler topluluğudur da diyebiliriz, aklımızda bulunsun 🙂
Deploy edildikten sonra (dağıtılmak) bu sözleşme, Ethereum blok zincirinde bir adreste bir akıllı sözleşme olacaktır.
"sayHelloWorld” Fonksiyonu
İşlevler (functions), yürütülebilir kod birimleridir. Fonksiyonlar genellikle bir sözleşme içinde tanımlanır, ancak sözleşmelerin dışında da tanımlanabilirler.It is declared pure because it doesn’t read or modify the blockchain state. Örneğimizdeki bu fonksiyon, “HelloWorld” dizesini döndüren public bir fonksiyondur.
(Public anahtar sözcüğü, durum değişkeninin geçerli değerine sözleşmenin dışından erişmenizi sağlayan bir işlevi otomatik olarak oluşturur. Bu anahtar kelime olmadan, diğer sözleşmelerin değişkene erişme yolu yoktur.)
Pure ifadesinin nereden geldiğini merak ediyor olabilirsiniz.
Bir metot aşağıda sıralanmış olan maddeleri sağlıyorsa buna pure function denir.
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;
contract HelloWorld {
function sayHelloWorld() public pure returns (string memory) {
return "Hello World";
}
}Akıllı Sözleşmeyi Compile Etme (Derleme) Zamanı
Sol çubukta bir buton göreceksiniz , ismi “Solidity compiler/derleyici”
Bu butona tıklayın “Compile HelloWorld.sol”.(solidity dilinde yazılan dosyaların .sol uzantılı olduğunu unutmayalım 😉)
Bu arada otomatik-derleme(auto-compile) seçeneğini etkinleştirmek çok faydalı ve hız kazandırıcıdır, burada dursun bu bilgi de 🙂 Derleme başarılı olduğunda butondaki yeşil işareti kontrol edebilirsiniz.
Akıllı Sözleşmeyi Deploy Etme (Dağıtma) Zamanı ⛱️
Sol taraftaki panelde “Deploy and run transactions / işlemleri dağıt ve çalıştır” butonunu göreceksiniz. Şimdilik yalnızca bir akıllı sözleşmemiz var, bu nedenle “Contracts/Sözleşmeler” açılır menüsünde otomatik olarak sözleşmemiz seçilecektir zaten. Şimdi de“DeployDağıt” düğmesine tıklayalım.💻
Akıllı Sözleşmelerle Etkileşim 🛠️
Remix’te bir akıllı sözleşme deploy edildiğinde bunu sol panelde “deploy and run transactions/ dağıt ve çalıştır işlemleri” altında görebiliriz:
Tebrikler ❤️ şu anda bir “HelloWorld” akıllı sözleşmesi oluşturdunuz.
Peki Ya Sonra? 🔮
Artık Solidity dilini kullanarak “HelloWorld” akıllı sözleşmenizi oluşturduğunuza göre, kullanabileceğiniz ve yapabileceğiniz birçok olasılık var.
Mesela sözleşmenizi bir testnet’e (test ağına) veya bir mainnet’e (ana ağa) deployn edebilir, mesajı değiştirebilir, mesajı saklamak için bir durum değişkeni oluşturabilir, mesajı güncellemek için bir fonksiyon oluşturabilir veya bir mesajı sonsuza kadar bir blok zincirine kaydedebilirsiniz!⏳
💻Bu arada Blockchain ekosisteminde düzenlediğim etkinliklerden haberdar olmak için Meetup sayfama kaydolabilir, Telegram grubuma girebilir, Twitter’dan takip edebilirsiniz!🍀👻