ESSAY / NOTE
区块链钱包的原理:私钥、公钥、地址、签名、助记词
私钥→公钥
- 椭圆曲线
- 满足椭圆曲线公式的,二维平面的点的集合
- 按x轴上下对称

- 加法操作
- R = P + Q
- 作P和Q两点的连线,与椭圆曲线的第三个交点为-R,再按x轴取对称点,即为R
- 当P和Q为同一个点的时候,则作该点与椭圆曲线的切线,与椭圆曲线的第二个交点为-R,再按x轴取对称点,即为R
- 椭圆曲线是有限域(Field):相加后的点仍在集合中,即交点-R一定存在
- R = P + Q
- 生成点$G$,乘法操作:$K = k * G$
- 通过提前算好$2^nG$来加速计算过程
- 已知$K$和$G$的情况下,无法算出$k$
- $k$是私钥,$K$是公钥。正着好算,反着几乎算不出来

- 满足椭圆曲线公式的,二维平面的点的集合
公钥→地址
- Hash并截短一下公钥:节省存储空间且减少地址碰撞
Bitcoin
Ethereum
签名
- 目的
- 证明拥有地址的私钥且不暴露私钥
- 证明私钥持有者同意了交易内容
- 签名的Message:唯一的交易
- 签名算法
- ECDSA:最基础,不支持签名聚合,多签的时候必须依次验证
- Schnorr(Bitcoin Taproot):支持聚合签名,但有一些不足,主要是signer要进行交互
- BLS(Filecoin、ETH2):支持聚合签名,解决signer交互问题
助记词
- BIP-39
- 如何用助记词生成seed

- 如何用助记词生成seed
- BIP-32
- HD Wallet(Hierarchical Deterministic Wallet,分层确定性钱包)
- 如何从一个seed,生成多层的私钥
- 没有seed的情况下,私钥之间互相不能推导

- HD Wallet(Hierarchical Deterministic Wallet,分层确定性钱包)
- BIP-44
- 约定path的使用规范,即HD Wallet中私钥的选取规范

- SLIP-0044:不同链的path约定,新链需要注册
- 约定path的使用规范,即HD Wallet中私钥的选取规范
- 小结
- 助记词是随机生成的,根据助记词可以获得大量的私钥,然后按照约定的规则选取其中的部分私钥使用,在保证安全性的前提下简化了整个多链多地址钱包的保管和恢复
- 对于符合以上标准的钱包,助记词是互通的,即可以通过助记词恢复出所有钱包内的地址和对应的私钥
- m —— 代表公链
- purpose —— 一般为「44」,代表遵循 BIP44 方案,但 BTC 隔离见证地址为「49」
- coin_type —— 代表币种类型,其中 0 为 BTC,1 为 BTC 测试网,2 为 LTC,60 为 ETH 等
- account —— 代表此币种的账户索引,从 0 开始
- change —— 数值 0 用于外部链,1 用于内部链。一个用于创建接收地址,另一个用来创造找零地址
- address_index —— 地址索引,从 0 开始