當前位置:首頁 » 以太坊知識 » 以太坊bip39助記詞

以太坊bip39助記詞

發布時間: 2023-11-09 01:12:51

1. 什麼是HD錢包

簡介
HD Wallets:全稱Hierarchical Deterministic Wallets,中文名稱分層確定性錢包,是目前廣泛使用的虛擬貨幣錢包標准。下面我就來給大家講講HD Wallets的工作機制以及開發原理。

BIPS
BIPs 全名Bitcoin Improvement Proposals,是提出 Bitcoin 的新功能或改進措施的文件。詳情可見: https://github.com/bitcoin/bips
BIP32, BIP39, BIP44 共同定義了目前被廣泛使用的 HD Wallets,包含其理念、設計動機、實現方式、實例等。定義Hierarchical Deterministic Wallets。通過種子來生成主私鑰,然後派生海量的子私鑰和地址。

BIP39:Mnemonic code for generating deterministic keys
將 seed 用方便記憶和書寫的單詞表示。一般由 12 個單片語成,稱為 mnemonic code,中文稱為助記詞。
符合BIP39標準的助記詞可以是 3個、6個、9個、12個、15個、18個、21個和24個單詞。它們所對應的強度分別是:2048(3次方) 、2048(6次方) ... 2048(24次方) ,一般採用12個單詞,強度為:2048(12次方)

BIP32
HD Wallets從一個 seed 生成一個樹狀結構儲存多組 keypairs(私鑰和公鑰),進而根據樹狀結構具體結點上的keypair生成具體的錢包(如BTC錢包、ETH錢包)。
分層是指一個seed可以生成一個有層級關系的樹狀結構儲存多組keypairs,子節點是由父節點根據一定的演算法派生出來的。 例如,一個大公司可以為一級部門生成不同的私鑰,一級部門可以再為自己的二級部門生成不同的私鑰。由於二級部門的私鑰是由所屬的一級部門的私鑰派生的,每個一級部門可以擁有管理自己二級部門私鑰的許可權,即可以花裡面的幣。也可以只給會計人員某個層級的公鑰,讓他可以看到這個部門的收支記錄,但不能花裡面的錢,使得財務管理更方便了。

BIP44:Multi-Account Hierarchy for Deterministic Wallets
基於 BIP32 的系統,賦予樹狀結構中的各層特殊的意義。讓同一個 seed 可以支持多幣種、多帳戶等。
各層定義如下:

其中的 purporse' 固定是 44',代表使用 BIP44。而 coin_type' 用來表示不同幣種,例如Bitcoin就是 0',Ethereum是60'。

例如:
m/44'/0'/0'/0/0代表一個BTC錢包path
m/44'/60'/0'/0/0代表一個ETH錢包path

生成HD Wallets錢包的過程簡單來說以下4步就可以搞定:

HD Wallets錢包的優勢有哪些?
1)方便備份;
2)在不同的應用間使用;
3)可同時管理多個錢包;
4)可同時管理多種幣;
5)支持分層的許可權控制;
6)可實現私鑰離線存放,更安全。

2. 一文看懂錢包助記詞和根私鑰的關系

在最近的《區塊鏈核心成員》的課程答疑中,講師講的最多的還是加密貨幣的密碼機制。其中有好幾個問題是關於私鑰和助記詞的。比如:

簡單地說,私鑰就是一個256位的隨機數。這個隨機數的產生是錢包功能之一。也就是說,錢包內置了密碼級別的隨機數產生器,保證產生的隨機數是沒有規律可循的,也就是說不易破解的。注意錢包是在用戶終端運行的,產生的私鑰就保存在用戶終端,不會也不應該上傳給錢包公司。這一點非常重要。大家盡量要使用開源的,被公開考驗過的錢包軟體,保證安全。

進一步說,現在的絕大多數錢包都是確定性錢包,它首先產生一個根私鑰,而後根據這個根私鑰可以產生無數的派生私鑰,我們的錢包地址就是這些派生私鑰所對應的公鑰經過運算得到的地址。演算法是固定的,因此地址也就是固定的。那麼,這里,最重要的就是根私鑰了。因為有了根私鑰,根據固定的演算法,就可以求出派生私鑰,一切都可以簡單地計算出來。

