在开发钱包应用程序时,我意识到必须对私钥和公钥的工作原理有深入的了解。这些基础知识不仅仅是学术性的,它们直接影响钱包运行的安全性和效率。
🔑 什么是私钥?
私钥是随机生成的 256 位(32 字节)数字。它可以完全控制钱包的资金。
例:
0C28FCA386C7A2276AC8192E9F6DDEDC6D1E2C140C3C7A75A2B708F3EDF5BE59
有 2^256 个可能的键 — 比宇宙中的原子还多 — 使其几乎无法猜测。
🔓 什么是公钥?
公钥是使用椭圆曲线加密 (ECC) 从私钥派生而来的。在比特币中,这是通过曲线完成的。这是一个单向的过程 — 安全且不可逆转。secp256k1
🧾 如何创建地址?
- 从公钥开始
- 哈希它 (SHA-256 → RIPEMD-160)
- 添加版本字节
- 添加校验和
- 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 进行了优化。
发表评论 取消回复