两年多以来,比特币的共识层一直保持不变。自2017年8月“隔离见证”(SegWit)启动以来,比特币一直没有进行硬分叉或软分叉协议升级,这是迄今为止比特币维持无共识分叉最长的一段时间。
不过,这种状态可能很快就会结束:几个向后兼容的软分叉目前正在开发中。乐观地说,如果他们能从比特币生态系统中获得足够的支持,其中一些可能会在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。
本文来自,仅作分享,存在异议请联系平台删除。本文观点不代表刺猬财经 - 刺猬区块链资讯站立场。