比特币隔离见证(segwit)很酷,但它不是短期解决方案?

2015-12-10 10:04 来源:巴比特资讯 阅读:7978
关于“隔离见证”(Segregated Witness,缩写为segwit)方案,Pieter Wuille在香港给出了一场十分精彩的介绍演讲,这是一个伟大的想法,并应尽快并安全地应用到比特币软件当中。

GAVIN ANDRESEN

关于“隔离见证”(Segregated Witness,缩写为segwit)方案,Pieter Wuille在香港给出了一场十分精彩的介绍演讲,这是一个伟大的想法,并应尽快并安全地应用到比特币软件当中。这是一种基本想法,对于比特币的未来会有巨大的裨益。当然它也需要一个更好的名字(“分离存在种种负面的含义…”)

你应该看看Pieter的演讲,我会给你一个关于它(segwit)的不同解释(我知道我在真正理解一样东西之前,经常需要用多种不同的方式来解释它)。

所以…将比特币发送到一个隔离见证锁定(segregate witness-locked)的输出(output),对于今天的区块链浏览器来说,它显得有点像是一头有点怪诞的小野兽,看起来像是任何人有一个脚本公钥(scriptPubKey)之后,就可以花交易,这个脚本公钥是:

PUSHDATA [version_byte + validation_script]

而隔离见证锁定输出的花费,可以不需要用到脚本签名( scriptSig)。

你可能会说,这不是疯了么?不是的,因为交易真正的脚本签名,将被放在一个单独的,新的数据结构当中,做验证工作的钱包和矿工会使用新的数据结构,以确保交易的签名是有效的。

该数据结构,将是一颗反映这些交易的梅克尔树(merkle tree),每一笔隔离见证输入(input)的交易,在第二颗梅克尔树中,将有一个带有签名数据的条目(每笔输入加上10个左右额外的字节,以允许欺诈证明(fraud proofs))。

最佳的设计,是将交易和隔离见证梅克尔树合并到同一颗树中,左边数上为交易数据,右边树上为隔离见证数据。而区块头中的梅克尔根(merkle root)将是这颗合并之后的树。它应该以一次硬分叉来完成(应该是这样的,在我看来),但Pieter提议说进行一次软分叉,将隔离见证梅克尔根放到每个区块的第一个(coinbase)交易当中,这会是更加复杂的,显得没那么优雅,但意味着它只需要一次软分叉。

甭管它是怎样去实现的,它对于钱包和大多数终端用户来说,会是一个平稳的过渡解决方案,如果你不想使用新奇的隔离见证交易,你大可不去使用。使用这种新奇的交易,向某人进行支付,就好比使用一个新奇的多重签名钱包进行支付交易一样(以3****为开头的BIP13比特币地址)。

这不要求钱包进行升级,但任何生成大量交易的人,都会有强烈的动机去产生隔离见证交易(Pieter建议说给这些隔离见证交易一些交易费上的折扣)。

所以…这个隔离见证方案,会如何对1MB区块大小的限制问题产生帮助呢?

好的,一旦所有的细节都制定完毕,软分叉或者硬分叉也实施完后,有显著的小部分交易使用了隔离见证锁定输出…会有更多的交易进入1MB的硬编限制区块当中。例如,最简单的one-input,one-input隔离见证交易会有90字节的交易数据,加上80个左右字节的签名数据,但只有这90字节是需要挤入这1MB区块的,而不是170个字节。更复杂的多重签名交易会节省更多的空间。

所以,一旦每个人都使用了隔离见证锁定输出,所有的交易也都是隔离见证交易,会有2-3倍的交易可以挤入1MB的区块当中。

隔离见证交易,并不会对目前的扩容瓶颈有所帮助,1MB‘区块’消息在整个网络中的传播,将和以前一样会占用同样的带宽。有几个解决这个问题的项目,目前正在进行中(包括IBLTs,弱区块(weak blocks),瘦区块(thin blocks),一个“blocktorrent”协议),还有一个已经在部署的,可以让1MB区块消息的传播速度远远超过本来的速度(Matt Corallo的快中继网络(fast relay network))。

我觉得为成功而设计是明智的。隔离见证方案是酷的,但它并不是一个短期的解决方案(需要6-12个月),而1MB区块限制的问题我们已经看到了。

 

原文:http://gavinandresen.ninja/segregated-witness-is-cool
作者:GAVIN ANDRESEN
翻译:洒脱喜
稿源(译):巴比特资讯(http://www.8btc.com/segregated-witness-is-cool)


声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。

点击阅读全文

相关阅读