17

比特币共识层两年未变,今年可能会有这些升级

 4 years ago
source link: https://news.huoxing24.com/20200107220842933534.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

两年多以来,比特币的共识层一直保持不变。自2017年8月“隔离见证”(SegWit)启动以来,比特币一直没有进行硬分叉或软分叉协议升级,这是迄今为止比特币维持无共识分叉最长的一段时间。

3qy2eev.jpg!web

不过,这种状态可能很快就会结束:几个向后兼容的软分叉目前正在开发中。乐观地说,如果他们能从比特币生态系统中获得足够的支持,其中一些可能会在2020年激活。

本文罗列了那些可能是比特币在新的一年……或者在新的十年里进行的协议升级。

Schnorr/Taproot/Tapscript

许多密码学者认为Schnorr签名是该领域中最好的密码签名类型。它们提供了很强的准确性,不受延展性的影响,验证速度相对较快,而且可能最有趣的是,可以进行数学运算。对比特币来说,其中一个优势是:几个签名可以聚合成一个签名,例如,这可以在经济上刺激增强隐私的CoinJoin交易。

在比特币协议中加入Schnorr签名的计划已经进行了一段时间了。但在过去的一年里,致力于Schnorr签名方案的开发人员,比如Blockstream的开发人员Pieter Wuille、Jonas Nick和Xapo的Anthony Towns,透露了更加雄心勃勃的计划。Schnorr签名将成为软分叉协议升级Taproot的一部分,这是由Bitcoin Core贡献者Gregory Maxwell提出的协议升级,它本身的灵感来自于一个更老的方案,称为MAST(Merkelized Abstract Syntax Tree)。

比特币可以被锁定,仅限在几种不同的条件下使用,比如要求时间锁(timelocks),即需要几个参与者提供的秘密号码才能解锁这些比特币。通过MAST,各个不同的条件都被哈希并包含在默克尔树(Merkle Tree)中:一个紧凑的加密数据结构。这些币会被锁在默克尔树的最后一个哈希里,也就是默克尔根(Merkle Root)。要花费这些币,你只需要告知你最终使用的情况。这些币可能被解锁的其他方式将永远被隐藏起来。

Taproot则是基于一个有趣的部署:无论多么复杂,几乎任何MAST结构都可以(或应该)包括一个条件,允许所有参与者就结果达成一致,并一起签署一个结算交易。这种“协作结算”将覆盖所有其他条件。

Taproot利用这种部署并利用Schnorr签名使协作结算看起来像一个常规交易。简单来说,协作结算将使用一个聚合签名来完成,它看起来就像一个普通签名。在这个过程中,MAST结构完全不对外界公开!这有利于隐私和效率。

Taproot可能还会附带一个升级版的比特币编程语言Tapscript,后续在比特币编程语言中添加新功能(“操作码”)也会变得更加容易。

虽然开发人员仍在讨论部署细节,但Taproot似乎没有太大的争议。

“大共识清理”

The Great Consensus Cleanup(大共识清理)是由Square Crypto开发者Matt Corallo提出的软分叉。与大多数协议升级(包括本文所列的其他升级)不同的是,“大共识清理”并不打算用新功能或新的可能性来丰富比特币。相反,正如其名字暗示的那样,这个软分叉将移除比特币协议中的一些边缘情况漏洞。

这些漏洞具有很强的技术性,而且“杂草丛生”。例如包括需要大量处理能力才能验证的边缘交易类型、用于升级部分协议的冗余技巧,以及比特币难度调整算法中的一个弱点。人们知道这些漏洞已经有一段时间了,但是人们普遍认为利用这些漏洞代价太大而无利可图,或者当这些漏洞发生时相对容易对付。不过,修复这些漏洞会让比特币变得更健壮一些,同时也会让比特币开发变得更容易一些。

反对“大共识清理”的主要理由可能是,从理论上讲,某些升级可能会让某些现有的币(UTXOs)无法使用。尽管这种UTXOs根本不可能存在,但我们不可能确切地知道它们是否存在。一些人认为,让这些币无法花费是一种风险,从原则上讲,这种风险永远不应该冒。

“Noinput类别”

比特币交易包含密码签名,用于证明公钥的所有者确实希望在特定的交易中使用相应的比特币。但并不是整笔交易都被签署,对交易的哪一部分签名是由一种叫做“sighash标志”的东西来指示的。

Blockstream的开发者Christian Decker和Xapo的Towns提出了一类新的sighash标志,包含了SIGHASH_NOINPUT、SIGHASH_ANYPREVOUT和SIGHASH_ANYPREVOUTANYSCRIPT,它们提供了类似的解决方案,因此我们将所有这些都称为“Noinput类别”。

