关于比特币地址的一些问题和解答

1. 写在前面

比特币的地址是由一个字符串表示的。比较常见的是以1开头的字符串,也有以2, 3, m, 和 n 开头的字符串。关于这些字符串的区别和联系,笔者一直有很多问题,也在网上搜过很多答案。因此,这篇文章主要是做一个问题和答案的汇总,也包括我自己的一些理解。

2. Q&A

2.1 比特币地址以什么字符开头

本文列举一些最常见的地址类型,更详细的地址类型及其前缀字符见链接
主网 (Mainet)

  • P2PKH类型的地址以1开头
  • P2SH类型的地址以3开头

测试网 (Testnet)

  • P2PKH类型的地址以mn开头
  • P2SH类型的地址以2开头

2.2 比特币地址有哪些形式以及相互关系

本节主要介绍主网上的P2PKH类型的地址相关变量。
比特币地址相关的变量形式包括:ECDSA private key, ECDSA public keySHA-256 hash value, RIPEMD-160 hash value, address等,如下表所示。

  • 下方的变量主要由上方的变量计算得到
  • 计算主要分为两种:可逆的和不可逆的。一般而言,生成公钥的计算和哈希计算是不可逆的;字符串拼接和编码是可逆的。
  • 由于可以从9号变量计算出8号变量,从8号变量计算出4号变量,从4号变量计算出3号变量。因此从3号、4号、8号和9号变量之间可以互相推导得到,由其中的1个变量可以推导出其他3个变量。
  • 在博客理解比特币的raw transaction (1) P2PKH类型交易中,我们提到比特币交易中的input包含PubK字段,output中包含PubKHash字段。其分别对应着表中的1号变量的压缩格式和3号变量。
  • 我们通常说的比特币地址是9号变量
  • 5号变量往后的计算过程称为“Base58Check Encoding”过程
  • 更为详细的变量之间的推导计算参见链接.
    比特币地址的相关变量

2.3 比特币P2PKH类型地址的位数

经常访问一些比特币区块浏览器的数据,我们可以发先比特币的P2PKH的地址位数不全是一样的。举例来说,11111111111111111111BZbvjr只有26位,而1BnWPuYQ57dRcWMERGCBnHwv9tKLiw4JFB地址有34位。
我们在上表中,也提前列出了common bitcoin address的长度区间为2635. 那么,为什么这些地址的长度会不同呢?

观察上表,容易发现一直到8号变量,所有的变量长度都是固定且相同的。但问题就出来了从8号变量向9号变量转化的计算中。这个计算是个Base58Check编码过程,其将若干个前缀0表示为一个字符“1”,这直接导致了地址变量的长度不一样。

3.参考链接

发布了51 篇原创文章 · 获赞 23 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/u014633283/article/details/88622868