Taproot软分叉升级简述
比特币的 Taproot 提案已获得社区支持,并预计于今年 11 月份激活,这引起了加密社区的较大关注。为什么 Taproot 会引起人们的关注?因为它是近年来比特币最重要的升级之一。
Taproot 是一种提升比特币脚本功能的技术,由 Greg Maxwell (比特币核心开发者)等公布,它希望通过此技术提升比特币的隐私性、安全性以及可扩展性。
具体来说,如何简单理解比特币中的 Taproot 软分叉升级?
Taproot 升级之于比特币
Taproot 软分叉升级对比特币来说,有几个好处,可以增强隐私、降低费用以及提升可扩展性。
目前加密社区最关注的问题之一是隐私。比特币链上发生的任何事情都是可以查看的,为了解决这个问题,出来了不少隐私解决方案,甚至有隐私代币,以此试图来解决加密领域的隐私问题。不过,目前为止,隐私代币试图通过隐私属性来取代 BTC 几乎是不现实的。
一般来说,比特币支出需要进行签名,同时还可以添加其他的条件,如时间锁、多重签名等。为了满足更多场景的需求,可以对这些条件进行复合,比如在某区块高度之后才能使用,且要满足多人签名才能支出等。比如某个项目持有的 BTC,有特定的支出计划(如支持开发等),可以采用时间锁+多重签名的方式进行支出。
Taproot 同样也支持比特币网络进行这些复杂功能交易,比如多重签名、时间锁定发行等。不过不同的地方在于,当前的解决方案在 btc 进行支出时,需要披露整个脚本(条件)。如果条件复杂,数据量会很大,执行起来也贵,效率不高。此外,它也不利于隐私,因为脚本会揭示所有参与方的信息。
通过 Taproot 升级则可以解决上述问题。
有了 Taproot,这些复杂的功能看上去是一次交易,其中的条件可以被隐藏起来。也就是说,通过 Taproot,可以隐藏比特币脚本的踪迹。例如,可以在闪电网络上使用 Taproot 支付 BTC,而人们只能看到这些对等交易。
此外,Taproot 升级还有利于降低费用和提升可扩展性,为比特币的复杂交易提供更多方便。
之所以能做到这些,很重要的是得益于 MAST 结构和 Schnorr 签名方案。Taproot 将两者纳入到其软分叉升级中。
MAST+Schnorr
MAST
MAST (Merklized Abstract Syntax Tree )是默克尔化抽象语法树。它来自于抽象语法树(Abstract Syntax Tree )和默克尔树(Merkle Tree)的结合。
Mast 结构中无需披露所有脚本,Bitmex Research
MAST 试图使用默克尔树对脚本中的操作进行编码。当 BTC 支出时,只需提供其分支运算并将分支哈希连接到固定大小的默克尔根上,从而减少交易大小,节省区块空间。它对资金可支付的不同条件都单独进行了哈希,且都包含在一棵默克尔树中,并形成单个哈希(默克尔根),由此锁定代币。
通过 MAST 结构,只有满足的条件才需要揭示出来,这增加了隐私性。此外,当它跟 Schnorr 签名方案结合,它还可隐藏 MAST 的结果,达成更好的隐私诉求。
整体而言,MAST 支持更复杂的交易,可以有各种支出条件,与此同时,它可不用揭示没有执行的脚本或未被触发的条件,由此实现隐私保护。此外,MAST 结构还有一个好处是,复杂交易可以实现交易大小的显著降低。有些交易有诸多复杂条件,但随着其脚本数量的增加,MAST 交易大小是对数增长,而非线形增长。
脚本数量与交易大小,David A.Harding
Schnorr
比特币社区还将 Schnorr 签名技术纳入 Taproot 软分叉升级中。Schnorr 签名目的在于实现高效性。比特币目前的签名方案是 ECDSA,它和 Schnorr 签名方案都属于椭圆曲线数字签名算法,不过 Schnorr 可以实现「聚合签名」。
简单来说,就是一笔交易中多个签名可以组合成一个,它通过将公钥和签名组成成「阀值公钥」和「阀值签名」,让其交易看上去跟普通交易没有区别。「阀值公钥」可以让参与者的公钥叠加在一起,而「阀值签名」可以让参与者的签名组合起来,根据约定条件进行支付。Schnorr 签名算法可以使得多重签名更高效,同时由于其看上去跟普通交易一样,因此,也提升了隐私性。
Schnorr 签名也被一些加密学家们认为更具安全性,它在「random oracle」模型范围内证明是安全的,而 ECDSA 签名则无法做到。
结语
抛开复杂的技术问题,Taproot 为比特币带来之前没有的好处:
降低费用
一些复杂的交易,其数据量会极大减少,这会让这些复杂交易费用显著降低。而费用的降低,则利于提升比特币上的复杂交易活动。
增强隐私
通过 Schnorr 签名和 MSAT 组合可以增强交易的隐私性,一些复杂交易看上跟普通的交易类似。
提升可扩展性和安全性
将 Mast 和 Schnorr 签名结合起来,可以让区块包含更多的交易,减少数据量,不仅较低交易费用,还提升了可扩展性以及安全性。不过,也不要对其扩大吞吐量有过高期待,它主要通过减少多签的大小。想通过它实现更大的可扩展性还是有一定的天花板的。