欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

當(dāng)前位置:主頁(yè) > 區(qū)塊鏈 > 錢包知識(shí) > 加密貨幣錢包助記詞

HD加密貨幣錢包助記詞所涉及的 BIP32、BIP44、BIP39介紹

2025-08-21 16:26:20 | 來(lái)源: | 作者:佚名
本文介紹了BIP32、BIP39和BIP44在加密貨幣錢包中的作用,BIP32提供了一種通過(guò)種子生成無(wú)限私鑰的分層確定性方法,BIP39通過(guò)助記詞簡(jiǎn)化種子備份,BIP44則定義了多幣種錢包的路徑規(guī)范,使得管理不同加密貨幣變得更加便捷和安全

引言

錢包是很多人第一次接觸以太坊或其他虛擬貨幣的地方。無(wú)論是用手機(jī)還是瀏覽器的錢包,相信很多人都對(duì)一串陌生的單字感到好奇而且很重要還要備份。這是源于比特幣中錢包的設(shè)計(jì),采用第三機(jī)制的錢包通常稱為HD錢包。

隨著比特幣區(qū)塊鏈的發(fā)展,人們已經(jīng)不滿足于,只有一個(gè)賬號(hào)的情況,有些人會(huì)有好幾個(gè)賬戶,但是這就出現(xiàn)一個(gè)問(wèn)題,我有幾個(gè)賬號(hào),就要保存幾個(gè)私鑰,這就特別麻煩和不友好,所以,就出現(xiàn)了bip32確定性算法,該算法可以讓你只有同一個(gè)種子,就可以生成無(wú)數(shù)個(gè)私鑰和地址,這就大大方便了用戶的使用。但是這個(gè)種子,也比較長(zhǎng),用戶使用起來(lái)也比較繁瑣,這就出現(xiàn)了bip39,它是使用助記詞的方式,生成種子的,這樣用戶只需要記住,12個(gè)單詞(3,6,9,12,15,18,21,24支持這些單詞數(shù),目前使用較廣泛的是12和24),這就有大大提高了用戶使用的便利性。又隨著區(qū)塊鏈發(fā)展,市面上出現(xiàn)了很多幣種,之前的確定性算法只是針對(duì)比特幣的,也就是說(shuō)只支持一種幣種,用戶想用同一個(gè)種子,管理不同幣種,這就促使了bip44協(xié)議的出現(xiàn),它是基于bip32協(xié)議的,它給bip32的路徑,賦予了不同的意義,很好的解決了多幣種,多地址的問(wèn)題。

協(xié)議官方鏈接如果想詳細(xì)的了解這些協(xié)議,請(qǐng)查看官方文檔(解析的最清楚)

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

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

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

驗(yàn)證網(wǎng)站:https://iancoleman.io/bip39/

數(shù)字錢包概念

錢包用來(lái)存錢的,在區(qū)塊鏈中,我們的數(shù)字資產(chǎn)都會(huì)對(duì)應(yīng)到一個(gè)賬戶地址上, 只有擁有賬戶的鑰匙(私鑰)才可以對(duì)資產(chǎn)進(jìn)行消費(fèi)(用私鑰對(duì)消費(fèi)交易簽名)。
私鑰和地址的關(guān)系如下:

一句話概括下就是:私鑰通過(guò)橢圓曲線生成公鑰, 公鑰通過(guò)哈希函數(shù)生成地址,這兩個(gè)過(guò)程都是單向的。

因此實(shí)際上,數(shù)字錢包實(shí)際是一個(gè)管理私鑰(生成、存儲(chǔ)、簽名)的工具,注意錢包并不保存資產(chǎn),資產(chǎn)是在鏈上的。

如何創(chuàng)建賬號(hào)

創(chuàng)建賬號(hào)關(guān)鍵是生成一個(gè)私鑰, 私鑰是一個(gè)32個(gè)字節(jié)的數(shù), 生成一個(gè)私鑰在本質(zhì)上在1到2^256之間選一個(gè)數(shù)字。
因此生成密鑰的第一步也是最重要的一步,是要找到足夠安全的熵源,即隨機(jī)性來(lái)源,只要選取的結(jié)果是不可預(yù)測(cè)或不可重復(fù)的,那么選取數(shù)字的具體方法并不重要。

