又有突破?三分鐘看懂以太坊2.0的所有設計
Libert/張詠晴編譯
2019-05-24 17:49

圖片來源:visualhunt

 

根據Trustnodes 5月22日報導,以太坊聯合創辦人Vitalik Buterin表示,開發人員已經解決了以太坊2.0所需的所有研究突破,現在只剩下實現了。

 

他說道:「實際上,我們已經取得了全面實施以太坊2.0所需要的所有研究突破。這種情況已經持續了大約一年。」

 

這一大膽的聲明是在以太坊2.0階段0三個測試網出現時提出的,下一階段將是一個跨客戶端的測試網,預計從今年夏天開始。

 

階段0只是staking,也就是一個虛擬的主網,介於測試網和功能齊全的區塊鏈之間。

 

一些諸如儲存分片等的功能將在明年的階段1添加。階段2是實際和全面的啟動,預計將在兩年內實現。

 

完整的設計是一個有點複雜的系統,我們認為它透過個體運行感興趣的分片節點,來連接不同的節點組。

 

分片(Shard)基本上構成當前的以太坊網路,但是假設有1000個節點,然後我們有網路B或分片B,它有自己的1000個節點,所有節點都運行在相同的基本代碼上,因此屬於同一區塊鏈。分片數量達數百個。

 

由於這兩個體系本質上是不同的,讓它們整合在一起已是一項超越了分片技術的突,它將私有和公共區塊鏈、側鏈和其他所有領域連接了起來。

 

以太坊2.0設計

 

它的工作方式可以先由Buterin作一個技術層面的解釋,然後我們將給出一個更簡單的解讀。

 

Buterin是這樣說的:「跨分片交易的一般流程(我們以傳輸5ETH為例)是這樣的:

 

在分片A上銷毀5eth,創建一個收據(如提交到該區塊狀態根的一個Merkle分支),其中包含:(1)目標分片、(2)目標地址、(3)值(5eth)、(4)唯一ID。

 

在這個過程中,一旦分片B在檢測到分片A的狀態根時,則將一個證明該收據的Merkle分支提交到分片B中。如果Merkle分支驗證了收據尚未被使用,則生成5 ETH並將其轉給接收者。

 

為了防止雙花,我們需要在儲存中追蹤哪些收據已經被認領。為了提高效率,需要為收據分配順序ID。具體來說,在每個目標分片中,我們為每個目的地分片儲存下一個序列號,當源分片A和目標分片B創建新的收據時,其序列號是分片A中分片B的下一個序列號(下一個序列號遞增,所以不會被重複使用)。

 

這意味著在每個目標分片中,我們只需要追蹤每個源分片的SHARD_COUNT位字段,以防止雙花,這意味著每筆跨分片交易只需要一個儲存位。」

 

換句話說,基本上你在分片A上把Eth鎖在一個智慧合約裡,在分片B顯示你這樣做的證據,然後在分片B上獲得Eth。

 

為了防止雙花,開發人員基本上使用了一個聽起來像nounce的東西,也就是給它一個數字,然後無限地增加數字。

 

這是在協議級別上的,所以你知道沒有人作弊,因為你同時運行了分片A和分片B的節點。節點驗證規則,查看區塊頭(Block header)或Buterin所稱的收據,如果有任何錯誤,節點會告訴你。

 

這裡我們使用多數節點,但對你來說,兩個節點可能運行在一個客戶端上,儘管這是處於階段2的非常早期的實現細節。

 

正如你所能想像的那樣,在這裡很難讓分片A上的智慧合約與另一個分片B上的智慧合約「交互」, 而比方說分片B上有Cryptokitties的DNA。

 

我們不知道你如何將DNA傳輸到分片A,並讓Cryptokitties在分片A上運行,而它們是在分片B上產生的。

 

一種方法是透過一個中央協調器,但這也會有它自己的問題。如上文所述,當移動Eth時,它是點對點的。

 

本文為巴比特資訊授權刊登,原文標題為「一文看懂以太坊2.0所有設計和實現線路圖