第0章 引言
在EOS上发交易是不需要矿工费的,这和以往的区块链产品都不一样。用户免费可以带来极大的好处,却也会有一些不可避免的挑战。
第1章 区块链产品为了防止DDOS而设立矿工费
免费是互联网产品走向成功的一个非常重要的手段,免费能带来极大的流量,而流量带来的网络效应往往能催生质量。免费甚至是补贴用户是绝大多数互联网产品最惯用的一个营销策略。
但区块链产品到现在几乎没有诞生出免费的服务,矿工费是用户进入区块链必须支付的成本。
先通俗讲下什么是DDOS。如果你开了一家小超市,面积有限,你接待客户的能力也有限。如果有人请了100个人,进你的超市,就是瞎逛,但不买东西。100人会挤满你的超市,这下惨了。正常的客人都进不来了。这就是DDOS攻击。互联网产品特别怕这种攻击,比如你做一个网站,买的服务器只能接受1秒100次访问,但有人恶意使用100台肉鸡不停地刷新你的网站,这下你的网站就废了,正常用户都无法访问。
比特币带来了区块链技术,比特币设计了的矿工费最根本的目的就是为了防止DDOS。如果没有矿工费,用户可以无成本地攻击比特币网络。比如攻击者使用构造一种自己给自己发币的交易,因为没有矿工费,就可以无限制地发。交易都需要占用完整节点的带宽、硬盘、和CPU资源,如果遇到这种无限制的交易,那节点很快就会挂掉,无法正常接受和验证交易,整个网络就会崩溃。
以太坊的主要设计是提供一个智能合约平台,用户可以任意程序在以太坊上运行,这些程序运行在以太坊的节点上。但有一个潜在的大问题,如果用户编写了一个无限循环的程序,那这些节点的CPU、存储、带宽资源就会被消耗光,从而导致整个系统崩溃。
以太坊的设计为了防止这样的DDOS攻击,也设计了矿工费——gas,gas就是以太币。任何运行在以太坊网络上的程序,都会按需要消耗的资源进行划分成计算步骤,每一步骤需要支付一定的gas。而用户运行这个程序时,需要提前支付一定量的gas总额,如果在运算过程中提前支付的gas总额消耗光了,那就强行停止这个程序。通过这种方式来阻止用户对以太坊网络发起DDOS。
但在2017年有几个区块链产品开始提出免费策略,最著名的是EOS和IOTA。EOS白皮书上明确写明了用户是免手续费的。
EOS使用免费策略怎么应对DDOS呢?这是一个重大问题。
第2章 EOS白皮书里描述的对抗DDOS办法
首先EOS白皮书在摘要里就提供了最简单粗暴的对抗DDOS的方式,老子能承接百万级tps。
任何现在的非区块链互联网产品防DDOS的办法就是拼命提高承接访问的容量。因为发起流量攻击也是要花钱的,这个在黑市上有卖的。如果你的服务器能无限制地承接高流量,那就根本不需要怕什么DDOS。
但区块链产品不一样,因为区块链产品需要保留所有的历史记录,而非区块链产品是可以删除恶意攻击者的历史数据。所以使用DDOS攻击非区块链产品只会在攻击时对产品产生影响,但攻击区块链,攻击产生的垃圾交易是不能随意删除,从而会导致永久性增加存储负担。
所以EOS关有史无前例的交易承载容量还是不够的,还得有别的方法来对抗DDOS。
EOS白皮书提到的第二个对抗DDOS的办法就是抵押币租赁系统资源。用户虽然说是使用EOS网络上的资源是免费的,但却是需要抵押EOS来租用网络资源。比如全网有10亿个EOS,如果你只有一个EOS,那你就只能使用10亿分之一的网络资源。这个具体的资源分配只是一个定性的,定量的计算还是要去看代码。但原理大概就是这样。
所以任何DDOS攻击者想要发起对网络的攻击,那就需要买EOS币,而买了币,为什么要攻击呢?这就是一个利益问题了。但一个系统的安全,不能依赖于这种想象的利益。因为做空获益也是有可能的。
理论上没有人能够彻底攻击死EOS网络,因为没有人拥有100%的EOS币。不过这只是一个假象。因为对EOS网络发起攻击,本质上就是对EOS的超级节点的攻击,因为超级节点才是整个网络提供存储、CPU和带宽资源的地方。如果最终攻击的结果是让所有超级节点都负担不起运行节点的成本,那整个网络就崩溃了。
EOS系统设计还有第三招,冻结异常账户,这是最狠的一招,白皮书是这样写的:
智能合约的行为会发生异常或者变得不可预测,不再按预期执行;或有时,应用程序或账户会发现某个行为会导致其过度消耗资源,当这些问题不可避免地发生时,区块生产者有权去纠正这些问题。
这种可冻结“异常”账户的设计就让EOS变成一个需要“人治”的系统,这和区块链的“自治”理论有点不一样,通俗地讲,绝大多数区块链产品都不需要人值班,但EOS是需要人值班的,EOS需要人盯着自己的系统会不会出问题,出了问题得去抓坏人。
但哪怕是有这些招,其实EOS的免费使用还是有一些风险。
第3章 潜在的攻击EOS系统的方法
有两种针对EOS系统的攻击潜在方式,理论上我还没有想明白这个系统是否有完备的解决方案。
第一个是来自系统内部,超级节点内部竞争可能会导致军备竞赛式的攻击。
EOS共121个节点,21个生产者主节点,100个备用节点。这两类节点的收益是不一样的,虽然目前EOS主链还没有上线,不知道最终的利益分配规则,但大概率来说,这两者是收益不一样的,存在竞争关系。
备用节点,为了上任为主节点,就有动机去攻击主节点。只要让主节点出几次错,就有机会把它们挤下来,而备用节点上线成为主节点。
这种机制就会催生出内部相互攻击的方式。潜在的防御机制就是宪法对这种内部作乱的惩罚,规则制订再详备,都一定有漏洞,宪法不可能完备到杜绝所有的恶意竞争。
第二种攻击来自系统外部。
EOS系统上面可以建立dApp,dApp的创作者需要抵押币来租凭EOS系统资源,但dApp的用户并不需要抵押币啊。所以任何一个的dApp都存在需要应对比EOS系统本身更危险的攻击。一个攻击者可以无成本(只需要支付发起DDOS攻击本身的流量成本)攻击一个dApp,从而间接发起对EOS系统的攻击。
更为可怕的是,dApp之间相互竞争,会催生dApp之间相互攻击,这种相互攻击是一个大问题。
而进一步推理,如果有人想搞死EOS整个系统,那就可以恶意攻击所有的dApp,只需要支付流量攻击本身的成本。
目前我没有查阅到EOS将会采用何种有效的防御机制。
第4章 EOS系统的免费机制可能需要史无前例的超强服务器才能稳定运行
目前经过查阅资料,我还没有找到EOS系统设计是如何防止第3章的这两类攻击方式。除了“圣神的宪法”,按白皮书规定,EOS宪法将拥有最高权限,可以秒杀一切规则,也可以建立一切规则。谁知道“宪法”还能干吗呢?
但在“宪法”的威慑起作用之前,可能需要EOS的121个超级节点自身拥有足够强大的抗攻击的潜能。EOS的超级节点们需要区块链产品设计里最强大的硬件了,带宽、储存(包括内存和硬盘)、CPU,这三个资源都会是区块链里的顶级配置了。
现在我的8000块钱的电脑,还是能稳定运行Bitcoin core和Bitcoin ABC节点的,而且能追上最新高度。虽然我的以太坊节点勉强可以运行,但追不上最新高度了,这玩意动不动就掉线。
我想EOS节点,我不知道这辈子有没有机会去运行一个节点来玩玩了,我指的不是超级节点,指的是一个能下载和验证所有区块的完整节点。虽然我到现在都不知道EOS这种“完整节点”到底会不会出来啊。
第5章 结束语
祝EOS早点上线主网,我迫不及待地想看看这种免费的机制到底会怎么样。
另请阅读:
网友评论
后几个问题,节点互相攻击,怎么攻击?节点是要备案的,是要竞选的,如果有污点,那就会影响形象,以后怎么竞选?节点是要一直竞选的不是无限连任
DAPPS厂商互相攻击是同样的道理
你说的DAPPS抵押一定的token获取计算资源,用户免费使用,用户来攻击,那么DAPPS在设计的时候就应防止这种现象,比如一个微博类DAPPS,好不容易花钱获取一定的计算资源,用户在那浪费资源,他们也不会同意的