Taproot 是发生在 2021 年 11 月的一次比特币协议升级,旨在提高交易隐私性、安全性和可伸缩性。
多年来,比特币协议已经经历了许多变化,主要是为了解决安全漏洞或修复其他问题。然而,由于比特币去中心化网络需要获得大多数网络参与者的支持,因此重大协议更改是罕见的。未能获得必要的支持可能会分裂区块链社区,之前已经导致了区块链的硬分叉。
这种情况在 2017 年发生过,当时引入的隔离见证(SegWit)——一种旨在减轻交易数据重量的升级——在比特币社区中引起了争议。尽管 SegWit 获得了大量支持,但也遭遇了重大反对,这导致比特币区块链硬分叉并创造了比特币现金。
为了避免类似的争议,比特币核心开发者对 Taproot 的实施采取了刻意的缓慢和谨慎的方法。它最初由比特币开发者 Gregory Maxwell 在 2018 年 1 月提出,后来在 2019 年 5 月由 Pieter Wuille 发展成比特币改进提案草案。2021 年 6 月,90% 的比特币矿工表示支持 Taproot 升级,比特币区块链的软分叉最终在 2021 年 11 月 14 日,即区块 709,632 时发生。
Taproot 是三项比特币改进提案的集合,由于它们之间的技术相互依赖,它们被同时实施。
在 Taproot 之前,比特币使用椭圆曲线数字签名算法(ECDSA)来创建交易签名。这一算法使用账户持有者的私钥生成签名,从而允许网络确认交易的有效性。
然而,ECDSA 的一个缺点是每个交易的签名必须单独验证,这使得无法通过批量签名来扩展这一过程。ECDSA 还使得很容易识别哪些交易是多重签名,这些交易通常用于来自企业钱包的更高价值的金额。
Schnorr 签名升级允许在单个批处理中验证多个交易签名。它还允许作为交易签名方的多方生成一个代表他们集体批准的签名。签名聚合的能力使每笔交易的数据量减少,从而增加网络交易容量,使批量交易处理更快、更便宜。
对于多重签名钱包,Schnorr 签名还提供了更多隐私,因为它们使得在与其他交易一起批处理时更难发现多重签名交易。
BIP341 - Taproot 是一个隐私升级,它实施了 Merkelized Abstract Syntax Trees(MASTs),有效地限制了提交到区块链的交易数据量。
Merkle 树是一种可以想象为具有代表交易所有可能结果(包括实际发生的结果)分支的树的数据结构。MAST 只存储执行的结果的分支,而不是存储所有可能结果的完整树。
MAST 的实现也有助于可伸缩性,因为它们需要在区块链上存储更少的数据。
BIP342 - Tapscript 是对比特币的 Script 编程语言的更新,以帮助支持 Schnorr 签名和 Taproot 实现。Tapscript 利用 Schnorr 签名聚合签名的能力,并使用它来释放交易见证部分的空间。
虽然在 Taproot 实施时,Tapscript 主要是支持其他两个 BIP 的工具,但它也使得在比特币上编码新功能更容易,因此它是未来功能的关键推动者。
自创世以来,比特币区块链一直成功运行,没有中断,结果很多人不愿动摇源代码。然而,随着比特币使用的增加,网络需要能够支持不断增长的用户基础,这就需要对其可伸缩性和可用性进行持续改进。Taproot 考虑到了这些问题,并为未来的改进提供了技术构建块。
Taproot 是比特币区块链的一次软分叉,这意味着节点不强制进行升级。在 2021 年 11 月 Taproot 实施之后的一年里,该协议的采用率仍然较低。
2023 年 1 月,Ordinals 协议在比特币主网上推出,并使用了 Taproot 和 SegWit 引入的一些功能。具名数目是数字资产,如图像或音频文件,刻录在聪上(一个 BTC 的最小面额单位)。这一特性使聪具有非同质化通证(NFT)的特性,在用户中非常受欢迎,尽管对于某些开发者来说,这是 Taproot 一个意外的使用案例。在实施具名数目的几周后,Taproot 的采用率呈指数级增长。
当一个 Ordinals 刻录在聪上时,是使用了 2017 年 SegWit 实施后分离出来的交易的“见证”部分完成的。
然而,直到 2021 年实施 Taproot——特别是 Tapscript——之前,见证字段中的空间都是有限的。理论上,Tapscript 使得刻录高达 4MB 的具名数目成为可能,这是比特币区块的整个重量。