比特币钱包地址方案

椭圆曲线签名算法里的私钥由32位字节随机数组成,通过私钥能够算出公钥,公钥经过一系列的哈希算法及编码算法就得到了比特币中的地址。因此地址其实是公钥的另一种表现形式,可以理解为公钥的摘要。

比特币地址生成方法

椭圆曲线算法生成的公钥信息比较长,非压缩格式有65字节,压缩格式也有33字节。地址是为了减少接收方标识的字节数。步骤如下:

  • 生成椭圆曲线私钥与公钥

    私钥:18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725
    公钥:
    0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6

  • 将公钥通过SHA-256哈希算法处理,得到32字节的哈希值

    Hash:600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408

  • 将得到的哈希值通过RIPEMD-160算法得到20字节的哈希值Hash160

    Hash160:* 010966776006953D5567439E5E39F86A0D273BEE*

  • 把由版本号(P2PKH:0;P2SH:3)+ Hash160组成的21字节数据进行两次SHA-256哈希运算,得到的哈希值的前4个字节作为校验和,放置在21字节数据的末尾

    版本+Hash160:00010966776006953D5567439E5E39F86A0D273BEE

    SHA-256-1:445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094

    SHA-256-2:D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30

    数据+校验和:00010966776006953D5567439E5E39F86A0D273BEED61967F6

  • 对组成的25字节数组进行Base58编码,就可以得到地址。

    地址:16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM

KEY POOL

新的公私钥被提前生成并存储在一个队列中等待使用。

加入这个功能之后,备份钱包就会有确定数量的密钥对。默认情况下,队列数量为100。有一个命令行选项允许修改队列的大小。

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*