İlk akıllı sözleşmenizi dağıtın
Ethereum blok zincirinde ilk akıllı sözleşmenizi dağıtmak ve onunla etkileşimde bulunmak için eminiz ki siz de en az bizim kadar heyecanlısınızdır.
Endişelenmeyin; bu sözleşmeyi yerel test ağında yayınlayacağımız için size herhangi bir bedele mal olmayacak. Üzerinde dilediğiniz şekilde oynayabilirsiniz.
Sözleşmemizi yazmaya başlayalım
İlk adım olarak Remix'e(opens in a new tab) gidin ve yeni bir dosya oluşturun. Remix arayüzünün sol üst köşesinde yer alan yeni dosya simgesini kullanarak yeni bir dosya oluşturun ve dosyanıza isim verin.
Bu yeni dosyaya aşağıdaki kodu yapıştırıyoruz.
1// SPDX-License-Identifier: MIT2pragma solidity >=0.5.17;34contract Counter {56 // Public variable of type unsigned int to keep the number of counts7 uint256 public count = 0;89 // Function that increments our counter10 function increment() public {11 count += 1;12 }1314 // Not necessary getter to get the count value15 function getCount() public view returns (uint256) {16 return count;17 }1819}Tümünü gösterKopyala
Programlama konusunda bilgisi olanlar, bu programın ne yaptığını tahmin edeceklerdir. Satır satır açıklayacak olursak:
- Satır 4:
Counter
adında yeni bir sözleşme tanımlıyoruz. - Satır 7: Sözleşmemiz, ilk değeri 0 olan
count
adında bir işaretsiz tam sayı depoluyor. - Satır 10: İlk fonksiyon, sözleşmenin durumunu değiştirir ve değişken
count
değerineincrement()
uygular. - Satır 15: İkinci fonksiyon, basitçe
count
değerini akıllı sözleşmenin dışından okumamızı sağlayan bir alıcıdır. Aslındacount
değişkenini zaten herkesin erişime açık (public) tanımladığımız için bunu yapmamıza gerek yoktu ama sadece örnek olarak göstermek istedik.
İlk akıllı sözleşmemiz için hepsi bu kadar. Bildiğiniz gibi, Java veya C++ gibi OOP (Nesne Odaklı Programlama) dillerinden bir sınıfa benziyor. Şimdi sözleşmemizle oynamaya başlayalım.
Sözleşmemizi dağıtma
Sözleşmemizle etkileşimde bulunabilmek için öncelikle onu blok zincirinde dağıtacağız.
Bir sözleşmeyi blok zincirinde dağıtmak, aslında sadece sözleşme kodunun derlenmiş halini, herhangi bir alıcı belirtmeden, işlem olarak ağa göndermekten ibarettir.
Öncelikle sol tarafta yer alan derle simgesini kullanarak sözleşmemizi derleyeceğiz:
Ardından Compile butonuna tıklayın:
Dilerseniz "Auto compile" seçeneğini seçebilirsiniz. Böylece sözleşmenizi güncellediğiniz zaman sözleşmeinz otomatik olarak derlenir.
Ardından "deploy and run transactions" ekranına gidin:
Bu ekranda öncelikle sözleşmeye verdiğimiz ismin göründüğünden emin olmalısınız. Sözleşme adını görüyorsanız Deploy butonuna tıklayın. Sayfanın üst kısmında görebileceğiniz gibi, mevcut ortam “Javascript VM”, yani bu daha hızlı ve herhangi bir ücret ödemeden test edebilmek için akıllı sözleşmemizi yerel bir test blok zincirinde dağıtıp etkileşime geçeceğimiz anlamına geliyor.
"Deploy" düğmesine tıkladıktan sonra akıllı sözleşmemiz alt kısımda görünecek. Sol başındaki ok simgesini kullanarak sözleşmemizin içeriğini görüntüleyebiliriz. Bu, değişken counter
'ımız (sayaç), increment()
(artış) fonksiyonumuz ve alıcımız getCounter()
'dır.
Burada count
veya getCount
düğmelerine tıklarsanız, sözleşmede tanımlamış olduğumuz count
değişkeninin içeriğini alıp görüntüleyebilirsiniz. Şu ana dek increment
fonksiyonunu hiç çağırmadığımız için göreceğimiz değer 0 olmalı.
Şimdi de düğmeye tıklayarak increment
fonksiyonunu çağıralım. Ekranın alt kısmında gerçekleşmekte olan işleme ait işlem dökümlerini göreceksiniz. increment
düğmesi yerine verileri alma düğmesine tıkladığınızda kayıtların farklı olduğunu göreceksiniz. Bunun sebebi, blok zincirindeki herhangi bir veriyi okumanın masrafsız ve işlem gerektirmeyen (kaydetmek anlamında) olmasıdır. Sadece blok zincirinin durumunu güncelleyen eylemler işlem olarak nitelendirilir:
increment()
fonksiyonumuzu çağırmak için bir işlem oluşturan increment düğmesine bastıktan sonra tekrar count veya getCount düğmelerine basarsak akıllı sözleşmemizin yeni güncellenmiş durumunu count değişkeninin 0'dan büyük olduğu hâliyle görebiliriz.
Sonraki öğreticimizde akıllı sözleşmelere nasıl olay ekleyebileceğimizden bahsedeceğiz. Olayları kayıt altına alarak akıllı sözleşmemizin hata ayıklamasını yapabilir ve fonksiyonları çağırdığımızda neler olduğunu ayrıntılı bir şekilde görebiliriz.
Son düzenleme: @lukassim(opens in a new tab), 26 Nisan 2024