Event Kavramı ve Kullanımı
Events, Solidity programlama dili içinde bir olayı (örneğin, bir kontratın yapıldığı, bir değişikliğin yapıldığı vb.) bildirmek için kullanılan bir yapıdır. Events, belirli bir olayın gerçekleştiğini Ethereum ağına bildirerek, dışarıdaki uygulamalar veya diğer kontratlar tarafından yakalanabilir. Events, Solidity programının yapısal olarak değişmeyen verilerini saklamaya ve ölçeklenebilir şekilde görüntülemeye olanak tanır.
Events, Ethereum blockchain’ine kayıt tutmayı sağlar. Events’in bazı kullanım alanları şunlardır:
- Olayları dinlemek ve kullanıcı arabirimini güncellemek
- Ucuz bir depolama formu
Events, Solidity programlama dili içinde belirli olayların Ethereum blockchain’ine bildirilmesini sağlayan bir yapıdır. Kullanıcı arabirimini güncellemek, belirli olayları izlemek, dışarıdaki uygulamalar tarafından yakalanabilme gibi amaçlarla kullanılabilir. Ayrıca, ucuz bir depolama seçeneği olarak da kullanılabilir.
Events, Solidity programında tanımlanır ve “event” anahtar kelimesi ile belirlenir. Örneğin:
event Transfer(address indexed _from, address indexed _to, uint256 _value);
function transfer(address _to, uint256 _value) public {
require(_to != address(0));
require(_value <= balanceOf[msg.sender]);
balanceOf[msg.sender] -= _value;
balanceOf[_to] += _value;
emit Transfer(msg.sender, _to, _value);
}
Bu örnekte, bir transfer işlemi yapıldığında, “Transfer” adlı bir event atılır. Event’in içindeki veriler Ethereum blockchain’ine kaydedilir ve dışarıdaki uygulamalar tarafından kolayca okunabilir.
Ayrıca, “emit” anahtar kelimesi kullanılarak event atılır. Bu anahtar kelime, event’i Ethereum blockchain’ine kaydederek, dışarıdaki uygulamalar tarafından okunabilmesini sağlar.
Events’in avantajları nelerdir
Events’in birçok avantajı vardır:
- Ucuz depolama: Events, Ethereum blockchain’ine kaydedilen verilerle ucuz bir depolama seçeneği sunar.
- Dışarıdaki uygulamalar tarafından yakalanabilme: Events, Ethereum blockchain’ine kaydedildiğinde, dışarıdaki uygulamalar tarafından kolayca yakalanabilir. Bu, belirli olayları izlemek ve kullanıcı arabirimini güncellemek gibi amaçlar için kullanışlıdır.
- Yapısal olarak değişmeyen verilerin saklanması: Events, verileri Ethereum blockchain’ine kaydederek, yapısal olarak değişmeyen verilerin saklanmasına olanak tanır.
- Ölçeklenebilir görüntüleme: Events, Ethereum blockchain’inde kaydedilen verilerle ölçeklenebilir bir şekilde görüntülenmesine olanak tanır.
Events’in kullanım örnekleri
Events’in birçok kullanım örneği vardır:
- Kullanıcı arabirimini güncellemek: Kullanıcı arabirimi, belirli bir olayın gerçekleştiğinde güncellenebilir. Örneğin, bir token transfer işleminde, kullanıcı arabirimi token miktarını güncelleyebilir.
- Belirli olayları izlemek: Events, dışarıdaki uygulamalar tarafından yakalanarak, belirli olayların izlenmesine olanak tanır. Örneğin, bir ağın kullanıcıları, bir token transfer işleminin gerçekleştiğini ve hangi kullanıcıların hangi miktarda token aldığını izleyebilir.
- Belirli olayların analiz edilmesi: Events, Ethereum blockchain’inde kaydedilen verilerle belirli olayların analiz edilmesine olanak tanır. Örneğin, bir ağın kullanıcıları, belirli bir olayın ne zaman ve ne sıklıkta gerçekleştiğini ve bu olayların ekonomik etkilerini analiz edebilir.
- Ucuz depolama: Events, Ethereum blockchain’ine kaydedilen verilerle ucuz bir depolama seçeneği sunar. Örneğin, bir ağın kullanıcıları, belirli bir olayın kaydedildiği verileri, ucuz bir şekilde saklayabilir ve daha sonra analiz etmek üzere kullanabilir.
Akıllı Sözleşme Örneği İncelemesi
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
contract Event {
// Event declaration
// Up to 3 parameters can be indexed.
// Indexed parameters helps you filter the logs by the indexed parameter
event Log(address indexed sender, string message);
event AnotherLog();
function test() public {
emit Log(msg.sender, "Hello World!");
emit Log(msg.sender, "Hello EVM!");
emit AnotherLog();
}
}
Bu Solidity sözleşmesi, Event
adında bir sözleşme tanımlar. Sözleşme, Log
ve AnotherLog
adında iki farklı olay tanımlar.
Log
olayı, sender
(gönderici) ve message
(mesaj) adlı iki parametre içerir. sender
parametresi, msg.sender
değişkeni tarafından sağlanır ve Ethereum blockchain’inde kaydedilen verilerin filtrelenmesini kolaylaştırmak için indexed
anahtar kelimesi kullanılır.
AnotherLog
olayı ise hiçbir parametre içermez.
Sözleşmenin test
fonksiyonu, bu iki olayı tetiklemek için emit
anahtar kelimesini kullanır. test
fonksiyonu çağrıldığında, Log
olayı, msg.sender
tarafından sağlanan gönderici adresi ve “Hello World!” ve “Hello EVM!” mesajları ile iki kez tetiklenir. Aynı zamanda, AnotherLog
olayı da tetiklenir.
Sonuç Bağlamı
Sonuç olarak, bu Solidity sözleşmesi, Event
adında bir sözleşme tanımlar ve iki farklı olay tanımlar: Log
ve AnotherLog
. Log
olayı, Ethereum blockchain’inde kaydedilen verilerin filtrelenmesini kolaylaştırmak için indexed
anahtar kelimesi kullanılarak sender
(gönderici) ve message
(mesaj) adlı iki parametre içerir. AnotherLog
olayı ise hiçbir parametre içermez. Sözleşmenin test
fonksiyonu, bu iki olayı tetiklemek için emit
anahtar kelimesini kullanır. test
fonksiyonunun çağrılması sonucu, Log
olayı iki kez tetiklenir ve AnotherLog
olayı da tetiklenir. Böylece, Ethereum blockchain’inde olay kayıtları tutulabilir ve bu kayıtlar dışarıdaki uygulamalar tarafından kolayca filtrelenebilir.
Solidity Programlama Dili Öğrenme yolculuğunuz hakkında daha iyi rehberlik almak için Solidity nedir? Ethereum Akıllı Sözleşmelerinin Dili Rehberi içeriğimize göz atın. Dilerseniz Yeni Başlayanlar için Solidity – Akıllı Sözleşme Geliştirme Hızlandırılmış Kursuna katılın.
Çalışmaya nereden başlayacağım diyenler için Blockchain Developer Olmak İçin Yol Haritası içeriğine de muhakkak bakın.
Gelin aklınızdaki soruları SUPERPEER sohbetinde cevaplayalım.
Bu makaleyi okuduğunuz için teşekkürler! Bana destek olmak isterseniz;
Beni Twitter, Linkedin ve YouTube‘da takip edin.
Kısa bir yorum bırakmayı UNUTMAYIN!