163 / 736NWC

Nostr Wallet Connect

Memberi aplikasi akses terbatas ke dompet Lightning

Ingin mendukung kreator dari sebuah aplikasi tanpa selalu beralih ke dompet? Nostr Wallet Connect menghubungkan keduanya. Yang penting bukan hanya berhasil tersambung, tetapi juga apa yang boleh dilakukan aplikasi, berapa banyak yang boleh dibelanjakan, dan cara mencabut aksesnya.

Nostr Wallet Connect (NWC) adalah aturan bersama yang dijelaskan dalam dokumen NIP-47. Aturan ini memungkinkan aplikasi mengirim permintaan ke dompet Lightning melalui Nostr. Server pengantar, disebut relay, membawa instruksi dan jawaban terenkripsi, bukan bitcoin itu sendiri. Layanan dompet mengatur izin dan menjalankan pembayaran.

Anna mendengarkan podcast dan ingin mengirim sedikit uang kepada pembuatnya melalui Lightning Network. Dengan NWC, pemutar dapat langsung meminta dompetnya membayar. Layanan dompet memeriksa izin koneksi sebelum menjalankan permintaan yang diizinkan. NWC tidak menentukan siapa yang memegang kunci bitcoin: ujung lainnya bisa berupa node milik Anna atau layanan yang menyimpan dana untuknya. Tombol “Hubungkan dompet” yang sama bisa berarti kendali atas uang yang sangat berbeda. Bergantung pada izin yang diberikan, aplikasi juga dapat bertindak tanpa konfirmasi baru untuk setiap pembayaran. [1] [2]

Dompet biasanya menyediakan kode QR atau teks koneksi, secara teknis sebuah URI. Isinya adalah kunci publik layanan, alamat relay, dan secret, yaitu kunci privat koneksi klien ini. Itu bukan seed dompet, yaitu nilai rahasia awalnya, maupun Seed Phrase, kata-kata pemulihannya. Namun, itu juga bukan tautan publik biasa: pemilik salinan yang dapat digunakan bisa menjalankan izin yang sama. Dampak kebocoran bergantung pada fungsi dan batas yang diizinkan. Koneksi terpisah untuk setiap aplikasi memudahkan identifikasi dan pencabutan satu per satu, sekaligus mengurangi keterkaitan antarkoneksi. [1]

Aplikasi mungkin hanya perlu membaca saldo, atau juga mengirim uang. Keduanya adalah izin berbeda. Event publik info mengumumkan kemampuan layanan; get_info mengembalikan metode yang tersedia untuk koneksi tertentu. Metode adalah perintah bernama: pay_invoice meminta pembayaran, make_invoice membuat permintaan pembayaran, lookup_invoice memeriksa statusnya, dan get_balance membaca saldo. get_info sendiri juga termasuk fungsi inti. Riwayat, keysend—pembayaran tanpa invoice yang dibuat sebelumnya—dan notifikasi merupakan ekstensi opsional. Dukungan server terhadap perintah tidak berarti semua aplikasi yang terhubung diizinkan memakainya. [1] [3] [5]

Anna mungkin hanya ingin memberi pemutar anggaran terbatas. Jika layanan menyediakan batas pengeluaran, metode, atau masa berlaku, layanan itulah yang harus menegakkannya. Angka yang sekadar tampil di pemutar tidak melindungi dari aplikasi yang mengirim permintaan lain. Periksa pula apakah anggaran berlaku sekali atau diperbarui, serta bagaimana biaya dihitung. Saat berhenti menggunakan aplikasi, Anna perlu mencabut izinnya di layanan dompet. Menghapus aplikasi atau koneksi lokalnya saja bukan bukti bahwa akses telah dicabut. Pencabutan menghalangi permintaan berikutnya, tetapi tidak membatalkan pembayaran yang telah selesai. [1]

Invoice Lightning adalah permintaan pembayaran, misalnya dalam format BOLT11, bukan bukti bahwa seseorang sudah membayar. NIP-47 menyatakan jumlah dan biaya dalam msat, seperseribu satoshi: 1000 msat = 1 sat. Salah satuan mengubah jumlah dengan faktor seribu. make_invoice hanya membuat permintaan. pay_invoice yang berhasil mengembalikan preimage. Dari nilai ini dihitung hash, sebuah nilai pemeriksaan singkat. Hasilnya harus cocok dengan hash pembayaran pada invoice; preimage yang dikembalikan menjadi bukti penyelesaian pembayaran. Jawaban kesalahan memakai error. Status dapat diperiksa melalui lookup_invoice. Aplikasi harus menangani hasil sebenarnya, bukan menampilkan sukses hanya karena pesan sudah dikirim. [1]

Anna mengetuk Bayar, tetapi aplikasi tidak mendapat jawaban. Timeout, habisnya waktu tunggu, belum menjelaskan apa yang terjadi pada uang. NWC memakai event sementara untuk permintaan dan jawaban; relay yang terputus atau layanan yang tidak tersedia dapat menyebabkan pesan hilang. Namun, mungkin hanya jawaban atas pembayaran yang sudah selesai yang hilang. Periksa status terlebih dahulu melalui lookup_invoice atau dompet itu sendiri. Tidak ada jawaban bukan konfirmasi kegagalan. Permintaan baru tidak otomatis aman sebagai pengulangan tindakan semula; pastikan hasil tindakan itu lebih dulu. [1]

Aplikasi dan dompet bertukar pesan terenkripsi. Negosiasi saat ini mengutamakan nip44_v2; nip04 yang usang masih ada untuk kompatibilitas. Tidak adanya tag encryption berarti mode lama. Namun, NIP-44 tidak menyediakan forward secrecy, perlindungan komunikasi lama jika kunci jangka panjang bocor kemudian. Relay juga dapat melihat jenis event, tag, kunci publik koneksi, dan waktu. Karena itu NWC tidak seharusnya memakai kunci identitas utama yang digunakan seseorang untuk menerbitkan konten di Nostr. Kunci terpisah membantu mengurangi hubungan antara pembayaran dan profil publik, bukan menjamin anonimitas penuh. [1] [4]

Pengguna biasa tidak perlu menghafal nomor pesan, tetapi nomor ini penting saat membuat integrasi. Info memakai kind 13194, permintaan 23194, dan jawaban 23195. kind menyatakan jenis event. Tag p menunjukkan pihak yang berkomunikasi, sedangkan tag e pada jawaban merujuk ke permintaan awal. Klien memverifikasi tanda tangan, kunci layanan yang diharapkan, keterkaitan permintaan itu, dan result_type, perintah yang terkait dengan hasilnya. Sembarang pesan dari relay tidak cukup menjadi konfirmasi. Jika diabaikan, jawaban milik pihak lain atau untuk tindakan berbeda bisa dianggap sebagai hasil pembayaran ini. [1]

Untuk gambaran yang lebih utuh, baca entri ini bersama Nostr, Lightning Network, BOLT 11, Dompet, Private Key, Satoshi. Entri ini juga dirujuk dari Nostr, BOLT 11.

DOC · 001NWC — NIP-47: Core protocolSpesifikasi DOC · 002NWC — Project overviewSumber primer DOC · 003NWC — Optional specificationsSpesifikasi DOC · 004Nostr — NIP-44: Encrypted payloadsSpesifikasi DOC · 005NWC-02 — NotificationsSpesifikasi
Direvisi: Utamakan sumber · Bukan nasihat investasi