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

當(dāng)前位置:主頁 > 區(qū)塊鏈 > 錢包知識 > hd錢包實現(xiàn)原理

區(qū)塊鏈錢包-hd錢包的奧秘與實現(xiàn)原理

2025-03-05 01:37:16 | 來源: | 作者:佚名
HD是Hierarchical-Deterministic(分層確定性)的縮寫,這個概念是在BIP32中被首次提出,這里的分層可以理解成,一個大公司擁有一個種子,它可以為各個子部門派生子私鑰,各個子部門又可以給子子部門派生子子私鑰

錢包發(fā)展

在比特幣早期,中本聰就提出了每次交易使用一個地址這個概念,即假設(shè)你A地址上有100塊,那么你向B地址轉(zhuǎn)賬20塊之后,你剩下的80塊會轉(zhuǎn)入C地址,A地址徹底棄用,這樣意味著A私鑰也徹底棄用了。在早期的非確定性錢包,會一次性為用戶生成100個私鑰/地址對,使用完再繼續(xù)生成,可想而知,這樣管理資產(chǎn)非常麻煩。在這種背景下,有人提出了確定性錢包的概念,只要有一個種子,就能派生出海量的私鑰/地址對,妥當(dāng)保管好種子,就能完全掌控整個派生樹,而HD錢包就是目前最常用的確定性錢包模型。
HD是Hierarchical-Deterministic(分層確定性)的縮寫,這個概念是在BIP32中被首次提出。這里的分層可以理解成,一個大公司擁有一個種子,它可以為各個子部門派生子私鑰,各個子部門又可以給子子部門派生子子私鑰…

這樣做有很多好處:
○ 樹狀特征非常適用于有組織結(jié)構(gòu)的公司使用
○ 每個父能看到自己派生的子的財務(wù)流向,而子不能看到父
○ 能夠在不需知道私鑰的前提下生成大量的公鑰,非常適用于只負(fù)責(zé)收款的服務(wù)

Tips!

principle of avoiding address reuse: 提倡避免地址重復(fù)使用,當(dāng)數(shù)字貨幣地址已經(jīng)發(fā)生過一次轉(zhuǎn)賬就存在私鑰泄漏的可能性。
BIP: Bitcoin Improvement Proposals(比特幣改進提案),比特幣是開源項目,所有人都可以給核心開發(fā)者提出建議。詳見BIP項目地址:bips

種子與助記詞

本質(zhì)上,種子是一個數(shù)字,不方便記憶。
在BIP39中,提出了助記詞方案來試圖解決種子的存放問題。它的核心是通過隨機生成 12 ~ 24 個容易記住便于抄錄的單詞,再由該單詞序列通過 PBKDF2 與 HMAC-SHA512 函數(shù)創(chuàng)建出隨機種子作為 BIP32 的種子。它有幾個特性:

○ 規(guī)定熵的位數(shù)必須是 32 的整數(shù)倍,所以熵的長度取值位 128 到 256 之間取 32 的整數(shù)倍的值,分別為 128, 160, 192, 224, 256;
○ 校驗和的長度為熵的長度/32 位, 所以校驗和長度可為 4,5,6,7,8 位;
○ 助記詞庫有 2048 個詞,用 11 位可全部定位詞庫中所有的詞,作為詞的索引,故一個詞用 11 位表示,助記詞的個數(shù)可為 (熵+校驗和)/11,值為 12,15,18,21,24。
作為創(chuàng)建錢包的第一步,下面將以目前常用的128強度為例,簡單闡述下生成助記詞的過程:
1. 隨機生成一個16字節(jié)的熵;
2. 對熵進行哈希計算,得到一個長度為32的數(shù)組;
3. 取熵的比特位,得到一個長度為128的數(shù)組;
4. 將熵hash前4比特作為校驗位放于熵比特數(shù)組之后,得到一個長度為132的數(shù)組;
5. 以長度11切割第4步得到的數(shù)組,并轉(zhuǎn)為10進制,得到12個數(shù);
6. 以數(shù)字為序號,從助記詞庫取出對應(yīng)的單詞,得到助記詞。

以下為一個示例實現(xiàn):

