EOS开发完全解析(五):EOS系统资源解析,转账免费且防DDOS攻击的精妙设计

1,119 阅读9分钟

一、概述

EOS系统资源主要包括RAM、CPU和NET,其中RAM需要购买,而CPU和NET只需要用EOS抵押即可获得,赎回期是3天。所以,可以理解为RAM是收费的,CPU和NET是免费的。

二、资源解析

2.1 RAM

RAM是指运行时内存,EOS中唯一消耗性资源,数据存储时会消耗该资源,消耗完需要重新购买,目的是防止无意义的操作,消耗系统资源。

在EOS网络中,创建账号、创建智能合约、转账、购买资源、抵押、赎回、投票等操作的时候, 需要存储数据,所以会消耗RAM。

创建新账号的时候,需要为新账号购买RAM、抵押CPU和NET资源,购买RAM需要支付0.5%手续费,这些成本需要先由创建者来垫付,至于购买和抵押多少资源,则由创建者来指定。

**温馨提示:**如果只是创建一个空账号,不分配任何资源,是没有意义的,因为这个账号无法进行任何操作。

2.2 CPU(CPU BandWidth)

CPU资源取决于过去三天消费的平均值, 作为你下一次执行操作的费率。同样, 如果没有足够的 CPU 带宽资源的话, 你是无法使用 EOS 网络转账等基本功能的。例如, 你每次使用转账功能时, 都会消耗 CPU 带宽资源, 你单位时间内转账的次数越多, 消耗的 CPU 带宽资源越多, 但是带宽资源是可以随着时间的推移, 自动释放。

2.3 NET (Network BandWidth)

网络带宽取决于过去三天消费的平均值, 作为你下一次执行操作的费率。同样, 如果没有足够的网络带宽资源的话, 你是无法使用 EOS 网络转账等基本功能的。例如, 你每次使用转账功能时, 都会消耗网络带宽资源, 你单位时间内转账的次数越多, 消耗的网络带宽资源越多, 但是带宽资源是可以随着时间的推移, 自动释放。

CPU、NET与 RAM 资源不同的是, CPU和NET是通过抵押的方式获取的, 你可以通过赎回操作, 赎回抵押的CPU和NET带宽资源, 并在三天之后 (72小时后) 收到退款,而RAM消耗是永久性的。

三、EOS如何防止DDOS攻击

首先我们需要明白什么叫DDOS攻击(分布式拒绝服务DDoS:Distributed Denial of Service),浪哥不想整什么专业术语,那东西看着头疼,我们举个简单的栗子,你就明白了:

假设有一条宽100米的高速公路,有个哥们捣乱,找了50台挖掘机堵在路上不走,把整条路都堵塞了,干扰正常通行,这就是所谓的DDOS攻击。

表面上看,在EOS上发起DDOS攻击很简单,因为它是转账免费的,所以,我们只需要发送大量的无用转账信息,两个账号来回转,占用整个系统资源,阻塞网络不就完事了吗?

如果这种明眼人一眼都能看出来的问题,EOS都发现不了的话,**那BM就不能叫大神,而是叫“大坑”了!**试想一下,在2014年90%的项目还在抄袭比特币,且只能改改参数的情况下(如LTC、Dogecoin),BM已经推出基于区块链第一款应用BitShare——一个去中心化交易所,足见BM的实力与远见!所以我们有理由相信,EOS不至于犯这么低级的错误。

我们首先看看现有大部分公链是如何防止DDOS攻击的,其实很简单,就是转账收费,提高作恶成本。还是拿刚才的高速公路举例:你一上这条公路我就开始收费,你要是闲的蛋疼没事堵路上我就敢收到你破产为止!

无论是BTC、ETH还是NEO,可以说当前市面上95%以上的项目都是这个套路,倒不是说这个套路不行,事实上这个套路简单粗暴且有效,但是体验稍差

试想一下,现实生活中,如果你把你的钱从左手口袋,放到右手口袋,有人要收你的手续费,你是不是要跟他拼命? 然而,目前95%以上的公链就是这么做的,假设你有两个钱包地址,即使你把钱从A地址转到B地址也是要收费的,是不是感觉很奇怪?

那么EOS是如何做到既免费转账又能防止DDOS攻击的呢?主要有两点:部分收费资源的投入与使用成正比(一分钱一分货)。

3.1 部分收费

比如A账号第一次给B账号发送一个新代币(B账号没有该代币),那么A账号需要支付一定的转账费用,也就是消耗RAM(我们可以理解为首次上高速公路的上路费),才能完成转账。这样做有什么好处?那就是防止了大量垃圾空投!

