當前位置:
首頁 > 最新 > EOS的技術層面解讀

EOS的技術層面解讀

EOS技術層面解讀

中原區塊鏈5月8日周二例會分享

整理人:王朋成

一、EOS介紹:

大家好,我叫王磊,今天由我給大家分享一下EOS技術相關的一些內容,我會從以下幾個方面進行分享。

首先是EOS的介紹

然後是EOS的共識機制DPOS與第二版白皮書當中提出的BFTDPOS

第三會介紹EOS的賬戶與錢包分離機制。

然後會接著講一下eos3.0測試版本的開發相關的內容。然後最後會簡單介紹一下剛剛更新的EOS4.0的一些特性。

EOS大家其實都很熟悉,是由Block.one公司研發的區塊鏈底層的公鏈系統,主要是想解決現有的區塊鏈應用性能低、安全性差、開發難度高、還有過度依賴於手續費的問題,實現的是分散式應用的擴展。EOS提供了這個賬戶、身份驗證、資料庫、非同步通信以及數以萬計的CPU或者集群上的程序調度。最終的結果是整個區塊鏈的架構體系。最終的構想是支持每秒數百萬個交易,同時普通用戶是不需要支付使用的費用的。

EOS的優勢,首先大大提升了底層公鏈的交易速度,相比於以太、小蟻、比特幣這些公鏈,或者是現有的一些幣種,包括ADA就是卡爾達諾幣。在這些當中,做為公鏈,EOS的處理速度應該是排第一位的。

EOS還提高了底層公鏈的可擴展性,避免了硬分叉,用戶可以免費使用網路資源,安全性也比較高,提高了公鏈系統的兼容性。

EOS與比特幣以太幣等不同的就是第一它的共識機制採用的是DPOS委託權益正名,不需要像比特幣一樣,就是POW工作量證明,消耗大量的電力資源。這會很大程度上節省不必要的資源浪費。然後通過DPOS機制,類似於協商制度,需要21個節點,迅速地就對於當前的塊進行區塊確認,不需要像比特幣以太幣一樣進行沒有任何目的,或者說沒有任何實際效用的資源計算。

EOS的可用性主要體現在它提供了一個界面開發的web工具包。就是對於對於技術開發人員來講,相對容易上手,而且不需要學習一些新的編程語言。官方推薦的編程語言其實是C++,就是說有C++開發經驗的開發人員,就可以直接通過簡單地學習,進行上手EOS的智能合約開發,而不需要像以太坊一樣學習新的開發語言。

二、EOS的共識機制DPOS與BFTDPOS

EOS項目剛剛發布的時候,共識機制採用的是DPOS,類似於BitShares和Steemit用的這個共識機制。這種共識機制採用的是隨機的見證人出塊順序,出塊速度一般是三秒,交易不可逆的需要45秒。45秒怎麼來的?主要就是因為只有達到2/3以上的見證人確認,才可以確認這一個區塊為不可逆的狀態。而DPOS當中採用的是21個見證人,所以它的2/3呢就是14個見證人。只有2/3以上的見證人確認交易,這筆交易才成為不可逆的交易,這就是45秒確認時間的由來。

DPOS機制里包含見證人和委託人(也叫做受託人)。見證人負責區塊的打包,受託人負責系統參數的修改。DPOS的特殊性也是奠定他拜占庭容錯能力的基礎框架,使他的算力節點固定為21個人,並且由大型的機構運營節點、有信息相對的透明化。包括這個運營節點的地點、運營的狀況等等都是可以看到的。並且DPOS的算力節點是固定出塊速度的,比如說有三個節點,就是固定從A到B再到C。每一個節點就像接力棒一樣,一個一個的往下接力出塊,每個節點不能還沒有輪到他出塊的時候就出塊,必須是輪到了之後再出塊,如果出塊出現了故障,就會自動跳過這一個節點。

EOS的DPOS和BitShares的DPOS稍微不同的一點就是說他的出快速度其實是可以更快的。而提高EOS出塊速度主要是因為EOS採用的是定向廣播,而這個BitShares和Steemit採用的是隨機廣播,就說誰先接收到區塊,誰就可以接力產生新的區塊。因為是隨機廣播,所以很多同步的一輪需要這個區塊的路徑不是最短的路徑。而在EOS的機制下面,節點是固定的定向廣播的,就說21個節點的位置都是透明的,會選取最短的路徑來規定這個廣播的順序,由此來提高這個出塊速度。

為了進一步挖掘EOS系統的性能,BM在DPOS的基礎之上又進行了修改,就形成了BTFDPOS。首先它將出塊的速度由三秒縮短到了零點五秒,理論上可以大大提升系統的性能,但是也會帶來新的問題,譬如說會帶來網路延遲的問題。

比如說零點五秒的確認時間,會導致下一個區塊者還沒有收到上一個區塊者的區塊,然後就開始生產下一個區塊了,那麼下一個區塊出塊者就會忽略上一個區塊,導致區塊鏈的分叉,就是在相同的區塊高度同時有兩個塊兒。

為了解決這個問題,BM就將原來的隨機出塊的順序改為由見證人商議之後確定出話順序,這樣網路延遲較低的這個區快鏈見證者之間就可以相鄰出快,這樣呢就可以大大地降低見證人之間的網路延遲,使得零點五秒的出塊速度就在理論上是可以實現的。為了保證萬無一失,不讓任何一個見證人因為網路的延遲然後被跳過。

BM讓每一個見證人連續生產六個區塊,也就是每個見證人還是負責三秒鐘的區塊生產,但是由最初的只生產一個區塊變成生產六個區塊,在最壞的情況下,就是六個區塊當中最後的一個或者是兩個可能會因為網路延遲的問題,或者是其他的意外被下一個見證人略過,但是六個區塊當中的前幾個會有足夠的時間傳遞給下一個見證人。

然後BFTDPOS當中交易確認的時間就是每個區塊生產後就會立即進行全網的廣播,區塊生產者一邊等待零點五秒生產下一個區塊,同時會接收其他見證人對於上一個區塊的確認結果。就是新區塊的生產和舊區塊的確認的接收是同時進行的。這樣就是可以保證在交易會在一秒之中就被確認,成為不可逆的狀態。這其中就包括了零點五秒的區塊生產,還有其他的見證人的確認時間。

EOS的系統規定就是一個區塊達到不可逆的狀態,也就是說有2/3的見證人確認之後,就沒有辦法對之前的這個在此之前進行分叉,就保證了交易的可信度。另外就是多數的見證人,即使多數的見證人想要分叉區塊鏈的,也只能以相同的速度,就是零點五秒的速度跟主鏈進行競爭。然後就算主鏈只剩下一個見證人,然後分叉鏈呢也永遠追不上主鏈,然後就保證了EOS呢是不會分叉的,就保證了系統的穩定性。

EOS區塊的產生是以126個區塊,就是每個出塊者就是出六個塊,然後乘以21,一共是126個區塊作為一個周期。然後在每一個出塊的周期開始的時候,會根據這個持有人投票選出21個區塊的生產者。然後被選中的區塊生產者順序就是會根據15個及以上的這個區塊生產者的同意,制定出這個區塊出塊順序的安排。

EOS新的DPOS共識機制就是在原有的DPOS演算法上增加了拜占庭容錯演算法,就是所有的出塊者都需要對區塊進行簽名,然後保證在同一個時間戳上或者是這個同一個區塊高度上沒有塊生產者能夠同時生產兩個區塊,一旦一個區塊有15個區塊生產者進行簽名,這個區塊就被認為是不可逆的。

三.EOS的賬戶與錢包分離機制

接下來講一下EOS的賬戶和錢包的分離機制,就是說EOS對於賬戶的設計跟以太坊有很大的不同。EOS引入了賬戶、錢包、錢包密碼、公私鑰、許可權等等很多個概念。

EOS的賬戶和錢包的這個概念,用一個圖,就上面這個圖可以很形象的看出來他們之間的關係。右邊的是EOS的錢包,裡面存放的是私鑰,然後這個錢包有一個解鎖的密碼,就是說需要輸入這個密碼才能夠解鎖錢包,然後才能夠讀取私鑰。左邊是EOS的賬戶體系,它裡面會有這個EOS的token,然後智能合約,如果需要轉移裡面的EOS里的token或者是執行智能合約,需要把這個錢包當中對應的私鑰拿來去解鎖這一個賬戶。

在EOS3.0的測試版本當中創建一個賬戶,首先要有創建者的賬戶名,然後後面要跟上新的這個要創建的賬戶名,然後還有兩個公鑰。

