日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MOAC区块链助记词

發布時間:2023/12/31 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MOAC区块链助记词 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

1.什么是助記詞

?

擁有數字貨幣資產的人都知道,私鑰的備份是非常重要的,有私鑰就擁有該私鑰對應賬戶上的所有資產。一般來說私鑰都有 256 位,以 64 個字母數字構成的 16 進制字符串表示。直接抄錄這 64 個字母數字是很容易搞錯的。

?

助記詞是明文私鑰的另一種表現形式, 最早是由BIP39提案提出, 其目的是為了幫助用戶記憶復雜的私鑰 (64位的哈希值)。助記詞一般由12、15、18、21、24個單詞構成, 這些單詞都取自一個固定詞庫, 其生成順序也是按照一定算法而來, 所以用戶沒必要擔心隨便輸入 12 個單詞就會生成一個地址。

?

雖然助記詞和 Keystore 都可以作為私鑰的另一種表現形式, 但與 Keystore 不同的是, 助記詞是未經加密的私鑰, 沒有任何安全性可言, 任何人得到了你的助記詞, 可以不費吹灰之力的奪走你的資產。

?

2.BIP

?

要弄清楚助記詞與私鑰的關系,得清楚BIP協議,是Bitcoin Improvement Proposals的縮寫,意思是Bitcoin 的改進建議,用于提出 Bitcoin 的新功能或改進措施。BIP協議衍生了很多的版本,主要有BIP32、BIP39、BIP44。

?

BIP32

?

BIP32是 HD錢包的核心提案,通過種子來生成主私鑰,然后派生海量的子私鑰和地址,種子是一串很長的隨機數。

?

BIP39

?

由于種子是一串很長的隨機數,不利于記錄,所以我們用算法將種子轉化為一串12 ~ 24個的單詞,方便保存記錄,這就是BIP39,它擴展了 HD錢包種子的生成算法。

?

BIP44

?

BIP44 是在 BIP32 和 BIP43 的基礎上增加多幣種,提出的層次結構非常全面,它允許處理多個幣種,多個帳戶,每個帳戶有數百萬個地址。

?

在BIP32路徑中定義以下5個級別:

m/purpse'/coin_type'/account'/change/address_index

?

purpose:在BIP43之后建議將常數設置為44'。表示根據BIP44規范使用該節點的子樹。

?

Coin_type:幣種,代表一個主節點(種子)可用于無限數量的獨立加密幣,如比特幣,Litecoin或Namecoin。此級別為每個加密幣創建一個單獨的子樹,避免重用已經在其它鏈上存在的地址。開發人員可以為他們的項目注冊未使用的號碼。

?

Account:賬戶,此級別為了設置獨立的用戶身份可以將所有幣種放在一個的帳戶中,從0開始按順序遞增。

?

Change:常量0用于外部鏈,常量1用于內部鏈,外部鏈用于錢包在外部用于接收和付款。內部鏈用于在錢包外部不可見的地址,如返回交易變更。

?

Address_index:地址索引,按順序遞增的方式從索引0開始編號。

?

BIP44的規則使得 HD錢包非常強大,用戶只需要保存一個種子,就能控制所有幣種,所有賬戶的錢包,因此由BIP39 生成的助記詞非常重要,所以一定安全妥善保管,那么會不會被破解呢?如果一個 HD 錢包助記詞是 12 個單詞,一共有 2048 個單詞可能性,那么隨機的生成的助記詞所有可能性大概是5e+39,因此幾乎不可能被破解。

?

HD錢包

?

通過BIP協議生成賬號的錢包叫做HD錢包。這個HD錢包,并不是Hardware Wallet硬件錢包,這里的 HD 是Hierarchical Deterministic的縮寫,意思是分層確定性錢包 。

?

以太坊對BIP的支持

BIP是用于提出 Bitcoin 的新功能或改進措施,那么對于以太坊來說如何支持呢?

以太坊在EIPs/issues/85中討論的結果,也采用了 BIP32 的做法,提議 HD 路徑為 :m/44'/60'/0'/0/n,n 是第 n 次生成地址。

?

3.助記詞到私鑰的步驟

?

3.1 從熵到助記詞

隨機生成一個128到258位的數字,叫做熵; 熵通過SHA256哈希得一個值,取前面的幾位(熵長/32),記為y; 熵和y組成一個新的序列,將新序列以11位為一部分,已經預先定義2048個單詞的字典做對應; 生成的有順序的單詞組就是助記詞。

?

3.2 從助記詞生成種子

助記詞表示長度為128至256位的熵。?通過使用密鑰延伸函數PBKDF2,熵被用于導出較長的(512位)種子。

?

PBKDF2的基本原理是通過一個偽隨機函數(例如HMAC函數),把明文和一個鹽值作為輸入參數,然后重復進行運算,并最終產生密鑰。如果重復的次數足夠大,破解的成本就會變得很高。而鹽值的添加也會增加“彩虹表”攻擊的難度。

?

比特幣錢包中,PBKDF2函數的第一個參數是助記詞,第二個參數鹽,由字符串常數“助記詞”與可選的用戶提供的密碼字符串連接組成。使用HMAC-SHA512算法,使用2048次哈希來延伸助記符和鹽參數,產生一個512位的值作為其最終輸出。?這個512位的值就是種子。

?

3.3 從種子到母密鑰

512位分成平均分成兩部分,左邊的256位為母私鑰,右邊的256位為鏈碼。母私鑰、鏈碼和索引號,CKD(child key derivation)函數去從母密鑰衍生出子密鑰。

?

3.4 從母密鑰到子密鑰

母密鑰、鏈碼、索引合并在一起并且用HMAC-SHA512函數散列之后可以產生512位的散列。所得的散列可被拆分為兩部分。散列右半部分的256位產出可以給子鏈當鏈碼。左半部分256位散列以及索引碼被加載在母私鑰上來衍生子私鑰。在圖中,我們看到這個說明——索引集被設為0去生產母密鑰的第0個子密鑰(第一個通過索 引)。

?

3.5 擴展密鑰

母密鑰和鏈碼結合叫做擴展密鑰,擁有擴展私鑰可以推導出子私鑰,擴展公鑰可以推導出子公鑰。擁有擴展公鑰就可以推導出子公鑰,在服務器不需要母私鑰也可以,這樣就更安全更方便。但是還有一個問題,那就是擴展公鑰包含有鏈碼,如果子私鑰被知道或者被泄漏的話,鏈碼就可以被用來衍生所有的其他子私鑰。簡單地泄露的私鑰以及一個母鏈碼,可以暴露所有的子密鑰。更糟糕的是,子私鑰與母鏈碼可以用來推斷母私鑰。

基本流程見下圖:

?

?

4.生成助記詞

生成不同個數的助記詞代碼:

?

運行結果:

?

5.助記詞編解碼

5.1 編碼

運行結果:

?

5.2 解碼

?

運行結果:

?

5.3 驗證助記詞

運行結果:

?

6.生成隨機數種子

?

運行結果:

?

這里是個異步過程,因此代碼修改為:

運行結果:

?

7.生成私鑰

?

運行結果:

?

總結

以上是生活随笔為你收集整理的MOAC区块链助记词的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。