那么有的童鞋就要问了,***“浪哥,这样岂不是会拦截掉一些缺钱的优质项目的空投,比如真正做事、但是没钱的团队(不要误会,我们这里的“做事的团队”是褒义)”***

没错,这样确实可能会错杀,所以**EOS允许用户自己支付空投费用来领取空投。**所以,如果你的项目如果足够优质,相信用户是愿意支付这个手续费的。

这一招已经拦截了大量想免费空投的空气币,不然我们的EOS账号恐怕已经被各种空气币塞满了。

要捣乱的童鞋说了,***“没关系,一点上路费而已嘛,又不贵,而且只需要支付一次,我给你就行了,看我上去怎么堵死你!”***(意思就是,你不是只有第一次转账该空气币才收费吗?那我就支付一次,后续我再无限来回转账)

好样的!看样子这位兄弟,是铁了心要来添堵了,不要紧,兵来将挡,水来土掩,再看EOS如何应付!

3.2 资源的投入与使用成正比

话说这位兄弟终于一次性支付了50台挖掘机的上路费,可谓出手阔绰!然而令他没想到的是,他支付的费用,只允许一次性通过一台挖掘机,也就是说,虽然有他50台挖掘机,但是需要一台一台通过,不能占用其他车道,**oh shit!**当时这位兄弟的内心几乎是崩溃的....

内心崩溃

虽然这位兄弟支付了第一笔上路费,但是占用的车道是跟你充的钱是成正比的,你只支付了一个车道的钱,就只能占用一个车道。

还有这种操作?这位兄弟一脸懵逼......

这就涉及到EOS的另外两个资源,CPU和NET,这两个资源虽然是免费的,但是每次转账也是会消耗的,只不过会随着时间的推移慢慢恢复,所以相当于免费。

**CPU和NET所能使用的数量与你抵押的EOS数量成正比。也就是说,如果你抵押的EOS数量只占全网的1%,那么无论你怎么来回转账,都只能占用这么多系统资源。**就像你50台挖掘机,如果只充了一个车道的钱,也只能占用一个车道慢慢走......

充5万更强!

不得不说,EOS的这个机制设计得着实相当精妙!既提高了用户体验又能防止DDOS攻击,再一次领先了靠收取手续费来防止DDOS的众多公链。

说到这里,这位童鞋就要抬杠了,***"既然只要抵押EOS就能发起攻击,那好,我就买它N多个EOS来抵押,非堵死它不可!"***

话说到这份上,再从逻辑的角度已经说服不了这位兄弟了,因为正常人肯定是干不出这事的!

要办成这事,起码需要两个条件:钱多、人傻。

首先你需要有足够多的钱来买入EOS,目前EOS的市值约48亿美金,那你要花多少钱才能达到效果呢?而且当你买的EOS越多,意味着你和EOS的利益联系越紧密(相当于花钱当股东)。

然后你还要傻不拉几的在EOS上搞破坏,然而损害EOS系统即损害自身利益,这种损人不利己的事,试问,除了傻X有谁能干得出来?这种方式简称**自杀式攻击。**这个是真没办法,一个连命都不要了的人,你怎么玩?

这种自杀式攻击方式,杀伤力极强,连自己都不放过,可以说现有的区块链项目无一幸免,包括比特币!

目前比特大陆已经间接掌控了超过51%的比特币算力,它要发起攻击易如反掌,但是它不傻,攻击比特币对他没有任何好处,反倒是老老实实卖矿机,维护比特币系统的稳定运行,比特币价格上涨,矿机价格也能卖的更贵,才是符合自身利益的发展最佳方式。

POS和DPOS的本质就是利益的制约与妥协。当你不持有该项目的代币,你无法发起攻击,当你持有该项目的代币,你会努力让该项目不被攻击。

四、总结

为了验证EOS的资源消耗,浪哥翻遍了Google,可惜没能找到一份权威、完整的数据,无奈只能自己亲自动手,一口气整了5个EOS账号来测试,终于完成了EOS资源消耗测试,文末附上完整测试表格以供各位大佬查阅。

由于这一讲知识相当重要,所以插队先写了,下一讲我们将继续“手摸手实现EOS的第一个智能合约”。

EOS资源消耗测试表

EOS开发系列教材推荐

EOS开发完全解析(一):Ubuntu上搭建EOS开发环境

EOS开发完全解析(二):用cleos命令行创建、导入、解锁钱包

EOS开发完全解析(三):EOS账号创建

EOS开发完全解析(四):EOS快速发币,何以圈钱?唯有发币!

获取最新、最全的EOS开发教程请关注微信公众号:区块链浪潮之巅——一个集项目分析与区块链技术开发于一体的公众号。