這里注意,根私鑰不一定要是256位的。可以是128位,或196位或其他位數,只要強度足夠大(一般要求至少128位)就行,而由其計算出來的派生私鑰則一定是256位的。

根私鑰與助記詞是一一對應的關系。也就是說一個根私鑰就對應一組助記詞,一組助記詞也對應一個根私鑰。兩者可以簡單運算出來。

根私鑰與助記詞之間的對應關系可以查看 BIP39 (BIP的意思是比特幣的改進建議,BIP39是正式發布的第39號建議)。BIP39是一部字典,這個字典有各種語言版本,我們最感興趣的就是中文版了。當然還有英文,韓文,德文,法文,日文等等。這個字典什麼樣呢?很簡單,每本字典都是一個模子,都包含2048個常用字(比如中文版)或單詞(比如英文版),不多不少,就是2048個。每個字都有一個編號,從0到2047,就這么多。其他啥也沒有。

那麼這個字典表示什麼呢?就是表示一個對應關系,也就是說通過字可以查編號,或者通過編號可以查到字。

好了,學過計算機或者了解2進制的朋友,當然知道2048(0~2047)意味著什麼,很簡單,就是2的11次方,也就是說11位2進制數可以表示0到2047。其實這就是助記詞和根私鑰的關系。

也就是說每一個字表示一個11位2進制數,或者說一個11位2進制數通過查字典就知道它表示哪個字。舉個例子來說,我們產生了一個128位的根私鑰,這樣從頭開始,每11位11位地分開,這樣我們就有了11個11位二進制碼,還剩下7位,咋辦?好辦。把最後7位也湊成11位就行了,差4位就補上。這4位正好可以為128為做校驗來保證正確性。整個過程是這樣:

那助記詞回推私鑰也就簡單了,這樣:

更多細節可以參看我的文章:
數字貨幣入門 之 錢包原理及錢包安全

3. 一個助記詞為什麼可以生成多少個以太地址

很多個。一個助記詞可以生成多個以太岩彎地址。是因為以太坊採用的是備棗謹基於BIP39標準的助記詞生成方案。這種方案使用了一仿基種稱為「確定性錢包」的技術,即通過一個種子(由助記詞生成)來生成多個密鑰對,每個密鑰對對應一個以太地址。

4. btc ETH錢包助記片語合多少億

BIP39詞庫裡面一共有2048個單詞,如果我們從中選擇24個單詞作為助記詞的話。那麼把這2048個單詞進行排列組合,那麼可以通過公式2048!/(2048-24)!得到。但是這個數量級竟然是10的79次方。10的79次方是一個什麼概念呢?

宇宙中原子的數量大概就在10的78次方到10的82次方之間。也就是說隨機從BIP39詞庫裡面的2048個單詞中選擇24個進行排列組合,得到的答案的量級和宇宙的原子數量是差不多的等級。
我們要想從這2048個單詞中蒙到一個比特幣錢包助記詞的概率大概是677000000億除以1*10的78次方,得到的結果是6.77e的-70次方。這是一個非常非常非常小的數字。因此要想從2048個單詞里蒙中1個比特幣錢包的概率已經是非常非常低了,更不要說蒙到了中本聰的錢包。
當然也不排除運氣的成分,萬一你一下就中了中本聰錢包的助記詞。那麼你確實能夠瞬間財富自由,而且更重要的是,你還可以騙大家說你就是中本聰。所以,只要你有毅力,有魄力,那麼大可以嘗試一下。畢竟有一句話說得非常好:夢想還是要有的,萬一見鬼了呢。

5. 【概念】私鑰、助記詞和keystore到底是什麼關系

使用了很久的錢包,用得有點誠惶誠恐,錢包除了用於轉賬外,都不怎麼敢動它,怕誤操作搞不好就空了,所以大部分都在交易所,不敢提。這也間接印證了李笑來老師的一句話:

在申請錢包時,當然看過不少資料,老老實實地記下了私鑰、助記詞,備份了keystore,還放在兩個U盤里備份。但對私鑰、助記詞和keystore是一知半解的,也不知道他們到底什麼關系。如果不是要了解EOS映射,我可能一直不會動錢包,也不會去了解它們。

下面就一個個來好好學習一下這些概念。