其中創建者的賬戶名是創建動作的就是支付EOS的賬戶,然後公鑰一公鑰二,就是說會有兩個不同的許可權的密鑰對的公鑰。所以再把許可權系統加上,然後就是剛剛第一個圖就會變成現在的這第二個圖。就是說賬戶體系會有兩個開關,然後打開後可以進行不同許可權的,因為許可權不同,所以可以進行不同的操作。然後兩個私鑰呢可以存在一個錢包里。

也可以像上圖一樣分別存在兩個不同的錢包里,它裡面的許可權一個是owner ,一個是active,owner的許可權是最高的許可權,可以修改其他的許可權,active的許可權就是默認可以轉賬的許可權,不能修改許可權。

在EOS的世界裡面,你轉賬之類的操作都是通過賬戶名進行的,這一點就和以太坊很不一樣,因為以太坊你去轉賬的時候需要很長的一個地址,很容易出錯.但是你在EOS世界當中進行轉賬,只需要輸入相應的賬戶名就行了,而且EOS的賬戶名呢是可以自己定義的,就是最短的是一位最長是12位,可以用英文字母、數字或者是符號,而且是全局唯一的,就是說你註冊了這個之後別人不能夠再註冊相同的就保證唯一性,這樣就在轉賬的時候可以唯一確認這個賬戶就是你的賬戶。

四.EOS DAWN 3.0測試開發:

接下來就講一下EOS測試網路的開發相關的內容。因為現在EOS主網還沒有上線,然後官方提供的技術文檔只更新到了3.0的測試版本。然後3.0測試版本是一個相對功能比較完整的版本,和前面的兩個版本相比,就是bug少了一些,有了很多的改進。

eos3.0的測試版本提供了很完整的功能,包括創建錢包、創建賬戶,然後轉賬包括代幣的發行等一系列的操作。首先,如果想要進行3.0的基於測試網路去開發,就是首先要搭建3.0的測試網路。而對於EOS3.0的測試網路,最低的配置,就是兩核CPU,內存是8g以上,硬碟是100G以上。之前的社群討論當中,很多人用自己的電腦進行測試的時候內存往往達不到8G這麼高,就可以通過修改這個腳本當中的設置,然後降低這個配置。

目前官方提供的操作系統的支持,主要是linux還有Mac,是不支持windows開發的。安裝方式有三種。第一種就是通過官方提供的腳本進行自動安裝,如果基本的硬體配置和操作系統沒問題,這種方式是最便捷的。然後他會幫你就是在安裝的過程當中會提示,有一些依賴沒有安裝,就可以通過它的提示進行相應的安裝就行。第二種方式呢,就是手動編譯,第三種呢,就是用刀刻(有錯誤)。

在環境搭建成功之後,就可以看到上圖的界面,可以通過在本地測試的話,就用單節點測試網路就就可以了。

https://github.com/EOSIO/eos/wiki

對於想要入門EOS開發的人,可以先通過官方提供的wiki然後查看官方提供的一些簡單的介紹,包括這個開發的工具,就是NODUS然後這個命令行的工具CLEOS等等。當然了現在EOS的這個公共的測試網路還不可用,之前的2.0版本是可以正常使用公共測試網路,可以通過官方郵件去申請測試的EOS,然後進行一系列的操作,然後可以在測試網路的區塊鏈瀏覽器上查到所有的轉賬操作.然後最後一部分呢就是介紹EOS的多節點測試網路。但是在3.0當中,現在公共測試網路還為不可用狀態,就是說現在搭建的測試網路呢只是本地的測試環境,然后里面呢還提供了這個賬戶和許可權的一些介紹,還有命令行的錢包,還有怎樣去運行EOS的命令行的一些命令,包括也提供了一些比較新的API,裡面還有這個智能合約的開發介紹,包括這個怎樣去寫一些簡單的智能合約,還有一個官方提供的一個簡單的基於EOS測試網路的遊戲的demo。

五.EOS DAWN4.0介紹:

就在這次分享的前幾天,BM就發布了最新的就是EOS4.0測試版本的一個特性的介紹。今天我給大家大概分享一下他當中提到的一些新的特性。

其中主要包括了十個方面:首先是時間一致性,還有這個新的內存分配模型,然後第三是鏈接通信,第四是DPOS不可逆確認演算法,然後第五是賬戶命名,第六是塊頭驗證,第七是輕量級的bp調度變化證明。第八是精練BP收益模型,第九是投票權重衰減,十是集成交易所的合約。

其中關於時間的確認就是將當前時間的這個定義就是說從頭區塊時間改為當前區塊時間,這樣變化的好處呢是可以解決丟塊時候的這個基於時間操作的一些案例,也可以更加精確地測量智能合約內所用的時間。

