首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

以3开头的比特币地址

我们昨天讲到的那笔交易中,收币地址虽然看似没什么不同,但仔细观察,会发现一个问题:

上面的地址是1开头,下面的地址是3开头。

而且观察历史上绝大多数的地址,都是以1开头的。那这个3开头的到底是什么地址?

今天主要讲一下以3开头的地址的由来。

我们首先回顾一下之前讲过的交易类型(参考比特币交易上锁的几大锁定规则),其中包括了P2SH交易类型(参考比特币交易上锁的几大锁定规则(补充))。

这种P2SH类型是基于多重签名类型而来,多重签名是指一个收币地址是由n方掌管,如果m方同意交易,那么就允许交易。P2SH基于多重签名,将收币地址的锁的长度降低到只有20个字节长度。下面再回顾一下P2SH的解锁工具和锁。

P2SH的解锁工具如下:

...

10 OP_CHECKMULTISIG>

(蓝色部分是原先多重签名的锁,现在与绿色部分的签名合并为P2SH的解锁工具,要解下面的锁。)

P2SH的解锁工具也称为赎回脚本(redeemScript),存于下一笔交易的签名(script)中。矿工需要用这个解锁工具,来解P2SH地址所对应的上笔交易中的锁:

OP_HASH160 2345nsd6s9r0f0vb9b0ds9fsfgs90f0sdfg9b OP_EQUAL

P2SH的赎回脚本类似于P2PKH中的公钥,唯一不同的是,需要将大锁解开之后,需要用这个大的解锁工具中的小解锁工具:

再解一次自己内部的那个小锁:

3

...

10 OP_CHECKMULTISIG

言归正传。

地址的生成,是需要根据不同的交易类型来生成的。地址的生成规则可以用简单的公式写明:

地址 = base58(版本号+A+校验码)

其中,A代表P2PKH的公钥或者P2SH的赎回脚本。校验码取SHA256(SHA256(A))前4字节。

P2PKH的版本号是0x00,那么在用base58编码对(0x00+公钥+验证码)加密,生成地址时,地址的首位即为1。这也是大多数的地址的生成规则。

同理,如果某笔交易的收币方定义为P2SH交易类型,那么在生成对应的地址时,需要将P2SH所对应的版本号填写进去,P2SH版本号是0x05,于是在用base58编码对(0x05+赎回脚本+验证码)加密,生成地址时,地址的首位即为3。

这就是为什么有的地址的开头是1,有的地址的开头是3的缘故。

关注【通俗易懂区块链】,学懂区块链

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180223G18HVW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券