比如可以擲硬幣256次,用紙和筆記錄正反面并轉(zhuǎn)換為0和1,隨機(jī)得到的256位二進(jìn)制數(shù)字可作為錢包的私鑰。

從編程的角度來(lái)看,一般是通過(guò)在一個(gè)密碼學(xué)安全的隨機(jī)源(不建議大家自己去寫一個(gè)隨機(jī)數(shù))中取出一長(zhǎng)串隨機(jī)字節(jié),對(duì)其使用SHA256哈希算法進(jìn)行運(yùn)算,這樣就可以方便地產(chǎn)生一個(gè)256位的數(shù)字。

實(shí)際過(guò)程需要比較下是否小于n-1(n = 1.158 * 10^77, 略小于2^256),我們就有了一個(gè)合適的私鑰。否則,我們就用另一個(gè)隨機(jī)數(shù)再重復(fù)一次。這樣得到的私鑰就可以根據(jù)上面的方法進(jìn)一步生成公鑰及地址。

BIP32、BIP39、BIP44

BIP全稱是Bitcoin Improvement Proposals,是提出比特幣的新功能或改進(jìn)措施的文件。盡管任何人提出,經(jīng)過(guò)審核后公布在bitcoin/bips上。BIP和比特幣的關(guān)系,就像是RFC之于互聯(lián)網(wǎng)。

而其中的BIP32、BIP39、BIP44共同定義了目前被廣泛使用的HD錢包,包含其設(shè)計(jì)動(dòng)機(jī)和理念、實(shí)作方式、實(shí)例等。

BIP32:定義分層確定性錢包(簡(jiǎn)稱“HD Wallet”),是一個(gè)系統(tǒng)可以從單個(gè)種子 生成一樹狀結(jié)構(gòu)存儲(chǔ)多組密鑰對(duì)(私鑰和公鑰)。好處是可以方便的備份、轉(zhuǎn)移到其他相容裝置因?yàn)椋ǘ贾恍枰N子),以及分層的權(quán)限等。

BIP39:將種子用方便記憶和書寫的單字表示。一般由12個(gè)單字組成,稱為助記碼(詞組),中文稱為助記詞或助記碼。例如:

rose rocket invest real refuse margin festival danger anger border idle brow

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

m / purpose' / coin_type' / account' / change / address_index

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

BIP32

錢包也是一個(gè)私鑰的容器,按照上面的方法,我們可以生成一堆私鑰(一個(gè)人也有很多賬號(hào)的需求,可以更好保護(hù)隱私),而每個(gè)私鑰都需要備份就特別麻煩的。

最早期的比特幣錢包就是就是這樣,還有一個(gè)昵稱:“Just a Bunch Of Keys(一堆私鑰)“

為了解決這種麻煩,就有了BIP32 提議: 根據(jù)一個(gè)隨機(jī)數(shù)種子通過(guò)分層確定性推導(dǎo)的方式得到n個(gè)私鑰,這樣保存的時(shí)候,只需要保存一個(gè)種子就可以,私鑰可以推導(dǎo)出來(lái),如圖:

 

(圖來(lái)自精通比特幣)

上圖中的孫秘鑰就可以用來(lái)簽發(fā)交易。

補(bǔ)充說(shuō)明下 BIP: Bitcoin Improvement Proposals 比特幣改進(jìn)建議, bip32是第32個(gè)改進(jìn)建議。
BIP32提案的名字是:Hierarchical Deterministic Wallets, 就是我們所說(shuō)的HD錢包。

來(lái)分析下這個(gè)分層推導(dǎo)的過(guò)程,第一步推導(dǎo)主秘鑰的過(guò)程:

 

根種子輸入到HMAC-SHA512算法中就可以得到一個(gè)可用來(lái)創(chuàng)造主私鑰(m) 和 一個(gè)主鏈編碼( a master chain code)這一步生成的秘鑰(由私鑰或公鑰)及主鏈編碼再加上一個(gè)索引號(hào),將作為HMAC-SHA512算法的輸入繼續(xù)衍生出下一層的私鑰及鏈編碼,如下圖:

 

衍生推導(dǎo)的方案其實(shí)有兩個(gè):一個(gè)用父私鑰推導(dǎo)(稱為強(qiáng)化衍生方程),一個(gè)用父公鑰推導(dǎo)。同時(shí)為了區(qū)分這兩種不同的衍生,在索引號(hào)也進(jìn)行了區(qū)分,索引號(hào)小于2^31用于常規(guī)衍生,而2^31到2^32-1之間用于強(qiáng)化衍生,為了方便表示索引號(hào)i’,表示2^31+i。

