EOS開發徹底解析(五):EOS系統資源解析,轉帳免費且防DDOS攻擊的精妙設計

1、概述

EOS系統資源主要包括RAM、CPU和NET,其中RAM須要購買,而CPU和NET只須要用EOS抵押便可得到,贖回期是3天。因此,能夠理解爲RAM是收費的,CPU和NET是免費的。微信

2、資源解析

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消耗是永久性的。3d

3、EOS如何防止DDOS攻擊

首先咱們須要明白什麼叫DDOS攻擊(分佈式拒絕服務DDoS:Distributed Denial of Service),浪哥不想整什麼專業術語,那東西看着頭疼,咱們舉個簡單的栗子,你就明白了:cdn

假設有一條寬100米的高速公路,有個哥們搗亂,找了50臺挖掘機堵在路上不走,把整條路都堵塞了,干擾正常通行,這就是所謂的DDOS攻擊。blog

表面上看,在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的本質就是利益的制約與妥協。當你不持有該項目的代幣,你沒法發起攻擊,當你持有該項目的代幣,你會努力讓該項目不被攻擊。

4、總結

爲了驗證EOS的資源消耗,浪哥翻遍了Google,惋惜沒能找到一份權威、完整的數據,無奈只能本身親自動手,一口氣整了5個EOS帳號來測試,終於完成了EOS資源消耗測試,文末附上完整測試表格以供各位大佬查閱。

因爲這一講知識至關重要,因此插隊先寫了,下一講咱們將繼續「手摸手實現EOS的第一個智能合約」。

EOS資源消耗測試表

EOS開發系列教材推薦

EOS開發徹底解析(一):Ubuntu上搭建EOS開發環境

EOS開發徹底解析(二):用cleos命令行建立、導入、解鎖錢包

EOS開發徹底解析(三):EOS帳號建立

EOS開發徹底解析(四):EOS快速發幣,何以圈錢?惟有發幣!

獲取最新、最全的EOS開發教程請關注微信公衆號:區塊鏈浪潮之巔——一個集項目分析與區塊鏈技術開發於一體的公衆號。

相關文章
相關標籤/搜索