2017年10月16日,Zilliqa博客發佈,Rita翻譯
歡迎加入咱們的社區,向咱們提問並獲取最新(但願也是最棒的)資訊!
html
正如咱們以前文章介紹的那樣,Zilliqa是一個新的區塊鏈平臺,每秒可處理數千個交易, 所以Zilliqa有潛力與VISA和MasterCard等傳統的支付方式相匹敵。 更重要的是,Zilliqa的交易吞吐量能夠隨網絡規模增大而近似線性增加。git
從這篇文章開始,咱們將用一系列的文章逐步介紹Zilliqa的設計構思。此篇將介紹Zilliqa可擴展性的核心思想 — —分片(Sharding)。Zilliqa的分片含多個層面,包括網絡分片、交易分片和計算分片(network sharding, transaction sharding, and computational sharding)。其中最重要的是網絡分片,由於其餘分片機制都創建在網絡分片之上。web
那麼,到底什麼是網絡分片呢?數據庫
實際上,網絡分片(咱們將在本文中將其簡稱爲分片)是一種將Zilliqa網絡劃分紅一系列包含更少節點的羣組的機制,這樣的每一個羣組被稱爲分片(shard)。好比說,當一個網絡由1000個節點構成時,咱們能夠將此網絡劃分爲10個、每一個由100個節點組成的分片。安全
Zilliqa真正可擴展性的祕訣就在於網絡分片。假設咱們有一個包含1000個節點的網絡,微信
Zilliqa將自動地把該網絡分紅10個、每一個包含100個節點的分片,且全部分片可並行地處理交易。若是每一個分片每秒能處理10個不一樣交易,則全部分片每秒可一併處理100個交易。因爲分片架構能平行地處理交易,所以Zilliqa的吞吐量可隨着網絡規模增長而線性增加。網絡
分片的想法固然不是新事物,事實上,它能夠追溯到數據庫領域,在數據庫中它被用來提升性能、可擴展性和I/O帶寬。然而,在區塊鏈中分片的想法起初是由Zilliqa團隊成員於2015年在合著的學術論文(最終以A架構
Secure Sharding Protocol For Open Blockchains爲題發表於CCS 2016)中提出的。app
就是這樣嗎?聽起來很簡單噢!函數
雖然想法聽着很簡單,但在工做中實踐起來卻並不是如此。爲了理解面臨的挑戰,讓咱們首先從實現分片要解決的一些關鍵問題入手:
一、對女巫攻擊的防護(Sybil Resistance)。因爲Zilliqa是一個公有區塊鏈平臺,任何有鏈接因特網電腦的人均可以使用它。包括Zilliqa在內的任何公有區塊鏈的運行都須要足夠數量的節點,所以公有區塊鏈難以免惡意節點的進入。根據定義,惡意節點會試圖經過操縱多個節點來破壞系統,並影響任何基於多數節點的決策過程。這就是一般所說的女巫攻擊(Sybil Attacks)。
二、建立分片。讓咱們先假設女巫攻擊的問題經過某種方式被解決了,而且假設網絡中1000個節點被分爲10個、每一個包含100個節點的分片。那麼哪一個節點被分配到哪一個分片是由誰決定的呢?這固然不能由Zilliqa團隊成員所控制的一個節點或一組節點決定,由於若是Zilliqa團隊變成惡意的(只是假設),那麼他們能夠將全部惡意節點集中在一個分片中來損害Zilliqa的安全性。順便說一句,若是您不知道Zilliqa團隊成員是誰,歡迎隨時查看咱們的團隊組成(連接https://www.zilliqa.com/team....)。
三、分片大小。這個問題很簡單,好比說咱們能夠擁有一個由10個節點組成的小分片嗎?答案固然是不能夠!事情固然沒那麼簡單。事實上若是分片很小,那麼攻擊者就會更容易控制它,並且因爲這些分片運行了Zilliqa協議的某些部分(如共識),咱們固然不但願由一個很小的分片(頗有可能只包含惡意節點)來決定接受哪些或拒絕哪些交易。
Zilliqa如何解決這些問題呢?
下面,咱們來介紹Zilliqa解決上述問題的方法。
一、防控女巫節點。有幾種可能的方式可以使女巫攻擊代價高昂或難以進行。例如,經過要求節點存入至關多的金錢(或代幣)做爲抵押,或要求他們執行一些計算密集型任務(也被稱爲工做量證實,即PoW)。Zilliqa就使用PoW。每一個但願加入Zilliqa網絡的新節點都必須先執行PoW,網絡中的現有節點驗證新節點的PoW並受權其加入網絡。PoW至關於Zilliqa網絡的入場券,只有擁有有效入場券的節點才能加入網絡。PoW使任何真實世界的個體難以操縱不少個節點。
二、自動建立分片。在Zilliqa中使用PoW會自動提供一種建立分片的方法:Zilliqa首先會基於POW選舉出一組目錄服務委員會(directory service committee,簡稱DS委員會)的專門節點,並按期移出一名DS委員會老成員、增長一名新成員,這一特定間隔被稱爲DS週期(DS-epoch)。在此過程當中,Zilliqa使用先進先出策略,新進入委員會的節點是最快解決PoW的節點,所以任什麼時候候DS委員會的大小都是固定的。DS委員會一旦當選,便啓動分片程序,網絡中的全部其餘節點當即執行另外一個PoW,其PoW由DS委員會驗證,每一個節點根據提交狀況和隨機性,被分配到特定的分片。PoW提交的最後幾位二進制數字決定了節點將被分配到哪一個分片。
三、選擇合適的尺寸。選擇合適的分片大小對系統的安全相當重要。由於提交PoW是使用散列函數(hash function)生成的,所以使用PoW建立分片至關於隨機無差異地抽樣一個節點集。下圖顯示了不一樣分片大小中至少三分之一的成員是惡意的機率。請注意,若是分片大小爲100時,此機率大約爲0.04。因爲咱們但願擁有絕對多數的好的節點(用於以後的共識),100做爲分片大小顯然是不安全的。好消息是隨着分片大小的增長,這一律率不斷下降。從600個節點開始,機率降至百萬分之一。出於這個緣由,Zilliqa認爲最小分片大小爲600。
特定大小的分片中至少有三分之一的惡意節點的機率表。
因爲咱們想限制惡意節點的數量,機率越小,Zilliqa就越安全。 對於100個節點的分片大小,這一可能性至關高。
在Zilliqa中,咱們選擇了600的分片大小,其包含三分之一的惡意節點的機率爲百萬分之一。
若是你想知道咱們如何算出這些機率,請閱讀咱們的分片論文,連接https://dl.acm.org/citation.c...。
分片帶來了什麼?
正如本文開頭所討論的那樣,網絡分片爲並行處理交易開闢了新航路 — — 每一個分片如今都能獨立處理交易並所以產生高吞吐量。事實上,每當交易到達網絡時,它就被分配到一個特定的分片上。分配是由交易發送地址的前幾位二進制數字決定的,這就叫作交易分片。
分片還使計算執行和智能合約運行十分高效。例如,一部分分片能夠充當映射器(mapper),其餘部分分片能夠充當歸約器(reducer),並不是常有效地執行映射-歸約任務(map-reduce task),這也被稱爲計算分片。
結束語
其實,分片中仍然可能存在惡意節點,由於任何惡意節點(就像一個誠實的節點)均可以作PoW並加入網絡。所以相當重要的就是,儘管分片中存在惡意節點(數量有限),但分片必須可以在新的一組交易中達成共識並提出下一個區塊。
Zilliqa如何利用這種分片架構搭建安全高效的共識協議是本系列文章中下一部分的主題。
咱們很高興地邀請您加入咱們的社區,與技術專家、金融業者和加密數字貨幣愛好者們一同探討!您能夠經過如下方式關注咱們的進展:
微信公衆號:ZilliqaCN
Zilliqa中文社區聯盟: http://www.zilliqa.com.cn
關注咱們的推特:https://twitter.com/Zilliqa
經過郵箱訂閱咱們的新聞:http://zilliqa.us16.list-mana...
關注咱們的博客:https://blog.zilliqa.com/
Reddit:https://www.reddit.com/r/zilliqa
Slack:https://invite.zilliqa.com/
Gitter:https://gitter.im/Zilliqa/