BIP32, BIP39, BIP44
BIP 全名是?Bitcoin Improvement Proposals暇屋,是提出 Bitcoin 的新功能或改進(jìn)措施的文件《蠢保可由任何人提出咐刨,經(jīng)過審核后公布在?bitcoin/bips?上。BIP 和 Bitcoin 的關(guān)系扬霜,就像是 RFC 之于 Internet定鸟。
【而其中的?BIP32, BIP39, BIP44 共同定義了目前被廣泛使用的 HD Wallet,包含其設(shè)計(jì)動(dòng)機(jī)和理念著瓶、實(shí)作方式联予、實(shí)例等。】
分層確定性的概念早在 BIP32 提案提出沸久。根據(jù)比特幣核心開發(fā)者 Gregory Maxwell 的原始描述和討論季眷,Pieter Wuille 在2012 年 02月 11日整理完善提交 BIP32 。直到 2016年 6月 15 日 才被合并到 Bitcoin Core卷胯,目前幾乎所有的錢包服務(wù)商都整合了該協(xié)議子刮。BIP32 是 HD 錢包的核心提案,通過種子來生成主私鑰窑睁,然后派生海量的子私鑰和地址挺峡,但是種子是一串很長(zhǎng)的隨機(jī)數(shù),不利于記錄担钮,所以我們用算法將種子轉(zhuǎn)化為一串助記詞 (Mnemonic)橱赠,方便保存記錄,這就是 BIP39箫津,它擴(kuò)展了 HD 錢包種子的生成算法狭姨。BIP43 對(duì) BIP32 樹結(jié)構(gòu)增加了子索引標(biāo)識(shí) purpose 的擴(kuò)展?m/purpose'/ *。 BIP44 是在 BIP43 和 BIP32 的基礎(chǔ)上增加多幣種鲤嫡,通過 HD 錢包派生多個(gè)地址送挑,可以同時(shí)管理主網(wǎng)和測(cè)試網(wǎng)的比特幣,BIP44 提出了5層的路徑建議暖眼,如下:
m/purpse'/coin_type'/account'/change/address_index惕耕,
BIP44的規(guī)則使得 HD 錢包非常強(qiáng)大,用戶只需要保存一個(gè)種子诫肠,就能控制所有幣種司澎,所有賬戶的錢包。
BIP32:
定義?Hierarchical Deterministic wallet (簡(jiǎn)稱 "HD Wallet")栋豫,是一個(gè)系統(tǒng)可以從單一個(gè)?seed?產(chǎn)生一樹狀結(jié)構(gòu)儲(chǔ)存多組 keypairs(私鑰和公鑰)挤安。好處是可以方便的備份、轉(zhuǎn)移到其他相容裝置(因?yàn)槎贾恍枰?seed)丧鸯,以及分層的權(quán)限控制等蛤铜。-BIP32 定義的 HD Wallet-如圖:
BIP39:
將?seed?用方便記憶和書寫的單字表示。一般由?12 個(gè)單字組成丛肢,稱為?mnemonic code(phrase)围肥,中文稱為助記詞或助記碼。例如:
rose rocket invest real refuse margin festival danger anger border idle brown
BIP44:
基于 BIP32 的系統(tǒng)蜂怎,賦予樹狀結(jié)構(gòu)中的各層特殊的意義穆刻。讓同一個(gè) seed 可以支援多幣種、多帳戶等杠步。各層定義如下:
m / purpose' / coin_type' / account' / change / address_index
其中的?purporse'?固定是?44'氢伟,代表使用 BIP44榜轿。而?coin_type'?用來表示不同幣種,例如 Bitcoin 就是?0'朵锣,Ethereum 是?60'谬盐。
【參考imToken錢包為例】
imToken 的默認(rèn)路徑是 m/44’/60’/0’/0/0,?助記詞是需要配合路徑使用的, 相同的助記詞配合不同的路徑也會(huì)生成不同的地址。
1. 生成一個(gè)助記詞(參見 BIP39)
2. 該助記詞使用 PBKDF2 轉(zhuǎn)化為種子(參見 BIP39)
3. 種子用于使用 HMAC-SHA512 生成根私鑰(參見 BIP32)
4. 從該根私鑰猪勇,導(dǎo)出子私鑰(參見 BIP32)设褐,其中節(jié)點(diǎn)布局由BIP44設(shè)置
如果一個(gè) HD 錢包助記詞是 12 個(gè)單詞,一共有 2048 個(gè)單詞可能性泣刹,如何算出隨機(jī)的生成的助記詞所有可能性是一個(gè)排列問題助析,根據(jù)公式:n!/( n - r )!,既2048!/(2048-12)! = 5.2715379713014884760003093175282 e+39椅您。
以太坊目前解決方案
以太坊在 EIP84 討論外冀,是否遵循 BIP32 和 BIP44,社區(qū)里提出來很多有意思的觀點(diǎn)掀泳,比特幣是基于 UTXO 的雪隧,所以可以使用 HD 錢包(BIP32)為每個(gè)交易分配一個(gè)新地址,以保護(hù)您的隱私员舵。然而脑沿,以太坊是基于帳戶,每個(gè)帳戶都有一個(gè)地址马僻,BIP 是比特幣的提案庄拇,而且比特幣的數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)是圍繞改變地址的想法構(gòu)建的,BIP 的一些提案可能并不適合以太坊韭邓。以太坊的模式和比特幣UTXO 不同措近,以太坊轉(zhuǎn)賬不能改變地址,如果在以太坊上實(shí)現(xiàn) UTXO 女淑,用戶還必須簽名兩個(gè)交易以將余額的一部分發(fā)送到一個(gè)地址瞭郑,將余額的一部分發(fā)送到第二個(gè)地址 - 這將使成本增加一倍,而且第二個(gè)交易可能不會(huì)在同一個(gè)區(qū)塊中鸭你,當(dāng)然以太坊也可以通過智能合約的方式實(shí)現(xiàn)屈张。另外,以太坊目前官方錢包采用 KDF 的形式袱巨,也就是我們常說的 Keystore 的形式阁谆。