1. Anasayfa
  2. 100 Günde Solidity

🧵 #100GündeSolidity 021 : Event

🧵 #100GündeSolidity 021 : Event
Event Kavramı ve Kullanımı
0

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:

  1. Ucuz depolama: Events, Ethereum blockchain’ine kaydedilen verilerle ucuz bir depolama seçeneği sunar.
  2. 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.
  3. 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.
  4. Ö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:

  1. 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.
  2. 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.
  3. 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.
  4. 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 TwitterLinkedin ve YouTube‘da takip edin.

Kısa bir yorum bırakmayı UNUTMAYIN!

solidity101 - Solidity, 2015 yılında Christian Reitwiessner liderliğinde piyasaya sürülen, büyük harf kullanımına göre ikinci en büyük kripto para piyasası olan Ethereum tarafından oluşturulan yepyeni bir programlama dilidir.

Yazarın Profili
İlginizi Çekebilir

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir