金鑰、錢包與帳戶抽象化
階層式確定性錢包
階層式確定性(HD)錢包是一種能從一個小小的祕密,長出整棵金鑰樹的錢包。它不必各自獨立地產生每把私鑰、再逐一備份,而是從單一的隨機種子出發,跑一個確定性的函數,算出子金鑰、孫金鑰,依此類推。由於整棵樹完全是那顆種子的函數,只要抄下一份十二或二十四個單字的備份,就足以在任何相容的錢包上、永遠地重新生出數以百萬計的地址。
「階層式」描述的是形狀:金鑰構成一棵親子樹,用像 m/44'/60'/0'/0/5 這樣的衍生路徑來定址,每一段挑選一個分支。「確定性」則表示種子之後不再有任何隨機性——同一顆種子永遠以相同順序重現完全相同的金鑰。這個組合一次解決了兩個老問題:備份變得極為簡單(只需一顆種子,而非愈來愈長的鑰匙串),且錢包能為每一筆付款發放一個全新地址以提升隱私,使用者卻無須再額外保存任何東西。
底層的衍生建立在 BIP-32(樹狀結構與子金鑰運算)、BIP-39(把種子化為人類可手抄的助記詞)與 BIP-44(把幣別與帳戶排成分支的慣例)之上。一個細微卻關鍵的特性是「強化」與「非強化」衍生:非強化分支讓僅持有公鑰的「唯讀觀察」伺服器無須掌握任何私鑰即可推導出每一個收款地址,而強化分支則刻意切斷這個能力,以圍堵私鑰外洩。幾乎所有現代的自我保管錢包——軟體、硬體或行動裝置——都是 HD 錢包。
child = f(parent_key, chain_code, index) — pure, repeatable, no fresh randomness
整棵樹中每把金鑰的安全性,全都歸結到單一種子的安全性。這對備份的便利性而言極好,對失竊風險而言卻很危險:誰讀到了助記詞,誰就擁有整個錢包的現在與未來。
又称
另见