Non Fungible Token (NFT) sebagai Tiket Event

Septiyan Andika I
4 min readOct 27, 2020

Blokchain di percaya karena bersifat immutable (tidak bisa diubah), append only (hanya bisa ditambahkan), terdesentralisasi (semua data dicopy ke banyak komputer), dan tidak ada otoritas sentral (Anda tidak perlu percaya ke otoritas sentral — percaya pada algoritma konsensus). kerena sifat tersebut blokchain bisa di manfaatkan sebagai tiketing sistem, sehingga dapat menangulangi pemalsuan tiket. salah satu protocol yang memanfaatkan blokchain untuk tiketing system adalah https://get-protocol.io/

https://twitter.com/VitalikButerin/status/1309139288240553986

Di dalam network ethereum kita bsia memanfaatkan non-fungible token (NFT) ERC-721 atau ERC-1155 untuk membuat tiketing sistem. Non-fungible token (NFT) bersifat khas dan mewakili aset unik karena tidak dapat dipertukarkan, tidak dapat dibagi. Kita tidak dapat mengganti NFT dengan token lain dari jenis yang sama.

Dalam pembahasan kali ini kita akan membuat simple smart-contract berbasis ERC-721 untuk tiketing sistem sebuah acara. Untuk ERC-721 kita tidak membikin sendiri, melainkan memakai openzeppelin library. Smart contract akan memiliki beberapa fungsi utama, yakni :

  • Menyimpan informasi event (nama , simbol, jumlah tiket, inisial harga)
  • membeli tiket
  • menjual kembali ticket yang sudah di beli (resale)
  • membeli tiket yang di jual oleh peserta lain
  • memvalidasi kepemilikan tiket
  • memvalidasi apakah tiket tersebut sudah di gunakan
  • mengeset tiket sudah digunakan

Let’s get started, buka Remix IDE, bikin file TicketSystem.sol :

contract TicketSystem {
constructor() public {
}
}

Agar dapat memakai fungsi dari ECR-721 dan Ownable di contract yang akan dibuat, kita perlu mengimport ECR-721 dan Ownable terlebih dahulu

Menyimpan informasi event (nama , simbol, supply, initial harga)
Di dalam contract ini kita perlu menyimpan informasi sebuah event, informasi tesebut di gunakan untuk fungsi-fungsi dalam contract.

ERC721(_eventName, _eventSymbol) di gunakan untuk meyimpan data yang di perlukan di contract ERC-721. Setelah membikin constructor selanjutnya kita perlu mendefinisikan informasi atau meta data dari tiket yang akan digunakan.

sebelum membuat fungsi utama dari contract ini, kita perlu membikin modifier terelebih dahulu, untuk mengatur permission dari fungsi utama.

Membeli tiket
untuk membeli tiket akan ada pengecekan apakah tiketnya masih tersedia dan ETH yg di transfer tidak kurang dari inisial harga.

Menjual kembali ticket yang sudah di beli (resale)
customer bisa menjual kembali tiket yang sudah di beli, dengan menentukan harga yang dia kehendaki, dan juga bisa membatalkan tiket yang di jual. dalam fungsi menjual tiket akan ada pengecekan menggunakan modifer apakah tiket tersebut sudah di gunakan, dan yeng menjual atau membatalkan penjualan tiket adalah pemilik tiket tersebut.

Membeli tiket yang di jual oleh peserta lain
publik bisa membeli tiket dari peserta lain, di dalam fungsi ini akan ada pengecekan apakah tiket di jual, dan yang di transfer tidak kurang dari harga tiket yang telah di set penjual, dan jika ada kelebihan maka akan dikembalikan.

Memvalidasi kepemilikan tiket
untuk memvalidasi kepemilikan tiket, kita bisa mengecek apakah kepemilikan tiket id sama dengan address peserta.

Memvalidasi apakah tiket tersebut sudah di gunakan
untuk memvalidasi tiket apakah sudah di gunakan atau belum, kita bisa mengecek informasi dalam tiket tersebut dengan mengecek property used.

Mengeset tiket sudah digunakan
Dengan mengeset property tiket used menjadi true, kita akan menjadikan tiket tersebut sudah di gunakan.

fungsi-fungsi tersebut adalah fungsi utama untuk tiketing sistem, kita bisa nemabakan fungsi-fungsi lain seperti getTicketInfo dan withdrawBalance.

Jika kalian teliti ada 2 type fungsi yang digunakan dalam artikel tersebut yaitu public dan external untuk lebih detailnya bisa di lihat di link berikut ini https://medium.com/@gus_tavo_guim/public-vs-external-functions-in-solidity-b46bcf0ba3ac

Untuk kode lengkapnya bisa di lihat di repo blockchain-not-only-about-cryptocurrency, Kalian bisa mencobanya di remix.

--

--

Septiyan Andika I

Shut up and do the best. You'll never know where it will bring you