區塊鏈公鏈分片技術(sharding)方案,配思維導圖


區塊鏈公鏈分片技術(sharding)方案,配思維導圖

分片技術(sharding)方案

以太坊分片思路

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

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解決方法

防控女巫節點

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

POW工作量證明部分跟以太坊基本上是一樣的,這要求你將上一個區塊的哈希值、節點的IP地址和你的公鑰一起進行哈希計算。
對應的難度是相匹配的,例如哈希值的前100位都是0,如果你算出來的哈希值滿足這個條件,就說明你完成了工作量證明。

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

自動創建分片

有一個單獨的分片即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提交的最后幾位二進制數字決定了節點將被分配到哪個分片。

選擇合適的尺寸

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

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

避免跨片交易

因為跨片交易需要鎖協議,因此其開銷成本很高,在分片設計之初就盡量避免跨片交易的產生

原子提交協議技術方案

交易分片

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

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

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

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

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

計算分片

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

共識協議

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

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

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

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

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

交易最終性

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

低能耗

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

報酬差異小

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

PBFT的挑戰

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

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

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

使用多重簽名的方法來降低通信成本,減少每個消息的大小
目前一種比較流行的多重簽名方案是基於Schnorr數字簽名技術

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM