当前位置:主页 > 区块链 > 钱包知识 > hd钱包实现原理

区块链钱包-hd钱包的奥秘与实现原理

2025-03-05 01:37:16 | 来源: | 作者:佚名
HD是Hierarchical-Deterministic(分层确定性)的缩写,这个概念是在BIP32中被首次提出,这里的分层可以理解成,一个大公司拥有一个种子,它可以为各个子部门派生子私钥,各个子部门又可以给子子部门派生子子私钥

钱包发展

在比特币早期,中本聪就提出了每次交易使用一个地址这个概念,即假设你A地址上有100块,那么你向B地址转账20块之后,你剩下的80块会转入C地址,A地址彻底弃用,这样意味着A私钥也彻底弃用了。在早期的非确定性钱包,会一次性为用户生成100个私钥/地址对,使用完再继续生成,可想而知,这样管理资产非常麻烦。在这种背景下,有人提出了确定性钱包的概念,只要有一个种子,就能派生出海量的私钥/地址对,妥当保管好种子,就能完全掌控整个派生树,而HD钱包就是目前最常用的确定性钱包模型。
HD是Hierarchical-Deterministic(分层确定性)的缩写,这个概念是在BIP32中被首次提出。这里的分层可以理解成,一个大公司拥有一个种子,它可以为各个子部门派生子私钥,各个子部门又可以给子子部门派生子子私钥…

这样做有很多好处:
○ 树状特征非常适用于有组织结构的公司使用
○ 每个父能看到自己派生的子的财务流向,而子不能看到父
○ 能够在不需知道私钥的前提下生成大量的公钥,非常适用于只负责收款的服务

Tips!

principle of avoiding address reuse: 提倡避免地址重复使用,当数字货币地址已经发生过一次转账就存在私钥泄漏的可能性。
BIP: Bitcoin Improvement Proposals(比特币改进提案),比特币是开源项目,所有人都可以给核心开发者提出建议。详见BIP项目地址:bips

种子与助记词

本质上,种子是一个数字,不方便记忆。
在BIP39中,提出了助记词方案来试图解决种子的存放问题。它的核心是通过随机生成 12 ~ 24 个容易记住便于抄录的单词,再由该单词序列通过 PBKDF2 与 HMAC-SHA512 函数创建出随机种子作为 BIP32 的种子。它有几个特性:

○ 规定熵的位数必须是 32 的整数倍,所以熵的长度取值位 128 到 256 之间取 32 的整数倍的值,分别为 128, 160, 192, 224, 256;
○ 校验和的长度为熵的长度/32 位, 所以校验和长度可为 4,5,6,7,8 位;
○ 助记词库有 2048 个词,用 11 位可全部定位词库中所有的词,作为词的索引,故一个词用 11 位表示,助记词的个数可为 (熵+校验和)/11,值为 12,15,18,21,24。
作为创建钱包的第一步,下面将以目前常用的128强度为例,简单阐述下生成助记词的过程:
1. 随机生成一个16字节的熵;
2. 对熵进行哈希计算,得到一个长度为32的数组;
3. 取熵的比特位,得到一个长度为128的数组;
4. 将熵hash前4比特作为校验位放于熵比特数组之后,得到一个长度为132的数组;
5. 以长度11切割第4步得到的数组,并转为10进制,得到12个数;
6. 以数字为序号,从助记词库取出对应的单词,得到助记词。

以下为一个示例实现:

在得到助记词之后,根据BIP39,我们将使用PBKDF2函数推算出根种子,其约定的参数如下:
1. 将助记词序列作为密码
2. “mnemonic” + passphrase 作为盐
3. 以 2048 为重复计算的次数
4. 以 HMAC-SHA512 为随机算法
5. 期望得到长度为512位(64字节)的密钥作为种子

主密钥与主链码

得到种子之后,我们需要通过种子推导出主密钥 (master key) 和主链码 (master chain code)。
根种子通过不可逆 HMAC-SHA512 算法推算出 512 位的哈希串,左 256 位是 Master Private key(m), 右 256 位是 master chain code, 通过 m 结合推导公钥的椭圆曲线算法能推导出与之对应的 264 位 master public Key (M)。chain code 作为推导下级密钥的熵。

Tips!

什么是扩展密钥?
密钥和链码的结合统称为扩展密钥 (Extended keys)。即256位的密钥和256位的链码串联起来的512位就是扩展密钥。
包含私钥的扩展密钥用以推导子私钥,从子私钥又可推导对应的公钥和比特币地址。
包含公钥的扩展密钥用以推导子公钥。
扩展密钥使用Base58Check算法加上特定的前缀编码,编码得到的包含私钥的前缀为xprv,包含公钥的扩展密钥前缀为xpub,相比比特币的公私钥,扩展密钥编码之后得到的长度为512或513位。

路径

