Full on-chain event ticketing powered by Bitcoin L1 & OPnet Protocol.
No backend. No database. No middlemen. Just Bitcoin.
OPnet OnChain Ticketing adalah aplikasi tiket acara yang berjalan sepenuhnya di Bitcoin L1 menggunakan protokol OPnet. Semua interaksi — pembelian tiket, verifikasi kepemilikan, hingga check-in — dilakukan langsung ke blockchain melalui OPnet MCP (Model Context Protocol).
Bitcoin L1 ←→ OPnet Protocol ←→ MCP Endpoint ←→ Browser App
opnet-ticketing/
└── index.html ← Seluruh aplikasi (HTML + CSS + JS inline)
✅ Single file. Zero dependencies. Zero build step.
| Komponen | Detail |
|---|---|
| Blockchain | Bitcoin L1 |
| Smart Contract Layer | OPnet Protocol |
| Blockchain Interaksi | OPnet MCP — https://ai.opnet.org/mcp |
| Wallet Support | OPnet Wallet · UniSat Wallet |
| Frontend | Vanilla JS · HTML · Tailwind CDN |
| QR Code | QRCode.js (CDN) |
| Font | Orbitron · IBM Plex Mono |
Tidak menggunakan:
- ❌ EVM / Solidity
- ❌ Web3.js / Ethers.js
- ❌ Backend server
- ❌ Database terpusat
- ❌ API eksternal / payment gateway
# Tidak perlu install apapun
open index.htmlAtau serve lokal:
npx serve .
# Buka http://localhost:3000Upload index.html ke platform apapun:
- Vercel — drag & drop folder
- Netlify — drag & drop folder
- GitHub Pages — push ke repo, aktifkan Pages
- IPFS — untuk fully decentralized hosting
Aplikasi mendukung tiga metode koneksi wallet:
- OPnet Wallet (prioritas utama) — via
window.opnet.connect() - UniSat Wallet — via
window.unisat.requestAccounts() - MCP Simulation — fallback otomatis jika tidak ada wallet extension terinstall (mode demo)
Wallet address digunakan sebagai identity user. Tidak ada email, password, atau akun.
- Query event dari OPnet contract via MCP
- Tampilkan nama, kategori, tanggal, lokasi, harga BTC, sisa tiket
- Filter berdasarkan Kategori dan Tanggal
- Progress bar ketersediaan tiket real-time
Saat user klik BUY TICKET:
- BTC dikirim via OPnet ke contract organizer
- Contract mencatat: TXN hash · sender · receiver · nominal · event ID · quantity · timestamp
- Ticket token di-mint ke wallet pembeli
- Kepemilikan dicatat permanen di Bitcoin L1
- Query semua tiket milik wallet yang terhubung
- Tampilkan: event name · quantity · ticket ID · status · TXN hash · block height
- Tombol View Receipt dan Check In
Klik View Receipt untuk melihat:
- TXN Hash
- Block height & konfirmasi
- Sender & Receiver address
- Nominal BTC
- Event name & quantity
- Timestamp
Tersedia tombol:
- 📋 Copy TXN — salin hash ke clipboard
- 🔍 View on Explorer — buka OPnet Explorer
- 📷 QR Code — generate QR dari TXN hash
- 🖨️ Print PDF —
window.print()
- Input Ticket ID atau TXN Hash
- Query blockchain untuk verifikasi owner & status
- Jika valid → update status ke "Used" via OPnet transaction
- Semua perubahan status bersifat permanen on-chain
POST https://ai.opnet.org/mcp
Content-Type: application/json
{
"action": "buy_ticket",
"params": {
"eventId": "evt_001",
"quantity": 2,
"address": "bc1q...",
"amount": 0.01
},
"network": "bitcoin"
}| Action | Deskripsi |
|---|---|
get_events |
Ambil daftar event dari contract |
get_my_tickets |
Query tiket milik wallet tertentu |
buy_ticket |
Eksekusi pembelian + mint token |
get_transaction |
Ambil detail transaksi dari blockchain |
validate_ticket |
Verifikasi kepemilikan & status tiket |
update_ticket_status |
Update status tiket ke "Used" (on-chain) |
connect_wallet |
Koneksi wallet via MCP |
callMCP(action, params) // Generic MCP wrapper
createEvent(params) // Deploy event ke contract
buyTicket(eventId, qty) // Beli tiket + mint token
getMyTickets(address) // Ambil tiket per wallet
getReceipt(txHash) // Ambil receipt dari blockchain
validateTicket(id) // Verifikasi + check-in tiketJika MCP endpoint belum aktif atau tidak tersedia, aplikasi otomatis menggunakan simulasi mock data yang realistis dengan delay acak (600–1200ms) untuk mensimulasikan latency blockchain. Semua logic siap dipakai saat endpoint aktif — tanpa perlu mengubah kode.
| Elemen | Nilai |
|---|---|
| Mode | Dark mode default |
| Background | #070a0f dengan animated grid |
| Accent | Orange #f97316 · Gold #fbbf24 |
| Card Style | Glassmorphism (backdrop-filter: blur) |
| Font Display | Orbitron (crypto aesthetic) |
| Font Body | IBM Plex Mono (terminal/code feel) |
| Animation | CSS keyframes · smooth transitions |
| Layout | Responsive grid · Mobile-first |
User Klik Buy
│
▼
callMCP('buy_ticket')
│
▼
OPnet Contract ← BTC Transfer
│
├─ Catat TXN metadata
├─ Catat kepemilikan
└─ Mint Ticket Token
│
▼
Wallet Pembeli
(ticket ownership confirmed)
- Tidak ada private key yang diproses di frontend
- Semua signing dilakukan oleh wallet extension user
- Data tiket bersifat immutable di Bitcoin L1
- Status check-in diupdate via signed transaction (bukan admin panel)
{
"ticketId": "TKT-8f3a2b1c",
"eventId": "evt_001",
"eventName": "Bitcoin Summit 2025",
"ticketType": "General Admission",
"quantity": 2,
"owner": "bc1q...",
"txHash": "4a7b2c...",
"blockHeight": 845210,
"timestamp": 1720000000,
"status": "Active"
}Semua transaksi dapat diverifikasi di:
[[https://opscan.org]
MIT License — bebas digunakan, dimodifikasi, dan didistribusikan.
Built on Bitcoin. Secured by OPnet. Owned by you.