注册
关闭
琥珀财经

琥珀财经

发布于 2021-08-25 阅读量 3594

纯粹、简单、完美、无暇

解读比特币的可扩展性方案:隔离见证

原文标题:《干货 | 详尽解释隔离见证

作者:Magomed Aliev

解读比特币的可扩展性方案:隔离见证

隔离见证如何工作

在开始之前

解读比特币的可扩展性方案:隔离见证

后向兼容性

案例

Pay-to-Witness-Public-Key-Hash

解读比特币的可扩展性方案:隔离见证

而隔离见证之后的锁定脚本如下所示:

解读比特币的可扩展性方案:隔离见证

如你所见,隔离见证的输出比传统类型的输出要简单很多:只有两个值会被推入脚本执行栈中。如我们上面说得,旧版本的比特币客户端会以为这个输出是掉在地上的钱 —— 无需提供签名就能花费这个输出。不过,新的客户端会将第一个数字解释为版本号,而第二个则对应着一个锁定脚本(witness 程序)。在现实中,只有压缩公钥(compressed public key)的哈希值可以用在这里。这一点我们后面再说。

解读比特币的可扩展性方案:隔离见证

但是,在花费一个隔离见证输出的时候,交易的 scriptSig 将为空,而所有的签名都会放到一个专门的地方:

解读比特币的可扩展性方案:隔离见证

警告

Pay-to-Witness-Script-Hash

解读比特币的可扩展性方案:隔离见证

解读比特币的可扩展性方案:隔离见证

再来看看使用隔离见证后的发送者和接收者。输出的锁定脚本如下:

解读比特币的可扩展性方案:隔离见证

就像 P2PKH 交易一样,这个输出的脚本也变得更简单。第一个数值表示版本号,第二个是对应于赎回脚本(witness 程序)的 SHA256 哈希值(32位)。使用这个函数某种意义上是为了用长度来区分 P2WPKH 的见证程序以及 P2WSH 的见证程序(32 字节的 SHA256 哈希值 vs. RIPEMD160(SHA256(script)))。

解读比特币的可扩展性方案:隔离见证

在 P2SH 中嵌入隔离见证

P2SH(P2WPKH)

解读比特币的可扩展性方案:隔离见证

第一个数值是版本号,而第二个数值是 20 字节的公钥哈希值。这个脚本先做 SHA256 哈希运算,再做 RIPEMD160 运算,就可得到一个 20 字节的哈希值。

解读比特币的可扩展性方案:隔离见证

转化成一个地址:

解读比特币的可扩展性方案:隔离见证

发送给这个地址的输出的锁定脚本,看起来也就跟一个普通的 P2SH 地址的脚本没啥区别:

解读比特币的可扩展性方案:隔离见证

那么 Bob 花费输出的时候,交易的结构会像这样:

解读比特币的可扩展性方案:隔离见证

在一开始,我们创建的赎回脚本(也就是那个见证程序)会经过一次哈希计算,如果结果符合锁定脚本中的哈希值,这个脚本就会得到执行,程序会验证放在 witness 字段的签名。

P2SH(P2WSH)

解读比特币的可扩展性方案:隔离见证

第一个数值是版本号,第二个数值是 32 位的 SHA256 哈希值,对应于我们的签名脚本。然后我们拿这个见证程序的 HASH160 哈希值转成一个普通的 P2SH 地址。要使用发往这个地址的输出时,我们需在 scriptSig 字段公布这个见证程序,在 witeness 字段提供完整的多签名脚本。

隔离见证的好处

交易熔融性漏洞

网络和存储的扩展

可用的区块空间扩大,降低交易手续费

脚本版本

签名验证的效率优化

解读比特币的可扩展性方案:隔离见证

隔离见证也优化了签名算法的效率(如 CHECKSIG、CHECKMULTISIG,等等)。在 SegWit 之前,哈希计算的次数与签名数量的平方成正比,但有了隔离见证后,算法的计算复杂度就减低到了 O(n) (与签名的数量成正比)。

解读比特币的可扩展性方案:隔离见证

那还有啥问题呢?

结论

解读比特币的可扩展性方案:隔离见证

参考文献

  • 0
琥珀财经
琥珀财经

纯粹、简单、完美、无暇

0 条评论