当获得了主密钥和主链码之后,我们需要设计一套规则来推导子密钥和子链码以供交易使用。其中有个重要的概念就是路径。
路径是一套索引规范。现在我们假设整个HD钱包是一颗树,将主密钥视为树干,子私钥视为叶子,那么路径就可以视为叶子的坐标,可以准确的描述出叶子相对于树干的位置。
在比特币社区的BIP44协议中,提出了目前常用的5层路径建议,如下:
m/purpse’/coin_type’/account’/change/address_index每一层都有特别的含义,分别是:
1. purpse:目前固定为44’(或者0x8000002C),表示遵守BIP44协议。该层使用硬化衍生。
2. coin_type:币种类型,使得一个主私钥可以管理多币种。其中比特币是0。该层使用硬化衍生。
3. account:账户,从0开始按顺序严格递增。它将密钥空间拆分为独立的账户身份,从而使得各个账户的资产永远不会搅在一起。该层使用硬化衍生。
4. change:是否为找零地址。常数0代表对外地址,常数1代表内部可见地址。在实际使用过程中,应当将对外地址用于收款,内部地址用于接收交易找零。该层使用正常衍生。
5. address_index:地址索引编号,从0开始按顺序严格递增。该层使用正常衍生。
例如:
○ 比特币6号账户22号找零地址:m/44’/0’/6’/1/22
○ 以太坊0号账户0号非找零地址:m/44’/60’/0’/0/0
最初,设计者出于安全考虑引入了硬化衍生。正常衍生的索引号范围为 [0x0, 0x7FFFFFFF],而硬化衍生的索引号范围为 [0x80000000, 0xFFFFFFFF];硬化衍生的索引号太长,一般为了便于阅读,都是会将索引号右上角加上撇号,譬如:0x80000000 记为 0’,0x80000001 记为 1’,以此类推。

Tips!

路径是允许不完整的。比如:如果公司总部仅仅推导到m/44’/0’/0,并将该层的密钥和链码给了财务部,那么就相当于财务部拥有了0号账户的衍生权。财务部就可以独立的用0/0、0/1、0/2…作为路径去接着推导总部HD钱包这个分支的子密钥。甚至可以将0号账户作为自己的主密钥,重新构建一个HD钱包。

增强扩展子密钥推导

至此,我们已经定义好了树干和坐标,可以准确定位到每个枝头,每片树叶了。根据BIP32的HKD(hardened key derivation formula)函数,结合父私钥、父链码和路径,推导出增强子私钥和增强子链码。

总结

区块链钱包-私钥与地址

私钥

私钥(yuè)本质上是一个256位随机数
那么什么是256位随机数呢?首先256位是指由256个0或1组成,如:1001001010001...,其次随机是指某一位上是0或1是随机没有规律的。举个例子,A想获得一个独属于自己的比特币私钥,那么他可以通过掷硬币来生成,正面朝上是1,反面朝上是0,掷了256次之后,他得到了一个数字序列,即为A的私钥。
看到这里,你可能会想,私钥的规则也太随意了吧,我随便写个数,只要不超过最大值,就是一个私钥?或者万一别人随机出了我的私钥,不是可以把我的资产拿走吗?
你想的没错,以上两个问题的答案都是肯定的…
但是,即使私钥只是一个数字,它仍然非常非常非常难以被破解!它的安全性来自于它包含的数字集合非常大,大到难以去穷尽所有数字,并进行一一验证。即使存在客观的重复的概率,但我们仍然可以称私钥在密码学上是安全的。如果你仍然心存疑虑,那么我们可以感性的感受下:
○ 私钥共有2^256个可能,近似于10⁷⁷。
○ 到目前为止,人类可观测的宇宙中的原子数约为10⁸⁰;
○ “双色球”一等奖的中奖概率是8×10ˉ⁸;
ok,我们现在知道了比特币的安全来自于非常严格的随机性,可以说我们选取的随机算法的强度影响了我们资产的安全性。使用一个可能会被预测的随机算法,不如掷硬币…

Tips!

如前文所述,私钥的本体就是一个数字,本身是不容易记忆和抄录的。为了便于使用,大部分钱包会对私钥进行编码,方便用户进行导入导出操作。目前主流的格式有HEX、WIF、WIF-compressed等。

地址

在传统银行用户模型中,用户需要账号+密码来操控自己的资产。而在比特币体系中,资产其实是存在每个私钥下的,用户只需要私钥即可以完全操控自己的资产。私钥的隐私性太强,是不可能让别人得知的,那么如何实现在不暴露自己私钥的前提下,让别人给自己转账呢?地址应运而生。
通过椭圆曲线算法(ECDSA),私钥可以计算出一个唯一且不可逆的公钥, 公钥通过特定的哈希计算得到公钥哈希,在对公钥哈希进行编码,即可得到地址。简单来说,因为公钥本身太长了,不利于交易的进行,所以通过一些变换得到地址。地址就是公钥的一种表现形式。

在比特币体系中,生成一个地址的流程大致为:

可以看出,比特币用于公开交易的地址是由公钥进行一系列数学计算得来的。顺理成章的,如果改变其中的哈希算法或者编码方式,就可以得到一个不同的结果,也就是一个新地址!这个特性使得一个私钥管理多种加密货币变为可能:
○ A私钥->A公钥-比特币地址算法->比特币地址
○ A私钥->A公钥-以太坊地址算法->以太坊地址
○ …

Tips!

为什么比特币地址要采用Base58编码呢?与Base64的是,Base58去掉了几个看起来可能会产生歧义的字母,如0(零)、O(大写字母O)、I(大写的字母i) 和 l(小写的字母L),以及两个影响双击选择的字符,如/和+。在设计层面尽可能降低地址输错带来的资金损失。

到此这篇关于区块链钱包-hd钱包实现原理的文章就介绍到这了,更多相关hd钱包实现原理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

免责声明:本文只为提供市场讯息,所有内容及观点仅供参考,不构成投资建议,不代表本站观点和立场。投资者应自行决策与交易,对投资者交易形成的直接或间接损失,作者及本站将不承担任何责任。!
Tag:HD钱包  
更多

热门币种

  • 币名
    最新价格
    24H涨幅
  • bitcoin BTC 比特币

    BTC

    比特币

    $ 87628.99¥ 613954.99
    -0.1%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 2931.9¥ 20541.77
    +0%
  • tether USDT 泰达币

    USDT

    泰达币

    $ 0.9982¥ 6.9936
    -0.09%
  • binance-coin BNB 币安币

    BNB

    币安币

    $ 860.11¥ 6026.18
    +2.25%
  • ripple XRP 瑞波币

    XRP

    瑞波币

    $ 1.8553¥ 12.9987
    -0.06%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1.0011¥ 7.014
    +0.05%
  • solana SOL Solana

    SOL

    Solana

    $ 123.24¥ 863.45
    -0.26%
  • tron TRX 波场

    TRX

    波场

    $ 0.2851¥ 1.9974
    +0.64%
  • dogecoin DOGE 狗狗币

    DOGE

    狗狗币

    $ 0.1234¥ 0.8645
    +0.41%
  • cardano ADA 艾达币

    ADA

    艾达币

    $ 0.3628¥ 2.5418
    +0%

币圈快讯

  • 迈克尔·塞勒曾模仿沃伦·巴菲特和“末日博士”预测比特币“末日将至”——这是一个“大错特错”

    2025-12-29 05:03
    比特币的坚定拥护者、MicroStrategy联合创始人迈克尔·塞勒(Michael Saylor)承认,他2013年预测比特币消亡的推文是一个“大错”。当时,他将这种加密货币比作网络赌博,与沃伦·巴菲特等怀疑论者的观点不谋而合。如今,他的公司持有超过590亿美元的比特币作为其主要储备资产,塞勒本人也积极推广这种数字货币,这与他早先的立场形成了鲜明的对比。
  • 以太坊陷入困境——2026年或将决定其未来走向

    2025-12-29 04:35
    以太坊继续横盘整理,守住了2618美元、2252美元和1818美元附近的关键周支撑位,但上方在3348美元至4619美元之间面临阻力。分析师指出,市场仍未确定方向,更清晰的走势可能取决于以太坊在2026年临近之际在这些主要区域的价格表现。目前以太坊交易价格在2940美元附近,被描述为区间震荡,剧烈波动可能要等到新年才会出现。
  • HIVE24小时跌超18%MASK跌超13%

    2025-12-29 04:30
    据币安现货数据显示,市场出现大幅波动。HIVE24小时跌幅达18.54%,MASK24小时跌幅13.24%。同时,AXS出现“冲高回落”状态,跌幅6.98%。其余代币如FIDA、ACA、LSK也均出现“冲高回落”状态,跌幅分别为11.12%、14.04%和18.66%。另一方面,FLOW则表现出“探底回升”状态,涨幅为6%和7.01%。
  • 3万枚SOL从匿名地址转入Binance价值约369.58万美元

    2025-12-29 04:20
    据Arkham数据,在04:13,3万枚SOL(价值约369.58万美元)从一匿名地址(59oXzz6w...开头)转入Binance。
  • 国际货币基金组织称巴西的金融体系运转良好——那么为什么加密货币在没有危机的情况下蓬勃发展?

    2025-12-29 04:14
    尽管巴西利率环境高企,但加密货币的普及速度仍在加快,这挑战了数字资产只有在金融体系崩溃的情况下才能蓬勃发展的传统观念。根据国际货币基金组织(IMF)的研究,巴西15%的基准利率Selic并未对韧性十足的信贷市场造成冲击,然而,2025年巴西的加密货币交易活动却同比增长了43%。这一增长主要由年轻投资者推动,他们青睐稳定币和代币化产品,包括伊塔乌联合银行(Itaú Unibanco)在内的多家大型银行也开始建议投资者配置比特币以实现投资组合多元化。
  • 查看更多