Ethereum 2.0 (也稱為“Serenity”) 指的是以太坊核心協議的下一次重大升級,也就是“第一層”(Layer 1) 的幾項改進。它試圖透過引入分片(Sharding)、PoS共識(CasperFFG)、信標鏈(Beacon Chain)和新型虛擬機器(eWASM)等改進和維護自身。此外,第二層(Layer 2)擴充套件性解決方案已有Plasma、State Channels、Payment Channels和ZK-STARKs等。
目前,共有9個獨立開發團隊建設ETH 2.0客戶端:Prysmatic Labs、ChainSafe、PegaSys、Harmony、ParityTechnologies、Sigma Prime、Status、Ethereum Foundation、Yeeth。以太坊Github主程式碼庫貢獻者數量超過400人。在一定程度上,幾乎可以說以太坊代表了基礎公鏈甚至行業的最高技術水平。它的發展階段、面臨困境和探索方向同樣是整個行業共同面臨的。
風起於青萍之末,我們應見微知著。大風是自小風發展而來,大影響、大思潮、大趨勢也都是從微細不易察覺之處源發。一葉落而知秋,我們決定推出Ethereum2.0一系列解讀文章。本文為第二篇,以太坊/加密行業分片篇。
1.分片的提出
區塊鏈系統中有一個三難困境,可以用一個稱為DCS三角形的三角形來表示,它所表達的意思是不可能同時實現去中心化、一致性和可擴充套件性,權衡是必要的(你可以選擇任何兩個,但不是全部)”。
資料來源:EthHub;數鏈評級
目前,在所有區塊鏈協議中,每個節點儲存整個狀態(帳戶餘額、契約程式碼和儲存等)並處理所有事務。這提供了大量的一致性,但極大地限制了可擴充套件性:區塊鏈不能處理比單個節點更多的事務。正因為如此,比特幣被限制在每秒3-7筆交易,以太幣被限制在7-15筆交易,等等。
是否能建立一種新的機制,其中只有一小部分節點驗證每個事務?只要有足夠多的節點驗證每個事務,那麼系統仍然是高度安全的。但是,在整個驗證器集中只佔足夠小的百分比,系統就可以並行處理許多事務,難道我們不能將事務處理劃分到更小的節點組中,從而大大提高區塊鏈的總吞吐量嗎?
分片(shard)就是解決這一挑戰的一種嘗試。它意味著將大型鏈(資料庫)劃分為更小、更快的鏈,從而使整個系統更具可擴充套件性。為了解決可擴充套件性問題,我們將儲存在主鏈上的狀態和歷史分割為碎片。每個分片都管理自己,有自己的事務歷史,並且某些分片中的事務的效果僅限於該切片。 分片是區塊鏈擴容的鏈上解決方案之一,市場上眾多專案都採用了分片技術。
資料來源:數鏈評級
2.分片的基本思想是什麼
把狀態分成 K=O(n/c) 分割槽,我們稱之為“分片”。以太坊的創始人Vitalik Buterin稱其為“透過1000山寨幣增加擴充套件性”。例如,Ethereum上的分片方案可能將以0x00開頭的所有地址放到一個分片中,將以0x01開頭的所有地址放到另一個分片中,等等。在最簡單的分片形式中,每個分片也有自己的事務歷史,並且某些分片中的事務的效果僅限於同一分片中。一個簡單的例子是多資產區塊鏈,其中有許多分片,每個分片儲存餘額並處理與一個特定資產關聯的事務。在更高階的分片形式中,存在某種形式的跨分片通訊功能,其中一個分片上的事務可以觸發其他分片上的事件。
3.分片的基本設計是什麼
在特定分片上被稱為校對器(Collator)的節點的任務是建立校對塊(Collation),校對塊是一種包含關於所涉及分片的重要資訊的特定結構。這些校對塊就像對特定分片的狀態和交易的簡短描述,每個校對塊都有一個校驗頭(Collation Header),是包含以下資訊的資料片:
1).關於校對塊所對應的分片資訊(比如分片10)
2).在所有交易生效前,相關分片的最新狀態資訊
3).在應用所有交易後,分片將變成的狀態
4).來自分片上佔所有校對器數量 2/3 的校對器數字簽名,確認校對塊是合法的。
然後,超級節點將把所有分片中的校對塊放到以太坊區塊鏈中將要新增的區塊中。他們的職責是處理所有校對塊中的交易,並透過彙總他們的校驗頭來維護所有分片的狀態。在這種新的區塊鏈中,滿足以下條件時,區塊是有效的:
1).在所有校對塊中的交易有效
2).校對塊的狀態與交易前校驗塊的最新狀態一致
3).校對塊交易後的狀態與校驗頭所指定的狀態一致
4).校對塊被所有校對器的2/3簽名
4.分片技術面臨的挑戰
1).跨分片通訊 - 上述設計不支援跨分片通訊。我們如何安全地增加跨分片通訊。
2).單分片接管攻擊 - 如果在一個分片中攻擊者接管了大多數協調者,要麼獲取足夠的簽名來阻止任何排序規則,要麼更糟糕的,提交無效的排序?
3).欺詐檢測 - 如果得到一個無效的排序規則,節點(包括輕節點)如何能夠可靠的得知,以便它們可以驗證欺詐行為並且確認是欺詐行為之後拒絕這個排序規則?
4).資料可用性問題 - 作為欺詐檢測的子集,排序規則中缺失資料這種特殊情況會怎麼樣?
5).超二次分片 - 在n > c^2的特殊情況下,在上面給出的簡單設計裡面,將會有超過O(c)的排序頭,因此普通節點將不能處理它們,只能處理頂級區塊。
因此,在交易和頂級區塊頭直接超過兩級的間接定址是需要的(即我們需要”分片的分片“)。達到這個目標的最簡單和最好的方式是什麼呢?
數鏈評級從分片方式、分片技術、共識、技術團隊等方面對比了幾個典型的採用分片技術的專案,如下表: