Output Descriptor adalah uraian teks tentang kunci dan aturan yang harus digunakan dompet untuk membuat output Bitcoin, yaitu catatan jumlah dana dan syarat penggunaannya di kemudian hari. Descriptor membantu membuat kembali alamat yang benar dan mengenali pembayarannya. Ia bukan transaksi atau cadangan lengkap, dan dapat berisi data publik saja maupun kunci rahasia.
Anna ingin mengganti aplikasi untuk memantau dompet perangkat kerasnya. Ia ingin memindahkan tampilan dananya tanpa memasukkan kata-kata pemulihan ke komputer. Kata-kata pemulihan itu disebut Seed Phrase, yaitu cadangan untuk memulihkan kunci dompet. Descriptor publik memberi tahu aplikasi baru kunci publik mana yang digunakan dan bagaimana menghasilkan alamat yang sama. Bayangkan petunjuk pembuatan alamat yang terperinci, bukan kata sandi tambahan. Pada dompet biasa, perangkat lunak sering dapat mengenali pengaturan standar dengan sendirinya. Namun, konfigurasi tidak lazim atau Multisig (konfigurasi dompet dengan beberapa kunci penandatanganan) tidak boleh bergantung pada tebakan. Descriptor tidak memindahkan uang atau mengubah pembayaran yang sudah diterima. Ia menjelaskan aturan yang harus dipertahankan saat pemulihan. [1] [8]
Kunci privat dapat membuat tanda tangan digital yang mengizinkan pembelanjaan dana. Kunci publik dapat memeriksa tanda tangan itu, tetapi tidak membuatnya. Descriptor publik dapat memuat xpub, yaitu data untuk menurunkan kunci publik berikutnya tanpa kemampuan menandatangani. Ini cocok untuk Watch-only Wallet, dompet yang memantau pembayaran tetapi tidak dapat mengirimnya sendiri. Meski begitu, ekspor ini tetap perlu dilindungi demi privasi: banyak alamat dan riwayatnya bisa saling dihubungkan melalui data tersebut. Descriptor lain dapat memuat xprv, kunci privat diperluas, atau WIF, bentuk pengodean satu kunci privat. Itu merupakan data rahasia yang dapat memungkinkan penggunaan dana sesuai syaratnya. Jangan kirim ke pemeriksa daring atau menyimpannya seperti catatan biasa yang tidak berisiko. Konfigurasi publik tidak menggantikan cadangan yang diperlukan untuk menandatangani. [1] [8]
Setelah impor, Anna membandingkan beberapa alamat penerimaan dengan dompet asal. Untuk dompet perangkat keras, ia memeriksa alamat pada layar perangkat yang tepercaya sesuai prosedur produsen. Ia juga memeriksa konfigurasi cabang kembalian, yaitu bagian yang menerima sisa dana saat membayar. Nama akun yang sama tidak cukup. Sebelum mengandalkan cadangan baru, ia memeriksa seluruh prosedur pemulihan yang sesuai dengan dompetnya tanpa mengungkap kunci rahasia secara tidak perlu. Jika aplikasi tidak mendukung descriptor atau menampilkan alamat berbeda, periksa dulu kompatibilitas, jaringan, dan pengaturannya. Menulis ulang ekspresi yang belum dipahami berdasarkan tebakan bukan perbaikan yang aman. [5] [8]
Untuk dompet yang mensyaratkan dua tanda tangan dari tiga kunci, dua kumpulan kata pemulihan dan ingatan bahwa ‘dulu dua dari tiga’ tidak cukup. Menyusun kembali syarat yang benar memerlukan data publik ketiga kunci, aturan derivasi, dan jenis skrip yang tepat. Skrip menetapkan syarat yang harus dipenuhi agar dana dapat dibelanjakan. Dalam notasi teknis multi(k,...), urutan kunci mengikuti daftar yang ditulis; k adalah jumlah tanda tangan yang diperlukan. Varian sortedmulti(k,...) mengurutkan kunci publik hasil derivasi berdasarkan byte-nya setiap kali membuat skrip. Ini aturan berbeda, bukan nama yang bisa saling ditukar. Simpan ekspor konfigurasi lengkap, sementara cadangan kunci untuk penandatanganan dilindungi secara terpisah. Daftar nama perangkat saja tidak memadai. [2] [8]
Setelah karakter # dapat muncul delapan karakter checksum, nilai pemeriksaan yang ditetapkan BIP380. Perangkat lunak menggunakannya untuk menemukan banyak kesalahan penyalinan. Namun, itu bukan tanda tangan pembuat, enkripsi, atau bukti bahwa descriptor tersebut milikmu. Orang yang sengaja mengganti kunci dengan miliknya juga bisa menghitung checksum baru yang benar. Karena itu, pemeriksaan teks perlu disertai verifikasi alamat dan asal konfigurasi. Jika aplikasi melaporkan kesalahan checksum, dapatkan kembali ekspor asli terlebih dahulu. Membuat checksum baru saja bisa membuat pemeriksaan menerima teks yang sebenarnya sudah rusak. [1]
Di depan kunci dapat dicantumkan [fingerprint/path], informasi asal kunci yang disebut key origin. Fingerprint adalah pengenal singkat kunci awal, sedangkan path mencatat jalur derivasi menuju kunci yang ditulis setelahnya. Informasi ini membantu perangkat penanda tangan menemukan kunci yang tepat. Setelah xpub dapat ada jalur lain untuk menurunkan alamat satu per satu. Kedua bagian ini memiliki tugas berbeda, bukan sekadar label akun. Kunci yang berbeda bisa kebetulan memiliki fingerprint sama, sehingga fingerprint tidak membuktikan identitas perangkat. Ekspor publik juga tidak dapat melanjutkan secara bebas melewati Hardened Derivation, tahap yang memerlukan data privat. Aplikasi pengekspor harus memilih tingkat kunci yang sesuai. [1]
Tanda bintang pada /* berarti memasukkan angka berurutan, misalnya 0, 1, dan 2. Ranged descriptor seperti ini tidak hanya menjelaskan satu alamat; perangkat lunak menentukan rentang indeks yang akan diproses untuk suatu operasi. Notasi <0;1> menurut BIP389 dapat mencakup dua cabang, biasanya penerimaan dan kembalian, jika didukung aplikasi. Namun, descriptor itu sendiri tidak menyimpan daftar alamat yang sudah dipakai atau nomor berikutnya yang belum digunakan. Gap limit, jumlah alamat berturut-turut yang belum pernah digunakan dan membuat pencarian berhenti, juga tidak otomatis menjadi bagian ekspresi. Belum pernah digunakan berarti tidak memiliki riwayat transaksi: alamat yang pernah menerima dana lalu dananya dibelanjakan tidak tergolong alamat yang belum digunakan. Karena itu, pemulihan mungkin membutuhkan keadaan dompet serta pencarian dalam rentang yang cukup luas. [5] [6] [9]
Output transaksi memuat scriptPubKey, skrip yang menentukan syarat penggunaan output itu nanti. Descriptor menjelaskan cara menyusunnya. Ekspresi wpkh(KEY) menggambarkan Native SegWit dengan satu kunci; KEY di sini adalah penanda tempat, bukan kunci asli. Membungkusnya menjadi sh(wpkh(KEY)) mengubah format output dan alamat meskipun kuncinya tetap sama. Ekspresi lain mencakup pk(), pkh(), wsh(), addr(), dan raw(). Itu bukan pilihan yang saling dapat menggantikan: misalnya, addr() menjelaskan alamat yang sudah diketahui, tetapi tidak menyediakan informasi yang masih kurang untuk menggunakan dananya. Bagian ini adalah referensi konfigurasi, bukan tuntutan agar pemula menulis descriptor sendiri. [1] [8]
Output Taproot dapat digunakan melalui tanda tangan kunci atau melalui syarat skrip yang disertakan, jika output memuatnya. Notasi tr(KEY) menentukan kunci internal tanpa cabang skrip yang dapat digunakan untuk membelanjakan dana; tr(KEY,TREE) menambahkan pohon skrip. Jadi, yang harus dipertahankan bukan hanya daftar kunci. Cara mengelompokkan skrip dalam pohon juga penting: perubahannya dapat mengubah hash gabungan, Merkle root, serta alamat akhir meskipun setiap syarat tetap sama. Namun, tidak setiap pertukaran cabang mengubah hasilnya. Miniscript membantu menulis dan menganalisis syarat, sedangkan multi_a menyatakan banyak tanda tangan dalam Tapscript, bahasa skrip Taproot. Keduanya tidak menggantikan ekspor konfigurasi lengkap. [3] [8]
RPC adalah antarmuka untuk mengirim perintah ke perangkat lunak melalui program lain atau baris perintah. Di Bitcoin Core 29, perintah RPC getdescriptorinfo menganalisis ekspresi. Hasilnya mencakup bentuk publik tanpa kunci privat serta checksum, isrange, issolvable, dan hasprivatekeys. Field terakhir menyatakan apakah masukan mengandung kunci privat; issolvable tidak berarti kamu memiliki kunci rahasia yang dibutuhkan untuk menandatangani. Perintah deriveaddresses memungkinkan perbandingan alamat hasil derivasi. Saat impor, importdescriptors juga menerima timestamp, active, internal, range, dan next_index: waktu awal pencarian riwayat, status aktif konfigurasi, apakah untuk kembalian internal, rentang, serta indeks alamat berikutnya. Rescan adalah pencarian ulang transaksi di rantai. Timestamp yang terlalu terlambat dapat melewatkan pembayaran lama; mengubah descriptor saja tidak memindahkan atau menghapusnya. Setelah impor, buat cadangan dompet baru. Perintah ini digunakan pada instalasi milikmu yang tepercaya, bukan pada formulir situs orang lain. [5] [7] [8]
Untuk gambaran yang lebih utuh, baca entri ini bersama Dompet, Watch-only Wallet, Multisig, PSBT, Miniscript, Bitcoin. Entri ini juga dirujuk dari Watch-only Wallet, Extended Public Key (xpub), PSBT, Kustodi mandiri.