当前位置:首页 > 比特币新闻 > 正文

比特币垃圾交易攻击事件分析:谁喝了毒药?

来源: 互联网时间:2015-07-23 16:57:00

bitcoin

上周,比特币网络遭受了一场复杂的大规模攻击,攻击者应该是一个专业且资金雄厚的黑帽黑客。这造成了网络巨大的交易延迟,更高的交易费,并迫使比特币的每秒交易数(tps)大幅上升。

但是比特币网络抗住了这次攻击,尽管网络被推到了极限,BlockCypher也没有出现当机的情况。

以下是关于这次攻击的详细介绍,事件的影响,以及生态系统需要怎么去解决这个问题。最后给坚持读完这篇文章的读者解答一个问题:为何这篇文章的特色图像会来自电影《公主新娘》。

攻击时间表

7月6日-7日:攻击开始

bitcoin1

该图(来自Statoshi.info)显示7月5日-7月7日之间的每秒交易数(TPS)。通常典型的每秒交易数大约是1-2tps,如7月5日所示,相当于填充了半个比特币块。在存储器池(内存池)的未确认交易,处于控制之下。

7月6日,有人决定发动洪水般的交易,不同于现有的“压力测试”,这些交易是未经通知没有明确意图的恶意交易。如上述所示的图中,每秒的交易数达到峰值时,大约达到了150tps。因此,内存池开始膨胀,攻击的第一天,未确认的比特币交易就达到了20000笔,这导致许多矿工和节点崩溃,从而出现了内存池的分歧。以前明显宽敞的1MB区块此时显得明显不够用了。有些中枪的人,因此等了一天,甚至更长的时间才等到交易确认。一些交易甚至永远都无法得到确认。换句话说,一些人未能将这些比特币成功交易出去

bitcoin2

7月8日-10日:攻击达到高峰

不同于其他公开宣布的“压力测试”,这种攻击在24小时之后并没有松懈。黑客以相同的模式继续攻击,交易量不断上升。内存池也不断增长,在某一个点的未确认交易甚至超过了 100,000笔

意识到这种攻击没有停止的意思之后,各大钱包开始认真对待,以估算适当的交易费,BlockCypher在7月8日的时候开始调整费用,平均费用上升了3倍,而最低费用上涨了惊人的25倍。雪上加霜的是,类似的攻击开始在比特币Testnet3链上进行。

同时,攻击者赠送掉一些垃圾交易的私钥,而鱼池(F2Pool)就利用了这点,具体可以在下面查看到:

BTC交易bb41a757f405890fb0f5856228e23b715702d714d59bf2b1feb70d8b2b4e3e08 | BlockCypher

此前从未有人预料到会出现1MB的交易,关于这个问题,你可以阅读下Rusty Russell写的博文。

BlockCypher承受了重压

最初的攻击,对于BlockCypher的基础设施来说,还是很容易承受的,但是,针对这些垃圾交易攻击,BlockCypher的微交易费用,未能做出及时的调整,这导致BlockCypher的客户遭遇了确认问题。不过之后,BlockCypher迅速地调整了费用。

此外,BlockCypher的双花检测也出现了很大的问题。除了充斥网络的垃圾交易,攻击者还试图双花他们的比特币。在这场恶毒的双花风波中,失望的用户也试图重新花费他们未经确认的交易,这导致产生了更多的双花交易。

bitcoin3

不幸的是,BlockCypher还有6行未经优化的代码,这导致BlockCypher的CPU占用率扶摇直上。为什么没有经过优化?简单地说:BlockCypher从未处理过这种规模的双花支出尝试。在此之前,BlockCypher检查双花的方式是,扫描所有地址的未花费交易输出(UTXO);BlockCypher表示,修复这一问题是简单的:“我们必须将双花交易构建到合适、相关的地址,而不是扫描所有内存池中的地址。”

攻击事件后的反思

好消息:尽管有一支技术精湛,资金雄厚的对手对比特币网络进行了攻击,比特币依然幸存了下来。

但并不是说我们可以安枕无忧了。

这种攻击实在太便宜了

