在开发钱包应用程序时,我意识到必须对私钥和公钥的工作原理有深入的了解。这些基础知识不仅仅是学术性的,它们直接影响钱包运行的安全性和效率。

🔑 什么是私钥?

私钥是随机生成的 256 位(32 字节)数字。它可以完全控制钱包的资金。

例:

0C28FCA386C7A2276AC8192E9F6DDEDC6D1E2C140C3C7A75A2B708F3EDF5BE59
 

有 2^256 个可能的键 — 比宇宙中的原子还多 — 使其几乎无法猜测。


🔓 什么是公钥?

公钥是使用椭圆曲线加密 (ECC) 从私钥派生而来的。在比特币中,这是通过曲线完成的。这是一个单向的过程 — 安全且不可逆转。secp256k1


🧾 如何创建地址?

  1. 从公钥开始
  2. 哈希它 (SHA-256 → RIPEMD-160)
  3. 添加版本字节
  4. 添加校验和
  5. Base58Check 对结果进行编码

这将成为一个比特币地址。


🔄 密钥派生图

[ Private Key ]
     ↓
[ Public Key ]
     ↓
[ Public Key Hash ]
     ↓
[ Address ]
 

🌲 HD 钱包简介

在这段旅程的后面,我们将更深入地探索 HD 钱包——特别是它们如何在 Rust 中实现,并用于为现代钱包应用程序生成安全、确定性的密钥层次结构。

HD(分层确定性)钱包使用结构化路径从单个种子生成数千个地址,例如:

m / 44' / 0' / 0' / 0 / 0
 

只需备份助记词。


💡 为什么存在不同的格式

格式 区块链 目的
WIF 比特币 使用校验和和压缩标志对私钥进行编码
十六进制 以太坊 原始私钥,无元数据
JSON 格式 索拉纳 以 JSON 数组形式存储的完整 Ed25519 密钥对
SS58系列 波卡 包括网络前缀 + 校验和

每种格式都针对平台的加密和 UX 进行了优化。

 

出处:https://dev.to/

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
意见
建议
发表
评论
返回
顶部