在得到助記詞之后,根據(jù)BIP39,我們將使用PBKDF2函數(shù)推算出根種子,其約定的參數(shù)如下:
1. 將助記詞序列作為密碼
2. “mnemonic” + passphrase 作為鹽
3. 以 2048 為重復(fù)計算的次數(shù)
4. 以 HMAC-SHA512 為隨機算法
5. 期望得到長度為512位(64字節(jié))的密鑰作為種子

主密鑰與主鏈碼

得到種子之后,我們需要通過種子推導(dǎo)出主密鑰 (master key) 和主鏈碼 (master chain code)。
根種子通過不可逆 HMAC-SHA512 算法推算出 512 位的哈希串,左 256 位是 Master Private key(m), 右 256 位是 master chain code, 通過 m 結(jié)合推導(dǎo)公鑰的橢圓曲線算法能推導(dǎo)出與之對應(yīng)的 264 位 master public Key (M)。chain code 作為推導(dǎo)下級密鑰的熵。

Tips!

什么是擴展密鑰?
密鑰和鏈碼的結(jié)合統(tǒng)稱為擴展密鑰 (Extended keys)。即256位的密鑰和256位的鏈碼串聯(lián)起來的512位就是擴展密鑰。
包含私鑰的擴展密鑰用以推導(dǎo)子私鑰,從子私鑰又可推導(dǎo)對應(yīng)的公鑰和比特幣地址。
包含公鑰的擴展密鑰用以推導(dǎo)子公鑰。
擴展密鑰使用Base58Check算法加上特定的前綴編碼,編碼得到的包含私鑰的前綴為xprv,包含公鑰的擴展密鑰前綴為xpub,相比比特幣的公私鑰,擴展密鑰編碼之后得到的長度為512或513位。

路徑

當(dāng)獲得了主密鑰和主鏈碼之后,我們需要設(shè)計一套規(guī)則來推導(dǎo)子密鑰和子鏈碼以供交易使用。其中有個重要的概念就是路徑。
路徑是一套索引規(guī)范?,F(xiàn)在我們假設(shè)整個HD錢包是一顆樹,將主密鑰視為樹干,子私鑰視為葉子,那么路徑就可以視為葉子的坐標(biāo),可以準(zhǔn)確的描述出葉子相對于樹干的位置。
在比特幣社區(qū)的BIP44協(xié)議中,提出了目前常用的5層路徑建議,如下:
m/purpse’/coin_type’/account’/change/address_index每一層都有特別的含義,分別是:
1. purpse:目前固定為44’(或者0x8000002C),表示遵守BIP44協(xié)議。該層使用硬化衍生。
2. coin_type:幣種類型,使得一個主私鑰可以管理多幣種。其中比特幣是0。該層使用硬化衍生。
3. account:賬戶,從0開始按順序嚴(yán)格遞增。它將密鑰空間拆分為獨立的賬戶身份,從而使得各個賬戶的資產(chǎn)永遠不會攪在一起。該層使用硬化衍生。
4. change:是否為找零地址。常數(shù)0代表對外地址,常數(shù)1代表內(nèi)部可見地址。在實際使用過程中,應(yīng)當(dāng)將對外地址用于收款,內(nèi)部地址用于接收交易找零。該層使用正常衍生。
5. address_index:地址索引編號,從0開始按順序嚴(yán)格遞增。該層使用正常衍生。
例如:
○ 比特幣6號賬戶22號找零地址:m/44’/0’/6’/1/22
○ 以太坊0號賬戶0號非找零地址:m/44’/60’/0’/0/0
最初,設(shè)計者出于安全考慮引入了硬化衍生。正常衍生的索引號范圍為 [0x0, 0x7FFFFFFF],而硬化衍生的索引號范圍為 [0x80000000, 0xFFFFFFFF];硬化衍生的索引號太長,一般為了便于閱讀,都是會將索引號右上角加上撇號,譬如:0x80000000 記為 0’,0x80000001 記為 1’,以此類推。

Tips!

