HD Wallet, atau Hierarchical Deterministic Wallet, adalah salah satu fitur digital wallet modern yang memungkinkannya memiliki banyak address namun tetap mengacu ke satu wallet yang sama.
HD Wallet muncul pertama kali dicetuskan tahun 2012 dalam dokumen BIP-32.
Proyek ini adalah versi over-simplified bagaimana sebuah HD Wallet dibuat. Saya sebut over-simplified karena walaupun langkah demi langkahnya legit, akan tetapi:
- Tidak ada blockchain network yang dilibatkan.
Dengan demikian belum bisa dibuktikan apakah bisa dilakukan transaksi pada wallet yang tercipta. - Tidak ada fungsi pengecekan balik integritas hashes yang tercipta.
Karena tidak ada transaksi yang terjadi, maka fungsi-fungsi tersebut sengaja tidak dibuat. - Beberapa fungsi kriptografi tidak dibuat dengan seharusnya.
Terutama jika fungsi kriptografi tersebut bisa dibuat versi sederhananya. - Beberapa fungsi kriptografi dibuat dengan bantuan external libraries agar lebih succint, sekalipun aslinya bisa ditulis dalam native libraries.
TLDR; (1) Entropy -> (2) Seed Phrase -> (3) Seed -> (4) Master Private Key and Chain Code -> (5) child Private Keys and Public Keys -> (6) Public Address
Entropy adalah tentang seberapa random pembuatan initial set of keys. Anggap entropy ini seperti melempar dadu; semakin banyak dadu dan lemparannya crucial bagi keamanan wallet.
Entropy biasanya sepanjang 128, 160, 192, atau 256 bits. Semakin banyak bits, semakin tinggi level entropy, semakin tinggi level security.
Randomness dari entropy berasal dari suatu metode yang bernama: CSPRNG, atau Cryptographically Secure Pseudo-Random Number Generator. Dalam Swift, fungsi SecRandomCopyBytes
dapat dipakai untuk keperluan ini.
Entropy yang sudah tercipta kemudian diubah kedalam bentuk yang disebut mnemonic seed phrase. Seed phrase ini berupa 12 atau 24 kata acak yang berguna untuk memulihkan (recovering) wallet jika suatu saat kalian tidak bisa mengakses wallet kalian.
Seed phrase ini muncul dari suatu konsensus di komunitas Bitcoin dunia: BIP39. Kumpulan kata-kata yang mungkin muncul dalam seed phrase bisa dilihat di BIP39 English Word List.
Seed Phrase yang terbentuk (ditambahkan passphrase jika perlu) kemudian diproses menggunakan fungsi kriptografi berbasis password bernama PBKDF2, yang terdefinisi dalam PKCS5. Proses ini menghasilkan seed sepanjang 512-bit (64 bytes).
Jangan tertukar istilah. Seed tidak sama dengan Seed Phrase.
Seed yang tercipta kemudian digunakan untuk menciptakan HD Wallet menggunakan algoritma HMAC-SHA512.
Dalam HD Wallet ini terdapat Master Private Key dan Chain Code-nya. Keduanya akan digunakan untuk menciptakan banyak pasangan child Private Keys dan Public Keys-nya.
Kombinasi dari master private key dan chain code, yang diproses dengan algoritma ECDSA akan menghasilkan pasangan child private key dan public key-nya.
Wallet Address bisa dianalogikan seperti alamat email: (1) Orang lain perlu tahu alamat ini agar bisa mengirimkan asset. (2) Kalian boleh menyebarkan address ini kepada siapapun. (3) Orang lain tidak bisa mengakses wallet kalian melalui address ini. Intinya: Wallet address = Email address.
/eof