因此增加索引(水平擴(kuò)展)及 通過(guò)子秘鑰向下一層(深度擴(kuò)展)可以無(wú)限生成私鑰。

注意, 這個(gè)推導(dǎo)過(guò)程是確定(相同的輸入,總是有相同的輸出)也是單向的,子密鑰不能推導(dǎo)出同層級(jí)的兄弟密鑰,也不能推出父密鑰。如果沒(méi)有子鏈碼也不能推導(dǎo)出孫密鑰?,F(xiàn)在我們已經(jīng)對(duì)分層推導(dǎo)有了認(rèn)識(shí)。

一句話概括下BIP32就是:為了避免管理一堆私鑰的麻煩提出的分層推導(dǎo)方案。

秘鑰路徑及BIP44

通過(guò)這種分層(樹狀結(jié)構(gòu))推導(dǎo)出來(lái)的秘鑰,通常用路徑來(lái)表示,每個(gè)級(jí)別之間用斜杠 / 來(lái)表示,由主私鑰衍生出的私鑰起始以“m”打頭。因此,第一個(gè)母密鑰生成的子私鑰是m/0。第一個(gè)公共鑰匙是M/0。第一個(gè)子密鑰的子密鑰就是m/0/1,以此類推。

BIP44則是為這個(gè)路徑約定了一個(gè)規(guī)范的含義(也擴(kuò)展了對(duì)多幣種的支持),BIP0044指定了包含5個(gè)預(yù)定義樹狀層級(jí)的結(jié)構(gòu):
m / purpose' / coin' / account' / change / address_indexm是固定的, Purpose也是固定的,值為44(或者 0x8000002C)
Coin type這個(gè)代表的是幣種,0代表比特幣,1代表比特幣測(cè)試鏈,60代表以太坊完整的幣種列表地址:https://github.com/satoshilabs/slips/blob/master/slip-0044.mdAccount代表這個(gè)幣的賬戶索引,從0開始
Change常量0用于外部(收款地址),常量1用于內(nèi)部(也稱為找零地址)。外部用于在錢包外可見(jiàn)的地址(例如,用于接收付款)。內(nèi)部鏈用于在錢包外部不可見(jiàn)的地址,用于返回交易變更。 (所以一般使用0)
address_index這就是地址索引,從0開始,代表生成第幾個(gè)地址,官方建議,每個(gè)account下的address_index不要超過(guò)20

根據(jù) EIP85提議的討論以太坊錢包也遵循BIP44標(biāo)準(zhǔn),確定路徑是m/44'/60'/a'/0/na 表示帳號(hào),n 是第 n 生成的地址,60 是在 SLIP44 提案中確定的以太坊的編碼。所以我們要開發(fā)以太坊錢包同樣需要對(duì)比特幣的錢包提案BIP32、BIP39有所了解。

一句話概括下BIP44就是:給BIP32的分層路徑定義規(guī)范

示例

coinaccountchangeaddresspath
Bitcoinfirstexternalfirstm / 44’ / 0’ / 0’ / 0 / 0
Bitcoinfirstexternalsecondm / 44’ / 0’ / 0’ / 0 / 1
Bitcoinfirstinternalsecondm / 44’ / 0’ / 0’ / 1 / 1
Bitcoin Testnetfirstexternalfirstm / 44’ / 1’ / 0’ / 0 / 0
Bitcoin Testnetsecondexternalfirstm / 44’ / 1’ / 1’ / 0 / 0

BIP39

BIP32 提案可以讓我們保存一個(gè)隨機(jī)數(shù)種子(通常16進(jìn)制數(shù)表示),而不是一堆秘鑰,確實(shí)方便一些,不過(guò)用戶使用起來(lái)(比如冷備份)也比較繁瑣,這就出現(xiàn)了BIP39,它是使用助記詞的方式,生成種子的,這樣用戶只需要記住12(或24)個(gè)單詞,單詞序列通過(guò) PBKDF2 與 HMAC-SHA512 函數(shù)創(chuàng)建出隨機(jī)種子作為 BIP32 的種子。

