钱包底层实现原理
一、 私钥、公钥和地址产生的方式(以 BTC 为例):
比特币私钥其实是使用 SHA-256 生成的 32 字节(256 位)的随机数,有效私钥的范围则取决于比特币使用的 secp256k1 椭圆曲线数字签名标准。
在私钥的前面加上版本号,后面添加压缩标志和附加校验码,(所谓附加校验码,就是对私钥经过 2 次 SHA-256 运算,取两次哈希结果的前四字节),然后再对其进行 Base58 编码,就可以得到我们常见的 WIF (Wallet import Format) 格式的私钥。
私钥经过椭圆曲线乘法运算,可以得到公钥。公钥是椭圆曲线上的点,并具有 x 和 y 坐标。公钥有两种形式:压缩的与非压缩的。早期比特币均使用非压缩公钥,现在大部分客户端默认使用压缩公钥。
椭圆曲线算法
公钥产生后,将公钥通过 SHA256 哈希算法处理得到 32 字节的哈希值;后对得到的哈希值通过 RIPEMD-160 算法来得到 20 字节的哈希值
——Hash160
把版本号 [2]+Hash160 组成的 21 字节数组进行双次 SHA256 哈希运算,得到的哈希值的头 4 个字节作为校验和,放置 21 字节数组的末尾。
对组成 25 位数组进行 Base58 编码,最后得到地址。
下图以非压缩格式的 65 字节公钥示意上述过程:
————————————————
版权声明:本文为CSDN博主「webhaifeng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/webhaifeng/article/details/110138232
https://blog.csdn.net/webhaifeng/article/details/110138232
————————————————
版权声明:本文为CSDN博主「webhaifeng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/webhaifeng/article/details/110138232