正文共:2,215 字
预计阅读时间:8 分钟
本文由Priyeshu Garg撰写,详细介绍了比特币最新升级提案Taproot是如何扩展网络的智能合约灵活性并提供隐私特性的。
以下为原文译文:
提升比特币脚本能力的最受期待的更新之一Taproot,可能很快会在比特币网络上推出。Taproot在2018年被首次提出,这个更新将扩展网络的智能合约灵活性,并提供前所未有的隐私特性,能让最复杂的智能合约与常规转账看起来几乎相差无几。
解决复杂智能合约的问题
尽管比特币到目前为止是第一个也是最有野心的一个区块链项目,但它也由于缺乏可扩展性与解决复杂智能合约带来的隐私问题的能力而备受批评。
比特币开发者们已经为解决这些问题努力工作了接近十年。现在,一个近乎完美的解决网络内脚本问题的解决方案就在眼前。同时有数个项目被提了出来,但Taproot是最有前途的一个。
Taproot在2018年1月首次由比特币核心开发者、Blockstream前CTO Gregory Maxwell提出,该方案致力于扩展比特币的智能合约灵活性。抛开Taproot对智能合约签名带来的意料之外的灵活性不谈,它还为转账带来了更多隐私特性。
像这样的重大创新只有在实施隔离见证的前提下才有可能。隔离见证引入了脚本的版本控制,这是对比特币协议的扩展,允许在网络上实施新的密码学签名算法。
Taproot的工作方式
要理解Taproot怎样工作,我们必须退回到比特币转账的基础上——脚本。脚本是嵌入转账中、在区块链上运行的几行代码,它定义了被转账的币可以被花费的方式。
在这些被转账的币能被花费之前,还有一些步骤需要完成:这些币的所有权必须通过签名被证明;如果有时间锁,则需要达到特定的区块高度或者日期;或者一个私钥集合中一定数量的私钥需要为转账提供签名。以上这些条件可以被组合起来形成一个非常复杂的智能合约。
智能合约的这些限制条件,或者说脚本,由于P2SH的存在,仅对这些币的新拥有者可见。这使得只有脚本的哈希值,或者说看起来只是一组随机数被包括在区块链里。但是,当这些币被花掉之后,这个脚本最终会被揭示出来。这意味着这笔转账的所有条件,包括那些没被触发的条件,都会在链上显示出来。
虽然非常直截了当,但这个过程会产生很多数据,而且在保护区块链链上转账的隐私方面非常不利。
解决这个问题的一个方式是使用默克尔化的抽象语法树(MAST)。这个提议基于默克尔树,这是一种历史久远的紧凑的数据结构,能够允许转账的所有不同限制条件被单独哈希。所有这些条件将被存在一个默克尔树里,产生一个称为默克尔根的单独哈希值用来锁定这些币。
*注释:此图尝试诠释MAST与Schnorr联合使用时的转账结构。以上结构中,如果Bob和Alice共同签名,资金可以被提取出来;而如果Alice与Bob不签名,过了时间锁规定的时间后,资金也可以以非合作的形式提取出来。以上想要解释开启与关闭闪电网络通道时需要的结构类型。
如果默克尔树里的任何数据被揭示到区块链上,这些数据都可以通过默克尔根和树上的其他成为默克尔路径的数据轻松验证。但是,默克尔树上的大多数其他数据将保持加密隐藏的状态。
MAST在保护数据隐私和有效性方面更进了一步,因为它仅仅揭示转账达成的条件。
Schnorr软分叉协议升级可以实现Taproot
Pieter Wuille,Blockstream的CEO,同时也是著名的区块链开发者,解释说Taproot直接建立在MAST与默克尔分支之上。在它的GitHub提议中,它解释道Taproot将允许几乎所有智能合约结构中包含一个条件,从而能让所有参与者对一个结果进行表决。参与者能共同合作,对一项清算转账表示同意。Wuille表示,这会节省更多空间,并增加花费时的脚本隐私性。
虽然Taproot自己已经有巨大的潜力,但只有与Schnorr结合起来,它才能发挥它真正的威力。这种新型的签名方式目前正在开发当中,将通过一次软分叉部署到区块链上。这将是比特币网络中最受期待的一次升级之一。
这种签名方式以其发明者Claus-Peter Schnorr命名,它是一套将私钥、公钥和转账签名连接在一起的数学规则。Schnorr被广泛认为是加密货币领域最好的签名形式。Wuille知道它可以在提供很好的正确性的同时又不损失延展性。
除此之外,Schnorr签名验证起来很快,这意味着更快的转账确认,以及飞快的转账时间。但是,最独特的一点是它集成了对多重签名的支持。
Schnorr签名不仅能将同一转账的几个签名合并成一个,而且公钥和签名都能合并成阈值公钥与阈值签名。这在区块链隐私方面意味着巨大的进步,因为多签转账将与常规转账几乎一样。
复杂的部分
大多数开发者对签名机制更复杂的实施过程感兴趣。Schnorr可以使用数据来改变私钥和公钥。这个改变可以像将这两把密钥乘以2一样简单。
“私钥乘以2”与“公钥乘以2”是相对应的,“私钥乘以2”可以对信息签名,供“公钥乘以2”验证。
新生成的密钥与其他密钥对看起来一样,无法分辨原先密钥是不是被改过。
Taproot永远包含一个条件,称为“联合关闭”,一项转账中的所有参与者可以合作来花费这些资金。通过使用Schnorr签名,“联合关闭”可以看起来与正常的点对点转账无异。这是通过将转帐中所有参与者的公钥加在一起来生成阈值公钥而实现的。所有参与者的签名结合起来生成的与阈值公钥相对应的阈值签名可以允许花费相应资金。
但是,Schnorr签名也允许转账内的资金以非合作的方式进行花费。花费资金的替代方法被组合成一个不同的脚本。这个脚本被哈希加密过,并被用来修改阈值公钥。阈值公钥与脚本的结合同样对应阈值签名与脚本的结合。
这种智能合约的复杂结构提供了最大程度的隐私性,阈值公钥与脚本的结合看上去与常规公钥一样。在某些罕见情况下,当区块链得知公钥实际上被更改过之后,转账的“联合关闭”就会失效。
这次协议升级可能对整个比特币网络造成深刻影响。减少区块体积意味着更快的转账和更少的转账费。这会使Schnorr签名成为区块链上人人都会用的方式。