Not your keys, not your coins.
메타마스크는 Browser Storage(Extension)에 개인키를 암호화해서 보관.
Hierarchical Deterministic
private child key
let I
IF index ≥ 2^31 (hardened key)
I = HMAC-SHA512(parent_private_key, chaincode)
****ELSE
I = HMAC-SHA512(parent_public_key, chaincode)
I_l, I_r = I.split()
child_private_key = I_l
child_chaincode = I_r
public child key (neutered)
public child key
If index **≥** 2^31 (hardened key)
return failure
ELSE
HMAC-SHA512(parent_public_key, chaincode)
// same as the above.
private child key: Not possible.
Derivation path
m / purpose' / coin_type' / account' / change / address_indexFor example,
m/44’/60’/0’/0/0
purpose: 44’ following the BIP43.
coin_type: ethereum(60)
account: for many purposes(e.g., donation, saving, common expenses)
change
- external(0): for deposit
- internal(1): for sending back
address: public key and private key
master private key’s sole purpose is wallet tree regeneration. It is unable to sign transactions.
change address becomes harder for external observers to track your wallet balance and transaction history. (For Account Discovery)
BIP-32 → BIP-44