Web3 Sistemine Hızlı Bir Giriş

Web3 Sistemine Hızlı Bir Giriş

Remix ve ilk Smart Contract

Remix’te İlk Smart Contractımızı Yazalım

Herkese merhabalar,

Bu yazı SCDEVSTR Lab girişimi altında ilk yazım olacak. Aslında bu girişimin de ilk yazılarından birisi. Öncelikle bu girişimi başlatan ve destekleyen herkese teşekkürler. İngilizce bilmeyen ve dil problemi sebebiyle bazı kaynakları anlamakta zorlanan arkadaşlar için faydalı bir süreç olmasını diliyorum. Farklı kişiler farklı seviyelerde yazılar yazacaktır. Bu sebeple seviyeniz ne olursa olsun faydalı bir yazı bulabilirsiniz. Web3 alanında kaynakların büyük kısmı İngilizce olduğu için İngilizcesi zayıf olan arkadaşların bir taraftan bu eksiklerini tamamlarken, aynı zamanda teknik olarak da geride kalmadan web3 programlamayı öğrenmelerine faydalı bir süreç olmasını diliyorum. Bu kısa açıklamadan sonra çok fazla uzatamadan konuya girelim.

Birçok kişi aslında bu alana, web3 programlamaya ilgi duymasına rağmen nasıl ve nereden girebileceğini tam bilmediği için girmekte zorlanıyor.

Sağdan soldan sürekli web3 programlama duyuyor; fakat nasıl başlayacağını bilemiyor, yazılım ortamının hazırlanmasının zor olduğunu düşünüyor ve başlama zamanı sürekli erteleniyor.

Beraber çalıştığım ve gayet iyi bir yazılımcı arkadaşımdan bu durumu gördüm. Kendim de aynı süreçten geçtim, uzun süre erteledim bu alana girmeyi.

Aslında ilk girişin bu kadar zor olmadığını fark edersek giriş ve ilerleme o kadar hızlı olacaktır. Bilgisayarınıza herhangi bir program kurmadan sadece Google Chrome gibi web tarayıcı kullanarak bir kaç sayfalık bu yazıyı bitirdiğimizde ve birlikte yaptığımızda ilk smart contractlarınızı yazmış olacağız. Bununla birlikte yazdığınız contract ile etkileşime de girmiş olacağız.

Web3 Nedir?

Normal şartlarda bir program yazdığımızda bu program hangi ortama yüklendiyse orada çalışıyor. Web3 dediğimiz olay kısaca yazdığımız bir programın sadece bir bilgisayara yüklenmesi değil de zincir şeklinde birden fazla bilgisayara yüklenmesi gibi düşünülebilir.

Blockchain Nedir?

Bu durumda bir yerden silinse dahi başka bir bilgisayar (Node) üzerinden çalışmaya devam edeceği için hem süreklilik sağlanır hem de yazdığımız programın sadece bir kişi veya kuruluş tarafından engellenmesinin önüne geçilir.

Bu tarz sistemler genel olarak Blockchain (Blockzincir: belirli bloklardan oluşan bir zincir gibi düşünebiliriz.) olarak adlandırılmaktadır.

Blockchain teknolojisinin herkes tarafından bilinen örneği Bitcoin ağıdır. Bitcoin ağı da diğerleri gibi bir blockchain olmasına rağmen ilk olması sebebiyle blockchain denildiği zaman genellikle Bitcoin networku gelmektedir insanların aklına.

Bitcoin ağı çoğunlukla kendi coini olan BTC transferlerinde kullanılmaktadır. Zamanla benzer şekilde üzerine kendi yazdığımız programları yükleyebileceğimiz bir blockchain ihtiyacı oluşmuş ve bu da Ethereum networkünün ortaya çıkmasını sağlamıştır.

Smart Contract Nedir?

Smart contract ifadesi web3 alanında yazılan ve blockchaine yüklenen programları ifade etmektedir.

Ethereum Virtual Machine (EVM) Nedir?

EVM kısaca bizim Solidity ile yazacağımız programları (smart contract) çalıştıracak olan yazılımdır. Nasıl bilgisayarımıza yüklediğimiz bir program Linux, Windows gibi işletim sistemleri üzerinde çalışıyorsa EVM de bu şekilde bir fonksiyona sahiptir. Yazdığımız programlar EVM üzerinde çalışmaktadır.

Profesyonel olarak EVM üzerinde bir smart contract yazdığımızda bunu imzalayarak blockchain networküne yüklememiz gerekmektedir. Blockchaine veri yazmak ücretli olduğu için öğrenme aşamasında veya iyice test edilmeden bir programın blockcahine yüklenmesi gereksiz bir maliyete sebep olmaktadır. Bu sebeple test ağları kullanılmaktadır. Bu ağlarda test için kullanabileceğimiz ve normal Ethereum networkünde (Mainnet) geçersiz ve herhangi bir parasal değeri olmayan Ether (Ether: Ethereum ağında ücretlerin ödendiği geçerli coin) kullanılmaktadır.

