Cashu adalah protokol e-cash terbuka dengan tanda tangan buta, yang sering digunakan bersama Bitcoin melalui Lightning Network. Dompet menyimpan bukti terbitan mint tertentu, bukan wewenang untuk menandatangani pengeluaran cadangan bitcoinnya.
Cashu bukan satu mint bersama. Token mengidentifikasi penerbit, satuan, dan kumpulan kunci penandatangan; angka yang sama tidak berarti mata uang atau kewajiban yang sama. Token suatu mint tidak otomatis bisa ditebus di mint lain. Format V4 memakai CBOR dan memuat bukti dari satu mint saja. [Cashu — NUT-00: Protocol and tokens] [Cashu — NUT-02: Keysets and fees] [Cashu — Project introduction]
Protokol dasar menggunakan BDHKE pada secp256k1. Dompet membuat rahasia dan membutakan titiknya, mint menandatanganinya, lalu dompet menghapus pembutaan. Denominasi memiliki kunci berbeda: mint mengetahui nilai bukti yang diterbitkan, meskipun seharusnya tidak mengetahui bentuknya setelah pembutaan dihapus kelak. [Cashu — NUT-00: Protocol and tokens]
Token biasa tanpa syarat dapat disalin. Penerima menukarnya melalui swap menjadi bukti baru dengan rahasianya sendiri; mint membatalkan input lama. UNSPENT hanya menunjukkan keadaan sesaat, bukan pencadangan untuk penerima. PENDING berarti sedang diproses, sedangkan SPENT berarti bukti telah ditebus. [Cashu — NUT-03: Swap tokens] [Cashu — NUT-07: Token state check]
NUT-12 yang opsional menambahkan bukti DLEQ bahwa tanda tangan cocok dengan kunci publik mint. Dengan data yang tepat, penerima bisa memverifikasinya secara luring. Ini tidak menunjukkan apakah orang lain telah membelanjakan token, apakah mint merespons, atau apakah mint punya cadangan. Verifikasi luring tidak menggantikan penerimaan melalui swap. [Cashu — NUT-12: Offline signature validation]
NUT-02 membedakan active=false dari final_expiry yang opsional. Kumpulan kunci tidak aktif berhenti menerbitkan token baru, tetapi buktinya tetap diterima sebagai input; setelah kedaluwarsa final, spesifikasi tidak lagi mewajibkan mint menebusnya. Biaya input input_fee_ppk dijumlahkan berdasarkan jumlah bukti dan tarif masing-masing, lalu dibulatkan ke atas. [Cashu — NUT-02: Keysets and fees]
Pada melt, dompet menyerahkan bukti untuk pembayaran eksternal, sering melalui Lightning Network. Penawaran menentukan jumlah, satuan, masa berlaku, dan cadangan biaya jika ada; biaya input juga bisa berlaku. HTTP 200 dengan PENDING bukan konfirmasi pembayaran. Hasil akhir harus dibedakan dari penerimaan permintaan. [Cashu — NUT-05: Melting tokens]
Pembutaan tidak menghapus informasi jumlah, waktu, atau koneksi jaringan. NUT-03 menyarankan pengurutan denominasi yang diminta agar urutannya tidak membocorkan pembagian pembayaran dan kembalian. Permintaan pengirim tentang status bukti yang telah ditransfer bisa memudahkan mint menghubungkan pengirim dengan penerima. [Cashu — NUT-03: Swap tokens] [Cashu — NUT-07: Token state check]
NUT-13 menurunkan rahasia dan faktor pembutaan dari seed menurut kumpulan kunci dan penghitung. Versi 01 memakai HMAC-SHA256, sedangkan versi lama 00 memakai BIP32. Pemulihan membutuhkan kumpulan kunci asli dan tanda tangan melalui NUT-09, lalu pemeriksaan status pengeluaran. Tanpa kerja sama mint, seed tidak menjamin pemulihan tanda tangan ataupun penarikan cadangan. [Cashu — NUT-13: Deterministic secrets] [Cashu — NUT-09: Restore signatures]
Untuk gambaran yang lebih utuh, baca entri ini bersama Fedimint, Chaumian eCash, Blind signature, Lightning Network, Counterparty risk, Satoshi. Entri ini juga dirujuk dari Chaumian eCash, Blind signature, Fedimint, Fiduciary Media.