EOS从入门到精通(四)
大家好,非常感謝參加《EOS從入門到精通》系列課程,我是王巨,今天是EOS技術白皮書解讀的第四講。我們來解讀EOS白皮書的最后幾部分。今天的內容相對于上一節課會簡單一些,主要講EOS的治理,然后簡單講一下虛擬機;跨鏈通訊部分我會在高級篇重點解讀
image.pngimage.png我們先來看治理部分,所謂的治理我的理解就是管理那些沒法完全使用軟件算法實現的共識。在我們熟悉的區塊鏈產品比特幣和以太坊中是沒有這部分共識的,這樣就造成了一個非常嚴重的問題,社區經常因為一些原因分裂,導致分叉。2017年比特幣已經被分叉無數次了,以太坊也已經出現了數次分叉,而這樣的結果就是沒有管理好非代碼共識所造成的。
EOS認識到區塊鏈的權力來源應該是Token持有人,而不應該是礦工,Token持有人將自己的權力通過投票的方式委托給區塊生產者,這樣區塊生產者就具備了凍結賬戶、更新有缺陷的應用程序、提出對底層協議硬分叉的改變的權力。當然這種權力是受限的、是被檢查的。可以用下面的結論總結這種權力:
所有的區塊鏈變更都需要區塊生產者同意,如果區塊生產者拒絕Token持有人想要的變更,那么他將被投票出局,如果區塊生產者的變更沒有經過Token持有人的同意,那么其他非區塊生產者的全節點會拒絕該改變。
一個智能合約可能會出現異常比如說因為bug的原因導致行為不正確或者資源消耗不在一個合理的范圍內,在這種情況下區塊生產者有權力糾正這種情況,糾正的方式就是凍結賬戶,凍結賬戶的概念就是所有與待凍結賬戶有關的變更都不打包。凍結賬戶需要21分之17的區塊生產者同意才行,如果區塊生產者濫用權力,解決方案也很簡單,就是將他投票出局,這樣被凍結的賬戶就會被解凍。
image.png如果凍結賬戶已經不能解決問題,不可預知的代碼已經造成了破壞,此時EOS可以支持在不需要硬分叉的前提下修改賬戶代碼。我的理解這有點類似于交易的回滾。當然與凍結賬戶類似,也需要21個中的17個區塊生產者同意才行。
image.png這里的憲法不知道翻譯的準不準確,我的理解是這樣的,智能合約也是要遵循法律法規的,很多事情是沒有辦法通過代碼來進行約束的,同時由于EOS是全球性的,那么合約遵循哪里的法律法規就成了一個問題。這塊EOS是怎么做的呢,就是將這些法規數字化,然后進行Hash簽名,后面所有交易都要選一個憲法來綁定到合約中,這樣就能解決管轄權和法律選擇帶來的爭端。這個理解不一定是對的,因為白皮書上我的感覺也是寫的不太清楚。
image.pngEOS還規定了升級協議和憲法的流程,我們可以看一下,如果要對憲法進行修改,需要區塊生產者提出,并獲得至少17個區塊生產者的批準,并且連續30天保持批準,然后所有用戶都使用新的憲法hash來簽署交易。升級代碼協議也是類似的流程。按照EOS的默認配置,添加新特性的升級流程大概需要2-3個月,修復一般bug需要1-2個月。對于出現了嚴重的有害bug或安全漏洞,區塊生產者可能會加快修復,當然這一般來說是違反憲法的。具體如何權衡這個白皮書里面沒有講,我猜這應該需要社區的努力了。治理這部分,對于需要長期穩定運行的區塊鏈產品是非常必要的,如果沒有這部分,那么就沒法避免分叉帶來的危害。EOS在這方面我認為是當前做的最好的。
image.pngimage.png好的我們簡單講一下腳本和虛擬機,我們從上面可以看到,EOS首先給自己的定位是一個平臺,用于協調向賬戶傳送已認證的消息。而具體的腳本語言和虛擬機的細節都是特定于實現的細節的,這些細節大多數獨立于EOS的技術設計。也就是說,任何具有足夠性能的確定性和正確的沙箱化的語言或虛擬機都可以與EOS API集成。
image.pngimage.png模式定義的消息和模式定義的數據庫,這兩個我們放在一起講,這兩個概念從字面意思上不是很好理解,我的理解是,所有的消息或數據存儲其實在實現上是使用二進制的方式發送或存儲的,但是為了人類可讀,他們都可以被解碼成Json字符串。
image.png分離授權與應用,這段出現在白皮書的這個地方我認為有點怪,我理解這部分應該出現在性能和并行計算部分。不管怎么說我們將這部分再講一下:
為了最大限度的實現并行計算,并最大限度的減少與事物日志中重新生成應用程序狀態相關的計算債務,EOS將驗證邏輯分成三部分:1、驗證消息是否內部一致;2、驗證所有先決條件都是有效的;第三步才是修改應用程序狀態。驗證消息的內部一致性是只讀的,而且不需要訪問區塊鏈狀態,這意味著它可以以最大的并行度來執行;驗證先決條件也是只讀的,因此也可以從并行性中受益;修改應用程序狀態才需要寫權限,并且必須順序處理每個應該程序。身份認證是一個驗證消息可被使用的只讀過程。 應用程序實際上在發揮作用。 實時計算時兩者都需要被計算,然而一旦消息被包含進區塊它就不再需要進行消息驗證的操作了。
image.png我們再來看一下虛擬機獨立架構,上面的簡介我們說了,理論上只要符合性能、確定性、正確性和沙箱化這幾個條件的任何虛擬機都可以跟EOS進行對接,也就是說EOS的架構是獨立于虛擬機的,所以叫虛擬機獨立機構。白皮書上沒有任何虛擬機的技術細節,就講了兩個虛擬機Web Assembly和以太坊虛擬機。Web Assembly是一個新興的、高性能的虛擬機,它擁有llvm的編譯后端,因此理論上可以支持所有支持llvm編譯的眾多編程語言,包括c和c++等。當前EOS的測試網絡僅支持Web Assembly,也僅支持C和C++編程語言開發智能合約。EOS規劃中也會支持以太坊虛擬機,以太坊虛擬機其實跟Web Assembly有點像,移植起來比較容易。當然支持以太坊虛擬機的重點不在于技術上的難易程度。試想一下,如果以太坊上的智能合約只要稍作修改就能在EOS上運行,那原來很多在以太坊上的項目就可以比較平滑的遷移到性能更高的EOS上。這對EOS的生態建設會有很大助力,當然以太坊也是一個不小的打擊。
image.png關于跨鏈通訊,我今天不準備跟大家講細節,白皮書上的內容其實遠遠不夠,只是跟大家同步一下,通過Merkle證明可以實現輕量級客戶端,并且還能比較容易的實現跨鏈通訊。我會在高級篇重點講解跨鏈通訊技術。
好了今天就講到這里,經過四節課程我們終于將EOS的白皮書講完了,非常感謝大家的參與。關于EOS白皮書的任何問題大家都可以提問了,我會挑選我能回答的問題回答。
作者:王巨
鏈接:https://www.jianshu.com/p/3bd18bad8049
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
總結
以上是生活随笔為你收集整理的EOS从入门到精通(四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EOS从入门到精通(三)
- 下一篇: Scalability Tradeoff