私鑰是由64位十六進制的字元組成,每個私鑰是隨機生成的,隨機生成這樣的字元串有2的256次方種可能,這個數字已經超過了宇宙中原子的個數,用「暴力破解」的方式逐一遍歷可能的私鑰,幻想能碰到一個有效的且有幣的私鑰,可以說是不可能,就算是量子計算機也沒用。

一個錢包只有一個私鑰且不能修改。

在導入錢包中,輸入私鑰並設置一個密碼(不用輸入原密碼),就能進入錢包並擁有這個錢包的掌控權,就可以把錢包中的代幣轉移走。

由於私鑰64位,長得太難看,沒有可讀性,而私鑰的備份在電腦上復制起來容易,手抄下來就比較麻煩,但私鑰保存在聯網的電腦上不安全,有被其他人看到的風險,於是有了助記詞工具。

助記詞是明文私鑰的另一種表現形式,最早是由BIP39提案提出,其目的是為了幫助用戶記憶復雜的私鑰 (64位的哈希值)。助記詞一般由12、15、18、21個單詞構成,這些單詞都取自一個固定詞庫, 其生成順序也是按照一定演算法而來,所以用戶沒必要擔心隨便輸入12個單詞就會生成一個地址。助記詞是未經加密的私鑰, 沒有任何安全性可言,任何人得到了你的助記詞,可以不費吹灰之力的奪走你的資產。所以在用戶在備份助記詞之後,一定要注意三點:

助記詞一般會在你創建新錢包的時候出現一次,後面就再也不會出現了,所以創建新錢包時一定要把助記詞抄下來,想辦法備份。最好不要用屏幕截圖或保存在電腦里,因為只要泄露,獲取了你的助記詞就等於獲取了私鑰,你的錢包就成了別人的錢包。

簡而言之:助記詞等於私鑰,絕對不能泄露。

keystore常見於以太坊錢包,是你獨有的、用於簽署交易的以太坊私鑰的加密文件。keystore是一串Json格式的字元串,可以用任何以太坊錢包打開它。keystore必須配合你的錢包密碼來使用,備份了keystore同時別忘了備份錢包的密碼。

用戶可以使用備份的助記詞,重新導入imToken之類的錢包工具,用新的密碼生成一個新的Keystore,可以用這種方法來修改錢包密碼。

助記詞=密鑰=keystore+密碼 !保管好私鑰或者助記詞不被泄露,或是保存好keystore+記住密碼,你才真正擁有了虛擬資產。

再來一個比較形象的比喻。

概念清楚之後,瞬間感覺輕松多了。再也不用擔心因為不明白而擔心操作失誤的問題。最重要的是將私鑰、助記詞和keystore備份好,盡量離線備份多份,這樣才能保證賬號的安全。

1、 科普 | 什麼是以太坊私鑰儲存(Keystore)文件?
2、 如何妥善備份你的以太坊錢包?
3、 幣圈名詞:地址、密碼、私鑰、助記詞,你真的分清楚了嗎
4、 「地址、密碼、私鑰、助記詞、Keystore 」那些事

6. 【HD-新錢包】BIP39生成助記詞

通過九個步驟即可生成錢包助記詞和種子:

> 步驟 1~6 生成助記詞

> 步驟 7~9 把前六步生成的助記詞轉化為 BIP32 種子

(步驟看下圖:)

在上面的例子中,我們選取了長度為128位的熵,來生成了有12個單詞的助記碼。在實際的應用中,熵的長度越長,校驗碼的長度和助記詞的長度也會相應的增長。下圖展示了熵數據的大小和助記詞的長度之間的關系:

步驟一.隨機序列的長度為【128,160,192,224,256】。(熵一定是32的倍數,so熵是16進制數的序列)

步驟二.校驗和的長度為【4,5,6,7,8】。(熵/32=校驗和)

步驟三+步驟四:隨機序列一定是11的倍數,平均劃分為不同的11位倍數。

步驟五:與2048個單詞的預定義字典作對應。

步驟六:生成助記詞的數量:(熵+校驗和)/11=助記詞的數量。

參考內容:

1、本文部分內容摘自《精通比特幣》第一版中譯本,特此說明並致謝。

7. BIP39:助記詞

