微信截图_20190520091930.png
BCH一路走来坎坷不断。在BCH的发展的历程中,经常有攻击者想要对BCH发动攻击,想要将BCH置于死地。就连此次的网络升级都被有心人钻了空子。攻击者在BCH上发了一堆特殊交易,导致矿池挖新块时失败。不过,BCH拥有强大的10确认不回滚机制以及足够的算力保护,使得BCH在很快的时间内恢复正常,顺利完成升级,并没有对BCH网络造成大的影响。
对于BCH来说,其实还有一种看似友好实则是攻击的行为——压力测试。
提到压力测试,BCH社区中很多成员对此并不陌生。在去年的9月1日,BCH网络曾经进行过一次声势浩大的压力测试。在那次测试中,BCH在24小时内确认200万笔交易,最大区块达21.3MB。虽然最终结果是好的,展现了BCH超强的交易处理能力以及面对大量交易时的超低交易费用。不过,压力测试也并非是一种良药,反而会对BCH网络带来很多威胁。
在去年,还曾有一个名为BitPico的臭名昭著的机构声称要对BCH发动攻击,选择的方式就是压力测试。虽然最终不了了之,但是这也说明压力测试是一种攻击方式。
压力测试有哪些影响?
01
压力测试是一种DDOS攻击
微信截图_20190520091938.png
Bitcoin ABC的首席开发者Amaury Sechet在reddit上回复关于压力测试的帖子时曾提到:“在主网上运行时,压力测试被称为DDOS攻击”。他还进一步解释道:“当您在系统上生成活动只是为了增加工作负载时,这是一种DDoS攻击。如果系统在该工作负载下失败,则攻击成功。”。
微信截图_20190520091946.png
另外一个开发者也说道:““压力测试” 是 DDoS 攻击。它降低了对开发者的信心,并展现出缺乏专业精神。让我们投资基础设施 & 在测试网上进行适当的测试。让我们向世界展示BCH不是一个业余项目, 而是一个严肃的软件开发工作”。
所谓压力测试,即在网络上发送大量粉尘交易,这些交易没有实际上的作用,只是一种简单的测试而已。虽然我们所看到的每一笔交易都是正常的交易,包含正常的手续费,但是从本质上而言,它依旧属于一种DDOS攻击。
何为DDOS攻击?DDOS攻击指的是分布式拒绝服务攻击,指以分散攻击源来黑进指定网站的黑客方式。DDOS的攻击方式有很多种,最基本的DOS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。DDOS攻击手段是在传统的DOS攻击基础之上产生的一类攻击方式,主要分为两种流量攻击和资源耗尽攻击。
BCH社区想要进行的压力测试可能出发点是好的,是为了测试BCH网络的性能,从而帮助更好的升级和扩容,但是这些无意义的小额交易疯狂涌入BCH网络,一旦超过BCH网络的交易处理能力,对BCH造成的伤害却是和DDOS攻击是类似的。这些无意义的交易将会占用过多的服务资源,从而让合法的交易无法得到服务的响应。
在去年的压力测试中,就出现了BCH交易确认延迟的问题。虽然BCH区块容量较大,造成拥堵的难度非常大,需要天量的交易量,但是当大量的粉尘交易涌入BCH网络中时,也会让交易时长增加一点点。这也对BCH网络上的正常交易造成了一定的影响。
02
压力测试影响BCH网络上应用程序的运行
BCH是一个功能多样的加密货币,它不仅仅是一种可以用于交易的货币,还是一个可以构建去中心化应用程序的网络平台。矿工不是这个网络唯一的参与者。很多区块浏览器和钱包等都是运行的完整节点。
目前BCH网络的区块上限暂时设定为32MB,面对压力测试中的巨量交易,即使矿工的硬件和网络可以轻松应对,但是其他基础设施和应用是否都可以持续处理32MB的大区块,暂时还是未知数。这对于BCH网络中的应用程序带来了一些不确定的风险。
03
压力测试增加了开发者的负担
当压力测试进行时,如果压力测试的交易数量过多,超过目前区块所能容纳的交易数量,不仅会导致交易的费用随之上升,交易确认时间增加,影响正常的合法交易,还会增加BCH网络的运行负荷,增加区块索引所需的时间。这种情况下,就会消耗更多的资源,甚至一些需要索引区块的服务很有可能会停止工作。
这将增加很多新服务开发人员的负担。将这些没有意义的垃圾交易发送到主网上并不会使代码变得更快或更有效,反而还会造成一些阻碍。
04
在主网上进行的压力测试是没有意义的
如果说压力测试可以测试BCH面临大量交易时的表现情况,从而帮助BCH更好的升级。其实这完全可以在testnet(测试网)上进行。BCH测试网存在的意义就是为了测试。在主网上进行压力测试几乎没有提供有用的数据。在压力测试中所发生的事情就是网络可以处理一两个大区块或者一些中等大小的区块。而我们早就知道BCH网络可以做到这一点。
关于这一点,Bitcoin ABC的首席开发者Amaury Sechet说道:“如果你不是在测试网上进行测试,那就不属于测试。Testnet在所有方面都类似于Mainnet。事实上,这是一种更好的测试方法,因为任何人都可以在任何时间运行疯狂的实验。如果你的东西能在testnet上运行,那就可以在mainnet上运行。当你在主网上进行压力测试时,这只是在为所有的合法交易制造麻烦。“
对于开发者来说,不管是升级还是应用程序的开发,都可以在测试网上进行测试,记录数据从而进行改进和优化,这将有助于开发者更快更高效的编写代码。与此同时,也不会影响BCH主网的正常运行。
05
压力测试为BCH带来不好的舆论影响
当BCH链上交易增加,大家更希望看到这些交易量的增加是真实的交易。不管是来自商家,还是来自应用程序,这些交易都是有效的交易,是BCH生态发展的证明。
经常性的压力测试很容易给大家带来一种错觉:BCH网络上增加的交易量都是刷出来的。这将会打击BCH社区的积极性,也会让外界对BCH造成误解。
如果真的想在主网上进行压力测试,不妨在BSV链上进行,毕竟这是BSV支持者一直在做的事情。BSV诞生以来,为了能够在主网上打出大区块,已经进行过3次努力。在第三次时,有BSV粉丝开发出了专门构建压力测试的工具,很多热情的BSV粉丝纷纷自掏腰包往链上发布大量交易。一个上百M的块里面包含了几十万笔交易。BSV之所以是压力测试的最佳链,不仅仅是社区支持,还因为只有矿工运行完整节点,BSV链上实际交易量少,一旦BSV链在压力测试中出现问题,还可以进行重组。这种方式不会对BSV链造成非常大的影响,还能满足用户的这一需求。