在过去的几个月当中,BSV区块链遭受了一系列的区块重组攻击,但所有的攻击都被成功击退。nChain的CTO兼BSV基础架构团队的技术总监Steve Shadders在今天的博客文章中概括性地阐释了BSV网络是如何应对重组攻击和双花企图的。
Shadders表示,在这些攻击之后,他对比特币协议和其抗攻击能力更有信心了,即便在诚实节点面对压倒性的算力的情况下。BSV是与中本聪2008年白皮书中所描述的原始比特币协议最接近的区块链,通过日益增大的区块体积和完备的脚本语言,能够无限扩容性且交易费用极低,还能实现完全的智能合约功能。
针对BSV网络的第一次区块重组攻击发生在2021年6月24日,BSV基础设施团队认为这是冒充Zulupool矿池的一名矿工所为。在发现Zulupool并没有挖出这些区块后,团队立即开发出了一些工具来检测和抵御潜在的区块重组攻击。
区块重组攻击是攻击者通利用比诚实网络更大的算力,私自挖一条长链,之后再广播这条替代性的较长链,并试图让诚实节点切换到这条更长的欺诈链上来,从而替换原有的交易。这条链可能包含被比特币协议所禁止的双花交易,但节点可以通过部署检测工具来识别这些无效交易。
应对攻击
在第一波攻击之之后,BSV基础架构团队便部署了相应的工具,之后攻击者沉寂了一段时间,然后在8月初再次试图进行区块重组攻击。此次他们冒充的是诚实矿工TAAL。
Shadders说:“在经历了先前的攻击之后,BSV基础设施团队做了相应的准备工作,使团队能够在这些欺诈性区块发布后的几秒钟之内就有所察觉,并迅速与已知的诚实矿工进行沟通。这些矿工选择了用自己的算力拒绝这些欺诈性的区块,最终诚实链超过了攻击者的分叉链,从而防止了双花的发生。”
他还解释说,比特币协会及时向外界公布了当时区块链的状态,使区块浏览器和监听节点能够跟随诚实矿工正在构建的正确、诚实的链。
他说:“在此期间,比特币协会公布了诚实矿工已经执行的一条命令代码,该命令使得攻击者之前隐藏的包含双花的区块变成了无效区块。因为我们知道,攻击者的链可能要在一段时间之后才能被诚实矿工的链超越。这就给BSV的其他非矿工节点运营商(如区块监听者运行的应用)提供了一个机制,让他们能够跟随大多数诚实矿工正在构建的链,因为他们认为这条链将成为最长链。”
这一应对方式的结果是,尽管攻击者花费了大约20万美元试图在BSV网络上进行欺诈,但在第二波攻击中未发现双花记录。尽管他们为这次攻击尝试投入了大量的资源,但未获成功,BSV继续在以预期的效率运行,交易吞吐量不断增长,并在过去的一个月中多次打破纪录,诞生了若干个GB级区块。
与比特币协议相协调的防御机制
由于BSV是基于白皮书描述的原始比特币协议,因此矿工的行为必须遵守协议创立之初制定的规则。Shadders详细介绍了白皮书的哪些部分适用于诚实矿工对最近攻击的应对。
在解释矿工对攻击的防御行为时,其关键点是矿工遵守了比特币白皮书中描述的“先见原则”。
Shadders说:“矿工负责执行比特币协议中规定的规则,根据比特币白皮书中定义的‘先见原则’,他们拒绝了无效的交易以及包含了这些交易的区块。”
他继续描述了为区块链状态的观察者赋予当前或回顾视角的重要性,他指出,在区块链自然延伸的情况下,视角之间的微小差异是很常见的。Shadders引用了白皮书中的多个不同章节,证明了如何去调和这种视角之间的差异——特别是在面临区块重组攻击的情况下。
他探讨了白皮书中描述的欺诈、双花、诚实链和有效性的定义,并强调了广播区块的必要性以及为何这是诚实节点的核心要求,因为只有如此才能满足白皮书中的以下描述:“收款人需要证明,在每一笔交易发生时,大多数节点都同意这是他们首次收到该笔交易。”
最近对BSV网络的一系列攻击表明,让代码完全执行网络规则是很困难的。而在网络规则遭到破坏的情况下,需要人工干预以确保系统状态。
Shadders解释道:“如果你在用算法表达某项规则时,却又不想引入潜在的攻击向量,这是不切实际的,因为算法是可以被恶意使用的,这就是为什么偶尔需要人类进行判断和干预的原因。
比特币不是代码,它是一个由多个独立方执行规则并拒绝其他参与方违反该规则的系统。”
欲了解攻击的全部细节,以及BSV网络根据比特币白皮书所做出的协调应对,请阅读Steve Shadders的原始博客文章。