Ana içeriğe geç

Olaylar ile akıllı sözleşmelerden veri kaydetme

akıllı kontratlar
remix
solidity
olaylar
Orta düzey
jdourlens
3 Nisan 2020
2 dakikalık okuma

Solidity'de olaylar, akıllı sözleşmelerin tetikleyebileceği yayılan sinyallerdir. Merkeziyetsiz uygulamalar ya da Ethereum JSON-RPC API'sine bağlı herhangi bir şey, bu olayları dinleyip gerektiği şekilde hareket edebilir. Bir olay, olay geçmişinin daha sonra aranabilmesi için dizine de eklenebilir.

Olaylar

Bu makalenin yazıldığı sırada Ethereum blokzincirindeki en yaygın olay, birisi jetonları transfer ettiğinde ERC20 jetonları tarafından yayılan Transfer olayıdır.

1event Transfer(address indexed from, address indexed to, uint256 value);

Olay imzası, sözleşme kodunun içinde bildirilir ve emit anahtar kelimesi ile yayılabilir. Örneğin, Transfer olayı; transferi kimin gönderdiğini (from), kime gönderildiğini (to) ve ne kadar jeton transfer edildiğini (value) kaydeder.

Eğer Counter akıllı sözleşmemize geri döner ve değer her değiştiğinde kaydetmeye karar verirsek. Bu sözleşmenin dağıtılması değil, onu genişleterek başka bir sözleşme oluşturmak için bir temel görevi görmesi amaçlandığından, buna soyut sözleşme denir. Counter örneğimizde şöyle görünür:

1pragma solidity 0.5.17;
2
3contract Counter {
4
5 event ValueChanged(uint oldValue, uint256 newValue);
6
7 // Sayım sayısını tutmak için işaretsiz tamsayı türünde özel değişken
8 uint256 private count = 0;
9
10 // Sayacımızı artıran işlev
11 function increment() public {
12 count += 1;
13 emit ValueChanged(count - 1, count);
14 }
15
16 // Sayım değerini almak için alıcı işlevi
17 function getCount() public view returns (uint256) {
18 return count;
19 }
20
21}
Tümünü göster

Şunlara dikkat edin:

  • 5. Satır: Olayımızı ve içerdiklerini, yani eski değeri ve yeni değeri, bildiririz.

  • 13. Satır: count değişkenimizi artırdığımızda, olayı yayarız.

Şimdi sözleşmeyi dağıtır ve increment işlevini çağırırsak, logs adlı dizinin içindeki yeni işleme tıkladığınızda Remix'in bunu otomatik olarak görüntülediğini göreceğiz.

Remix ekran görüntüsü

Kayıtlar, akıllı sözleşmelerinizdeki hataları ayıklamak için çok kullanışlıdır. Ayrıca, farklı kişilerin kullandığı uygulamalar geliştiriyorsanız da önemlidirler; akıllı sözleşmenizin nasıl kullanıldığını izlemek ve anlamak üzere analizler yapmayı kolaylaştırırlar. İşlemler tarafından oluşturulan kayıtlar popüler blok arayıcılarında görüntülenir ve ayrıca bunları, örneğin belirli olayları dinlemek ve bu olaylar meydana geldiğinde eyleme geçmek için zincir dışı betikler oluşturmak amacıyla da kullanabilirsiniz.

Sayfanın son güncellenmesi: 12 Şubat 2025

Bu rehber yararlı oldu mu?