不懂程式,也能理解的區塊鏈錢包技術原理(三)HD Wallet

為何助記詞可以在錢包軟體之間互通?跨鏈跨幣的錢包軟體服務是怎麼做到的?本篇帶你了解。

Eric Liou
6 min readDec 4, 2019

你好!新手上路,有錯還請指正。

Photo by Kaboompics .com from Pexels

上一篇談到了錢包軟體的如何創建私鑰、地址以及數位簽章技術,本篇是最後一篇,帶你認識 ❹管理私鑰功能。

多私鑰使用需求...

在談管理私鑰功能之前,我們先了解使用者對於私鑰的需求為何?

現今不斷有新的區塊鏈主鏈,以及其應用服務上線,因此使用者需要支援多個區塊鏈、多幣種、多帳戶的錢包軟體,而且不論是為了要強化隱私,還是為了區分不同的交易目的,使用者在每次交易時,都可能需要切換不同的地址與對應私鑰來執行交易,於是在生成眾多不同的地址與私鑰的狀況下,管理私鑰變成了麻煩且複雜的事情,另一方面,私鑰是一串又長又亂的隨機碼,一份私鑰對於使用者就已經不易保管與記憶了,多份私鑰的狀況下,那就必須要有一個相對簡化的方式來備份

多地址操作,強化隱私
因為區塊鏈的交易紀錄是透明的,所以會有隱私上的隱憂,雖然說使用者是以代名(地址)的方式顯示自己,但也不算真的匿名,為了強化隱私,都會建議使用者多地址操作交易,因為單一地址操作交易的話,他人會較容易描繪在背後操作的人。

先說解決方案哪裡來

比特幣區塊鏈是一個開源的項目,任何人都可以參與並做出貢獻,其中有一群人不斷致力於比特幣協議,使它有更好的效率與功能,而這群人就是比特幣開發者社群,他們建立了一個關於改善建議的提案制度,提案的簡稱就是BIP,全文是Bitcoin Improvement Propposal,直白的代表著比特幣改進建議的提案,BIP後面會加上數字,做為不同提案的識別編號,而目前許多錢包軟體服務,都是遵循BIP協議來進行錢包軟體的設計。

BIP32

提出了管理私鑰的分層方法,透過單一個種子Seed生成主私鑰,透過主私鑰就能推導與維護多個子私鑰。

BIP32 定義的 HD Wallet

此提案,定義Hierarchical Deterministic Wallet (簡稱HD Wallet)分層確定性錢包的規範,利用樹狀結構管理多組公私鑰對,產生了以下好處:

  • 透過一個種子,就可以有序的串起所有的子私鑰,使用者即使使用大量不同的地址(私鑰)來做交易,也可以有序且方便的管理與使用。
  • 備份或轉移所有私鑰至其他錢包軟體,只需要種子即可,而且只需要備份一次,沒有任何私鑰生成時間先後,而備份不同步的問題。
許可權控制
分層確定性錢包讓分層許可制有實現的可能,高層領導團隊掌有主私鑰,分配子私鑰給各部門做使用,高層具有推導出各部門子私鑰的能力,而各部門只能使用自己被分配到子私鑰,進而使用對應地址中的資產,就可達到分層權限控制的效果。
從種子推導至最底層的子私鑰,過程都是使用不可逆的hash算法,因此底層單位即使有子私鑰,是無法推測出高層掌握的主私鑰,也無法推測出其他部門擁有的子私鑰,所以沒有任何越權或是跨權的可能。關於主私鑰
主私鑰是無法直接使用某子私鑰所對應地址的資產,它唯一的目的是重新生成Wallet Tree,去推導出子私鑰,它無法直接簽署交易動用資產。

BIP39

BIP39是基於BIP32的提案,提出了Mnemonic助記詞的概念,將人腦難以記憶的種子Seed,轉化成一串語言可讀的有序字詞,有著以下好處:

  • 語言可讀的助記詞替代種子,使得備份更加人性化。
  • 支持助記詞的錢包軟體,互相之間可以打通轉換,使用者只要有助記詞就可以輕易地更換錢包軟體。
Seed:b90c9906b30f5d7aff5d0e19f782b200a31830d0f8a6ce9c63f67e93eea780b8ea16b761db6011ec5917c66286e1b6327daecbd0c9f235f7b6e802107f58cb7a轉換成助記詞:team duty scale price receive worth flower slab approve laugh seven motion

BIP44

BIP44也是基於BIP32的提案下,替分層路徑定義了規範,賦予樹狀結構各層的代表意義,同時也增加了多幣種的支持,某方面,也可以看做是一種特定的BIP32子私鑰生成的方式。

BIP44所定義的路徑:
m / purpose’ / coin_type’ / account’ / change / address_index

BIP44明確定義了幣種、帳戶、地址的路徑分類,使得只要支持此協議標準的錢包軟體,它們之間的打通轉換會更加相容,另一方面,也是向使用者表示,自己的錢包軟體明確支持多幣種、多帳戶之使用。

助記詞生成器(含分層衍伸路徑)
https://iancoleman.io/bip39/
BIP44幣種列表
https://github.com/satoshilabs/slips/blob/master/slip-0044.md#slip-0044--registered-coin-types-for-bip-0044

BIP32使得錢包軟體可以管理多私鑰,以及備份上只要備份種子即可,而BIP39則是人性化備份種子的方案;BIP44是提議子私鑰生成方式的標準,綜合以上的解決方案,就可滿足錢包軟體支援多個區塊鏈、多幣種、多帳戶的多份私鑰需求,而且私鑰的備份變得相當人性化。

總結

目前的錢包軟體技術方案,奠定了錢包軟體服務可以跨鏈、跨幣與跨軟體互通的基礎,而若該錢包軟體可連線至不同的區塊鏈主網(比特幣、以太坊等)進行互動,我們稱作為多鏈錢包。

但不是每一個錢包軟體服務都是多鏈錢包,並且上述的技術方案實現的狀況,要看每個錢包軟體服務商而定,每一家都可能有不同的服務訴求。

多鏈錢包
也有人稱HD錢包、Multi Coin Wallet、Multi Cryptocurrency Wallet、Universal Wallet等。
單鏈錢包
若只能支持某一區塊鏈的私鑰管理與主網連線的錢包軟體,就是單鏈錢包。

感謝閱讀,有任何問題,歡迎指教!

拍手(claps)按鈕示範

如果喜歡這篇文章,可以透過拍手👏給我鼓勵一下。
*拍手按鈕可以點擊 1–50 次
*長按按鈕會自動增加次數。

歡迎至下方拍手鼓勵,謝謝大家 😄

--

--

Eric Liou

深深著迷於區塊鏈的思維,以相對白話,但不失完整性的方式,讓大家認識區塊鏈。