BIP39是SEED的生成演算法.如果你用過比特幣錢包應用,很可能它會為你生成一個助記符。這樣的助記符可以用來替代私鑰,並且可以被用於生成私鑰。用「有意義的」助記詞代替無意義的數字,也就是「密語種子」,密語種子更加便於記憶和抄錄,它可以轉化成適用於BIP32的「數字種子」。構造Script.ScriptType.P2PKH類型的鑰匙串KeyChainGroup

DeterministicSeed 第三個參數是密碼,默認為空,試著自己加了密碼也ok,總之不影響隨機熵的創建。從SecureRandom創建隨機熵

對string集合進行加鹽操作,salt隨機,用PBKDF2SHA512加密演算法加密.

PBKDF2SHA512 助記詞+鹽進行2048次sha256每次產生的seed都是不同的!
https://iancoleman.io/bip39/?#english 翻牆查看,把 mnemonic code 記錄下來好好保存,就會是一個冷錢包(指不連網路的錢包,所以安全很多)。可以使用產生出來的 address 收送錢。

8. 關於錢包助記詞

昨天發生了用戶在eostea注冊賬號後私鑰被盜的事件,原因據說是eostea為用戶提供了助記詞功能,用戶可以自己選擇助記詞,如果用戶不輸入助記詞,就會生成一個默認的私鑰。這樣的私鑰誰都算得出來,用戶的賬號當然就很容易被控制了。

如果這事屬實,說明eostea乾的活太不專業了:助記詞不該由用戶輸入。實際上,錢包提供助記詞功能是有一套標準的,那就是比特幣的BIP39。讓用戶輸入助記詞,很容易產生碰撞,就是說不同的賬號使用同樣的私鑰,這是必須避免的。解決的方法是,助記詞必須來自一個標準的2048個單詞的詞庫( https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt ),給用戶提供的12個助記詞(也可以是24個)是系統用強隨機函數生成,以保證每個賬戶取得的助記詞都不相同。當用戶導入助記詞時,錢包要檢查用戶輸入的12個單詞是否來自2048詞庫,不是則拒絕生成私鑰。

對於人類來說,記住那一長串私鑰太難了,記助記詞相對簡單些,很多人喜歡用助記詞。從 助記詞 到 種子 再到 最終的私鑰 也是有一套標準的,那就是BIP44(HD錢包)。簡單點說,BIP44的關鍵是私鑰的推導路徑(derived path),不同幣種按照不同的路徑生成自己的私鑰,BIP44規定比特幣的路徑是m/44'/0'/0'/0,以太幣是m/44'/60'/0'/0,EOS是m/44'/194'/0'/0。只要錢包遵守BIP44,那麼相同的助記詞在不同的錢包APP里會算出相同的私鑰,保證了錢包的兼容性。而且如果用戶有多個幣種的話,記住一套助記詞就可以了,錢包隨時隨地能為用戶生成相應的私鑰。

GREATWALLET錢包嚴格遵循BIP44、BIP39標准為用戶生成助記詞,記住一套助記詞,省去記多個幣種私鑰的麻煩,非常方便實用。歡迎使用GREATWALLET錢包,訪問 http://greatwallet.io  或者  https://greatwallet.io .目前它對手機瀏覽器支持得還不夠好,請使用桌面瀏覽器。

關於GREATWALLET錢包, 這里 有一篇簡單的介紹。

(文中如有錯誤請同行指正)

熱點內容
未來有和比特幣同水平投資 發布:2024-11-14 23:11:12 瀏覽:378
懷舊服挖礦245以後去貼吧 發布:2024-11-14 23:11:05 瀏覽:125
以太坊貓咪在哪買 發布:2024-11-14 22:52:02 瀏覽:201
道奇霸王龍trx對比謝爾比f150 發布:2024-11-14 22:33:07 瀏覽:740
星露穀物語挖礦下不去 發布:2024-11-14 22:21:17 瀏覽:91
數字貨幣能否兌換紙幣 發布:2024-11-14 22:15:51 瀏覽:498
幣圈場外交易手續費 發布:2024-11-14 22:15:37 瀏覽:307
amd顯卡rx580挖礦 發布:2024-11-14 21:53:18 瀏覽:114
貝爾鏈礦機停了 發布:2024-11-14 21:49:10 瀏覽:436
去月子中心浪費錢 發布:2024-11-14 21:38:34 瀏覽:134