Lompat ke konten utama

Mencatat data dari kontrak pintar dengan event

kontrak pintar
Remix
Solidity
event
Menengah
jdourlens
3 April 2020
2 menit baca

Dalam Solidity, event adalah sinyal yang dikirimkan yang dapat dipicu oleh kontrak pintar. Dapps, atau apa pun yang terhubung ke API JSON-RPC Ethereum, dapat mendengarkan event ini dan bertindak sesuai dengan itu. Sebuah event juga dapat diindeks sehingga riwayat event tersebut dapat dicari di kemudian hari.

Event

Event yang paling umum di blockchain Ethereum pada saat penulisan artikel ini adalah event Transfer yang dipancarkan oleh token ERC20 ketika seseorang mentransfer token.

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

Tanda tangan event dideklarasikan di dalam kode kontrak dan dapat dipancarkan dengan kata kunci emit. Sebagai contoh, event transfer mencatat siapa yang mengirim transfer (from), kepada siapa (to) dan berapa banyak token yang ditransfer (value).

Jika kita kembali ke kontrak pintar Counter kita dan memutuskan untuk mencatat setiap kali nilainya berubah. Karena kontrak ini tidak dimaksudkan untuk diterapkan tetapi berfungsi sebagai dasar untuk membangun kontrak lain dengan memperluasnya: ini disebut kontrak abstrak. Dalam kasus contoh counter kita, akan terlihat seperti ini:

1pragma solidity 0.5.17;
2
3contract Counter {
4
5 event ValueChanged(uint oldValue, uint256 newValue);
6
7 // Private variable of type unsigned int to keep the number of counts // Variabel privat bertipe unsigned int untuk menyimpan jumlah hitungan
8 uint256 private count = 0;
9
10 // Function that increments our counter // Fungsi yang menaikkan penghitung kita
11 function increment() public {
12 count += 1;
13 emit ValueChanged(count - 1, count);
14 }
15
16 // Getter to get the count value // Getter untuk mendapatkan nilai hitungan
17 function getCount() public view returns (uint256) {
18 return count;
19 }
20
21}
Tampilkan semua

Perhatikan bahwa:

  • Baris 5: kita mendeklarasikan event kita dan apa isinya, nilai lama dan nilai baru.

  • Baris 13: Ketika kita menambah variabel hitungan kita, kita memancarkan event tersebut.

Jika kita sekarang menerapkan kontrak dan memanggil fungsi increment, kita akan melihat bahwa Remix akan secara otomatis menampilkannya jika Anda mengklik transaksi baru di dalam array yang bernama logs.

Tangkapan layar Remix

Log sangat berguna untuk men-debug kontrak pintar Anda tetapi juga penting jika Anda membangun aplikasi yang digunakan oleh orang yang berbeda dan membuatnya lebih mudah untuk membuat analitik untuk melacak dan memahami bagaimana kontrak pintar Anda digunakan. Log yang dihasilkan oleh transaksi ditampilkan di penjelajah blok populer dan Anda juga dapat misalnya menggunakannya untuk membuat skrip offchain untuk mendengarkan event tertentu dan mengambil tindakan ketika event tersebut terjadi.

Pembaruan terakhir halaman: 3 Maret 2026

Apakah tutorial ini membantu?