Ana içeriğe geç

Bu sayfanın güncellenmesine yardım edin

🌏

Bu sayfanın yeni bir sürümü vardır ancak şu anda yalnızca İngilizce'dir. Son sürümü çevirmemize yardımcı ol.

Sayfayı çevir
İngilizce'yi gör

Burada hata yok!🐛

Bu sayfa tercüme edilmiyor. Bu sayfayı şimdilik kasıtlı olarak İngilizce bıraktık.

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

akıllı kontratlar
karışım
katılık
başlarken
dağıtma
Yeni başlayan
✍jdourlens
📚EthereumDev
📆3 Nisan 2020
⏱️3 dakikalık okuma
İpucu yazarı 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 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}
20
Tümünü göster
📋 Kopyala

Temel programlama bilgisi olanlar bu kod parçasının ne yaptığını tahmin edeceklerdir. Satır satır açıklayacak olursak:

  • Satır 3: Counter adında yeni bir sözleşme tanımlıyoruz.
  • Satır 6: Sözleşmemiz ilk değeri sıfır olan count adında pozitif tam sayı değişkenini içeriyor.
  • Satır 9: İlk fonksiyon increment() değişkenimiz count değerini değiştirir ve sözleşmemizin durumu günceller.
  • Satır 14: İ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. Bilenler tahmin edecektir ki bu Java veya C++ dillerindeki sınıflara 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: , Invalid DateTime
Sayfayı düzenle

Bu sayfa yararlı oldu mu?