钱包底层实现原理

 

一、 私钥、公钥和地址产生的方式(以 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

posted @ 2021-11-28 16:17  jojoNote  阅读(136)  评论(0编辑  收藏  举报