Lompat ke konten utama

Mencatat data dari kontrak pintar dengan peristiwa

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

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

Peristiwa

Peristiwa yang paling umum di rantai blok Ethereum pada saat penulisan artikel ini adalah peristiwa Transfer yang dipancarkan oleh token ERC-20 ketika seseorang mentransfer token.

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

Tanda tangan peristiwa dideklarasikan di dalam kode kontrak dan dapat dipancarkan dengan kata kunci emit. Misalnya, peristiwa 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 disebarkan tetapi berfungsi sebagai dasar untuk membangun kontrak lain dengan memperluasnya: ini disebut kontrak abstrak. Dalam kasus contoh penghitung (counter) kita, tampilannya akan seperti ini:

Perhatikan bahwa:

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

  • Baris 13: Saat kita menambah variabel hitungan (count) kita, kita memancarkan peristiwa tersebut.

Jika kita sekarang menyebarkan 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.

Remix screenshot

Log sangat berguna untuk men-debug kontrak pintar Anda, tetapi log juga penting jika Anda membangun aplikasi yang digunakan oleh orang yang berbeda dan membuatnya lebih mudah untuk membuat analitik guna 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 peristiwa tertentu dan mengambil tindakan saat peristiwa itu terjadi.