在測試當中EOS系統和合約部分分配這個RaM資料庫空間的時候,會導致未來資源的短缺,所以在4.0當中,就改變了這個演算法,使用了這個幫客(錯誤)演算法。

在3.0的設計當中有一個相對來說討巧一點的設計,就是ram只能按照當初購買時候的價格轉讓,也就是和現在的價格高低沒有關係。好處就是說可以防止有人囤積ram行投機。當然缺點就是說你一開始用很便宜的價格購買了ram,就沒有任何的動機再把它賣掉,然後就會導致即使這個系統很擁堵的時候,然後雖然有其他人很有很強烈的意願去購買ram,但你也沒有任何的動機去賣掉它,就會導致系統的這個穩定性或者是擁堵。

在4.0當中就優化了這樣一個機制,就是系統的合約按照當前市場價格進行購買和售出ram這樣一些交易者會提前購買ram。如果他預料到就是以後ram會出現短缺,就會有這個投機的空間,不過最終來說就是嗯這樣一個過程就是可以可以解決一些當時在3.0當中就是遇到的這樣一個很大的缺點。

第三點關於就是對合約開發者的影響,就是ram是開發者用於存儲資料庫記錄的這個資源,但是ram使用都是需要有成本的,把存儲在內存資料庫當中的數據量減少到很小很小的需求,然後開發者在設計應用的時候,就會有必要考慮到用戶在用完之後要釋放RAM

這當中呢,BM提到了SIM的這個案例。他說SIM是在EOS存儲僅僅在RaM上存儲一周的內容,然後整體的大小不會隨著時間的流逝增長太多。

有了RaM的市場呢,然後價格也有波動的存在,就會有投機的存在。然後EOS的系統合約,為了遏制這種投機,就讓ROM變為不可轉讓,同時能會收取百分之一的交易費用。然後交易費用的可以抵消代幣的通脹,方式就是讓他退出市場。

第八點對於賬戶的命名:EOS賬戶是有賬戶名長度限制的,最多是12位。然後就有的用戶會擔心,12個字元不夠用,或者是產生衝突。在BM看來就說增加賬戶名長度會對這個系統和體系結構產生很大的影響,所以EOS將賬戶的概念和身份做了區分,在賬戶名和更易讀的顯示的名稱之間建立動態鏈上的映射。在BM看來,賬戶名就是更像是牌照,然後用戶可以選擇自己易記的。

有的名稱就可能會有比較高的價值,這就和域名有點像,都是一些稀缺資源。

然後EOS系統會給這個賬戶名提供動態的定價模型。

為了保證EOS1.0的正式發布,會在前期把其強製為12個字元,而且不能包括點這個字元。後期如果社區達成共識,可以對這個合約進行升級,然後改變相應的命名機制。

還有一點和EOS3.0測試版本不同的,就說4.0會支持僅通過區塊頭完成確認,他是就是輕客戶端和ABC的基礎,也可以阻止一系列的攻擊,允許區塊在網路當中廣播,而不需要等待每個節點,然後進行全面的驗證。

對於投票權重衰減這點,在系統4.0合約的變化,為了保證最大的投票的影響力,每個選民必須每周重新投票,對不更新選票的人,就是投票的影響力會衰減,然後半衰期一年。

然後在這當中也會禁止自動投票的機器人,目的就是為了讓這個選民重新評估決定,而不是設定好了之後就忘記。雖然沒有辦法證明使不使用機器人,不過可以證明不會通過智能合約進行自動投票。

對於最後一點交易所集成之時,EOS已經創建了一個命令行的教程,可以監視轉入存款的鏈,也創建了一個演示python腳本,去監視存入和體現。

最後EOS4.0什麼時候可以用呢?BM說是在5月11號進行公布。

剛剛上面說的這些特性的4.0的特性,現在還沒有辦法使用。在5月11號發布更新代碼之後才可以從3.0過渡到4.0。

以上就是今天我帶來的分享,謝謝大家。

問題:

問題一:

請嘉賓分享下自己對於區塊鏈發展的想法。是更多地結合網路基礎還是落地結合現實產業?

首先,對於第一個問題,對於區塊鏈的發展,區塊鏈它確確實實為我們的現實當中的問題就是提供了一個很新的角度的解決問題的辦法,不光是個互聯網方面的這個改變革新,包括其他的一些領域,比如說金融,農業,能源,還有這個互助保障等等方面都會有一些很大的變化。區塊鏈以後的發展肯定不只是局限於互聯網這一塊。

