HD Wallet menghitung banyak kunci yang saling terkait dari satu titik awal rahasia, yaitu seed. Kunci privat menandatangani pembayaran, sedangkan pasangan kunci publiknya digunakan untuk membuat alamat penerimaan. Dengan demikian, dompet bisa memakai alamat baru tanpa cadangan terpisah untuk setiap alamat.
Alice membuka layar penerimaan dan dompet menampilkan sebuah alamat. Ia menerima 10 000 satoshi, satuan kecil bitcoin, di alamat itu. Untuk pembayaran berikutnya, aplikasi menawarkan alamat lain yang menerima 20 000 satoshi. Jika hanya kedua penerimaan itu yang belum dibelanjakan, dompet akan menunjukkan total 30 000 satoshi. Alamat baru tidak menciptakan akun terpisah, dan dana sebelumnya tidak otomatis berpindah. Aplikasi mengelola kunci untuk kedua penerimaan tersebut. HD Wallet membuat hal ini praktis. HD berarti Hierarchical Deterministic: hierarkis karena kuncinya membentuk struktur bercabang, dan deterministik karena seed serta jalur yang sama menghasilkan kunci yang sama, termasuk saat pemulihan. Jalur adalah urutan angka yang menentukan cabang dan kunci mana yang harus dihitung program. Alice biasanya tidak perlu mengurusnya ketika menerima pembayaran, tetapi pemulihan harus memakai jalur yang benar. Satu cadangan rahasia awal dapat mencakup alamat-alamat mendatang juga; pengaturan dompet tetap perlu disimpan. Alamat baru membantu menghindari penggunaan ulang alamat, tetapi tidak menjamin anonimitas dengan sendirinya. [1] [12]
Kunci publik diperluas, biasanya disebut xpub, memungkinkan perhitungan kunci publik untuk sebagian struktur ini. Kunci tersebut tidak berisi kunci privat yang dibutuhkan untuk menandatangani pembayaran. Karena itu, xpub saja tidak dapat membelanjakan dana; untuk membuat alamat tertentu, aplikasi juga harus mengetahui formatnya. Dompet watch-only dengan xpub yang sesuai dapat membuat alamat dan memantau pembayaran tanpa kunci penandatanganan. Namun, kebocoran xpub dapat menghubungkan alamat lama dan mendatang dalam cabang itu, saldo, serta transaksi. Bagikan hanya cabang yang diperlukan. Bahkan xpub yang benar tidak mencegah komputer terinfeksi menampilkan alamat orang lain. Periksa alamat penerimaan pada perangkat penandatanganan tepercaya yang mengenali dompet tersebut. [1] [12] [14]
Toko dapat membuat alamat berbeda untuk setiap pesanan. Situsnya membutuhkan alamat, tetapi sebaiknya tidak memegang kunci untuk membelanjakan pendapatan. BIP32 memisahkan cabang penerimaan ini dari bagian dompet lainnya. Pieter Wuille menulis usulan tersebut, dengan tanggal penetapan 11 Februari 2012. Ini standar dompet, bukan aturan konsensus. Kata cadangan BIP39, jenis skrip, dan prosedur pemulihan lengkap ditangani lapisan lain. [1] [11] [12]
BIP32 menambahkan chain code 256-bit pada kunci, yakni 32 byte untuk derivasi berikutnya. Bentuk privat terdiri dari skalar k pada secp256k1 dan chain code c; bentuk publik memakai K = point(k) dengan c yang sama. Kunci utama dibuat melalui HMAC-SHA512 dengan string persis “Bitcoin seed” sebagai kunci fungsi dan seed sebagai data. Sebanyak 32 byte kiri menjadi calon kunci privat, sedangkan 32 byte kanan menjadi chain code. Nilai nol atau setidaknya sebesar orde kurva n membuat kunci utama tidak valid. [1]
Derivasi adalah perhitungan, bukan pencarian dalam daftar tersimpan. Ada derivasi biasa dan derivasi hardened. Derivasi biasa dapat menghitung kunci publik berikutnya dari kunci publik diperluas milik induk; langkah hardened memerlukan kunci privat diperluas milik induk. CKDpriv menghitung I = HMAC-SHA512(cpar, data), membaginya menjadi IL dan IR, lalu menambahkan parse256(IL) ke kunci privat induk modulo n. IR menjadi chain code baru. Derivasi biasa memakai serP(Kpar) || ser32(i); hardened memakai 0x00 || ser256(kpar) || ser32(i), dengan i ≥ 2^31. CKDpub hanya menghasilkan cabang publik biasa dengan menambahkan point(parse256(IL)) ke Kpar. Nomor cabang berbeda mengubah kunci turunan berikutnya. [1]
Xpub dapat menurunkan kunci publik selama jalurnya tidak melewati langkah hardened. Ada konsekuensi penting: xpub induk bersama kunci privat anak biasa yang bocor memungkinkan kunci privat induk dihitung. Cabang lainnya pun terancam. Hardened menghalangi perhitungan balik ini, tetapi tidak melindungi dari pencurian seed, sumber keacakan yang lemah, atau persetujuan transaksi berbahaya. [1]
Di mainnet, pengodean publik standar diawali xpub dan pengodean privat diawali xprv; versinya masing-masing 0x0488B21E dan 0x0488ADE4. Sebelum Base58Check, catatan berukuran 78 byte: versi 4, kedalaman 1, sidik jari induk 4, nomor anak 4, chain code 32, dan data kunci 33. Hasilnya sepanjang 111 karakter. Sidik jari pendek membantu mencocokkan kunci, bukan membuktikan identitas. Awalan ypub/zpub dari SLIP132 kadang menunjukkan jenis skrip; mengganti awalan saja tidak mengubah kunci atau aturan dompet. [1] [9]
BIP43 mencadangkan tingkat hardened pertama untuk tujuan penggunaan. BIP44 memakai m / 44' / coin_type' / account' / change / address_index. Setelah akun terdapat cabang 0 untuk penerimaan atau 1 untuk kembalian, lalu nomor alamat. Apostrof atau h berarti indeks ditambah 2^31. Pencarian BIP44 memakai gap limit 20: berhenti setelah 20 alamat penerimaan berturut-turut belum digunakan. BIP48 menjelaskan Multisig, BIP84 tujuan 84' untuk SegWit native, dan BIP86 tujuan 86' untuk Taproot satu kunci. Konvensi ini tidak tersimpan dalam seed itu sendiri maupun diwajibkan oleh node. [2] [3] [4] [5] [6]
Kunci saja belum menentukan skrip yang melindungi dana. Output Descriptor dapat mencatat asal kunci, jalur, konstruksi seperti wpkh(), jumlah tanda tangan yang diperlukan, peserta Multisig lain, dan checksum. Multipath descriptor dapat menggabungkan cabang penerimaan dan kembalian. Seed seorang peserta tidak dapat membangun ulang xpub peserta lain atau aturan bersama. Cadangkan pula descriptor publik terverifikasi atau ekspor konfigurasi dan lindungi privasinya. Jika ekspor mengandung kunci privat, perlakukan sebagai rahasia. [7] [8] [10] [13]
Seed dapat menurunkan kunci kembali, tetapi aplikasi memerlukan format seed, BIP39 passphrase yang digunakan, jaringan, jenis skrip, coin type, akun, kedua cabang, dan rentang pencarian. Multisig juga memerlukan konfigurasi bersama. Saldo nol setelah pemulihan belum tentu berarti dana hilang; mungkin jalur yang dicari berbeda. Uji aman pada perangkat tepercaya harus menemukan UTXO yang tepat, yaitu keluaran transaksi yang belum dibelanjakan, dan memverifikasi penandatanganan. Jangan pernah memasukkan seed asli atau kata cadangan ke alat web atau komputer online biasa. [3] [7] [10] [11]
BIP32 menangani hasil tidak valid yang langka: parse256(IL) ≥ n, kunci privat turunan bernilai nol, atau titik publik di tak hingga. Untuk anak seperti itu, indeks berikutnya dicoba. Saat pemulihan, lebih sering yang kurang adalah jalur, cabang kembalian, atau dukungan jenis skrip. Sebelum mengganti aplikasi, verifikasi penemuan dana dan transfer percobaan kecil. Simpan cadangan serta konfigurasi awal sampai prosedur baru berfungsi. Kunci xprv menyediakan kunci untuk menandatangani transaksi, xpub membuka hubungan keuangan, dan descriptor menjelaskan cara menyusun dompet. [1] [7] [9] [10]
Untuk gambaran yang lebih utuh, baca entri ini bersama Dompet, Seed Phrase, Extended Public Key (xpub), Derivation Path, Gap Limit, Bitcoin. Entri ini juga dirujuk dari Alamat Bitcoin, BIP 39, Cold Storage, Watch-only Wallet.