從Devcon5大會看以太坊生態的發展

本文爲萬向區塊鏈研發部研究組團隊參加Devcon5後,對大會內容進行的一些解讀。萬向區塊鏈研發部研究組是萬向內部專一於區塊鏈底層技術研究與落地的團隊。git

 

10月8日至11日,備受矚目的以太坊年度開發者大會Devcon5(第五屆)在日本大阪舉行。文章結合大會內容與社區信息,幫助你們更全面地瞭解以太坊生態,以及區塊鏈生態的一些最新發展。關於以太坊的發展,大會主要交流了以太坊2.0目前的進展、已經積累的開發經驗分享、下一步的規劃、1.0和 2.0 版本如何切換等內容。github

 

正文算法

 

要了解以太坊的生態,首先要對以太坊的發展路徑作一個瞭解。安全

 

Ethereum1.X

在去年的Devcon4上,一羣以太坊核心開發人員和愛好者討論了當前以太坊的挑戰,他們都有一個類似的觀點:因爲日漸嚴重的性能瓶頸,以及佔用的存儲空間持續增長,若是以太坊主網不尋求變化,以太坊的可用性將會變得很是差。性能降低主要歸因於過大(且不斷增長)的狀態數據。愈來愈大的存儲需求,主要是因爲須要留存區塊、Event日誌(receipts),以及狀態歷史記錄(當前可在大部分客戶端中刪除)。網絡

 

最後,他們得出一個共識:改進,以太坊主網必須改進!異步

 

他們還給改進計劃取了一個代號「Ethereum1.x」。Ethereum主網計劃在近期內採納的各類重大升級更新都包含在裏面。分佈式

 

行動代號爲「Ethereum1.x」的計劃包括:函數

一、經過提升tps吞吐量來提升主網可擴展性(經過客戶端優化實現,這將可以大幅提升區塊的gas限制);工具

二、經過「存儲租金」來減小和限制對磁盤空間需求,從而確保整個節點是可持續化的運營。具體作法是設計一種租金模型,要求合約開發者和用戶隨着時間的遷移,爲EVM2的存儲付費,而不是無期限存儲代碼和數據。性能

三、經過VM升級(包括eWASM)改善開發者體驗。

 

爲了實現這些目標和計劃,以太坊核心開發團隊成立了幾個工做組:

一、狀態租金:設計存儲佔用的費用模型,用以限制鏈上存儲佔用;

二、eWASM:以太坊Wasm虛擬機;

三、存儲裁剪:優化客戶端的存儲空間佔用;

四、模擬/仿真。

 

在今年的Devcon5上,以太坊基金會介紹了過去一年內成立的幾個工做組:

一、EVM進化:優化性能、安全和互操做性;

二、EIP 1559:費用模型優化,讓交易易費用更更穩定、可預測;

三、測試/基礎設施:用新的工具來幫助測試客戶端能更更好的互相兼容;

四、最終性組件:用Ethereum2.0信標鏈來敲定Ethereum1.0生產的區塊。

 

咦,怎麼還有Ethereum1.0和2.0?它們和Ethereum1.x有什麼關係?

 

簡單來講,以太坊如今的主網就是Ethereum1.0,Ethereum1.x是針對如今主網的改進計劃,而Ethereum2.0則是獨立於Ethereum1.0進行開發的一條鏈。Ethereum1.0將會向2.0切換。

 

接下來,咱們重點介紹下Ethereum2.0。

 

Ethereum2.0

Ethereum2.0,是以太坊的寧靜(Serenity)版本,剛纔也說了它是獨立於Ethereum1.0進行開發的一條鏈。而且在去年的Devcon4會議上明確了Ethereum2.0在3-5年內不會在功能上取代Ethereum1.0。

 

Ethereum2.0將包含Sharding(分片),Proof of Stake共識以及一個新的VM(即eWASM)等一系列升級。

 

它的目標主要有如下5個:

 去中心化(Decentralization):容許普通消費級的筆記本計算機可以利用O(C)的資源處理和驗證O(1)的分片(包括系統級別如信標鏈的驗證等)。

☆ 彈性(Resilience):主網絡分區或大量節點掉線時系統仍舊是可用的。

☆ 安全性(Security):利用密碼學和設計技術來保證大量驗證節點能夠參與到系統中來(短時間和長期範圍內)。

☆ 簡單性(Simplicity):最小化複雜性,即便性能上有一些損失。

