Study
Solidity

Events & Logging di Solidity

Penjelasan

Event dideklarasikan dengan `event NamaEvent(tipe parameter, ...)`, dan dipicu (dicatat ke log blockchain) dengan `emit NamaEvent(nilai, ...)`. Event TIDAK bisa dibaca dari dalam kontrak lain, tapi aplikasi luar (mis. website yang terhubung ke kontrak) bisa "mendengarkan" event ini secara real-time — cara utama kontrak "memberi tahu" dunia luar bahwa sesuatu terjadi (mis. transfer token). Parameter yang ditandai `indexed` bisa dipakai untuk filter pencarian event dengan cepat.

Contoh Konsep

contract Token {
    event Transfer(address indexed dari, address indexed ke, uint256 jumlah);

    mapping(address => uint256) public saldo;

    function transfer(address ke, uint256 jumlah) public {
        saldo[msg.sender] -= jumlah;
        saldo[ke] += jumlah;
        emit Transfer(msg.sender, ke, jumlah);   // catat ke log blockchain
    }
}

Praktikum

Buat event PesananDibuat(address indexed pembeli, uint256 idPesanan), lalu emit event itu di dalam function buatPesanan(uint256 idPesanan).

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Event jauh lebih MURAH secara gas dibanding menyimpan data yang sama ke variabel storage — kalau data itu cuma perlu "dicatat sebagai riwayat" (bukan dibaca ulang oleh kontrak lain), event adalah pilihan yang jauh lebih efisien.