摘要:錢包概述中文可以翻譯為分層錢包,錢包可以在不需要私鑰情況下運(yùn)用橢圓曲線算法生成大量公鑰。概念是由提出,解決難以抄寫記憶問題,規(guī)范各個(gè)幣種路徑規(guī)范達(dá)成業(yè)界共識(shí)。這個(gè)規(guī)范的目的是設(shè)定一個(gè)分層錢包標(biāo)準(zhǔn),能在不通客戶之間交換。
前序:相信各位區(qū)塊鏈大佬,對(duì)公鑰和私鑰概念已經(jīng)爛熟于心,對(duì)私鑰重要性也諱莫如深。私鑰可以給交易簽名,有了私鑰就有了全部權(quán)限,但原始私鑰沒什么規(guī)律可循,特別不放記憶轉(zhuǎn)移,還容易出錯(cuò)。所以要用一些密碼學(xué)知識(shí)管理。
管理方法 非確定性錢包隨機(jī)生成一個(gè)數(shù)字串作為私鑰,可以使用密碼學(xué)安全的偽隨機(jī)數(shù)生成器,公鑰毫無關(guān)系,缺點(diǎn)當(dāng)有多個(gè)私鑰賬戶時(shí)候(對(duì)于個(gè)專業(yè)的幣圈人事,誰沒有n個(gè)賬戶呢,用于存儲(chǔ)不通用途的幣),必須逐個(gè)備份,導(dǎo)出,導(dǎo)入,極其麻煩。
確定性錢包為了解決非確定性錢包需要逐個(gè)導(dǎo)入問題,提出了一套生成密鑰對(duì)的方法,密鑰由于原始的seed推導(dǎo)出。這樣一個(gè)seed就可以創(chuàng)建多個(gè)公要私鑰對(duì),在備份導(dǎo)入錢包時(shí)候就只需要種子方便抄寫。這個(gè)特性適合收款服務(wù),比如商店收款,為每個(gè)用戶創(chuàng)建一個(gè)收款公鑰匙,也可以用戶給用戶空投等。
HD錢包(Hierachical Deterministic Wallets)概述:中文可以翻譯為分層錢包,HD錢包可以在不需要私鑰情況下運(yùn)用橢圓曲線算法生成大量公鑰。概念是由BIP32(Bitcoin Improvement Proposals)提出,BIP39解決seed難以抄寫記憶問題,BIP44規(guī)范各個(gè)幣種路徑規(guī)范達(dá)成業(yè)界共識(shí)。至此修成正果成為分層錢包的集大成者。如圖:
生成過程簡圖:
熵(128位/256位)→助記詞(12個(gè)/24個(gè)/16個(gè))→種子(512位62byte)→根賬戶私鑰,公鑰,地址→其它層級(jí)賬戶密鑰
根據(jù)上述的順序我們會(huì)先用到BIP39生成助記詞,再用到BIP32產(chǎn)生root,再通過BIP44規(guī)范生成各個(gè)鏈的錢包。所以按此順序介紹三個(gè)BIP提案。
主要描述助記詞代碼,助記詞句子的實(shí)現(xiàn),包括兩部分1.生成助記詞,將其轉(zhuǎn)化為2進(jìn)制種子,種子可以稍后用于使用BIP-0032或類似方法生成確定性錢包。
BIP39提出動(dòng)機(jī):直接生成隨機(jī)種子不久好了么,為什么還要助記詞。與處理錢包種子原始二進(jìn)制或十六進(jìn)制數(shù)字相比助記符對(duì)于人類交互是更優(yōu)越的。可以寫在紙上,記性好的還可以背下來。(在富有的老父親快死時(shí)候也可以,把小兒子教到旁邊口述給兒子,連物理解釋都不用),BIP39就是通過人類可讀轉(zhuǎn)錄傳輸計(jì)算機(jī)生成的隨機(jī)性。這不是將用戶創(chuàng)建的句子(也稱為腦錢包)處理成錢包種子的方法。
助記詞本質(zhì),將一些列難以記住的無規(guī)則的數(shù)字串通過轉(zhuǎn)碼拆分后生成數(shù)字,在于單詞表進(jìn)行映射生成助記詞。
bip39具體實(shí)現(xiàn):
0.準(zhǔn)備包含2000個(gè)單詞的助記詞數(shù)組
生成一個(gè)32倍數(shù)的初始熵,長度為128-256bit之間,叫l(wèi)ength
length/32,計(jì)算為校驗(yàn)碼長度
初始熵+校驗(yàn)碼,每11位進(jìn)行分割(并且整除所以可選的初始128,160,192,224,256)所以對(duì)應(yīng)表為
11bit變?yōu)閕nt類型作為下標(biāo),在2000個(gè)助記詞數(shù)組中找到對(duì)應(yīng)單詞,返回給用戶。
從助記詞生成二進(jìn)制seed,使用PBKDF2函數(shù)生成512bit seed,分為加密鑰和不加密鑰兩種,不加密鑰傳空
種子就是給BIP32使用的種子了
可選初始熵對(duì)照表
初始熵 | 校驗(yàn)位 | 相加 | 助記詞數(shù)量 |
---|---|---|---|
128 | 4 | 132 | 12 |
160 | 5 | 165 | 15 |
192 | 6 | 198 | 18 |
224 | 7 | 231 | 21 |
256 | 8 | 264 | 24 |
錢包可以部分或全部與其它系統(tǒng)共享,每個(gè)系統(tǒng)都有獨(dú)立花錢能力。這個(gè)規(guī)范的目的是設(shè)定一個(gè)分層錢包標(biāo)準(zhǔn),能在不通客戶之間交換。通過一個(gè)共同的種子可以導(dǎo)出任意對(duì)私鑰,私鑰推導(dǎo)采用不可逆算法,只可以由高層級(jí)推導(dǎo)低層級(jí),HD錢包可以在不需要私鑰情況下運(yùn)用橢圓曲線算法生成大量公鑰。
子密鑰派生(CKD)功能:通過父親密鑰和一個(gè)“路徑”可以計(jì)算出子密鑰,可分為以下幾種情況
父私鑰 → 子私鑰 可行
父親公鑰 → 子公鑰 可行
父私鑰 → 子公鑰 可行
父公鑰→ 子私鑰 這是不可能的
具體算法游行缺可以參考bitcoin上,bip32
BIP44通過這種分層(樹狀結(jié)構(gòu))推導(dǎo)出來的秘鑰,通常用路徑來表示,每個(gè)級(jí)別之間用斜杠 / 來表示,由主私鑰衍生出的私鑰起始以“m”打頭。因此,第一個(gè)母密鑰生成的子私鑰是m/0。第一個(gè)公共鑰匙是M/0。第一個(gè)子密鑰的子密鑰就是m/0/1,以此類推。
定義了五個(gè)級(jí)別(一般都只有3級(jí)4級(jí))
m / purpose"/ coin_type"/ account"/ change / address_index
m為固定,purpose目前在bip44預(yù)定使用44
coin_type:指不通幣的種類0代表比特幣,1代表比特幣測試鏈,60代表以太坊,恒星幣148,EOS194
完整幣種類型號(hào)列表:https://github.com/satoshilabs
Account: 代表賬戶索引
changge:常量0用于外部鏈,常量1用于內(nèi)部鏈,就比如網(wǎng)頁商0為想被爬蟲爬到,1為不想被爬蟲爬到。
所以0為想被錢包商展示,1不想被錢包商展示。
address_index:這就是地址索引,從0開始,代表生成第幾個(gè)地址
總結(jié):定義好路徑再通過bit32算法生成相關(guān)的層級(jí)的公私鑰,錢包商拿到助記詞轉(zhuǎn)換成seed也可通過一定的輪尋算法找到助記詞下所有幣種個(gè)數(shù)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/24466.html
摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接理解開發(fā)錢包涉及的原文已更新,請讀者前往原文閱讀如果你還在被錢包搞的一頭霧水,來看看這邊文章吧。所以我們要開發(fā)以太坊錢包同樣需要對(duì)比特幣的錢包提案有所了解。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:理解開發(fā)HD錢包涉及的BIP32、BIP44、BIP39原文已更新,請讀者前往原文閱讀 如果你還在被HD錢包、BIP32、BIP44、BIP39搞的一頭霧水...
摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接理解開發(fā)錢包涉及的原文已更新,請讀者前往原文閱讀如果你還在被錢包搞的一頭霧水,來看看這邊文章吧。所以我們要開發(fā)以太坊錢包同樣需要對(duì)比特幣的錢包提案有所了解。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:理解開發(fā)HD錢包涉及的BIP32、BIP44、BIP39原文已更新,請讀者前往原文閱讀 如果你還在被HD錢包、BIP32、BIP44、BIP39搞的一頭霧水...
摘要:來做一個(gè)詳細(xì)的介紹協(xié)議協(xié)議原英文地址地址定義簡稱,是一個(gè)系統(tǒng)可以從單一個(gè)產(chǎn)生一樹狀結(jié)構(gòu)儲(chǔ)存多組私鑰和公鑰。第二層的特指幣種并且允許多元貨幣錢包中的貨幣在第二個(gè)層級(jí)下有自己的亞樹狀結(jié)構(gòu)。每個(gè)賬戶都是它自己亞樹的根。 我們知道HD(分層確定性)錢包,基于 BIP-32;多幣種和多帳戶錢包,基于 BIP-44;最近比原社區(qū)的錢包開發(fā)者對(duì)比原的BIP-32和BIP-44協(xié)議有疑問,所以我今天就...
摘要:錢包功能一個(gè)錢包通常主要包含的功能有賬號(hào)管理主要是私鑰的管理創(chuàng)建賬號(hào)賬號(hào)導(dǎo)入導(dǎo)出賬號(hào)信息展示如以太幣余額代幣余額。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:[使用 ethers.js 開發(fā)以太坊 Web 錢包 1 - 創(chuàng)建錢包賬號(hào))](https://learnblockchain.cn/20...,請讀者前往原文閱讀 以太坊去中心化網(wǎng)頁錢包開發(fā)系列,將從零開始開發(fā)出一個(gè)可以實(shí)際使用的錢...
摘要:文件如何生成的以太坊是使用對(duì)稱加密算法來加密私鑰生成文件,因此對(duì)稱加密秘鑰注意它其實(shí)也是發(fā)起交易時(shí)需要的解密秘鑰的選擇就非常關(guān)鍵,這個(gè)秘鑰是使用算法推導(dǎo)派生而出。加密推倒的相關(guān)配置是用于加密以太坊私鑰的對(duì)稱加密算法。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:[使用 ethers.js 開發(fā)以太坊 Web 錢包 2 - 賬號(hào) Keystore 文件導(dǎo)入導(dǎo)出)](https://learnb...
閱讀 2321·2021-11-24 10:18
閱讀 3385·2021-09-22 15:35
閱讀 3340·2021-09-13 10:37
閱讀 3766·2021-09-06 15:14
閱讀 2071·2021-09-06 15:02
閱讀 2212·2021-09-02 15:11
閱讀 547·2019-08-30 15:53
閱讀 3075·2019-08-29 16:15