比特币地址生成过程详解
1. 比特币地址编码格式
比特币地址采用base58 check格式编码
Base 58 check编码方法如下图所示:
2. 比特币地址计算详细过程
比特币地址计算过程如下图所示:
以普通公钥地址计算过程为例:
1. 如未压缩公钥为:
04 5c0de3b9c8ab18dd04e3511243ec2952002dbfadc864b9628910169d9b9b00ec243bcefdd4347074d44bd7356d6a53c495737dd96295e2a9374bf5f02ebfc176
2. 经过sha256和 ripemd160 hash计算后结果为
09c6e71118d8f12bec6b5c61884b35677c0a0ae3
3. base58check编码
3.1 添加前缀0x00结果为0009c6e71118d8f12bec6b5c61884b35677c0a0ae3
3.2 计算double sha256 结果为2a021f87fa371ae2a63dd44112bf3175039e9a96613734309ca87fda7862a301
取前四字节
3.3 前缀+DATA+checksum为:
0009c6e71118d8f12bec6b5c61884b35677c0a0ae32a021f
3.4 base58 编码结果为
Bitcoin Address (b58check) is:
1thMirt546nngXqyPEz532S8fLwbozud8
同样可以用压缩公钥
025c0de3b9c8ab18dd04e3511243ec2952002dbfadc864b9628910169d9b9b00ec
生成一个压缩公钥对应的地址
Compressed Bitcoin Address (b58check) is:
14cxpo3MBCYYWCgF74SWTdcmxipnGUsPw3
所以一个私钥可以生成2个比特币的地址,公钥和压缩公钥都可以生成对应的比特币地址
参考文献:《精通比特币(第二版)》