或者,不僅僅只局限於網路基礎,肯定會和現實當中的很多應用或者很多領域發生很真實的一個結合。只單獨地發展區塊鏈,或者是只單獨地發展傳統的一些領域,都不一定會有很好的解決方案。我個人認為解決方案肯定是一種相互融合的過程,利用區塊鏈去解決一部分問題,包括信任問題數據透明問題等等。不會說僅僅只用區塊鏈,或者說完全不依賴區塊鏈,它會是一種結合的狀態。

問題二:

請談談關於MDS錢包的EOS映射,有哪些方便之處?

關於EOS映射,因為現在的EOS還是erc20代幣,當EOS主網上線之後,它要有自己的代幣,就需要把現在基於ESc20生成的代幣映射到主網上。這個過程官方提供的最好還是用就是自己手動去映射,因為這樣你可以保證你的私鑰不被其他人獲取。我也比較了幾種方式,當然你這種自己映射非常麻煩,然後imroken提供的其實也是基於自己映射的一個辦法。對於這個md S這個一鍵映射功能,我自己大概體驗了一下,就是他第一就是非常方便,你不需要再有其他的很多的操作,你只需要就是首先把你的EOS傳入到md S錢包當中,然後創建一個新的EOS錢包,然後備份一下你的私鑰,然後就是切回到原來的以太錢包的EOS界面,然後發一個零以太的轉賬就夠了。整個過程呢非常方便,非常便捷,也不會竊取你的私鑰。有的人覺得這個太麻煩,放在交易所行不行?也可以,但交易所不一定就是能夠保證你的這個私鑰的安全性。另一方面以後會有很多大量的空投或者是側鏈的空投。對於交易所來講空投的這個工作量太大,他們不一定會把所有的空投都發給你。但是這個mds錢包呢,會非常方便,而且他支持各種主網空投和這個側鏈空投。而且,還支持節點投票功能和這個賬戶名搶注功能,這一個是很有意思的。

問題三:

EOS憑什麼能建立強大的生態呢?

首先eos之所以和比特幣以太幣很不同的一點,就是他的整個的體系架構非常完整,包括一些很創新的概念,包括賬戶分離,賬戶和錢包分離。他底層運用的石墨烯技術,為這個底層的處理速度提供了很大的保障。而且石墨烯技術也很成熟,包括DPOS在這個貝塔4S和TM上都已經得到了很好的驗證。包括他之前的一些項目,在包括EOS的整個的設計,都是可能會建立起很強大的生態的。而且據我所知,現在雖然說EOS主網還沒有上線,但是已經有非常非常多的團隊在測試網路上開發自己的DAPP應用,要在這個主網上線之後就要直接移植到主網上,就是因為有很也是有很大的預期。對於這個EOS這條公鏈,所以他的整個的生態建設一定會非常好。

問題四:

EOS的測試網路每秒的tps只有1000,不出意外的話上線每秒只能發到1萬,請問最後能達到白皮書說的100W級別嗎?

主網剛剛上線的時候肯定達不到那麼高,不過以後就是可能會有可能,而且BM預計就是說單線程就是未來的版本可能會達到5000到1萬TPS。當然了,他這個100萬級的,這個更多的其實是指很多的側鏈加起來,而且BM本身也是認定就說未來可能就是應用程序會更加的傾向於多鏈模式,然後這樣既可以降低成本,也可以加速擴展。

問題五:

問題:感覺EOS的維護是人工維護的,與挖礦的礦機運作的自動化確認比,是不是會有人為的錯誤發生可能?還有是不是要有上下班時間的差別問題?

首先EOS的維護呢,你就從他的這個區塊確認的時間,你就可以看出來。一個區塊確認的時間是0.5秒,然後在這0.5秒當中如果你是人工來維護的話,他的這個確認速度肯定遠遠不止0.5秒,甚至是五秒,然後甚至是三秒。當然肯定會有錯誤發生,但是只要它這個整個21個節點礦工確認當中呢有2/3能夠正常的確認,就沒有問題,就不會導致說這個塊壞掉或者怎麼樣。然後呢這個區塊鏈的世界本身就是24小時,一直在不停地運行的,怎麼會有上下班時間的差別呢。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 鵬程亂談 的精彩文章:

我所知道的區塊鏈最少且必要知識

TAG:鵬程亂談 |