Testlerin tamamlanması sonrasında gerçek Ether kullanılarak program Ethereum networküne yüklenmektedir.

Bunun için de bir Metamask cüzdanına ihtiyacımız olacaktır. Cüzdanı kurup ayarlamalarını yaptıktan sonra Faucetlerden (test ether üretip bunu başkalarıyla paylaşan sistemler) test Ether alarak çalışmalarımıza devam edebiliriz. Bu biraz çalışma gerektirdiğinden ve ilk başladığımızda biraz karmaşık gelebileceğinden dolayı detaylarda boğulmamak adına bu yazımızda local olarak kullanabileceğimiz, Remix sitesi üzerinde oluşturulmuş olan hesapları kullanacağız. Bu sayede cüzdanımız var ve içinde ETH var gibi işlemlerimizi tamamlayabileceğiz. İşlemlerimize bu şekilde devam edip genel mantığı anladıktan sonra yazının sonunda Metamask kurulumu, Test Ether edinme ve Metamask kullarak yazılımı imzalama ve blockchaine yükleme işlemlerinden bahsedeceğiz.

Bu açıklamalardan ve genel olarak kısaca bilgi sahibi olduktan şimdi konuya girelim. Yaptığımız her işlemi açıklamaya çalışacağım.

Hangi Programı Kullanacağım, Ne Yüklemem Gerekiyor?

Daha önce de belirttiğimiz gibi, bilgisayarımıza herhangi bir program kurmadan kullanacağımız Remix sitesinde üzerinden bütüm işlemlerimizi yapacağız.

Öncelikle Remix sitesinden bahsedelim. Remix Ethereum Vakfının geliştirmiş olduğu bir online IDE(integrated development environment-bütünleşik geliştirme ortamı). Burada, yazdığımız programları (smart contract) direkt çalıştırarak sonuçlarını görebiliyoruz.

Nasıl Bir Program Yazacağız?

Bu yazımızda blockchaine veri yazma ve blockchainden veri okuma işlemini kısa bir örnekle açıklamaya çalışacağız.

Buraya şu adresten erişebiliriz: https://remix.ethereum.org/ Sayfayı açtığımızda şu şekilde bir sayfa ile karşılaşıyoruz.

REMIX ORTAMI

FILE EXPLORER sekmesinde contracts üzerine tıkladığımızda birkaç tane .sol (Solidity dosyası) uzantılı dosya görüyoruz. Bunlardan her biri bir smart contract olarak adlandırılmakta. Bir tane kendimiz oluşturalım ve onun üzerinden devam edelim. Aşağıdaki resimde görüldüğü gibi yeni dosya oluşturma ikonuna tıklayalım ve Scdevs.sol ismini verelim. (Smart contractların ilk harfi genellikle büyük harf olur)

Sonrasında üzerine tıklayarak tarayıcıda açalım:

Smart Contractımızı Yazmaya Başlıyoruz

Öncelikle yazacağımız programın hangi lisansa sahip olduğunu belirtiyoruz.

// SPDX-License-Identifier: MIT

