慢速区块验证攻击
攻击原理
破坏挖矿博弈论的一个潜在威胁是:恶意矿工构建包含复杂交易的区块,这些交易需要异常大量的计算资源(因而需要更长时间)来验证。这是开发者主张保持区块体积较小的众多原因之一。
二次签名哈希攻击就是这样一个问题,它通过隔离见证的引入得到了解决。但仍存在其他需要解决的问题,Rusty Russell的"伟大脚本恢复项目"旨在通过实施更精确的交易验证计算成本系统来纠正这些问题。
攻击优势计算模型
最近我在思考:执行慢速区块验证攻击实际上能给恶意矿工带来多大优势?
为了描述矿工通过延迟其他矿工开始挖新区块X秒所获得的有效算力优势,我们可以用以下因素建模:
变量:
- T:预期出块时间(秒),值为600
- X:矿工通过发送难以验证的区块给其他矿工造成的时间延迟(秒)
- Z:攻击矿工控制的总算力比例
实际上,X延迟会因矿工而异,因为它取决于运行全验证节点软件的硬件速度。
任何给定矿工挖出下一个区块的预期时间都遵循指数分布,其速率与其算力成正比。考虑到整个网络的预期出块时间为600秒,出块速率将为:
- 矿工速率:Z/600
- 网络其余部分速率:(1-Z)/600
我们现在可以计算,如果慢速区块验证攻击矿工比网络其他部分提前X秒开始,他们找到下一个区块的概率。
场景分析
结果实际上没有我预期的那么糟糕,我曾天真地认为能够延迟网络其他部分10分钟的攻击者可以有效地对网络进行51%攻击。但我们必须记住,攻击者自己仍然需要以相同的高难度挖掘一个区块,他们的真实算力并没有增加,因此他们找到有效区块的预期时间保持不变。
另一个令人惊讶的发现是,随着攻击者算力的增加,这种攻击实际上变得不那么有效。也就是说,为了实现类似的乘数效应,所需的提前时间随着攻击者真实算力的增加而增加。
- 拥有总网络算力1%的攻击者,如果能够给自己10分钟的提前挖矿优势,可以使有效算力翻倍
- 拥有总网络算力5%的攻击者,需要11分钟的提前优势
- 拥有总网络算力10%的攻击者,需要12分钟的提前优势
- 拥有总网络算力20%的攻击者,需要14分钟的提前优势
实际影响分析
需要明确的是,如果难以验证的极其复杂的区块开始充斥网络,成熟的矿工不会简单地停止哈希计算。我预计他们中的大多数会验证区块头(这总是很快的),并开始基于不包含任何交易的空区块模板进行挖矿。
矿工在将交易添加到区块模板之前,需要在前一个区块的交易完全验证后更新UTXO集,以确保这样做是安全的。
因此,如果发生此类攻击,攻击矿工不会突然成为所有区块的主导矿工,但他们很可能成为唯一在区块中包含交易的矿工。这样,我们预计链上交易吞吐量将急剧下降,导致区块空间供应暴跌,因此如果需求保持不变,区块空间的现行价格和交易费用将飙升至相当高的水平。
因此,此类攻击的预期盈利能力是通过实质上垄断区块空间市场而获得的超额交易费用。如果在区块空间需求已经很高的时期进行,这可能是一种相当有利可图的攻击。