如果Noinput类别中的sighash标志包含在一笔交易中,就代表着输出(交易的“接收”部分)和其他一些交易数据将被签名,但不包括输入(交易的“发送”部分)。如果不对输入进行签名,即使在对交易进行签名之后,也可以换成不同但兼容的输入。

通常情况下,不会有其他兼容的输入。签名仍然对应于一个公钥,而这个公钥只对应于一个特定的币(或者一部分)。换成随机输入会破坏这样的连接并导致交易无效。

但也有一些输入是可以交换的例外。值得注意的是,一种名为Eltoo的新型闪电网络支付通道协议的比特币交易,可能需要将它们的输入交换为另一个兼容的输入。这将大大简化执行支付通道的方式。最值得注意的是,漏洞和其他诚实的错误不会导致一个通道所有的资金损失,而且用户可以使用更少的备份数据。

Noinput类别的主要缺点是,如果使用不当,特别是SIGHASH_NOINPUT可能是不安全的。SIGHASH_ANYPREVOUT和SIGHASH_ANYPREVOUTANYSCRIPT解决了这个问题(并使其与Taproot兼容),但代价是增加了复杂性。有些人还建议OP_CHECKTEMPLATEVERIFY(见下文)或OP_cat(可以通过Tapscript重新启用已被禁用的操作码)也可以达到类似的目标。

OP_CHECKTEMPLATEVERIFY

OP_CHECKTEMPLATEVERIFY(CTV),曾被称为OP_SECURETHEBAG,是由Bitcoin Core贡献者Jeremy Rubin提出的一种新的操作码。它的主要优势是,可以帮助缓解比特币在高峰时段的网络拥堵和费用,有效提高网络吞吐量。

更具体地说,CTV将在某种程度上把一笔比特币交易分成两笔。交易的“发送”部分将包括输入,基本上就是币的来源地址。交易的“接收”部分包括输出,基本上就是币被发送到的地址。

这两部分将通过“发送”交易中包含的“提交输出”(committed output)的特殊输出相互绑定。提交输出将包含一个加密哈希:一个看似随机但相对较短的数字短字符,作为唯一的序列号,将其链接到“接收”交易。在“发送”交易中“发送”的币只能由“接收”交易“接收”。

关键在于,“发送”和“接收”这两部分交易都被广播到网络中,两者有重要的区别。“发送”交易包括一笔相对较大的费用,以确保快速确认。“接收”交易包括相对较低的费用,这意味着可能需要一段时间才能确认。

等待低费用交易的确认对交易的接收方来说应该不是什么大事。一旦“发送”交易被确认,就将确保所有的钱都到了“接收”交易。这些资金被固定在区块链中,除了发放给接受者外不能有其他用途。

如果接收方确实需要加快“接收”交易的速度,例如,因为他们必须重新花费这些币,他们可以直接从未经确认的“接收”交易中支出资金。如果新交易的费用足够高,那么“接收”交易和新交易都会很快得到确认。更有趣的是,CTV可以将“接收”交易分割成更小的交易,称为树支付(Tree Payment),以此来提高效率。

反对CTV的主要理由可能是,可能有更好或更简单的方法来完成相同的目标。一些人还认为Noinput类别或OP_cat就可以做到。

驱动链BIP

侧链是“锚定”在比特币区块链上的区块链,允许比特币有效地在比特币区块链和侧链之间来回移动。一旦币到了侧链上,它们就会遵守侧链的协议规则。举个例子,我们可以设置包含隐私功能的“Zcash侧链”,包含智能合约的“以太坊侧链”,或者低费用区块链的“大区块侧链”。

目前已经存在一些侧链,最知名的是Blockstream的Liquid和RSK Labs的RSK。这些都是“联盟侧链”:比特币的区块链和侧链之间的连接是由该领域知名公司组成的“联盟”管理的。他们控制了比特币区块链上的一个多签名地址,并通过集体签名来“移动”比特币。

驱动链(Drivechains)将由比特币矿工来保护:也就是比特币区块链的矿工。将资金从侧链“转移”回主链,需要在一段较长的时间内获得大量的算力。此外,驱动链需要联合挖矿,这意味着比特币区块链上的算力也保护了这条侧链。

为了实现这一点,Tierion开发人员Paul Sztorc和CryptAxe提出了两个软分叉。第一个被称为Hashrate Escrows,它将在比特币的区块链合约中锁定资金(将其“移动”到侧链),只有在算力投票够多的时候才能解锁资金(将资金“移动”到比特币区块链)。第二个软分叉叫做Blind merge Mining,它将使侧链获得与比特币区块链相同的算力。

驱动链的争议在于它可能会给比特币矿工更多的权力。一些人还建议使用Noinput类别来实现Blind merge Mining。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK