生成钱包
以太坊的钱包是基于椭圆曲线数字签名算法ECDSA保护的。
因此每一个钱包对应的是一个ECDSA的密钥对。
这个密钥对在 go-ethereum
项目的 crypto/crypto.go
的 GenerateKey()
函数生成,
生成后得到一个ECDSA的私钥 (ecdsa.PrivateKey
)。
以太坊所采用的椭圆曲线是 secp256k1
。由于其特殊构造的特殊性,其优化后的实现比其他曲线性能上可以提高30%,有明显以下两个优点:
- 占用很少的带宽和存储资源,密钥的长度很短;
- 让所有的用户都可以使用同样的操作完成域运算。
生成钱包私钥代码:
1 | func GenerateKey() (*ecdsa.PrivateKey, error) { |
得到私钥后,可以使用 ecdsa.PrivateKey
的 Public()
方法取得公钥 ecdsa.PublicKey
。