Dompet perangkat lunak menggunakan nomor acak untuk menghasilkan kunci pribadi utama.
Kemudian, melalui algoritme deterministik dan ireversibel, ia dapat memperoleh kunci pribadi anak dalam jumlah tak terbatas dari kunci pribadi master tersebut.
Mengapa kita memerlukan algoritma deterministik dan ireversibel?
Karena deterministik berarti semua kunci pribadi anak selalu dapat dihasilkan dari kunci pribadi utama yang sama, sedangkan ireversibel berarti kunci pribadi utama tidak dapat direkonstruksi dari kunci pribadi anak mana pun.
Inilah sebabnya mengapa ini disebut dompet Hierarchical Deterministic (HD). Struktur derivasi kunci privat menyerupai pohon: kunci induk dapat memperoleh beberapa kunci anak, setiap kunci anak dapat memperoleh beberapa kunci cucu, dan proses ini dapat berlanjut tanpa batas waktu.
Saat dompet HD pertama kali dibuat, atau saat dompet dicadangkan, frasa mnemonik dibuat. Frasa mnemonik adalah rangkaian kata-kata bahasa Inggris. Urutan ini digunakan untuk menghasilkan seed, dan seed tersebut kemudian digunakan untuk menghasilkan semua kunci pribadi di dompet. Dengan kata lain, frase mnemonik berfungsi sebagai cadangan dompet, karena dapat digunakan untuk memulihkan dompet. Benih tersebut, pada gilirannya, sesuai dengan nomor acak asli di belakang dompet deterministik.
Salah satu keuntungan utama dompet HD adalah hanya kunci publik master yang diperlukan untuk menghasilkan kunci publik anak dalam jumlah berapa pun. Dengan kata lain, alamat publik baru dapat dibuat dari kunci publik master tanpa memerlukan akses ke kunci privat, baik kunci privat master maupun kunci privat anak. Namun, semua alamat yang dihasilkan ini pada akhirnya masih dapat dikontrol oleh kunci privat master.
Tentu saja desain ini juga memiliki risiko. Jika frase mnemonik diekspos, itu pada dasarnya setara dengan mengekspos semua kunci pribadi. Jika hal ini terjadi, keamanan aset digital di dompet akan hilang secara efektif.
Mengapa Dibutuhkan Begitu Banyak Kunci Pribadi?
Alasan pengguna membutuhkan begitu banyak kunci pribadi dapat dipahami melalui mekanisme perubahan dalam transaksi Bitcoin.
Transaksi Bitcoin adalah struktur data yang berisi input dan output. Ini juga mencakup informasi skrip yang diperlukan yang mentransfer nilai dari sumbernya (input) ke tujuannya (output).
Untuk memahami input dan output Bitcoin, penting untuk mengetahui konsep UTXO (Output Transaksi Tak Terpakai). UTXO adalah unit dasar transaksi Bitcoin dan mewakili keluaran transaksi yang belum terpakai. Satu bitcoin sebenarnya didistribusikan ke banyak transaksi dan banyak blok dalam bentuk UTXO. Pada kenyataannya, tidak ada catatan terpusat yang menyimpan saldo rekening sederhana; sebaliknya, hanya ada UTXO terdesentralisasi yang terkunci pada pemiliknya masing-masing.
UTXO dapat mewakili jumlah nilai berapa pun, namun setelah dibuat, UTXO tidak dapat dibagi dengan cara yang sama seperti koin fisik tidak dapat dibagi dua. Jika nilai UTXO lebih besar dari jumlah yang dibutuhkan untuk suatu transaksi, seluruh UTXO tetap harus dibelanjakan, dan kelebihannya akan dikembalikan sebagai uang kembalian.
Misalnya, bayangkan Anda memiliki UTXO senilai 20 unit dan ingin membayar 1 unit. Transaksi harus menggunakan 20 unit UTXO penuh dan menghasilkan dua keluaran: satu keluaran mengirimkan 1 unit ke penerima, sementara keluaran lainnya mengirimkan 19 unit kembali ke dompet Anda sebagai uang kembalian. Dalam hal ini, sebagian besar transaksi Bitcoin menghasilkan perubahan.
Hal ini menimbulkan pertanyaan lain: haruskah perubahan dikirim kembali ke alamat asli, atau ke alamat yang baru dibuat?
Ketika Satoshi Nakamoto merancang Bitcoin, mekanisme perubahan alamat digunakan, artinya alamat baru sering kali dibuat untuk menerima perubahan dari setiap transaksi. Manfaat desain ini adalah membantu melindungi privasi pengguna dan mengurangi risiko keamanan tertentu.
Dalam kehidupan nyata, hal ini dapat dibandingkan dengan membuka beberapa rekening bank dengan nama dan identitas yang berbeda di bank yang berbeda. Bahkan jika seseorang dapat mengamati aliran uang di setiap akun, akan lebih sulit bagi mereka untuk melacak semuanya kembali ke pemilik sebenarnya dari aset digital tersebut. Ini adalah bagian yang membuat Bitcoin relatif anonim.
Itu sebabnya pengguna dompet membutuhkan begitu banyak kunci pribadi. Karena kunci publik dan kunci privat selalu berpasangan, dan setiap transaksi dapat menghasilkan alamat perubahan baru, menyimpan dan membuat cadangan kunci privat yang sesuai dengan semua alamat ini akan menjadi tantangan teknis yang besar. Dompet HD memecahkan masalah ini dengan mengizinkan satu root untuk menghasilkan sejumlah kunci publik anak dan kunci pribadi anak, sehingga sangat meningkatkan kegunaan dompet digital.