☆ 長期可用性(Longevity):選擇量子安全的組件,或者在可用時容易替換爲相應的量子安全的組件。

 

這是個大工程,因此並不會在單一的時間點完成,而是按階段進行開發。這裏簡要介紹各個階段及其計劃完成的目標。

 

Phase0 信標鏈(Beacon Chain)

Phase0階段即爲信標鏈的啓動。信標鏈是整個系統的基礎,用於管理其自身以及各分片區塊鏈(shardchain)的Casper Proof of Stake協議:

一、管理驗證節點及其Stake;

二、在每一步中爲每個分片任命出塊者;

三、將驗證節點組織爲驗證委員會(committee),用於對提議區塊進行投票;

四、運行共識協議;

五、對驗證節點進行獎勵和懲罰;

六、做爲一個錨點,各分片向其註冊狀態,從而有助於進行跨分片的交易的執行。

 

信標鏈上的主要數據載荷爲證實(attestation),包括對分片區塊的投票(availability vote)和信標區塊的PoS投票等。

 

Phase0將使用Casper the Friendly Finality Gadget (FFG)來實現最終確認性(finality)。

 

在Phase0期間,全部的用戶交易和智能合約計算都在Ethereum1.0上進行。而在Phase0完成後,將同時有兩條鏈:Ethereum1.0鏈和Ethereum2.0鏈。

 

Phase1 分片區塊鏈(Shard Chain)

分片區塊鏈是將來實現可擴展性的關鍵,這是由於其容許交易的並行執行。Phase1主要關注分片區塊鏈的數據的構造、有效性和一致性,而並不實現狀態的執行和帳戶的餘額。Phase1更多的是分片結構的試運行,而不是嘗試實現使用分片進行擴展。對信標鏈來講,它把分片的區塊看成是位集合,而非結構化或有意義的數據。

 

信標鏈區塊中使用crosslink來表示一段時間內分片的當前狀態(也就是combined data root)。

 

crosslink即爲分片鏈上驗證節點委員會對區塊的有效簽名集合,表明了分片區塊鏈的最新狀態,同時也是跨分片的異步通訊的基礎。

 

Phase2 狀態執行(State Execution)

Phase2中,各相關功能將會進行集聚。分片區塊鏈的數據將再也不是簡單的數據容器,而是從新引入的的結構化的鏈數據和智能合約。每一個分片管理基於eWASM的VM,支持帳戶,合約,狀態數據等。

 

Phase2中將頗有可能引入狀態租賃(State Rent),合約開發者和用戶將爲eWASM存儲付費。

 

Phase3及以後的階段 不斷更新中

相關計劃處於不斷更新中,具體可參見:

https://github.com/ethereum/wiki/wiki/Sharding-roadmap#phase-3-light-client-state-protocol

 

其中,Phase0預計於2020年第一季度上線,而Phase1和2預計於2020年末同時上線。

 

Ethereum2.0中的隨機性

在本次Devcon5會議上,還有一些關於Ethereum2.0中的隨機性的討論議題。

 

在現今區塊鏈系統中,系統隨機性問題正受到愈來愈多的關注。

 

Ethereum2.0採用了PoS(Proof of Stake)和分片(sharding)機制相結合的共識協議,共識委員會的選取依賴於系統產生的隨機值。所以,方案的安全性與系統產生隨機值的隨機性高度相關。一旦惡意攻擊者能夠操控或者影響隨機值的產生,那麼他們就能夠利用這種優點,在共識過程當中增長自身被選入委員會的機率,下降攻擊系統所花費的代價,從而威脅協議的安全性。

 

區塊鏈做爲承載分佈式應用的底層平臺,鏈上提供的安全隨機數一樣也是衆多應用安全性的重要保障。

 

隨機數在Ethereum2.0中主要被使用在以下三個環節:

區塊提議者的選取

共識委員會的選取

鏈上應用

 

安全的隨機性算法須要保證:

一、公平性(unbiased):任何參與者不能影響隨機數生成的結果。

二、沒法預測性(unpredictable):在隨機數生成前,任何參與者沒法提早預測輸出的結果。

 

此外,爲了知足分佈式系統的容錯性,可靠的隨機性算法還應該保證即便系統中若干節點中止工做時,算法依然繼續運行。

 

所以,安全的隨機性算法可使得:

一、保證區塊提議者選取的公平性,同時防止攻擊者提早預測提議者身份,發起DOS攻擊;

二、在委員會選取階段,下降攻擊者控制某一委員會的可能性;

三、保證依賴於隨機數的鏈上應用的安全性。

 

