主页 > imtoken钱包最新版下载 > 深入比特币原理(十五)——隔离见证(Segregated Witness)

深入比特币原理(十五)——隔离见证(Segregated Witness)

imtoken钱包最新版下载 2023-10-09 05:12:53

在开始本节之前,建议先回顾一下深入比特币原理(四)和深入比特币原理(五)的内容,以便更好地理解隔离见证的原理

什么是隔离见证?

在比特币中,见证(witness)通常指的是锁定脚本(unlocking script)和解锁脚本(scriptSig),在之前学习比特币交易中,我们知道锁定脚本和解锁脚本是交易(transcation)的一部分。 顾名思义,Segregated Witness是指将部分锁定脚本和解锁脚本从交易中分离出来,放到一个独立的数据结构中。 隔离见证简称隔离见证

隔离见证如何运作?

目前比特币升级几次了,Segwit 支持 P2PKH 和 P2SH 支付。 加入隔离见证的交易被命名为 P2WPKH 和 P2WSH。 让我们来看看它们的区别。

1. P2WPKH (Pay-to-Witness-Public-Key-Hash)

先回顾一下P2PKH的锁定脚本(scriptPubKey)和解锁脚本(scriptSig)的内容

P2PKH

脚本签名:

scriptPubKey:OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

我们来看看P2WPKH的脚本内容

P2WPKH

比特币升级几次了_比特币怎么比特币钱包_比特币现金和比特币区别

脚本签名:(空)

脚本公钥:0

证人:

P2WPKH 的锁定脚本比 P2PKH 简单得多。 第一个数字 0 是版本号。 有了版本号,以后的脚本升级可以更容易向前兼容。

P2WPKH的解锁脚本是空的,解锁脚本的真实内容被移到了原交易之外的witness部分。

2. P2WSH (Pay-to-Witness-Script-Hash)

P2SH

脚本签名:0

scriptPubKey:HASH160 等于

P2WSH

比特币怎么比特币钱包_比特币升级几次了_比特币现金和比特币区别

脚本签名:(空)

脚本公钥:0

证人:0

P2WSH锁脚本和P2WPKH类似,第一位是版本号,第二位是赎回脚本(Redeem script)的Hash值。

值得注意的是,P2WSH锁脚本中的Hash值为256位(32字节),使用SHA256(pubkey)计算; 而P2WPKH中的Hash值是160位(20字节),是使用RIPEMD160(SHA256(pubkey))计算得到的。

这样做的目的是让钱包根据Hash值的长度来区分交易是使用P2WPKH还是P2WSH。 (想想为什么P2PKH和P2SH不需要做这样的区分?)

P2SH 交易中往往会有多重签名验证,因此验证信息会占用更多的空间,将这些信息从原始交易中移出,可以更大程度地减少交易规模。

Segwit如何升级?

正如我们在前面的章节中提到的,比特币升级往往伴随着硬分叉或软分叉。 软分叉影响较小,但要求更严格,需要非常仔细地考虑前向兼容性问题。

开发人员希望通过软分叉升级隔离见证,这意味着新旧客户端可以在同一个区块链上共存。 所以我们要考虑两种情况:

比特币升级几次了_比特币现金和比特币区别_比特币怎么比特币钱包

(1) 付款人客户端支持隔离见证,收款人不支持

(2) 付款人客户不支持隔离见证,而收款人支持

对于第一种情况,如果收款人不支持隔离见证,最终公布的地址将是一个普通地址(P2PKH或P2SH),所有交易都可以按照原来的规则进行。

而针对第二种情况,智能社区的开发者想出了一个过渡方案,将P2WPKH或P2WSH植入P2SH。

(阿里云最新优惠来了!爆款云产品限时10折,云服务器低至69元/年,新老用户都有优惠,立即购买:9i0i.cn/aliyun1111)

P2WPKH植入P2SH后,交易信息如下:

脚本签名:0

scriptPubKey:HASH160 等于

证人:

这里的脚本Hash值是RIPEMD160(SHA256(0))的结果,脚本Hash转换成P2SH地址,是一个segwit兼容地址。 不支持隔离见证的客户可以正常支付比特币到这个P2SH地址。

比特币怎么比特币钱包_比特币升级几次了_比特币现金和比特币区别

对于支持隔离见证的客户端,验证信息仍然可以放在见证结构中。 当然,这种过渡方案的交易量会比完整形式的略大,但比没有隔离见证的要小。

(福利推荐:还在原价买腾讯云服务器吗?现在腾讯云0.20折限时抢购!4核8G企业云服务器仅需1698元/3年比特币升级几次了,赶快购买>>>: 9i0i.cn/qcloud)

P2WSH 植入 P2SH

证人:0

脚本签名:0

scriptPubKey:HASH160 等于

使用方法同P2WPKH植入P2SH

Segwit地址是什么样的?

新版客户端激活隔离见证后,大部分钱包都需要较长时间进行升级。 所以新旧客户端最初会通过植入P2SH(在上一节中描述)相互兼容。

当隔离见证被广泛接受时,钱包将开始使用一种专门用于隔离见证的新型地址。 该地址将使用Base32编码而不是Base58,即全部使用小写字母和数字。 举例如下:

比特币升级几次了_比特币现金和比特币区别_比特币怎么比特币钱包

主网 P2WPKH:bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4

主网 P2WSH:bc1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3qccfmv3

如果看到以bc1开头的地址,则为使用隔离见证地址的交易,例如以下交易为例

深入比特币原理(十五)——隔离见证(Segregated Witness)

(福利推荐:华为云服务器最新优惠来了!企业级高性能云耀服务器一年限时闪购仅需88元,赶紧抢购>>>:9i0i.cn/华为云)

Segwit 有区块大小限制吗?

有限的。

比特币的块大小限制为 1000000 字节。 由于见证数据不在这个限制之内,为了防止见证数据被滥用,总区块大小仍然受到限制。

引入了一个新的概念叫做块权重(Block weight)

块重 = 基础尺寸 * 3 + 总尺寸

基础大小是不包含见证数据的块大小

总大小是包括见证数据在内的总大小

隔离见证限制区块重量