EOS从入门到精通(三)
大家好,非常感謝參加《EOS從入門到精通》系列課程,我是王巨,今天是EOS技術白皮書解讀的第三講。今天我們來解讀EOS白皮書中的“應用程序的確定性并行”和“Token模型與資源使用”:下面是這兩章節的思維導圖:
應用程序的確定性并行執行.pngToken模型與資源使用.png我們先來講解一下應用程序的確定性并行,這部分在入門篇我們不做重點解讀,因為這里面涉及到了很多編程方面的知識,我在這里只跟大家做一下同步,讓大家對EOS的高性能有一些感性的認識。
EOS白皮書解讀(三).002.jpeg好,我們開始應用程序確定性并行這個章節的解讀:該部分從簡介、最小化的通訊延遲、只讀消息處理、多賬戶的原子交易、區塊鏈狀態的部分評估、自主最優調度這幾個方面跟大家講解EOS并行執行的原理。
EOS白皮書解讀(三).003.jpeg我們知道區塊鏈最簡單的理解是一個公共的賬本,而維護賬本共識的核心基礎就是行為的確定性,這意味著如果需要并行計算,那么所有的并行計算都不能互斥或加鎖,因為鎖的狀態是不確定的。不加鎖,就需要一些方法來保證所有賬戶只能讀寫自己的私有數據庫。這樣每個賬戶都必須順序的處理消息,因此EOS的并行級別是賬戶級別的。
EOS將消息傳遞 組織成獨立的線程,這樣可以比較容易的評估線程并行的可能性,因為每個賬戶的狀態只取決于傳遞給他們的消息。進度表,我這里理解成消息的執行順序,這個順序在區塊產生后是確定的,而在產生過程中是不確定的,是由區塊生產者按照并行算法決定。比如說區塊生產者A生產區塊,那么消息執行順序就由A來決定,A產生區塊后,生產者B驗證區塊時要完全按照A的執行順序來驗證。
當腳本產生一個消息后不會被立即傳送,而是會被安排到下一個循環,因為接收方當前可能在另一個線程內主動修改自己的狀態。
EOS白皮書解讀(三).004.jpeg最小通訊延遲,這里的延遲,是指一個賬戶向另一個賬號發送消息并接收響應所需要的時間,EOS的設計目標是能夠在一個區塊內來回交換消息,那么EOS是如何做到的呢?EOS將區塊分成了幾個循環,循環又分成了多個線程,每個線程包含一個交易列表,每個交易包含一組要傳遞的消息。這個結構可以看成為一棵樹,在這個樹中交替的層被順序的并行的處理,我們看下面這張圖
可以看到,循環是順序執行的,線程是可以并行的,交易和消息是要順執行的,而接受者和被通知的賬戶是可以并行的。為什么接受者這個地方是可以并行呢?這要看一下下面的只讀消息處理
EOS白皮書解讀(三).005.jpeg只讀消息的處理,EOS對于無需更新狀態的消息處理是可以并行的,只要特定的只讀消息處理程序被包含在特定的循環內的一個或多個線程中就可以。
EOS白皮書解讀(三).006.jpeg我們再來看一下多賬戶的原子交易。有些時候需要確保消息以原子的方式傳遞給多個賬戶并需要被其接受。在這種情況下雙邊的消息會被放在同一個交易中,兩邊的賬戶也會被分配在相同的線程,并且消息會被順序的處理。這樣做的目的是為了確保交易成功,而這其實會帶來性能上的損耗,而且在成本上也會很高,因此出于性能和成本的考慮,應用程序最好能盡力減少涉及兩個或更多使用率高的賬戶的原子操作。
EOS白皮書解讀(三).007.jpeg區塊鏈狀態的部分評估,我簡單說一下我的理解,不同于以太坊所有的全節點都必須運行所有的合約,EOS具備這種允許完整節點選擇要運行的任何程序子集的能力,這樣帶來一個好處就是如果我僅僅運行一個小應用,那么我可以使用有限資源啟動完整節點,比如一個交易所的開發人員運行完整節點,以便向用戶展示交易狀態,這個程序是不需要與社交媒體的程序有狀態關聯的。
EOS白皮書解讀(三).008.jpeg自主最優調度,我的理解是EOS設計了這樣一個調度框架,每個區塊生產者都可以根據自己的算法來進行區塊的生產。EOS不強制區塊生產者將任何消息發送給任何其他賬戶,每個區塊生產者都可以根據處理交易所需的計算復雜性和時間做出自己的主觀預測。
在網絡層面上,所有的交易都會收取一個固定的計算帶寬成本,區塊生產者也可以使用自己的算法來測量資源的使用。這里的計算帶寬,我的理解應該是廣義的,可能包含計算資源,狀態存儲資源以及網絡帶寬。
一般情況下只要一個區塊生產者認為交易在資源使用的限度內是有效的,那么所有的其他區塊生產者也會接受,但是交易可能需要最長1分鐘才能找到生產者,為什么是一分鐘,因為一分鐘內交易可以在21個區塊生產者之間流轉一遍,如果還沒有找到,那么這個交易就不會被打包了。
EOS白皮書解讀(三).009.jpeg好了,關于程序確定性和并行執行就講到這里,我們來看一下TOKEN模型和資源使用。主要從簡介、客觀與主管的衡量、付費策略、委托能力、分離交易成本與Token的價值、狀態存儲成本、區塊獎勵和社區利益應用這幾個方面解讀。
EOS白皮書解讀(三).010.jpeg所有的區塊鏈資源都是有限的,需要系統的防止被濫用,比特幣和以太坊是用手續費和Gas來防止資源被無限使用的,那么EOS是怎么防止資源被濫用的呢?
我們先看一下EOS提供的資源有哪些,主要有存儲和帶寬資源、計算和計算Backlog以及狀態存儲。先解釋一下計算Backlog是什么,可以翻譯成計算積壓,我的理解是這樣的,比如說一個完整節點斷網一段時間,等重新聯網后需要重新同步未同步的區塊,然后對這些新的區塊進行重新驗算,我理解這些計算任務就叫計算Backlog。
區塊生產者發布他們的帶寬、計算資源和狀態存儲資源、每個用戶對資源的使用率跟Token持有的比例成正比。持有1%的Token的賬戶可以使用1%的狀態存儲資源。
帶寬和計算資源由于是瞬時資源沒法保存,因此采用的策略是在保留的基礎上進行分配,算法類似于Steamit限制帶寬的算法,有點像QoS算法。舉例來說:假如你持有1%的Token,那么在瞬時資源的使用上,你最少可以使用到1%,如果系統比較空閑,那么你可以使用的更多,如果系統非常繁忙,那么系統至少可以保證有1%的資源是專門給你提供的。
EOS白皮書解讀(三).011.jpeg所有的資源使用約束最終都是主觀的,由區塊生產者根據各自的算法和估計來執行,EOS允許使用客觀的根據消息或存儲容量來衡量消耗,也可以自己定義主觀的衡量算法。我的理解是,EOS給了一個推薦的簡單算法,至于區塊生產者要不要使用,由他們自己決定。這在EOS上都是允許的。
EOS白皮書解讀(三).012.jpeg付費策略,這個我們也早就提過了,應用不能強制用戶為使用區塊鏈資源而付費,同樣的EOS也不會強制應用的收費策略。
EOS白皮書解讀(三).013.jpeg委托能力,我們知道,持有EOS的人不一定是應用開發者,可能不會立即使用鏈上資源,那么這些人就可以向其他用戶提供或出租這些帶寬,EOS允許這樣做,同時區塊生產者能夠識別這樣的授權,并相應的分配帶寬。通過這個設計,將來EOS的持有者通過出租EOS可能就能帶來持續的盈利。這就是為什么有人將EOS比作地皮的原因。
EOS白皮書解讀(三).014.jpeg分離交易成本與Token的價值,這點非常重要,它的優點就是應用程序的可用帶寬僅取決于Token的持有量跟Token的價格沒有關系,只要持有一定數量的Token,就可以在固定的狀態和帶寬使用的情況下永久的用下去。開發者和用戶不受Token市值波動的影響。這點是比特幣和以太坊做不到的。
EOS區塊鏈使區塊生產者能夠自然地增加每個Token可用的帶寬,計算和存儲,而不管Token的價值如何。EOS區塊鏈每次產生區塊時都會授予區塊生產者Token。Token的價值將影響生產者能夠購買的帶寬,存儲和計算量;這個模型自然會利用上升的Token價值來提高網絡性能。
EOS白皮書解讀(三).015.jpeg雖然可以委托帶寬和計算資源,但應用程序狀態的存儲將要求開發人員持有Token,直到該狀態被刪除。如果狀態從未被刪除,則Token被有效地從流通中移除。每個賬戶都需要一定的存儲空間,因此每個賬戶都必須保持最低的余額,隨著網絡存儲容量的增加,這個最低要求的平衡將會下降。
EOS白皮書解讀(三).016.jpeg塊獎勵,由所有區塊生產上公布的期望收益的中位數決定,EOS可能會配置區塊生產者的獎勵執行上限,使得Token的供應的年度增長在5%以內。
關于社區利益應用這個章節,說實話我沒太看明白,英文和翻譯過來的中文都沒太理解,這里就不給大家講了,以免傳遞錯誤的信息,好在這個部分看起來不是非常重要。如果有了解的同學可以發消息說一下。
好了,今天的主要內容就講到這里,總結一下,我們今天講了兩部分內容,并行執行和Token模型與資源使用。重點在Token模型與資源使用的理解上。理解了這個才能明白EOS Token本身的價值所在。我在前段時間寫過專門寫過一小篇文章介紹EOS的經濟系統,可以給大家分享一下。地址是:
EOS經濟體統分析
作者:王巨
鏈接:https://www.jianshu.com/p/9729c5487dee
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
總結
以上是生活随笔為你收集整理的EOS从入门到精通(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EOS从入门到精通-账户体系(文字稿)
- 下一篇: EOS从入门到精通(四)