轉自:http://blog.sina.com.cn/s/blog_12ce70a430102v8c7.htmlhtml
第一次看到 HD 這個詞被用在比特幣錢包中時,很容易就把它理解成硬件(Hardware)錢包,其實它是分層肯定性(Hierarchical Deterministic)錢包的縮寫 HD Wallets。
「分層肯定性」這個詞乍看起來很「高大上」,各種文檔也把它描述的「雲裏霧裏」的,其實原理自己很簡單,兩句話就能說清楚:
首先,要用一個隨機數來生成主(根)私鑰,這和任何一個比特幣錢包生成任何一個私鑰沒任何區別;
而後,再用一個肯定的、不可逆的算法,基於主私鑰生成任意數量的子私鑰;
看到了沒?很簡單吧?
那爲何要用「肯定、不可逆」的算法呢?由於「肯定」才能保證從一個主私鑰能夠生成出所有的子私鑰,而「不可逆」則是爲了確保不能經過子私鑰反推出主私鑰。
例如,SHA256 就能夠當作是「肯定、不可逆」的算法,咱們能夠很容易的使用 SHA256 設計出一個 HD 模型:SHA256(seed + n)
在這個模型裏,seed 爲主私鑰,n=(1,2,3......)計算出來的結果對應於第(1,2,3......)個子私鑰。
這其實就是類型1肯定性錢包(Type1 HD Wallets),固然,咱們還能夠基於更多「肯定、不可逆」的算法來設計其它 HD 模型,好比 BIP32,再好比類性2肯定性錢包(Type2 HD Wallets)。算法能夠複雜,但原理都同樣,很簡單,並且,只要 SHA256 是安全的,HD 模型就是安全的。
HD 模型在數學上有一個很是「好」的特性:只須要主公鑰,就能夠生成出任意數量的子公鑰。也就是說,無需私鑰介入(主私鑰和子私鑰),就能基於主公鑰生成新(公鑰)地址,而這些地址其實都能被主私鑰所控制。
這個特性使得 HD 模型在過去一年裏被愈來愈多的應用於企業和我的比特幣錢包解決方案,惋惜,優勢每每伴隨着代價,某些狀況下,代價甚至是「致命的」。算法