Skip to main content

Events di Move on Sui

Kalau kamu sudah mengikuti semua pelajaran sampai sini, pengetahuanmu tentang Move on Sui sudah solid. Sekarang kita pelajari fitur lanjutan: event.

Kenapa Butuh Event di Sui?

Saat berinteraksi dengan kontrak, banyak data mengalir masuk–keluar. Karena Sui bersifat object-centric, objek menjadi media interaksi. Untuk memonitor aktivitas tertentu (mis. mint, transfer), kontrak bisa “memancarkan” event.

Contoh pada kontrak NFT selain fungsi baca seperti total supply atau token ID, kita mungkin ingin notifikasi saat ada mint. Event bisa memuat parameter seperti token ID dan alamat minter.

Catatan: Event di Sui juga direpresentasikan sebagai Sui object (di level API, event memiliki metadata standar).

Bagaimana Memancarkan Event?

Sebelum kode, berikut atribut event pada sisi API Sui:

  • id: berisi digest transaksi dan urutan event.
  • packageId: ID paket yang memancarkan event.
  • transactionModule: nama module yang mengeksekusi.
  • sender: alamat pengirim yang memicu event.
  • type: tipe event.
  • parsedJson: payload event dalam JSON.
  • timestampMs: stempel waktu epoch (ms).

Untuk memancarkan event di Move, impor modul event:

use sui::event;

Contoh sederhana objek dan event:

module example::events {
use sui::event;

// Object hero
public struct Hero has key, store { id: UID, power: u8 }

// Object sword
public struct Sword has key { id: UID }

// Payload event (bisa di-copy & drop)
public struct BuySwordEvent has copy, drop { owner: address }

// Membeli pedang (jika user punya hero)
entry fun buy_sword(hero: Hero, ctx: &mut TxContext) {
let sword = Sword { id: object::new(ctx) };

// Emit event alamat pembeli pedang
event::emit(BuySwordEvent { owner: tx_context::sender(ctx) });

// Transfer pedang ke pemanggil
transfer::transfer(sword, tx_context::sender(ctx));
}
}

Setiap kali buy_sword dipanggil, contract memancarkan event dengan alamat pembeli, lalu mentransfer pedang.

Penutup

Kita mempelajari konsep event di Sui dan cara memancarkannya dari kontrak Move. Fitur ini penting untuk indexing, analitik, dan UI notifikasi dApp.