比特币从支付人的钱包地址转移到接收人的钱包地址就是了一个交易。交易前,交易的双方当事人必须都有钱包地址。这里介绍钱包地址的产生技术过程。
1. 生成随机私钥:
随机选取一个32字节的数,作为私钥。
2. 生成私钥对应的公钥:
使用椭圆曲线加密算法计算私钥生成对应的非压缩公钥。
该非压缩公钥包括三部分,共65字节。
部分(1) 0x04,有一个字节 ;
部分(2) 公钥P.X ,有32个字节;
部分(3)公钥P.Y,有32个字节。
3. 对公钥进行SHA-256哈希计算:
将第2步所述的(1),(2),和(3)合并都一起组成为一个标准地址,即(1)+(2)+(3)。
对该标准地址进行SHA-256哈希计算,得到一个哈希值。
4. 再进行RIPEMD-160哈希计算:
对第3步计算所得的哈希值进行RIPEMD-160计算,得到结果。
例如:12345678901234abcdefghijklmnopqrstuvwxyz
5. 加入地址版本号(例如00):
就是将版本号(例如00)加到第4步的结果之前。
即 00 + 12345678901234abcdefghijklmnopqrstuvwxyz。
得到 0012345678901234abcdefghijklmnopqrstuvwxyz
6. 再进行两次 SHA-256 哈希运算:
将第5步的结果先进行一次SHA-256计算,可得:
CFD35FA5DEFD89E6AFAE8EC3DFCD4038043DF187606F4A2997733639784F1A2D
然后,对这个结果再进行一次 SHA-256 哈希运算,得到:
997E9A68BA2ED75691E224FFFFF3C8A4C4E947C633A6246583F85081CA725D06
7. 获得校验位:
选取第6步的结果的前4个字节(8位十六进制)作为校验位。
即997E9A68。
8. 形成16进制的比特币地址:
把第7步获得的4个字节加在第5步的结果后面,
即 0012345678901234abcdefghijklmnopqrstuvwxyz + 997E9A68,
得到 0012345678901234abcdefghijklmnopqrstuvwxyz997E9A68
也就是: 版本号 + 对公钥进行SHA-256和RIPEMD-160哈希计算得到的哈希值 + 校验位。
9. 获得比特币钱包地址:
最后,用Base58编码对第8步的结果进行编码,得到最终的比特币钱包地址。