可以簡(jiǎn)單的做一個(gè)對(duì)比,下面那一種備份起來(lái)更友好:

// 隨機(jī)數(shù)種子
090ABCB3A6e1400e9345bC60c78a8BE7
// 助記詞種子
candy maple cake sugar pudding cream honey rich smooth crumble sweet treat

使用助記詞作為種子其實(shí)包含2個(gè)部分:助記詞生成及助記詞推導(dǎo)出隨機(jī)種子,下面分析下這個(gè)過(guò)程。

生成助記詞

助記詞生成的過(guò)程是這樣的:先生成一個(gè)128位隨機(jī)數(shù),再加上對(duì)隨機(jī)數(shù)做的校驗(yàn)4位,得到132位的一個(gè)數(shù),然后按每11位做切分,這樣就有了12個(gè)二進(jìn)制數(shù),然后用每個(gè)數(shù)去查BIP39定義的單詞表,這樣就得到12個(gè)助記詞,這個(gè)過(guò)程圖示如下:

 

(圖來(lái)源于網(wǎng)絡(luò))

下面是使用bip39生成生成助記詞的一段代碼:

<strong>var</strong> bip39 = require('bip39')
// 生成助記詞
<strong>var</strong> mnemonic = bip39.<strong>generateMnemonic</strong>()
console.<strong>log</strong>(mnemonic)

助記詞推導(dǎo)出種子

這個(gè)過(guò)程使用密鑰拉伸(Key stretching)函數(shù),被用來(lái)增強(qiáng)弱密鑰的安全性,PBKDF2是常用的密鑰拉伸算法中的一種。
PBKDF2基本原理是通過(guò)一個(gè)為隨機(jī)函數(shù)(例如 HMAC 函數(shù)),把助記詞明文和鹽值作為輸入?yún)?shù),然后重復(fù)進(jìn)行運(yùn)算最終產(chǎn)生生成一個(gè)更長(zhǎng)的(512 位)密鑰種子。這個(gè)種子再構(gòu)建一個(gè)確定性錢包并派生出它的密鑰。

密鑰拉伸函數(shù)需要兩個(gè)參數(shù):助記詞和鹽。鹽可以提高暴力破解的難度。 鹽由常量字符串 “mnemonic” 及一個(gè)可選的密碼組成,注意使用不同密碼,則拉伸函數(shù)在使用同一個(gè)助記詞的情況下會(huì)產(chǎn)生一個(gè)不同的種子,這個(gè)過(guò)程圖示圖下:

 

(圖來(lái)源于網(wǎng)絡(luò))

同樣代碼來(lái)表示一下:

<strong>var</strong> hdkey = require('ethereumjs-wallet/hdkey')
<strong>var</strong> util = require('ethereumjs-util')
<strong>var</strong> seed = bip39.<strong>mnemonicToSeed</strong>(mnemonic, "pwd");
<strong>var</strong> hdWallet = hdkey.<strong>fromMasterSeed</strong>(seed);
<strong>var</strong> key1 = hdWallet.<strong>derivePath</strong>("m/44'/60'/0'/0/0");
console.<strong>log</strong>("私鑰:"+util.<strong>bufferToHex</strong>(key1._hdkey._privateKey));
<strong>var</strong> address1 = util.<strong>pubToAddress</strong>(key1._hdkey._publicKey, true);
console.<strong>log</strong>("地址:"+util.<strong>bufferToHex</strong>(address1));
console.<strong>log</strong>("校驗(yàn)和地址:"+ util.<strong>toChecksumAddress</strong>(address1.<strong>toString</strong>('hex')));

校驗(yàn)和地址是EIP-55中定義的對(duì)大小寫有要求的一種地址形式。

密碼可以作為一個(gè)額外的安全因子來(lái)保護(hù)種子,即使助記詞的備份被竊取,也可以保證錢包的安全(也要求密碼擁有足夠的復(fù)雜度和長(zhǎng)度),不過(guò)另外一方面,如果我們忘記密碼,那么將無(wú)法恢復(fù)我們的數(shù)字資產(chǎn)。

一句話概括下BIP39就是:通過(guò)定義助記詞讓種子的備份更友好

小結(jié)

