以太坊分片思路其基本思想是,將網絡中的節點分成不同的碎片,各分片可以並行處理不同交易,這樣可以並行處理相互之間未建立連接的交易,以提高網絡併發量。分片方案的特點是,隨着節點數目的增加,網絡吞吐量也隨之增加。

Vitalik Buterin 在最新的推文中表示以太坊分片技術最重要的原則是「最大限度地接近與單一區塊鏈相同的性質」。

二次方分片的目的,就是通過一種雙層的設計來增加交易容量。第一層不需要硬分叉,主鏈就保持原樣。不過,一個叫做 校驗器管理合約 (validator manager contract,VMC)的合約需要被髮布到主鏈上,它用來維持分片系統。這個合約中會存在 O(c) 個 分片 (目前爲 100),每個分片都像是個獨立的「銀河」:它具有自己的賬戶空間,交易需要指定它們自己應該被髮布到哪個分片中,並且分片間的通信是受限的。

分片系統中的大多數用戶都會運行兩部分程序。(i) 一個在主鏈上的全節點(需要 O(c) 資源)或輕量節點(需要 O(log(c)) 資源)。 (ii) 一個通過 RPC 與主鏈交互的「分片客戶端」。

子鏈、側鏈、狀態通道

它們都屬於鏈下擴容。

鏈下交易,對應比特幣的閃電網絡(Lightning Network)和以太坊的雷電網絡 (Raiden Network)。 提前支付一些以太坊或比特幣作爲押金,之後你可以在鏈下通過一些手段,來跟其他人進行交易。交易結束後把這個結算放在區塊鏈上面。需要主流交易所、錢包這種大節點參與才比較有效。

核心思路是每個鏈可以獨立自主地處理交易或者事物,相互之間不需要交流,最終把結算信息放在主鏈上。

跟分片最本質的區別是,分片是鏈上擴容,是對整個區塊鏈網絡的一個重構,節點也是相互關聯的。

代理人共識協議

典型代表 EOS,TRX。如何選出這些代理人,可以用權益證明,也可以通過一些官方的驗證。

不管是 7 個代理人還是 21 個代理人,甚至可能是幾十個代理人,大家會形成一個小團體。這個機制的好處是可以保證在一個很小的團體內部,很快就達成共識。

Zilliqa 分片

開源地址:https://github.com/Zilliqa/Zilliqa

C++實現的

在亞馬遜的 EC2 上面測試得到用 3600 節點實現了每秒 2488 筆交易

特點:分片技術、PoW+PBFT 混合共識機制

測試網絡:https://explorer.zilliqa.com

Zilliqa 的設計構思 第 1 部分:網絡分片
https://my.oschina.net/zilliqa/blog/2962501

Zilliqa 的設計構思 第 2 部分:共識協議
https://my.oschina.net/zilliqa/blog/2962504

Zilliqa 的設計構思 第 3 部分:使共識更有效
https://my.oschina.net/zilliqa/blog/2962511

Zilliqa 官方挖礦指南中文版
https://www.huoxing24.com/newsdetail/20181206173835283794.html

網絡分片

假設我們有一個包含 1000 個節點的網絡,將自動地把該網絡分成 10 個、每個包含 100 個節點的分片,且所有分片可並行地處理交易。

由於分片架構能平行地處理交易,因此吞吐量可隨着網絡規模增加而線性增長。

每個分片現在都能獨立處理交易並因此產生高吞吐量。

需要解決的關鍵問題

  • 對女巫攻擊的防禦(Sybil Resistance)
  • 創建分片、給分片分配節點和任務
  • 分片大小
  • 跨片交易

zilliqa 解決方法

1、防控女巫節點

使用 PoW。每個希望加入 Zilliqa 網絡的新節點都必須先執行 PoW,網絡中的現有節點驗證新節點的 PoW 並授權其加入網絡。

POW 工作量證明部分跟以太坊基本上是一樣的,這要求你將上一個區塊的哈希值、節點的 IP 地址和你的公鑰一起進行哈希計算。

對應的難度是相匹配的,例如哈希值的前 100 位都是 0,如果你算出來的哈希值滿足這個條件,就說明你完成了工作量證明。

根據工作量證明節點 ID 的最後幾位,來決定分到哪一個分片上。對於一個新的節點來說,是無法通過自己的意志去加入某一個分片的,只能通過工作量證明,而工作量證明難度較高,因此可以避免出現新節點自己選擇分片的情況。因此工作量證明的最後幾位,就可以從數學上保證你的隨機性是足夠的。可以保證一些惡意節點不能直接加入到某一個分片。

2、自動創建分片

有一個單獨的分片即 DS 委員會去整合每個分片的結果,收集不同分片裏面交易哈希,進行一個共識協議,形成哈希的哈希,然後廣播,其他節點驗證簽名。

在每個 DS Epoch 開始時,所有候選人都將運行工作證明(Ethash 算法)過程 300 秒窗口,以便競爭加入 Zilliqa 網絡。

每個 DS Epoch (約 1.5 小時)內總共有 100 個 TX 時期(每個~1 分鐘)。第 100 個 TX 時期被稱爲 Vacuous 時期。空白時期會處理 coinbase 交易(獎勵機制)、升級機制(因爲 pBFT 中沒有分支)和持久狀態存儲(寫入節點的 DB 而不是僅存儲在內存中)。在這個時期,網絡不會處理任何常規交易。

基於 POW 選舉出 DS 委員會,使用先進先出策略定期移出一名 DS 委員會老成員、增加一名新成員,新進入委員會的節點是最快解決 PoW 的節點,任何時候 DS 委員會的大小都是固定的。DS 委員會一旦當選,便啓動分片程序,網絡中的所有其他節點立即執行另一個 PoW,其 PoW 由 DS 委員會驗證,每個節點根據提交情況和隨機性,被分配到特定的分片。PoW 提交的最後幾位二進制數字決定了節點將被分配到哪個分片。

3、選擇合適的尺寸

選擇合適的分片大小對系統的安全至關重要。使用 PoW 創建分片相當於隨機無差別地抽樣一個節點集。

從 600 個節點開始,其包含三分之一的惡意節點的概率降至百萬分之一。出於這個原因,Zilliqa 認爲最小分片大小爲 600。

4、避免跨片交易

  • 因爲跨片交易需要鎖協議,因此其開銷成本很高,在分片設計之初就儘量避免跨片交易的產生
  • 原子提交協議技術方案

5、交易分片

每當交易到達網絡時,它就被分配到一個特定的分片上。分配是由交易發送地址的前幾位二進制數字決定的,這就叫做交易分片。

交易首先由分片打包,生成微塊,然後上傳給 DS 委員會,如果幸運,能被 DS 節點確認並簽名,生成最終塊。

每一個節點都可以收到最終的區塊,這個區塊的內容是很小的。同時,不同區塊之間也會進行交換數據,從而分享最終區塊內的這些交易。

整個系統有三層結構:第一層,是哈希的哈希;第二層,交易的哈希;第三層,真正的交易內容。通過這種三層結構來保證整個系統在每一步進行廣播的時候,內容量都是相對比較小的。因此過了一段時間之後,你的不同分片裏面,大家都可以獲得這一段時間以來交易處理之後的一個共同狀態。

交易分片按照交易發送者的賬號地址來劃分,來自同一發送者的所有交易都將在同一個分片中處理,允許每個分片成員檢測其是否雙花。通過每個交易中存在的隨機數 nonce,可以輕鬆檢測雙重花費(或重放攻擊)。

6、計算分片

分片還使計算執行和智能合約運行十分高效。例如,一部分分片可以充當映射器(mapper),其他部分分片可以充當歸約器(reducer),並非常有效地執行映射-歸約任務(map-reduce task),這也被稱爲計算分片。

共識協議

計算密集型的 PoW 需要大量的時間進行計算並且可能減慢共識協議,且它與網絡中的節點數量無關,而是取決於網絡的集體計算能力。不能很好地利用分片小的優勢。

實用拜占庭容錯協議(Practical Byzantine Fault Tolerance, 簡稱爲 PBFT)

Zilliqa 採用 PBFT 在每個分片中達成共識。該協議是由卡斯特羅和利斯科夫(Castro and
Liskov)在 1999 年提出的。它是在這樣的假設下運行的:在執行協議之前,假設每個分片中最多有 1/3 的節點是惡意的。

在 PBFT 中,一個共識組中(即一個分片中)的所有節點按順序排列,它有一個主節點(領導者),其他節點被稱爲備份節點。每輪 PBFT 都有三個階段:預備、準備、提交。

PBFT 與 Nakamoto 共識協議相比其他優點

1、交易最終性

一旦交易被提交到區塊鏈,那麼它就是最終的了且不會有臨時分叉,因此不需要確認。

2、低能耗

Zilliqa 只使用 PoW 來防止女巫節點攻擊、確認節點身份並進行分片,而不用於達成共識。現實中,每確認大約 100 個區塊才需要做一次 PoW。

3、報酬差異小

Zilliqa 中參與共識協議的每個礦工都可以獲得對應的獎勵

PBFT 的挑戰

一個主要缺點:只有當分片規模很小時(即小於 50)才高效。但是,正如我們前面的文章中所討論的,出於安全原因,Zilliqa 的分片大小必須不少於 600 個節點。

PBFT 對於大型網絡而言效率低下的主要原因是它有一個潛在的通信成本,即 分片中的每個節點都必須與所有其他節點通信,這就是通信成本二次方的原因。

使用數字簽名而不是 MAC 將發送消息的數量從二次方數量級減少到線性,當 n 很大時這種減少會產生重要影響。以 600 個節點爲例,其中傳播的消息數量可以從 17.97 萬減少到 599。

使用多重簽名的方法來降低通信成本,減少每個消息的大小。

目前一種比較流行的多重簽名方案是基於 Schnorr 數字簽名技術。

Zilliqa 使用了近期一些學術論文中的技術來提高經典 pBFT 協議的效率。

附:思維導圖

一文讀懂區塊鏈公鏈分片技術方案