ETHJKT × HackQuest 2026 · Build the Real World Onchain
Mabrur

Uang umrah Pak Ahmad hanya mau berangkat bersamanya.

Arbitrum One · 421613 kontrak terverifikasitIDR = token uji tanpa nilai
Kuitansi Amanah
No. Kuitansi · mUMRAH · 42161
Sudah terima dariPak AhmadAgenPT Amanah Contoh Wisata
HotelINV-HTL-0001 · faktur Ibu Siti
Rp 9.000.000DitolakEarmarkMismatch
Visahanya ke penyedia visa berizin
Rp 4.000.000Disimpan
Ujrah agenterbuka setelah berangkat
Rp 5.000.000DitolakNotDeparted
JumlahRp 32.000.000
Terbilang: tiga puluh dua juta rupiah
01 · Masalah
63.310
jamaah First Travel gagal berangkat · Rp 905 miliar
Kompas, 5 Jan 2023
Uang jamaah baru membayar keberangkatan jamaah lama, sampai semuanya runtuh.
86.720 jamaah Abu Tours · ±Rp 1,8 triliun
Kompas, 29 Jan 2019
±1,4 juta jamaah lewat PPIU, 2024
HIMPUH, 18 Feb 2025 (sekunder)
Rekening bank tidak bisa menolak perintah transfer dari agen.
02 · Solusi

Setiap rupiah dikunci per jamaah, per pos.

Map amanah · Pak Ahmad
Tiket pesawatRp 14.000.000
HotelRp 9.000.000
VisaRp 4.000.000
Ujrah agenRp 5.000.000
1

Bayar hanya ke vendor berizin

penerima = penanda tangan faktur

2

Ujrah setelah berangkat

maksimal 20 % paket

3

Tiket lunas, atau dana kembali

siapa pun bisa menekan refund

03 · Use case RWA

Asetnya: hak jamaah atas layanan berizin.

1 · JAMAAH

Pesan

permit + book

mUMRAH
2 · PENERBIT

Akui

pengganti Kemenag / IATA

ClaimRegistry
3 · VENDOR

Tagih

faktur satu booking, satu pos

EIP-712
4 · AGEN

Bayar

uang ke penanda tangan

spend()
5 · SIAPA PUN

Kembalikan

lewat batas tiket

refund()
Uang muka umrah adalah aktivitas ekonomi nyata. Mabrur menjadikannya klaim yang dipegang jamaah sendiri, tidak bisa dipindahtangankan.
Buku tabungan amanah · Pak Ahmad
Buku tabungan amanah Pak Ahmad: pemesanan, tiket, hotel, visa, ujrah, dengan tx hash.
04 · Implementasi onchain · bukti
Agen membayar hotel Ibu Siti dari dana Pak Ahmad.
DitolakEarmarkMismatch
0x9ed30e3802f988fb2219a08c9d184ab779da13d2afbc7f9314d0ab3fa0bbc316
transaksi gagal yang ditambang di Arbitrum One · buka di Arbiscan, nama error-nya ada di sana
VendorClaimMissing 0x887d6b86… InvoiceReplayed 0x952f30ad… NotDeparted 0xe4855ebd…
04 · Implementasi onchain · aplikasi

Di aplikasi, capnya mendarat di baris yang tepat.

mabrur.edycu.dev/app/agen
Konsol agen: cap DITOLAK EarmarkMismatch pada faktur hotel Ibu Siti yang dicoba di booking Pak Ahmad.

Simulasi saja

keputusan kontrak dari Arbitrum One, tanpa dompet, tanpa transaksi

Penerima = penanda tangan

tidak ada kolom alamat yang bisa diisi agen

Coba sendiri

mabrur.edycu.dev/app/agen

04 · Implementasi onchain

Aturan ada di dalam token, bukan di layar.

MabrurPBM0x36f1d899…20336d2D5
ClaimRegistry0xd5B731CD…E4b6315ADb
TIDR uji0x66F838be…7f6209A43448
ERC20Wrapper · _updateEIP-712 invoiceERC20Permitrefund()regulatorView
87

tes kontrak, cakupan 100 %

7 × 256

invariant × run, kedalaman 100

100 %

cakupan per file frontend (Vitest) + E2E Playwright

3

putaran review kontrak, putaran 3 bersih

05 · Dampak
Mengunci uang satu jamaah, dari pesan sampai berangkat
Rp 809
Terbilang: delapan ratus sembilan rupiah
≈ 0,0025 % dari paket Rp 32.000.000 · refund: Rp 520
907.185 gas · ETH/IDR 44.563.294 · CoinGecko 9 Okt 2026 · receipt asli
Ibu Siti · tiket tidak dibeli
Rp 23.000.000 kembali, ditekan pihak ketiga.
Cap DIKEMBALIKAN Rp 23.000.000 ke Ibu Siti.
Tanpa izin agen, tanpa pengadilan.
Coba sekarang · tanpa dompet

Buka buku Pak Ahmad. Coba bayar hotel orang lain.

mabrur.edycu.dev/app/jamaahmabrur.edycu.dev/judgegithub.com/edycutjong/mabrurgithub.com/edycutjong/mabrur/releases
tIDR token uji tanpa nilai · tidak menjamin kursi: tiket lunas, atau sisa dana kembali.
mabrur.edycu.dev
Lampiran A1 Model bisnis

Siapa membayar, dan kapan ujrah cair?

Biro

membayar biaya per jamaah

Rencana: biaya kecil per jamaah, sebagai lencana bukti bahwa uang jamaahnya aman.

Ujrah

cair setelah berangkat

Maksimal 20 % paket, dengan tanda tangan keberangkatan jamaah atau maskapai yang dibayar.

Vendor

dibayar kapan saja

Tiket, hotel, visa tetap bisa dibayar di muka. Yang tertahan hanya ujrah.

Lampiran A2 Skalabilitas

Biaya per jamaah, bukan per agen.

907.185 gas

siklus berangkat ≈ Rp 809

book + 3 pembayaran vendor + ujrah, dari receipt Arbitrum One.

O(1)

pandangan regulator

regulatorView membaca penghitung per agen, tanpa loop atas booking.

ERC-20

aset dasar bisa diganti

Wrapper menerima ERC-20 standar apa pun: tIDR hari ini, rupiah berizin nanti.

Lampiran A3 Asumsi kepercayaan

Apa yang masih harus dipercaya.

T1

Registry

Penerbit dibajak bisa mengakui vendor palsu; kerugian terbatas dan dites (test_CaptureIssuer_Bound).

T2

Vendor

Vendor berizin bisa menagih lebih dari layanan; dibatasi pos booking itu.

T3

Keberangkatan

Faktur tiket harus melunasi seluruh pos tiket: “tiket Rp 1” tidak mematikan refund.

T4

Kunci jamaah

Jika agen memegang kunci jamaah, ia bisa menandatangani atas namanya. Jalur: dompet passkey.

Lampiran A4 Jalur adopsi

Kemenag, PPIU, SISKOPATUH.

PPIU

Keunggulan jual

Biro jujur membuktikan uang jamaah aman, melawan biro promo yang murah.

Kemenag

Penerbit & mandat

Kemenag dan akreditor maskapai/IATA sebagai penerbit klaim; regulator mewajibkan dana PPIU di earmark.

SISKOPATUH

Registry booking

Rujukan data jamaah. Belum ada API publik: disebut, belum diintegrasikan.

Lampiran A5 Roadmap

Dari token uji ke rupiah berizin.

Rupiah

Rupiah Digital / deposito tertokenisasi

Bank Indonesia tidak mengizinkan kripto sebagai alat pembayaran: aset dasar harus rupiah berizin.

DP → lunas

Setoran bertahap

DP dan pelunasan masuk ke earmark yang sama. Belum dibangun.

Ujrah bertahap

Sebagian saat visa terbit

Untuk arus kas agen: sisa saat berangkat. Belum dibangun.

Lampiran A6 Pembanding

Bank menjawab di mana. Mabrur menjawab untuk apa.

AspekRekening penampunganEscrow bertahapMabrur
Pemisahan per jamaahrekening gabungansatu kolamper booking, di token
Penerima dipilih olehagenagenpenanda tangan faktur
Agen menghilangpengadilanarbiterrefund() siapa pun
Pandangan regulatorsetelah runtuhtidak adalangsung