Ana içeriğe geç

İlk akıllı sözleşmenizi dağıtın

akıllı sözleşmelerkarışımkatılıkdağıtma
Acemi
jdourlens
EthereumDev(opens in a new tab)
3 Nisan 2020
3 dakikalık okuma minute read
comp-tutorial-metadata-tip-author 0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE

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.

Remix arayüzünde yeni dosya oluşturma

Bu yeni dosyaya aşağıdaki kodu yapıştırıyoruz.

1// SPDX-License-Identifier: MIT
2pragma solidity >=0.5.17;
3
4contract Counter {
5
6 // Public variable of type unsigned int to keep the number of counts
7 uint256 public count = 0;
8
9 // Function that increments our counter
10 function increment() public {
11 count += 1;
12 }
13
14 // Not necessary getter to get the count value
15 function getCount() public view returns (uint256) {
16 return count;
17 }
18
19}
Tümünü göster
Kopyala

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ğerine increment() 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ında count 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:

Remix araç çubuğundaki derleme simgesi

Ardından Compile butonuna tıklayın:

Remix solidity derleyicisindeki compile (derle) düğmesi

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:

Remix araç çubuğundaki yayınla simgesi

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.

Remix solidity derleyicisindeki deploy (dağıt) düğmesi

"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ı.

Remix solidity derleyicisindeki function (fonksiyon) düğmesi

Ş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:

İşlemlerin kaydı

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.

Akıllı sözleşmenin yeni güncellenmiş durumu

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: @muratgozel(opens in a new tab), 19 Ocak 2024

Bu rehber yararlı oldu mu?