(Detaylı bilgi için https://spdx.org/licenses/ adresine bakabilirsiniz. )

Daha sonra hangi Solidity versiyonunda yazacaksak onu belirtiyoruz. Bunun için pragma sözcüğü kullanılmaktadır.

pragma solidity^0.8.0;

Bu program solidity versiyonu 0.8.0 ve sonraki versiyonlarda çalışacaktır.

Daha sonra contract kelimesi smart contract ismini yazarak contractımızı şekillendiriyoruz. Yazacağımız contract;

contract ContractAdi {

……
…………SOLIDITY CODE
……

}

şeklinde olacaktır.

contract Scdevstr {

string veri;

}

Şimdi bu contract için bir tane veri yazma fonksiyonu, bir tane de veri okuma fonksiyonu yazacağız. Fonksiyonlar function kelimesi ile belirtilmektedir. Yazacağımız fonksiyonlar veri isimli string değişkeninin son halini blockchainden okuyacak veya üzerine yazarak değiştirecektir.

function veriYaz (string memory _veri)  public {

veri = _veri;

}

Bu fonksiyon parametre olarak verdiğimiz “_veri” değişkenine hangi değer atanırsa onu “veri” değişkeni üzerine yazacaktır. Böylece “veri” değişkeninin değeri değişecektir. Programımız blockchain üzerinde olduğuna göre blockchain’e veri yazmış oluyoruz.

Blockchaine veri yazmak ücretli olduğu için ilgili hesaptaki ETH miktarı her seferinde azalacaktır.

function veriOku() public view returns (string memory) { 

 return veri;
}

Not: Bu iki fonksiyonun contract { } parantezlerinin içinde olmasına dikkat edelim.

Bu fonksiyonumuz ise Blockchainde tutulmakta olan veri değişkeninin şu anki değerini bize gösterecektir.

Veri okumak ücretsiz olduğu için veri değişkeninin değerini öğrenmek için sorgulama yapmak herhangi bir ücret kesintisine sebep olmayacaktır.

Derleme

Bu kadar yazdıktan sonra programımızı derlemek için sol menüde bulunan Compile butonuna tıklayabiliriz. Aşağıdaki şekilde bir görüntü olacaktır.

Burada Compile Scdevs.sol’a tıklayarak programımızı derlemiş oluyoruz.

Blockchaine Gönderme (Deploy)

Bunu yaptıktan sonra hata almazsak programımız blockchaine yüklenmeye hazırdır artık. Bunu yapmak için de bir alttaki ikona “deploy and run transactions” ikonuna tıklıyoruz.

Bu sayfada;

ENVIRONMENT kısmından Remix VM (London) seçebiliriz. Bunu seçtiğimizde aslında yazdığımız program Ethereum networküne gitmeyecek Remix’in sanal makinesinde çalışacaktır.

ACCOUNT altında 15 tane hesap vardır. Bunların her birinin100 Ether bakiysi var. Hangi hesabı seçersek onun üzerinden işlemlerimizi yapmış oluyoruz. Her bir yazma işleminden sonra bu bakiye 100’den aşağıya doğru azalacaktır.

Gass Limit ve Value kısmını olduğu gibi bırakalım.

Etkileşim

CONTRACT (Compiled By Remix) kısmında contractımızın gözükmesi gerekiyor. Gözükmüyorsa Compile kısmına hata veya eksik olabilir.

Deploy butonuna basarak yazdığımız contractı blockchaine gönderiyoruz. Yaptığımız işlemlere ait bilgiler transfer olarak gözükmektedir.

Deployed Contracts kısmında gözüken ve işaretlenmiş olan yere tıklayarak yüklemiş olduğumuz programı kullanmaya başlayabiliriz artık.

Remix, yazdığımız fonksiyonlar için otomatik olarak butonlar ve parametre yazacağımız alanları getirmektedir. Bizim örneğimizde veriOku ve veriYaz için iki buton gelmektedir. Veri okumak için herhangi bir parametre girilmeyeceği için yazma alanı gelmemekte. Veri yazma fonksiyonu için veriyi yazacağımız alan fonksiyonun yanında gelmektedir.

Yazma fonksiyonları yani ücretli fonksiyonlar turuncu renkte, veri okuma fonksiyonları mavi renktedir. Burada kullanmayacağımız farklı rente fonksiyonlar da olmaktadır.

veriYaz fonksiyonunu çalıştırmadan veriOku fonksiyonunu çalıştırırsak herhangi bir veri gelmeyecektir. Daha doğrusu boş bir string gelecektir.

Veri yazdıktan sonra veri okuma fonksiyonun çağırırsak daha önce veri değeri olarak neyi yazdıysak o değeri okuyabiliriz.

Veri okuma fonksiyonumuz public olduğu için bir hesaptan yazdığımız veriyi başka bir hesaptan okuyabiliriz.

Buradaki public ifadesi açık olmasından ziyade herhangi bir kişi tarafından fonksiyonun çağırılması manasına gelmektedir. Zaten her şey herkese açık bir şekilde blockchainde gözükmektedir.

Bu yazıyı yazmaya başladığımda Remix’in yanında profesyonel yazılımlarda kullanılan hardhat hakkında da yazı yazmayı planlamıştım. Yazarken farkettim ki ikisi beraber çok uzun olacak. O yüzden hardhat konusuna başka bir yazıya bırakalım.

Eğer tarayıcınızda Metamask kurulu ve test etheriniz varsa aynı işlemlerden sonra Deploy demeden önce ENVIRONMENT sekmesinden Injected Provider seçtiğimizde Remix bizi otomatik olarak onay için Metamask’e yönlenirecektir.

Son Söz

Bu yazıyı yazmamın ana gayesi çok teknik ve detaylı bir yazı yazmak değildi. Zaten görüldüğü üzere çok fazla derinlik olduğunu söyleyemeyiz. Buradaki maksadımız, bu işe yeni girmeyi düşünen arkadaşlar ilk kapıyı aralamak, sonrasında çalımalarımıza ve gelişimimize beraber devam etmek. Tek başına bir kaç defa bu işlere başlayıp bırakmış birisi olarak toplulukların kıymetini her geçen gün daha da anlıyorum.

Buraya kadar okuduğunuz için çok teşekkürler.

Faydalı olması dileğiyle.

Görüş ve önerileriniz için twitter’dan veya mail ile ulaşabilirsiniz.

Yusuf Çınar

twitter :https://twitter.com/yc_crypto

eposta: yusufcnr@gmail.com

Did you find this article valuable?

Support Buildchain by becoming a sponsor. Any amount is appreciated!