HD錢包(Hierarchical Deterministic Wallets)是在BIP32中提出的為了避免管理一堆私鑰的麻煩提出的分層推導(dǎo)方案。
而BIP44是給BIP32的分層增強(qiáng)了路徑定義規(guī)范,同時(shí)增加了對(duì)多幣種的支持。
BIP39則通過(guò)定義助記詞0讓種子的備份更友好。

目前我們的市面上單到的以太幣、比特幣錢包基本都遵循這些標(biāo)準(zhǔn)。

免責(zé)聲明:本文只為提供市場(chǎng)訊息,所有內(nèi)容及觀點(diǎn)僅供參考,不構(gòu)成投資建議,不代表本站觀點(diǎn)和立場(chǎng)。投資者應(yīng)自行決策與交易,對(duì)投資者交易形成的直接或間接損失,作者及本站將不承擔(dān)任何責(zé)任。!
Tag:BIP32   BIP44   BIP39  

你可能感興趣的文章

更多

熱門幣種

  • 幣名
    最新價(jià)格
    24H漲幅
  • bitcoin BTC 比特幣

    BTC

    比特幣

    $ 101288.12¥ 722184.29
    -5.05%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 3301.84¥ 23542.11
    -8.95%
  • tether USDT 泰達(dá)幣

    USDT

    泰達(dá)幣

    $ 0.9993¥ 7.125
    -0.04%
  • ripple XRP 瑞波幣

    XRP

    瑞波幣

    $ 2.2037¥ 15.7123
    -5.77%
  • binance-coin BNB 幣安幣

    BNB

    幣安幣

    $ 929.02¥ 6623.91
    -6.77%
  • solana SOL Solana

    SOL

    Solana

    $ 156.14¥ 1113.27
    -6.58%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1.0003¥ 7.1321
    +0.02%
  • tron TRX 波場(chǎng)

    TRX

    波場(chǎng)

    $ 0.281¥ 2.0035
    -0.99%
  • dogecoin DOGE 狗狗幣

    DOGE

    狗狗幣

    $ 0.1595¥ 1.1372
    -5.45%
  • cardano ADA 艾達(dá)幣

    ADA

    艾達(dá)幣

    $ 0.5225¥ 3.7254
    -6.56%

幣圈快訊

  • 納指尾盤跌幅擴(kuò)大至2%,英偉達(dá)跌近4%,特斯拉跌4.7%

    2025-11-05 03:44
    納指尾盤跌幅擴(kuò)大至2%,英偉達(dá)(NVDA.O)股價(jià)下跌近4%,特斯拉(TSLA.O)股價(jià)下跌4.7%。
  • 民生宏觀:美元指數(shù)再破100,但升值周期未至

    2025-11-05 03:37
    民生宏觀研報(bào)稱,美元指數(shù)再次突破100,但升值周期尚未到來(lái)。研報(bào)指出,當(dāng)前美元更多是反彈,短期內(nèi)市場(chǎng)已開始定價(jià)12月不降息,預(yù)期概率超過(guò)30%。此外,年底前白宮將公布美聯(lián)儲(chǔ)主席人選,預(yù)計(jì)政策區(qū)別在于“寬松”與“極度寬松”,對(duì)美元都不是好消息。
  • 美聯(lián)儲(chǔ)隔夜逆回購(gòu)協(xié)議(RRP)使用規(guī)模為169.83億美元

    2025-11-05 03:10
    周二(11月4日),美聯(lián)儲(chǔ)隔夜逆回購(gòu)協(xié)議(RRP)使用規(guī)模為169.83億美元,上個(gè)交易日?qǐng)?bào)237.92億美元。
  • 過(guò)去1小時(shí)Binance凈流出4,314.25萬(wàn)USDT

    2025-11-05 02:59
    據(jù)Coinglass數(shù)據(jù)顯示,Binance在過(guò)去1小時(shí)內(nèi)凈流出4,314.25萬(wàn)USDT。
  • ETH全網(wǎng)合約持倉(cāng)量24h減少13.6%

    2025-11-05 02:41
    據(jù)Coinglass數(shù)據(jù)顯示,ETH全網(wǎng)合約持倉(cāng)量在過(guò)去24小時(shí)減少13.6%,當(dāng)前總持倉(cāng)量為391.26億美元。其中Binance持倉(cāng)量為77.5億美元,OKX持倉(cāng)量為22.24億美元,Bybit持倉(cāng)量為30.31億美元。
  • 查看更多