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

區塊鏈浪潮之巔發表於2018-11-04

一、概述

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開發教程請關注微信公眾號:區塊鏈浪潮之巔——一個集專案分析與區塊鏈技術開發於一體的公眾號。

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

相關文章