深入了解HD钱包的实现与功能

在区块链技术中,HD(Hierarchical Deterministic)钱包是一种强大且灵活的钱包类型,它提供了多种功能,包括生成助记词、生成地址、离线签名和验证签名。本文将详细讲述这些功能的实现原理。

一、钱包的发展历史

1.传统钱包

  • 物理钱包:我们日常使用的钱包,用来存放现金、信用卡等。
  • 电子钱包:随着科技的发展,电子钱包(如支付宝、微信支付)出现,用于存放和管理电子货币。

2.数字货币钱包

单密钥钱包(Single-key Wallet):最早期的数字货币钱包,每个钱包地址对应一个私钥。私钥用于签名交易,控制资金。

  • 优点:简单易用。
  • 缺点:如果私钥丢失,资金无法找回;管理多个地址时较为繁琐。

3.多重签名钱包(Multi-signature Wallet)

多重签名技术:要求多个私钥签名才能完成一笔交易,提高了安全性。

  • 优点:更高的安全性,适合企业级应用。
  • 缺点:复杂度增加,管理多个私钥较为繁琐。

4.分层确定性(HD)钱包

HD钱包:利用分层确定性算法生成一系列私钥,所有私钥都由一个种子(seed)生成。

  • 优点:只需备份一个种子即可恢复所有地址和私钥,管理更方便。
  • 缺点:种子一旦泄露,所有地址和私钥都可能被盗。

二、HD钱包的原理

1.BIP标准

  • BIP32:描述了HD钱包的基本结构和原理。
  • BIP39:定义了助记词(Mnemonic Phrase)和种子(Seed)的生成方式。
  • BIP44:规定了多币种钱包的路径结构。

2.生成助记词

助记词是一组随机生成的单词,用于生成种子。助记词的生成过程如下:

  • 2.1.生成随机熵:生成128到256位的随机数。
  • 2.2.计算校验和:对随机熵进行SHA-256哈希,取前几位作为校验和。
  • 2.3.组合熵和校验和:将随机熵和校验和组合在一起。
  • 2.4.映射到单词表:将组合后的数据按11位一组映射到单词表,生成助记词。

3.生成地址

从助记词生成地址的过程如下:

  • 3.1.生成种子:从助记词生成种子。
  • 3.2.生成根密钥:从种子生成根密钥。
  • 3.3.生成子密钥对:根据 BIP44 标准的派生路径生成子密钥对。
  • 3.4.生成地址:从子公钥生成地址。

4.离线签名

离线签名的过程如下:

  • 4.1.构建交易数据: 将交易构建之后生成待签名的 Msg。
  • 4.2.将 Msg 递给签名机签名,签完之后返回 signature。
  • 4.3.构建完整交易:将交易数据,签名信息和公钥添加到交易数据中,构建完整的交易。

5.验证签名

验证签名的过程如下:

  • 5.1.提取公钥和签名:从交易数据中提取公钥和签名。
  • 5.2.重建交易哈希:对交易数据执行双重SHA-256哈希,得到交易哈希。
  • 5.3.验证签名:使用公钥和交易哈希验证签名。
全部评论(0)
推荐文章
Pectra 升级的核心:EIP-7702的原理分析和实操
来 The Web3, 学习史上最全面的区块链教程,挑战高薪
TON钱包签名、私钥导入与发送交易
Rust 实战:构建高效的异步 P2P 网络节点
深入理解solana-keygen
solana账户总结
以太坊POS工作原理详解:Epoch、Slot 与信标区块
以太坊发币 - 超简单发行 ERC-20 代币并上线到 holesky 上
NFT发行 - 超简单发行 NFT 到 holesky 上(包含 ERC165、ERC721Receiver 的含义)
wrapped SOL 与 naive SOL 互相转换
The Web3 社区--区块链运维课程大纲
更安全的签名 - EIP712 结构化签名
带你手搓一个预言机 - 极简版的 ChainLink VRF 随机数生成
The Web3 区块链钱包教程大纲
DeFi 项目的基石 - ERC4626 代币金库协议的实现
以太坊代理模式的天花板 - 信标代理
SOL合约部署调用与销毁
Uniswap价格批量查询与ws订阅行情
智能合约的身份保证 - 数字签名
Solana USDC 转账交易的细节
ERC20授权的更优方案 - ERC20Permit 签名授权
The Web3 社区 Move 共学招募
abigen 工具和 sol! 宏生成智能合约 ABI 数据结构
The Web3 社区第三期区块链技术培训课程火热招生中--四个月高强度挑战,成为区块链技术高手
MPC托管系统工作原理
事件监听 - 合约事件监听的方案汇总
监听合约事件 -- 手把手带你在线、离线部署 The Graph
代币集大成者 - 手搓一个ERC1155合约并上线 holesky
如何成为一名专业的 Web3 产品经理 ——Web3 产品经理课程招募!
Solana ts/rs 代码 nonce-account 签名