经过粗略的攻击成本估算,在垃圾交易出现之前,比特币区块大约是处于半满的状态,平均每个块大约包含750笔交易。为了填补这些块,攻击者必须支付费用,让矿工去验证块中包含的交易。因此,攻击者所要支付的费用就是,750笔交易/块 *6区块每小时*24小时 * 15,000聪平均交易费 = 每天16.2 BTC 。 按280美元/ BTC的价格计算,攻击者填满1MB区块的成本就是4536美元/天

每天4536美元,就可以让你对比特币网络进行拒绝服务(dos)攻击。

更高的交易费将成为“新常态”

由于垃圾交易攻击,平均交易费用的上升在所难免。当交易费上升时,如果攻击者选择继续这样的攻击,那么他们的成本无疑会变得更加昂贵,从某种意义上来说,基于存粹的动态费用市场,是能够抵抗这类攻击的一种方式。

但是0.1美元,来替代0.05美元,这在你使用的是100美元的时候,将是一个问题。

这在发展中世界来说,比特币成功的机会将变得渺茫,这将是一场悲剧,不仅是对那些比特币死忠而言,对那些对经济的电子金融、更广阔的互联网电子商务的人士来说,同样也是如此。

大的内存池是可怕的

事实上,“这个”内存池的用词是不当的,因为每个矿工和节点都拥有自己的内存池,只是大小、策略以及规则不同罢了。大内存池强调比特币的分布式基础构架,当用户的交易随机丢弃时,会大大提高用户混淆的可能性。

接下来?

去适应。交易费的上升是不可避免的,但要注意的是,这种攻击与区块大小上限是有关的。如果我们的区块上限是8MB,例如,假设按之前的平均水平1-2tps计算,然后攻击者要填满7.5MB的区块,而不是500KB,那么其所需要的费用就是15倍,每天就是6万美元。当然,这种成本还是很便宜的,但对那些不满者来说,攻击的成本已经上升了许多。

作为这次攻击事件中的一线希望,生态系统应从中收集有用的见解,基础设施需要变得更加坚强(包括BlockCypher自己),BlockCypher证明当前比特币网络可以在150–400 tps的状态下维持,这对未来网络的扩展而言是个吉兆。

好吧,读到这里,《公主新娘》又是什么鬼?

在影片中,最让人难忘的场景之一,韦斯特利通过一场生死攸关的赌注,智胜死不悔改的维齐尼。摆在维齐尼面前,有两杯葡萄酒,韦斯特利说其中的一杯,放有Iocane毒药(《公主新娘》里一种虚构的无味速溶毒药),而另一杯则没有,让维齐尼挑选一杯。在经过认真的思考,并耍了花招之后(骗韦斯特利回头,偷偷地将两杯酒互换了位置),维齐尼选择了一杯,看到韦斯特利饮下后,维齐尼也欣然饮下,大笑着宣布自己就是胜者…

bitcoin4

…很快,维齐尼悲剧地领了便当。紧接着,韦斯特利揭示了他的计策:其实每个杯子都放有了毒药,他之所以能够幸免,是因为他花了数年的时间去适应Iocane的毒性,并成功获得了抵抗力。

这个故事的寓意:经过时间的积淀,有条不絮地暴露出一些小问题,可以从中获得巨大的生存裨益。这就是我们所称的抗毒性,也是“抗脆弱”的行为特征之一。同样的,比特币经历了多年的攻击,它已经证明了它的韧性。这次精心配制的垃圾交易攻击,仅仅是最新的一滴痛苦之毒,它只会让比特币网络变得更加强大。

但是,并不是说比特币就是不可攻克的,尤其是当你考虑到,5000美元/天的攻击费就可以阻止人们去使用比特币。我们现在需要做的,就是推进积极、迭代的解决方案。比特币解决了拜占庭将军问题,但它没有解决拜占庭核心开发者问题(Byzantine Core Developers problem)。有关前瞻性策略的共识,或许是比特币面临的最大风险。

----

原文:https://medium.com/blockcypher-blog/a-bitcoin-spam-attack-post-mortem-s-la-ying-alive-654e914edcf4
作者:Josh Cincinnati
编译:洒脱喜
责编:洒脱喜
稿源(译):资讯

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。