İlk akıllı sözleşmeni dağıtma
Sanırım sen de Ethereum blokzincirinde ilk akıllı sözleşmeni dağıtmaya ve onunla etkileşime geçmeye bizim kadar heveslisin.
Endişelenme, bu ilk akıllı sözleşmemiz olduğu için onu yerel bir test ağında dağıtacağız, böylece dağıtmak ve onunla dilediğince oynamak sana hiçbir maliyeti olmayacak.
Sözleşmemizi yazma
İlk adım olarak Remix'i ziyaret edip (opens in a new tab) yeni bir dosya oluştur. Remix arayüzünün sol üst kısmından yeni bir dosya ekle ve istediğin dosya adını gir.
Yeni dosyaya aşağıdaki kodu yapıştıracağız.
1// SPDX-License-Identifier: MIT2pragma solidity >=0.5.17;34contract Counter {56 // Sayım sayısını tutmak için işaretsiz tamsayı türünde herkese açık değişken7 uint256 public count = 0;89 // Sayacımızı artıran fonksiyon10 function increment() public {11 count += 1;12 }1314 // Sayım değerini almak için gerekli olmayan alıcı15 function getCount() public view returns (uint256) {16 return count;17 }1819}Tümünü gösterProgramlamaya aşinaysan bu programın ne yaptığını kolayca tahmin edebilirsin. Satır satır açıklaması şöyledir:
-
- Satır:
Counteradıyla bir sözleşme tanımlıyoruz.
- Satır:
-
- Satır: Sözleşmemiz, 0'dan başlayan
countadında işaretsiz bir tamsayı depolar.
- Satır: Sözleşmemiz, 0'dan başlayan
-
- Satır: İlk fonksiyon, sözleşmenin durumunu değiştirir ve
countdeğişkenimizi artırır.
- Satır: İlk fonksiyon, sözleşmenin durumunu değiştirir ve
-
- Satır: İkinci fonksiyon, akıllı sözleşmenin dışından
countdeğişkeninin değerini okuyabilmek için kullanılan bir alıcıdır.countdeğişkenimizi herkese açık (public) olarak tanımladığımız için bunun gerekli olmadığını, yalnızca örnek olarak gösterildiğini unutma.
- Satır: İkinci fonksiyon, akıllı sözleşmenin dışından
İlk basit akıllı sözleşmemiz için hepsi bu kadar. Bilebileceğin üzere, bu Java veya C++ gibi OOP (Nesne Yönelimli Programlama) dillerindeki bir sınıfa benziyor. Şimdi sözleşmemizle oynama zamanı.
Sözleşmemizi dağıtma
İlk akıllı sözleşmemizi yazdığımıza göre, şimdi onunla oynayabilmek için blokzincirine dağıtacağız.
Akıllı sözleşmeyi blokzincirinde dağıtmak, aslında derlenmiş akıllı sözleşmenin kodunu içeren bir işlemi herhangi bir alıcı belirtmeden göndermekten ibarettir.
Önce, sol taraftaki derleme simgesine tıklayarak sözleşmeyi derleyeceğiz:
Ardından derle düğmesine tıkla:
İçeriği metin düzenleyiciye kaydettiğinde sözleşmenin her zaman derlenmesi için “Otomatik derle” seçeneğini tercih edebilirsin.
Ardından "Dağıt ve işlemleri çalıştır" ekranına git:
"Dağıt ve işlemleri çalıştır" ekranına geldiğinde, sözleşme adının göründüğünü kontrol et ve Dağıt'a tıkla. Sayfanın üst kısmında görebileceğin gibi, mevcut ortam “JavaScript VM”dir. Bu, daha hızlı ve hiçbir ücret ödemeden test edebilmek için akıllı sözleşmemizi yerel bir test blokzincirinde dağıtacağımız ve etkileşime gireceğimiz anlamına gelir.
“Dağıt” düğmesine tıkladıktan sonra sözleşmenin en altta belirdiğini göreceksin. Sözleşmemizin içeriğini görmek için solundaki oka tıklayarak genişlet. Bu bizim counter değişkenimiz, increment() fonksiyonumuz ve getCounter() alıcımızdır.
count veya getCount düğmesine tıklarsan sözleşmenin count değişkeninin içeriğini alır ve görüntüler. Henüz increment fonksiyonunu çağırmadığımız için 0 göstermesi gerekir.
Şimdi düğmeye tıklayarak increment fonksiyonunu çağıralım. Pencerenin en altında, yapılan işlemlerin kayıtlarının belirdiğini göreceksin. increment düğmesi yerine veriyi almak için olan düğmeye bastığında kayıtların farklı olduğunu göreceksin. Bunun nedeni, blokzincirinden veri okumanın herhangi bir işlem (yazma) veya ücret gerektirmemesidir. Çünkü sadece blokzincirinin durumunu değiştirmek bir işlem yapmayı gerektirir:
increment() fonksiyonumuzu çağırmak için bir işlem oluşturan increment düğmesine bastıktan sonra count veya getCount düğmelerine tekrar tıkladığımızda, akıllı sözleşmemizin yeni güncellenmiş durumunu count değişkeni 0'dan büyük olacak şekilde okuyacağız.
Bir sonraki öğreticide, akıllı sözleşmelerinize nasıl olay ekleyebileceğinizi ele alacağız. Olayları kaydetmek, akıllı sözleşmendeki hataları ayıklamak ve bir fonksiyonu çağırırken neler olduğunu anlamak için uygun bir yoldur.
Sayfanın son güncellenmesi: 26 Nisan 2024







