Taproot激活时会发生什么?
在这篇文章发布后不到两周的时间,Taproot将于区块高度达到709,632时在比特币网络激活,关于它的期待点,我们已经有所了解,而现在,我们有必要来了解一些可能存在的故障模式。
最好(也是最可能)的结果就是一切顺利,发生的任何事都不应该对普通用户可见,只有那些仔细监控自己的节点,以及试图创建Taproot交易的人才能注意到任何事情。在区块高度达到709,631时,我们知道的几乎所有全节点都将执行相同的共识规则,一个区块之后,运行Bitcoin Core 0.21.1,22.0 或相关版本的节点将强制执行早期版本软件未强制执行的附加Taproot规则。
而这带来的一个风险是,早期和后期版本的节点软件会接受不同的区块,早在2015年BIP66 软分叉激活期间,就曾发生过这样的事,这导致了一次6个区块的链分裂,以及多次较短的链分裂。
为了防止该问题再次发生,工程师们已投入了大量努力。只有当矿工故意挖取一个无效Taproot区块,或者禁用硬编码到Bitcoin Core和相关节点软件的安全措施时,Taproot才会出现类似的问题。
具体来说,要创建一次链分裂,矿工需要创建或接受一笔从Taproot输出(隔离见证 v1 输出)支出的交易,而不遵循Taproot规则。如果矿工这样做,当比特币节点运营商的经济共识拒绝掉Taproot无效区块时,他们将损失至少 6.25 BTC(大约40万美元)。
在没有创建无效区块的情况下,我们无法确定这些节点运营商将做什么(节点可以完全私下运行),但据bitnodes.io/nodes/的数据表明,也许超过 50% 的节点运营商正在运行Bitcoin Core的Taproot执行版本,这可能足以确保任何创建无效Taproot区块的矿工,都会看到其区块会被网络拒绝。
虽然不太可能,但从理论上讲,暂时的链分裂还是存在可能的,我们应该可以使用ForkMonitor.info等服务或Bitcoin Core中的getchaintips
RPC对其进行监控。如果发生这种情况,轻量级客户端可能会收到错误确认。尽管理论上有可能获得 6 次确认,就像 2015 年的链分裂一样,但这意味着矿工会损失掉近250万美元(相比之下,2015年的损失大约为5万美元)。我们希望,在潜在损失如此大的情况下,矿工们会实际执行Taproot规则。
在我们可以想象的几乎任何失败情况下,一个简单但有效的临时响应措施,就是提高你的确认数限制。如果你在接受付款之前通常会等待6次确认,那么你可以将确认数提高到30次,以等到问题得到解决。
对于确信全节点运营商的经济共识将执行Taproot规则的用户和服务,更简单的解决方案是仅从Bitcoin Core 0.21.1或更高版本(或兼容的替代节点实现)获取有关的交易确认信息。
我们希望Taproot激活能够顺利进行,但也确实鼓励交易运营商及任何在709,632区块附近接受大额交易的人升级节点,或准备在出现任何问题迹象时临时提高确认数。