ETH錢包助記詞、私鑰、Keystore創(chuàng)建原理

簡(jiǎn)介:本文原創(chuàng),對(duì)工作項(xiàng)目中的理解作出總結(jié)

助記詞

助記詞擁有錢包的所有權(quán),可以通過助記詞隨意轉(zhuǎn)移該錢包下的資產(chǎn)而無需密碼。助記詞可以生成很多子錢包,目前大部分以太坊錢包做法是默認(rèn)把助記詞生成的第一個(gè)地址作為默認(rèn)地址,實(shí)際助記詞是可以生成很多地址。

下面是一個(gè)助記詞工具網(wǎng)站,可以輸入助記詞查看所有生成的地址。

https://iancoleman.io/bip39/#english

BIP32

定義 Hierarchical Deterministic wallet (簡(jiǎn)稱 “HD Wallet”中文為分層確定性錢包),是一個(gè)系統(tǒng)可以從單一個(gè) seed 產(chǎn)生一樹狀結(jié)構(gòu)儲(chǔ)存多組 keypairs(私鑰和公鑰)。好處是可以方便的備份、轉(zhuǎn)移到其他相容裝置(因?yàn)槎贾恍枰?seed),以及分層的權(quán)限控制等。

BIP39

將 seed 用方便記憶和書寫的單字表示。業(yè)界一般使用 12 、15、18、21個(gè)單字組成的單詞,,中文稱為助記詞或助記碼。

BIP44

基于 BIP32 的系統(tǒng),賦予樹狀結(jié)構(gòu)中的各層特殊的意義。讓同一個(gè) seed 可以支援多幣種、多帳戶等。

可以通過特定的路徑解析不同幣種錢包,

btc一般是 m/44'/0'/0'/0eth一般是 m/44'/60'/0'/0

附詳細(xì)資料:

https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki

https://github.com/satoshilabs/slips/blob/master/slip-0044.md

以上是錢包生成幾種方法的簡(jiǎn)單介紹,下面是創(chuàng)建錢包的一些業(yè)務(wù)流程

Keyshtore

Keystore不是私鑰,常見于以太坊錢包,一般你創(chuàng)建以太坊錢包后,會(huì)讓你備份Keystore, 它是一串代碼,你可以自己保存為文本或者json格式,日后都可以用任何以太坊錢包打開它。Keystore的本質(zhì)是加密后的私鑰,Keystore必須配合你的錢包密碼來使用,所以說,光備份了Keystore但忘記了錢包密碼也是然并卵。

直接使用以太坊錢包,很少會(huì)直接看到自己的私鑰,而是讓你備份Keystore, 配合錢包密碼來使用。即使黑客獲取了你的Keystore, 還要破解錢包密碼也還是有一定難度的,當(dāng)然錢包密碼也別設(shè)太簡(jiǎn)單。

Keystore可以理解為我們?nèi)粘V械馁~號(hào),而解密Keystore的密碼是賬號(hào)的密碼。

私鑰

私鑰的生成方式是完全隨機(jī)的,隨機(jī)生成這樣的字符串就會(huì)有16的64次方種可能。私鑰

擁有對(duì)應(yīng)地址錢包的所有權(quán),包括可以隨意利用私鑰進(jìn)行資產(chǎn)轉(zhuǎn)移。私鑰跟助記詞的權(quán)限實(shí)際是一樣的,但是私鑰只能控制對(duì)應(yīng)的公鑰,助記詞可以控制對(duì)應(yīng)下的所有地址。

GAS

GAS 是什么?在什么場(chǎng)景下會(huì)用到GAS?

Gas 翻譯成中文就是“燃?xì)狻?,是以太坊世界的燃料,它決定了以太坊網(wǎng)絡(luò)生態(tài)系統(tǒng)的正常運(yùn)行。

一般在執(zhí)行轉(zhuǎn)賬時(shí)需要消耗GAS

Gas 用來衡量執(zhí)行某些動(dòng)作需要多少“工作量”,這些“工作量”就是為了執(zhí)行該動(dòng)作支付給網(wǎng)絡(luò)的費(fèi)用額。通俗理解,Gas 是給礦工的傭金,并以 ETH 支付,無論是交易、執(zhí)行智能合約并啟動(dòng) DApps,還是支付數(shù)據(jù)存儲(chǔ)費(fèi)用,都需要用到 Gas。

Gas由兩個(gè)部分組成: 限制(Gas limit)和價(jià)格(Gas Price)。Gas Limit 是用戶愿意為執(zhí)行某個(gè)操作或確認(rèn)交易支付的最大Gas量(最少21,000)。Gas Price 是 Gwei 的數(shù)量,用戶愿意花費(fèi)于每個(gè) Gas 單位的價(jià)錢。

當(dāng)進(jìn)行每筆交易時(shí),發(fā)送人設(shè)定Gas Limit 和Gas Price,將 Gas Limit*Gas Price ,就得到了ETH交易傭金的成本。

現(xiàn)在,1Gwei≈0.00000002 ETH,所以傭金最少為0.00000002*21000=0.00042ETH,通常情況下,交易設(shè)置的Gas limt 為50000-100000個(gè),總費(fèi)用為 0.001 ETH - 0.002 ETH。

設(shè)置 Gas limint 需要考慮的問題:

不同的操作會(huì)產(chǎn)生不同的 Gas 成本。Gas 用完時(shí),礦工將停止執(zhí)行。如果有剩余 Gas,將立即退還給發(fā)起交易的人員或智能合約創(chuàng)建者。

但是,如果用戶設(shè)置的限制值太低,那么ta的交易被認(rèn)為是無效的,并且會(huì)因?yàn)椤癎as不足”錯(cuò)誤而被取消,并且其中用于計(jì)算的 Gas 不會(huì)退到賬戶。所以無論交易是否通過,發(fā)送者總需要向礦工支付計(jì)算費(fèi)用。

以上是錢包的基本概念,下面是創(chuàng)建錢包的一些業(yè)務(wù)流程


第一,隨機(jī)生成128到258位的隨機(jī)數(shù),我們這里叫做熵;

第二,熵經(jīng)過一定處理方法,生成助記詞;

第三,助記詞經(jīng)過密鑰延伸函數(shù)PBKDF2,生成種子;

第四,種子經(jīng)過HMAC-SHA512算法,生成母密鑰;

第五,通過CKD(child key derivation)函數(shù),母密鑰生成眾多子密鑰。

第六,利用私鑰加密生成Keyshtore

注意:這里有兩個(gè)坑,助記詞中分別可以設(shè)置為有密碼與無密碼,這里提及的密碼是把密碼傳到助記詞里,你會(huì)發(fā)現(xiàn)使用網(wǎng)頁錢包https://www.myetherwallet.com/導(dǎo)入助記詞輸入密碼,會(huì)生成一些新的地址,并無法查詢到你在imtoken上的地址,目前主流錢包的助記詞是無密碼的,而設(shè)置的密碼為Keyshtore密碼與本地密碼。所有助記詞在產(chǎn)品設(shè)計(jì)中有密碼與無密碼之分,如果發(fā)現(xiàn)在其他錢包導(dǎo)入助記詞輸入密碼后找不到原來的地址,請(qǐng)放心,不輸入密碼即可。


微信交流:JonTimfire

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容