比特币地址生成过程详解

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个比特币的地址,公钥和压缩公钥都可以生成对应的比特币地址

 

参考文献:《精通比特币(第二版)》