BOTPass
DApp pass kehadiran event di BOT Chain. Penyelenggara mengatur event, peserta mencatat satu pass lewat wallet, dan siapa pun dapat memeriksanya di smart contract.
- Role
- Solo builder. Saya menentukan use case, merancang alur wallet, membuat frontend dan smart contract, serta menangani testing dan deployment.
- Timeline
- 25 Juli–28 September 2026. Dimulai untuk BOTChain Build Week Hackathon, lalu antarmuka dan alur pass diperbarui.
Stack
- Solidity 0.8.20
- Hardhat
- ethers.js
- Vite
- Vanilla JavaScript
- HTML
- CSS
- MetaMask

Problem
Saya menemukan BOTChain Build Week Hackathon ketika belum memahami BOT Chain maupun cara membuat DApp di jaringannya. Pendaftarannya gratis, jadi saya memakainya sebagai kesempatan untuk mencoba bidang yang baru bagi saya.
Hackathon ini berlangsung online dan terbuka untuk semua orang. Ini menjadi pengalaman pertama saya mengikuti hackathon online. Untuk menyelesaikan submission, saya harus mempelajari ekosistem BOT Chain dari awal sambil membuat project yang benar-benar berjalan di jaringan tersebut.
Problem yang saya pilih
Daftar hadir yang disimpan di spreadsheet hanya dapat diperiksa melalui pihak yang mengelolanya. Peserta tidak memiliki bukti yang dapat mereka periksa sendiri, sedangkan pihak lain harus meminta akses kepada panitia.
BOTPass mengambil satu bagian kecil dari masalah tersebut: mencatat bahwa sebuah wallet melakukan check-in pada suatu event. Catatan disimpan di smart contract agar status kehadiran dan jumlah peserta dapat dibaca dari jaringan publik. BOTPass tidak menyimpan nama, email, nomor telepon, atau NIK.
Guidebook hackathon lebih menghargai satu fitur yang selesai daripada banyak fitur yang hanya bekerja sebagian. Karena itu, scope BOTPass dibatasi pada empat langkah: membuat event, membuka check-in, mengirim transaksi kehadiran, dan memeriksa hasilnya.
Approach
Penyelenggara secara eksplisit mengizinkan penggunaan AI tools. Selama proses pengembangan, saya memakai AI untuk membantu memahami konsep, menulis code, dan melakukan debugging. Saya tetap perlu memeriksa hasilnya melalui dokumentasi, test, dan deployment langsung ke BOT Chain.
Alur penggunaan
Ada tiga peran dalam BOTPass:
| Peran | Aksi utama | Wallet | Gas |
|---|---|---|---|
| Penyelenggara | Membuat event dan membuka/menutup check-in | Ya | Ya |
| Peserta | Check-in untuk wallet miliknya sendiri | Ya | Ya |
| Pemeriksa | Membaca status kehadiran dan jumlah peserta | Tidak | Tidak |
Pemeriksa tidak perlu memasang wallet karena proses verifikasi hanya melakukan read call. Wallet dan gas diperlukan ketika pengguna mengubah state, misalnya saat membuat event atau melakukan check-in.
Aturan satu wallet untuk satu check-in berada di smart contract. Jika aturan tersebut hanya ada di JavaScript, pengguna masih dapat melewati UI dan memanggil contract secara langsung.
Frontend membedakan beberapa kondisi gagal: jaringan salah, event belum ada, check-in masih tertutup, waktu event belum mulai atau sudah lewat, saldo BOT tidak cukup, transaksi ditolak, dan wallet sudah pernah check-in. Pengguna tidak perlu membaca error mentah dari RPC untuk mengetahui masalahnya.
Architecture
Browser
|
+-- read-only provider --------> BOT Chain RPC
| |
| v
| BOTPass contract
| |
+-- MetaMask + signer -------------+
|
v
state dan event log
|
v
BOTScan
Smart contract ditulis dengan Solidity 0.8.20. Setiap event menyimpan alamat
penyelenggaranya sendiri, detail event, status ketersediaan pass, dan jumlah
pass. Contract juga menyimpan waktu klaim untuk setiap pasangan event dan
wallet.
Penyelenggara dapat membuat event serta membuka atau menutup check-in. Peserta hanya dapat mencatat wallet yang memanggil contract. Getter terpisah digunakan untuk membaca detail event, status sebuah wallet, dan jumlah kehadiran.
Frontend memakai HTML, CSS, vanilla JavaScript, ethers.js, dan Vite. BOTPass tidak memiliki backend atau database peserta. Read-only provider menangani pembacaan data, sedangkan signer hanya dibuat ketika pengguna mengirim transaksi.
Deployment script Mainnet memeriksa Chain ID 677, alamat deployer, saldo, gas
estimate, source tree, dan artifact sebelum meminta konfirmasi. Setelah
transaksi berhasil, runtime bytecode pada alamat baru dibandingkan dengan
artifact. Alamat contract baru masuk ke frontend produksi setelah deployment
record dan hash-nya cocok.
Outcome
Contract Mainnet BOTPass berada di
0x41fc…68A4
pada Chain ID 677. Source Solidity terverifikasi di BOTScan dengan compiler
0.8.20, EVM paris, dan optimizer 200 runs.
Frontend masih dapat dibuka di botpass.online, sedangkan source code tersedia di GitHub.
Antarmuka terbaru memisahkan pencarian event, pembuatan dan pengelolaan event, daftar pass milik wallet, serta verifikasi berdasarkan Event ID dan alamat wallet. Verifikasi tetap berupa pembacaan data dan tidak memerlukan gas.
BOTPass tidak menjadi pemenang hackathon. Project ini kemudian mendapat perbaikan antarmuka dan alur penggunaan; frontend dan contract Mainnet masih dapat diakses.
Lessons
Bagian tersulit dari hackathon ini adalah mempelajari sistem yang sebelumnya belum saya pahami sambil tetap mengejar submission. Saya menggunakan AI sebagai alat bantu untuk memahami, menulis, dan memperbaiki code, lalu menggunakan test dan deployment untuk memeriksa apakah hasilnya benar-benar bekerja.
Saya juga belajar membedakan bukti on-chain dari klaim di luar sistem. Smart contract dapat membuktikan bahwa sebuah wallet melakukan check-in yang valid, tetapi tidak dapat memastikan siapa pemilik wallet atau apakah orang tersebut benar-benar berada di lokasi acara.
Pemisahan read-only provider dan signer membuat pemeriksa dapat membaca status tanpa memasang wallet. Akses wallet baru diminta ketika pengguna perlu mengubah state. Aturan yang menjaga integritas data, seperti satu wallet untuk satu check-in, tetap harus berada di smart contract karena validasi frontend dapat dilewati.