路徑是允許不完整的。比如:如果公司總部僅僅推導(dǎo)到m/44’/0’/0,并將該層的密鑰和鏈碼給了財務(wù)部,那么就相當(dāng)于財務(wù)部擁有了0號賬戶的衍生權(quán)。財務(wù)部就可以獨立的用0/0、0/1、0/2…作為路徑去接著推導(dǎo)總部HD錢包這個分支的子密鑰。甚至可以將0號賬戶作為自己的主密鑰,重新構(gòu)建一個HD錢包。

增強擴展子密鑰推導(dǎo)

至此,我們已經(jīng)定義好了樹干和坐標(biāo),可以準(zhǔn)確定位到每個枝頭,每片樹葉了。根據(jù)BIP32的HKD(hardened key derivation formula)函數(shù),結(jié)合父私鑰、父鏈碼和路徑,推導(dǎo)出增強子私鑰和增強子鏈碼。

總結(jié)

區(qū)塊鏈錢包-私鑰與地址

私鑰

私鑰(yuè)本質(zhì)上是一個256位隨機數(shù)
那么什么是256位隨機數(shù)呢?首先256位是指由256個0或1組成,如:1001001010001...,其次隨機是指某一位上是0或1是隨機沒有規(guī)律的。舉個例子,A想獲得一個獨屬于自己的比特幣私鑰,那么他可以通過擲硬幣來生成,正面朝上是1,反面朝上是0,擲了256次之后,他得到了一個數(shù)字序列,即為A的私鑰。
看到這里,你可能會想,私鑰的規(guī)則也太隨意了吧,我隨便寫個數(shù),只要不超過最大值,就是一個私鑰?或者萬一別人隨機出了我的私鑰,不是可以把我的資產(chǎn)拿走嗎?
你想的沒錯,以上兩個問題的答案都是肯定的…
但是,即使私鑰只是一個數(shù)字,它仍然非常非常非常難以被破解!它的安全性來自于它包含的數(shù)字集合非常大,大到難以去窮盡所有數(shù)字,并進行一一驗證。即使存在客觀的重復(fù)的概率,但我們?nèi)匀豢梢苑Q私鑰在密碼學(xué)上是安全的。如果你仍然心存疑慮,那么我們可以感性的感受下:
○ 私鑰共有2^256個可能,近似于10??。
○ 到目前為止,人類可觀測的宇宙中的原子數(shù)約為10??;
○ “雙色球”一等獎的中獎概率是8×10ˉ?;
ok,我們現(xiàn)在知道了比特幣的安全來自于非常嚴(yán)格的隨機性,可以說我們選取的隨機算法的強度影響了我們資產(chǎn)的安全性。使用一個可能會被預(yù)測的隨機算法,不如擲硬幣…

Tips!

如前文所述,私鑰的本體就是一個數(shù)字,本身是不容易記憶和抄錄的。為了便于使用,大部分錢包會對私鑰進行編碼,方便用戶進行導(dǎo)入導(dǎo)出操作。目前主流的格式有HEX、WIF、WIF-compressed等。

地址

在傳統(tǒng)銀行用戶模型中,用戶需要賬號+密碼來操控自己的資產(chǎn)。而在比特幣體系中,資產(chǎn)其實是存在每個私鑰下的,用戶只需要私鑰即可以完全操控自己的資產(chǎn)。私鑰的隱私性太強,是不可能讓別人得知的,那么如何實現(xiàn)在不暴露自己私鑰的前提下,讓別人給自己轉(zhuǎn)賬呢?地址應(yīng)運而生。
通過橢圓曲線算法(ECDSA),私鑰可以計算出一個唯一且不可逆的公鑰, 公鑰通過特定的哈希計算得到公鑰哈希,在對公鑰哈希進行編碼,即可得到地址。簡單來說,因為公鑰本身太長了,不利于交易的進行,所以通過一些變換得到地址。地址就是公鑰的一種表現(xiàn)形式。

在比特幣體系中,生成一個地址的流程大致為:

可以看出,比特幣用于公開交易的地址是由公鑰進行一系列數(shù)學(xué)計算得來的。順理成章的,如果改變其中的哈希算法或者編碼方式,就可以得到一個不同的結(jié)果,也就是一個新地址!這個特性使得一個私鑰管理多種加密貨幣變?yōu)榭赡埽?br />○ A私鑰->A公鑰-比特幣地址算法->比特幣地址
○ A私鑰->A公鑰-以太坊地址算法->以太坊地址
○ …

