1. 程式人生 > >全面理解EOS——0.區塊鏈企業作業系統

全面理解EOS——0.區塊鏈企業作業系統

號稱區塊鏈3.0的EOS主網已經順利上線,相信基於EOS的DAPP也會越來越多。計劃寫一系列文章,從整體到實際操作,並深入到原始碼來全面理解EOS,為你的EOS之旅,DAPP之路鋪平道路。如果對區塊鏈,包括比特幣、以太坊還一無所知,建議先看看《區塊鏈起點——避免你再錯過幾個億》中列出的連結,先有個整體認知。

EOS國內稱柚子,很多文章都直接從區塊鏈角度理解,但EOS全稱Enterprise Operator System,意思是企業作業系統,為什麼會有這樣的名字?這其實就是他的設計目標,我們也可以從這個角度來理解它。

當前問題

首先區塊鏈可以簡單的理解為分散式的資料儲存,而且各個地方可根據這些資料保持一致的狀態。比特幣作為區塊鏈1.0,每個全節點都能同步全部比特幣鏈上的資料,從而可知每個地址的餘額和交易資訊。

以太坊在比特幣的基礎上改進了對智慧合約的支援,使得每個節點儲存的資料中包含了可執行的程式碼(一份智慧合約即一段程式碼),當條件滿足時可觸發程式碼執行。但隨著使用者膨脹,使用頻率的增加,交易量增加,導致交易費用的增加以及交易的延時,直接限制了執行在其上的DAPPs(如CryptoKitties曾經火爆導致的問題)。暴露出的問題可以不斷修修補補,但新的設計可以帶來更多的想象空間。

EOS設計

EOS設計目標為一款作業系統,那就是將底層的諸多細節遮蔽,提供賬號及許可權管理,良好的資源管理和服務。

賬號及許可權

EOS的賬號長度目前限制在12個字元以內,僅能使用.12345abcdefghijklmnopqrstuvwxyz字元,其中12個字元長度的可任意註冊,小於12個字元的通過競拍獲得,每天僅有競拍價格最高的一個被售出。

在賬號建立時,就已經需要跟資源繫結,限制該賬號最多可以使用的資源;也需要設定EOS公鑰地址,對應於賬號的Owner和Active許可權。之後還可以自定義許可權,要求合約執行者擁有相關許可權

資源管理

既然是作業系統,資源是有限的,EOS提供了CPU、網路頻寬(Net bandwidth)、RAM的分配及排程機制。

使用者的一般操作,包括合約程式碼的執行,對CPU和網路頻寬是持續一小段時間的,因此EOS中採用抵押(stake)的機制來換取,抵押物就是EOS Token。例如抵押1%的Token,最多能夠獲得1%的網路頻寬。但並不是直接限制的,畢竟不是所有Token持有者都在使用網路。抵押物自然再不想使用的時候就能贖回

RAM的分配稍有不同,它是儲存狀態的,是長期佔用的。簡單來說,就是根據鏈上的資料產生的狀態是儲存在RAM中的,如一個賬號的資訊,包括餘額的當前狀態都是儲存在RAM中的,因此需要購買RAM來長期儲存資料(RAM的當前狀態是從EOS鏈上的資料而來)
這些設計避免了比特幣、以太坊中交易及執行程式碼所支付的大量曠工費用

檔案系統

在EOS的儲存類似與作業系統的檔案系統,但又有差別。技術白皮書中提到了IPFS,期望結合智慧合約提供一種去中心化的檔案系統,從而為每個人提供檔案儲存服務,並能夠直接通過瀏覽器來訪問檔案。
目前已釋出的版本v1.0還未實現該功能。

智慧合約服務

智慧合約以及構建在智慧合約上的去中心化應用DAPPs,類似與一個個作業系統中的應用。EOS為應用的升級提供良好的支援,避免了以太坊中智慧合約一旦部署不可修改的問題。另外合約的執行對CPU、網路頻寬的消耗又和抵押的EOS Token量相關

另一方面EOS為智慧合約提供了Multi-Index DB,可理解為簡單的資料庫,從而能夠更方便的儲存合約執行中的狀態資訊。

社群治理機制

EOSIO作為EOS軟體的開發者,僅提供開源軟體,不參與到EOS的具體執行中。因此社群對EOS執行發揮著十分重要的作用。

共識演算法及投票機制
EOS採用BFT-DPOS機制,就是通過投票的方式產生21個塊生產者(BP或者超級節點)負責記錄EOS區塊鏈中產生的資料。這21個節點不是固定不變的,會根據每個節點持續的投票資訊不斷變化。EOS每年增發不超過5%,用於獎勵BP。BP為了獲得更多投票從而提供更好的服務,並積極組織參與社群活動。
另外還有投票EOS憲法,設定仲裁員等,可參考EOS值得你長期擁有麼——運作機制解析

上述的點都可以再詳細結合程式碼進行分析,除此之外還有跨鏈通訊、經濟模型等方面,在後續的文章中一一解讀。

EOS的這種設計理念非常好,最終的實現不知道能不能達到預期設想目前還不能確定,就像PC端的Linux、Windows之後又有移動端的Android、iOS,EOS是第一個,但肯定不會是最後一個。