分佈式隨機性算法RANDAO

RANDAO是一個簡單的分佈式隨機性算法,使得多個節點能夠交互協商,產生一致的安全隨機數。

 

算法包含兩個階段:

承諾階段(commit)

揭示階段(reveal)

 

在承諾階段中,系統中全部節點各自線下選定某個隨機數,而後向 RANDAO 提交對該隨機數的承諾。

 

在揭示階段,每一個參與者打開承諾公佈其隨機值,將全部公開隨機數進行異或操做獲得的結果就是該輪協議產生的隨機數。

 

但RANDAO也是有缺陷的:

一、RANDAO協議產生的隨機數知足不可預測性,而且擁有與底層共識協議同樣的容錯性,但還是在公平性上存在缺陷。

二、協議中,在揭示階段,最後公佈其隨機值的節點能夠影響最後產生的隨機值。

三、具體來講,惡意攻擊者看到網絡中全部其餘節點公佈各自所選取的隨機數以後,能夠根據自身隨機數執行異或運算,並根據結果對本身的利弊來決定是否要公佈本身的隨機數。

四、這使得單個攻擊者就能對輸出形成必定的影響,同時隨着攻擊方所控制的參與者數目增多,該類攻擊的破壞性也隨之加強。

五、對區塊鏈系統來講,若是攻擊者利用這種在隨機數產生過程當中得到的優點,那麼將下降其攻擊系統所須要的成本。具體來講,若是一個區塊鏈系統採用RANDAO和最長鏈原則做爲共識協議,那麼攻擊者只須要擁有36%的質押(stake)就能夠控制整個系統。(注:此分析來自大佬Vitalik)。

 

方法總比困難多,這些缺陷也並非沒有解決辦法。VDF函數就是解決RANDAO這些缺陷的「小藥丸」。

 

VDF函數

VDF是一類數學函數(Verifable Delay Function),該函數的特色是:

一、計算至少須要一段已知的時間。

二、經過證實能夠快速驗證函數輸出結果的正確性。

 

利用VDF函數的計算延遲,可使得RANDAO協議中最後公佈其隨機值的節點失去對最終結果的影響。

 

具體來講,在RANDAO協議揭示階段中,全部參與者公佈的隨機值再也不經過簡單的異或操做,而是經過VDF函數獲得最終的隨機值,同時設置VDF函數的執行時間大於揭示階段的等待期。那麼,攻擊者沒法提早計算最終的隨機值,沒法肯定公佈自身隨機值對本身的好處,從而保證了隨機性算法的公平性。

 

前面咱們提到過,Ethereum1.0會向2.0切換。這又是一個大工程,這種切換該如何平穩過渡呢?

 

Ethereum1.0 往2.0 的切換

從Ethereum1.0鏈遷移到Ethereum2.0鏈須要考慮兩個重要因素。首先,須要遷移現有的以太幣,其次,須要遷移狀態。

 

Phase0 以太幣遷移(信標鏈)

在第0階段,Ethereum1.0鏈上的用戶將可以將他們的以太幣鎖定在合約中,並在Ethereum2.0中的信標鏈上得到等量的以太幣。以後他們能夠抵押以太幣(32個ETH)成爲驗證人,並開始在Ethereum2.0鏈上得到驗證獎勵。

 

Phase1 狀態遷移(分片)

在階段1中,將當前Ethereum1.0鏈的狀態轉移到Ethereum2.0鏈上的一個分片中。而從保證來自Ethereum1.0鏈的全部信息將在Ethereum2.0鏈上可用。目前第1階段及以後的階段尚未進入積極的開發階段。

 

Phase2 智能合約

這一階段計劃從新引入智能合約,並用eWASM代替當前的EVM。此外狀態租金這一在Ethereum1.x被提到的概念可能會在這一階段實施。

 

Phase3 鏈下狀態存儲

第 3 階段會盡量地把鏈上的狀態轉移到鏈下,從而最小化鏈上狀態。在第 3 階段中維護和檢索鏈下的狀態將會成爲dApp的關鍵性設計約束。

 

Phase4 分片合約

實現不一樣分片上的合約之間的交互。目前的各類關於分片合約互操做的提案中,彷佛都沒法解決同步、擴展這一對矛盾課題,這也是最具挑戰的階段之一。

 

今天的分享就到這兒了,後續萬向區塊鏈技術中心研究組,將持續分享更多幹貨,保持關注!

相關文章
相關標籤/搜索