Tips!

為什么比特幣地址要采用Base58編碼呢?與Base64的是,Base58去掉了幾個看起來可能會產(chǎn)生歧義的字母,如0(零)、O(大寫字母O)、I(大寫的字母i) 和 l(小寫的字母L),以及兩個影響雙擊選擇的字符,如/和+。在設(shè)計層面盡可能降低地址輸錯帶來的資金損失。

到此這篇關(guān)于區(qū)塊鏈錢包-hd錢包實現(xiàn)原理的文章就介紹到這了,更多相關(guān)hd錢包實現(xiàn)原理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

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

熱門幣種

  • 幣名
    最新價格
    24H漲幅
  • bitcoin BTC 比特幣

    BTC

    比特幣

    $ 91734.15¥ 652000.47
    -2.19%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 2996.38¥ 21296.77
    -2.4%
  • tether USDT 泰達幣

    USDT

    泰達幣

    $ 0.9984¥ 7.0961
    -0.05%
  • ripple XRP 瑞波幣

    XRP

    瑞波幣

    $ 2.1443¥ 15.2406
    -2.09%
  • binance-coin BNB 幣安幣

    BNB

    幣安幣

    $ 900.9¥ 6403.14
    -1.41%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1.001¥ 7.1146
    +0.07%
  • solana SOL Solana

    SOL

    Solana

    $ 130.23¥ 925.6
    -4.16%
  • tron TRX 波場

    TRX

    波場

    $ 0.2907¥ 2.0661
    -0.27%
  • dogecoin DOGE 狗狗幣

    DOGE

    狗狗幣

    $ 0.1516¥ 1.0774
    -2.57%
  • cardano ADA 艾達幣

    ADA

    艾達幣

    $ 0.4594¥ 3.2651
    -4.15%

幣圈快訊

  • 美國數(shù)字商會推出州級網(wǎng)絡(luò),以在選舉中支持加密貨幣友好候選人

    2025-11-18 05:56
    隨著美國2026年中期選舉的臨近,加密貨幣倡導(dǎo)組織“數(shù)字商會”正在將其工作范圍擴大到州一級。據(jù)一份聲明顯示,數(shù)字商會周一宣布成立一個新的州級網(wǎng)絡(luò),旨在推動州和地方政府制定數(shù)字資產(chǎn)政策。TDC首席執(zhí)行官CodyCarbone表示,該組織的目標(biāo)是在各級政府中支持支持加密貨幣的候選人。
  • VitalikButerin發(fā)布以太坊隱私保護加密工具Kohaku

    2025-11-18 05:46
    VitalikButerin發(fā)布Kohaku,這是一套隱私保護加密工具,旨在增強以太坊生態(tài)系統(tǒng)的隱私和安全性,由以太坊基金會主導(dǎo)。近幾個月來,Vitalik和以太坊基金會更加明確地將隱私視為區(qū)塊鏈開發(fā)者的一項基本權(quán)利和目標(biāo)。
  • 510.48萬枚TON從wallet_v4r2轉(zhuǎn)出,價值約893萬美元

    2025-11-18 05:41
    據(jù)Arkham數(shù)據(jù),在05:40,510.48萬枚TON(價值約893萬美元)從wallet_v4r2轉(zhuǎn)出至一匿名地址(UQAAxmPH...開頭)。
  • 23.21枚WBTC從Blackhole轉(zhuǎn)出,經(jīng)中轉(zhuǎn)后轉(zhuǎn)至另一匿名地址

    2025-11-18 05:41
    據(jù)Arkham數(shù)據(jù),在05:32,23.21枚WBTC(價值約212.29萬美元)從Blackhole轉(zhuǎn)出至vfat。隨后,vfat將23.21枚WBTC轉(zhuǎn)移至另一匿名地址(0x1ADB...開頭)。
  • 沃勒:美聯(lián)儲對降息50個基點更加謹(jǐn)慎

    2025-11-18 05:30
    美聯(lián)儲理事沃勒表示,過去的經(jīng)驗使美聯(lián)儲對降息50個基點更加謹(jǐn)慎。
  • 查看更多