分片概述、Zilliqa和QuarkChain
三難問題
如前篇所述,區塊鏈可擴展性問題與所謂三難(trilemma)問題有關,即區塊鏈最多擁有如下三點中的兩點:
去中心化
可擴展性
安全性
如果選擇擁有可擴展性和安全性(如同支付寶),這往往意味著具有較大吞吐量的中心化,而以太坊選擇的是去中心化和安全。為了獲得可擴展性,一種比起增加區塊大小更為合適的方法是使用分片技術,即把整個網路劃分為多個片(shard),每個片具有獨立的狀態(當前的)和歷史(過去的)。
分片技術
在Devcon上,Vitalik Buterin通過小島的比喻來解釋分片:
Imagine that Ethereum has been split into thousands of islands. Each island can do its own thing. Each of the island has its own unique features and everyone belonging on that island i.e. the accounts, can interact with each other AND they can freely indulge in all its features. If they want to contact with other islands, they will have to use some sort of protocol.
劃分
分片是來自數據系統的詞。假設你的網站擁有一個巨大的資料庫,這不只讓搜索速度下降,同時也影響到擴展性。常見方法是對資料庫進行水平劃分(horizontal partition)並將其存放在不同的伺服器上。資料庫的結構並沒有發生變化,但其內容減小了。
在控制所有的機器的情況下這種方式是很容易實現的,但在去中心化的情況下總會出現惡意節點,所以需要開發一套共識演算法來處理這個問題。一個難點是分片基本上是隨機的,這意味著多數節點將頻繁地和對方進行通信,而且節點還分布在世界各個地方,所以當前分片技術必須在存儲數據量和節點間通信頻率達到平衡。
結構
我們把區塊鏈上某個時刻的狀態稱為全局狀態,這對所有人是可見的。為了分片,我們採用哈希樹(Hash tree/Merkle tree)對這個狀態進行樹狀的劃分,如下圖所示。
分片後發生什麼
區塊鏈的狀態將被分片
賬戶將處於某個分片中
賬戶只能與同個分片中的賬戶進行通信
分片的技術挑戰
在確保安全和高效的前提下,需要有機制知道哪個節點實現了哪個分片
在實現分片前,以太坊需首先實現Casper,即以太坊上的PoS(權益證明)
需要開發相應的證明機制以應對片間通信
分片的應用
2018年區塊鏈世界的一個趨勢就是可擴展性問題的重視和解決。截至目前,Zilliqa和QuarkChain是僅有的兩個在其測試網路(testnet)上實現分片技術的區塊鏈項目。
Zilliqa
Zilliqa是一個高吞吐量的公鏈平台,已經在AWS EC2伺服器上證明了2488tps的運行能力(6個分片,3600個節點),同時它也證明:鏈上節點越多,將具備越高的tps值。
Zilliqa清楚區分了狀態(state)和交易歷史(transaction history)。狀態是指當前的情況,比起存儲交易歷史,其存儲空間佔用較小,但使用頻率較高。Zilliqa採用的方式是:每個節點擁有當前狀態的拷貝,但交易歷史將被分片。因為交易歷史使用頻率比起當前狀態要低,所以這將很大程度上減少分片引起的頻繁通信問題。
因為證明了分片技術的可行性,Zilliqa被CrushCrypto選為三月份的」Crusher of the month」項目。
QuarkChain
QuarkChain基於分片技術實現了高性能點對點交易系統。在系統結構上分為兩層:分片層(sharding layer)和用於驗證前者的底層(root layer)。
QuarkChain在測試網路上也達到了幾千tps。其即將開始的ICO在CrushCrypto上獲得了兩個Good(Flipping和Long-term holding)。
其在分片實現上與Zilliqa最大的區別:
Zilliqa只支持交易歷史的分片,但QuarkChain聲稱支持狀態和交易歷史分片
片間交易(cross-sharding)能力比起Zilliqa更強
總結
分片技術已被證明能提高網路的tps
以太坊上實現分片,首先需要實現Casper。Casper和分片的實現將很大程度上改善以太坊的短板
Zilliqa和Quarkchain已在測試網路上成功運行了分片技術,但兩者的實現是有區別的


※Facebook 營收強勁,點贊還是出掌?
※這是一個假新聞,卻道出了一個真問題!
TAG:全球大搜羅 |