更新时间:2021-11-05 10:12:01点击:150
注:原文来自bitcoinops。
Taproot激活后会发生什么?
这篇文章发表不到两周,Taproot在区块高度达到709,632时将在比特币网络中被激活。 虽然已经了解其期待点,但现在需要了解可能存在的故障模式。
最好的(并且最有可能的)结果都很好,发生的一切都不应该被普通用户看到,只有仔细监视自己的节点,打算创建Taproot交易的人才能注意到任何事情。 块的高度达到709,631时,我们知道的几乎所有节点都执行相同的一致规则。 在一个块之后,运行bitcoincore0. 21.1,22.0或相关版本的节点强制使用以前版本的软件没有强制执行的附加Taproot规则。
这带来的风险之一是初始版本和后期版本的节点软件接受不同的数据块。 在2015年BIP66软叉激活期间发生了这样的事情。 这导致了6个区块的链分裂,以及多次短链分裂。
为了防止这个问题再次发生,工程师们已经做了很多努力。 仅当矿工故意挖掘了无效的Taproot块,或者禁用了硬编码在Bitcoin Core和相关节点软件中的安全措施时,才会出现类似的问题。
具体来说,要创建链分裂,矿工必须不遵守Taproot规则,而是创建或接受从Taproot输出(隔离证言v1输出)支出的交易。 如果矿工这样做,当比特币节点运营商的经济协议拒绝Taproot无效区块时,他们将失去至少6.25 BTC (约40万美元)。
如果未创建无效块,则不知道这些节点运营商会做什么,但根据bitnodes.io/nodes/的数据,可能有50%以上的节点运营商会运行Bitcoin Core的Taproot执行版本
虽然不可能,但理论上可以暂时连锁分裂,应该可以使用ForkMonitor.info等服务或Bitcoin Core的getchaintips RPC进行监控。 如果发生这种情况,轻量级客户端可能会受到错误的确认。 理论上可能会像2015年的链式分裂一样被确认6次,但这意味着矿工将损失近250万美元(相比之下,2015年的损失约为5万美元)。 如果潜在的损失如此之大,矿工们有望实际执行Taproot规则。
在我们能想象的大多数失败的情况下,简单有效的临时应对措施之一就是提高你的确认数量的限制。 如果在付款之前通常要等待6次确认,则在问题解决之前可以将确认次数增加到30次。
对于确信所有节点运营商的经济协议将执行Taproot规则的用户和服务,更简单的解决方案是只从Bitcoin Core 0.21.1或更高版本或兼容的备用节点的实现中获取交易确认信息。
虽然期待Taproot的激活能够顺利进行,但交易运营商和所有在709,632区块附近进行大宗交易的人都要升级节点,或者在出现问题征兆的情况下暂时准备增加确认数,这也确实是值得推荐的。