什麼是HD錢包?它的分身原理是什麼?

買賣虛擬貨幣

錢包是用於傳送和接受代幣的客戶端,就像我們使用郵箱來管理自己的郵件,我們需要一個客戶端來管理自己的代幣錢包的本質是保管私鑰的工具,私鑰就是一串很長的數字和字母組合的字串,這個字串讓你有權力把自己的數字貨幣送給別人,換句話說,無論誰知道你的私鑰,都可以控制你的數字貨幣。

私鑰也用於生成你的代幣地址 - 這就像郵箱地址,只有知道地址才能給別人傳送代幣。然而,儘管代幣地址是透過私鑰生成的,但是沒有辦法透過檢查數字貨幣地址來確定私鑰是什麼。總而言之,錢包的核心功能是私鑰的建立、儲存和使用。

◆◆錢包的型別◆◆

而私鑰不同的生成方法,則對應著不同的錢包結構,通常可以分為非確定性錢包和確定性錢包。

比特幣最早的客戶端(Satoshi client)就是非確定性錢包,錢包是一堆隨機生成的私鑰的集合。客戶端會預先生成 100 個隨機私鑰,並且每個私鑰只使用一次。每個交易使用一個地址的概念是中本聰提出的。

如果交易比較頻繁,私鑰可能會用光,然後再產生一批私鑰,所以每次完成 100 個交易後,你必須備份新的  wallet.dat  檔案,否則可能會丟失資產。這種錢包難以管理和備份。如果你生成很多私鑰,你必須儲存它們所有的副本。這就意味著這個錢包必須被經常性地備份。每個私鑰都必須備份,否則一旦錢包不可訪問時,無法找回錢包。

確定性錢包則不需要每次轉賬都要備份,確定性錢包的私鑰是對種子進行單向雜湊運算生成的,種子是一串由隨機數生成器生成的隨機數。在確定性錢包中,只要有這個種子,就可以找回所有私鑰,只需備份種子就相當於備份您的所有錢包,所以這個種子也相當重要,一定要備份到安全的地方。

◆◆什麼是HD錢包◆◆

HD 錢包是目前常用的確定性錢包 ,說到 HD 錢包,大家可能第一反應會想到硬體錢包 (Hardware Wallet),其實這裡的 HD 是 Hierarchical Deterministic(分層確定性)的縮寫。

所謂分層,就是一個大公司可以為每個子部門分別生成不同的私鑰,子部門還可以再管理子子部門的私鑰,每個部門可以看到所有子部門裡的幣,也可以花這裡面的幣。也可以只給會計人員某個層級的公鑰,讓他可以看見這個部門及子部門的收支記錄,但不能花裡面的錢,使得財務管理更方便了。

分層確定性的概念早在 BIP32 提案提出。

根據比特幣核心開發者 Gregory Maxwell 的原始描述和討論,Pieter Wuille 在2012 年 02月 11日整理完善提交 BIP32 。直到 2016年 6月 15 日 才被合併到 Bitcoin Core,目前幾乎所有的錢包服務商都整合了該協議。BIP32 是 HD 錢包的核心提案。

透過種子來生成主私鑰,然後派生海量的子私鑰和地址,但是種子是一串很長的隨機數,不利於記錄,所以我們用演算法將種子轉化為一串助記詞 (Mnemonic),方便儲存記錄,這就是 BIP39,它擴充套件了 HD 錢包種子的生成演算法。

BIP43 對 BIP32 樹結構增加了子索引標識 purpose 的擴充套件  m/purpose/coin_type/change/address_index

BIP44的規則使得 HD 錢包非常強大,使用者只需要儲存一個種子,就能控制所有幣種,所有賬戶的錢包。

◆◆HD錢包是如何生成的◆◆

1. 生成由12個單片語成的助記詞

2. 該助記詞使用 PBKDF2 轉化為種子

3. 種子用於使用 HMAC-SHA512 生成根私鑰(也叫主私鑰)

4. 透過根私鑰,生成N對子私鑰和子公鑰,其中節點佈局由BIP44設定

5. 由這些子公鑰生成對應的錢包地址

可以看出 BIP39 生成助記詞的過程非常重要。

至於 BIP39 的安全性,大家不用擔心。如果一個 HD 錢包助記詞是 12 個單詞,一共有 2048 個單詞可能性,如何算出隨機的生成的助記詞所有可能性是一個排列問題,根據公式:n!/( n - r )! ,既 2048!/(2048-12)! = 5.2715379713014884760003093175282 e+39 。

我們可以舉個類比,地球上的沙子數量在大約是1 後面 18 個零。如果你可以每秒生成 一百萬個助記詞,那麼一年可以生成  1000000*60*60*24*365=3.1536e+13,大約需要 1.6715937e+26 年遍歷所有助記詞,這是多少年呢?

總結一下,HD錢包備份時,只要備份主私鑰即可。

HD錢包除了方便備份和管理之外,還有另外一個作用,那就是保護隱私。

使用單個地址錢包,你的所有交易都將與單個地址相關聯,由於區塊鏈所有的交易記錄都是公開的,所以任何人都可以看到看到每個地址的所有交易記錄以及賬戶餘額。

HD 錢包透過在傳送和接收資金時能夠生成新地址,大大提高隱私性,使你的交易難以追蹤。當然匿名性是相對的,現在我們也有隱私性更好的零知識證明演算法。HD 錢包是生成不重複使用地址的方法 ,記住一個種子就可以訪問所有地址的錢而不需要每個地址都備份私鑰。

當然HD 錢包不僅適用於比特幣,HD 錢包可以讓一個錢包同時管理多資產成為可能性。

本文轉載自imToken,作者MakoShan

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;